From 9acc86b81b66c473683afea07b395e83abd1fb16 Mon Sep 17 00:00:00 2001 From: Awni Hannun Date: Sat, 28 Sep 2024 11:04:59 -0700 Subject: [PATCH] docs update --- docs/build/html/.buildinfo | 2 +- .../_autosummary/mlx.core.linalg.cross.rst | 6 + .../_autosummary/mlx.core.put_along_axis.rst | 6 + ...lx.core.Stream.rst => mlx.core.stream.rst} | 0 docs/build/html/_sources/python/linalg.rst | 1 + .../python/nn/_autosummary/mlx.nn.CELU.rst | 16 + .../python/nn/_autosummary/mlx.nn.ELU.rst | 16 + .../nn/_autosummary/mlx.nn.LogSigmoid.rst | 16 + .../nn/_autosummary/mlx.nn.LogSoftmax.rst | 16 + .../python/nn/_autosummary/mlx.nn.Sigmoid.rst | 16 + .../nn/_autosummary_functions/mlx.nn.celu.rst | 11 + .../html/_sources/python/nn/functions.rst | 1 + docs/build/html/_sources/python/nn/layers.rst | 5 + docs/build/html/_sources/python/ops.rst | 1 + .../html/_static/documentation_options.js | 2 +- docs/build/html/allocator_8h.html | 124 - docs/build/html/allocator_8h_source.html | 195 - docs/build/html/annotated.html | 478 - docs/build/html/array_8h.html | 138 - docs/build/html/array_8h_source.html | 862 - docs/build/html/atomic_8h.html | 520 - docs/build/html/atomic_8h_source.html | 481 - .../html/backend_2accelerate_2utils_8h.html | 107 - .../backend_2accelerate_2utils_8h_source.html | 134 - docs/build/html/backend_2common_2load_8h.html | 107 - .../html/backend_2common_2load_8h_source.html | 111 - docs/build/html/backend_2common_2ops_8h.html | 234 - .../html/backend_2common_2ops_8h_source.html | 1225 - .../build/html/backend_2common_2utils_8h.html | 128 - .../backend_2common_2utils_8h_source.html | 292 - .../html/backend_2metal_2allocator_8h.html | 161 - .../backend_2metal_2allocator_8h_source.html | 223 - .../build/html/backend_2metal_2device_8h.html | 135 - .../backend_2metal_2device_8h_source.html | 352 - .../backend_2metal_2kernels_2bf16_8h.html | 10952 --------- ...ckend_2metal_2kernels_2bf16_8h_source.html | 489 - .../backend_2metal_2kernels_2complex_8h.html | 504 - ...nd_2metal_2kernels_2complex_8h_source.html | 280 - .../html/backend_2metal_2kernels_2fft_8h.html | 913 - ...ackend_2metal_2kernels_2fft_8h_source.html | 648 - ...nd_2metal_2kernels_2reduction_2ops_8h.html | 180 - ...al_2kernels_2reduction_2ops_8h_source.html | 339 - ..._2kernels_2steel_2gemm_2transforms_8h.html | 114 - ...ls_2steel_2gemm_2transforms_8h_source.html | 206 - ...kend_2metal_2kernels_2steel_2utils_8h.html | 178 - ...etal_2kernels_2steel_2utils_8h_source.html | 139 - .../backend_2metal_2kernels_2utils_8h.html | 998 - ...kend_2metal_2kernels_2utils_8h_source.html | 654 - docs/build/html/backend_2metal_2utils_8h.html | 126 - .../html/backend_2metal_2utils_8h_source.html | 191 - docs/build/html/bc_s.png | Bin 676 -> 0 bytes docs/build/html/bc_sd.png | Bin 635 -> 0 bytes docs/build/html/bf16__math_8h.html | 594 - docs/build/html/bf16__math_8h_source.html | 498 - docs/build/html/binary__ops_8h.html | 149 - docs/build/html/binary__ops_8h_source.html | 601 - .../build/html/class_thread_pool-members.html | 89 - docs/build/html/class_thread_pool.html | 177 - docs/build/html/classes.html | 155 - .../classmlx_1_1core_1_1_abs-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_abs.html | 463 - docs/build/html/classmlx_1_1core_1_1_abs.png | Bin 872 -> 0 bytes .../classmlx_1_1core_1_1_add-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_add.html | 463 - docs/build/html/classmlx_1_1core_1_1_add.png | Bin 874 -> 0 bytes .../classmlx_1_1core_1_1_add_m_m-members.html | 115 - .../html/classmlx_1_1core_1_1_add_m_m.html | 404 - .../html/classmlx_1_1core_1_1_add_m_m.png | Bin 905 -> 0 bytes .../classmlx_1_1core_1_1_arange-members.html | 115 - .../html/classmlx_1_1core_1_1_arange.html | 332 - .../html/classmlx_1_1core_1_1_arange.png | Bin 907 -> 0 bytes .../classmlx_1_1core_1_1_arc_cos-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_cos.html | 463 - .../html/classmlx_1_1core_1_1_arc_cos.png | Bin 897 -> 0 bytes ...classmlx_1_1core_1_1_arc_cosh-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_cosh.html | 463 - .../html/classmlx_1_1core_1_1_arc_cosh.png | Bin 909 -> 0 bytes .../classmlx_1_1core_1_1_arc_sin-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_sin.html | 463 - .../html/classmlx_1_1core_1_1_arc_sin.png | Bin 895 -> 0 bytes ...classmlx_1_1core_1_1_arc_sinh-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_sinh.html | 463 - .../html/classmlx_1_1core_1_1_arc_sinh.png | Bin 901 -> 0 bytes .../classmlx_1_1core_1_1_arc_tan-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_tan.html | 463 - .../html/classmlx_1_1core_1_1_arc_tan.png | Bin 895 -> 0 bytes ...classmlx_1_1core_1_1_arc_tan2-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_tan2.html | 463 - .../html/classmlx_1_1core_1_1_arc_tan2.png | Bin 913 -> 0 bytes ...classmlx_1_1core_1_1_arc_tanh-members.html | 115 - .../html/classmlx_1_1core_1_1_arc_tanh.html | 463 - .../html/classmlx_1_1core_1_1_arc_tanh.png | Bin 901 -> 0 bytes ...mlx_1_1core_1_1_arg_partition-members.html | 115 - .../classmlx_1_1core_1_1_arg_partition.html | 391 - .../classmlx_1_1core_1_1_arg_partition.png | Bin 936 -> 0 bytes ...assmlx_1_1core_1_1_arg_reduce-members.html | 118 - .../html/classmlx_1_1core_1_1_arg_reduce.html | 418 - .../html/classmlx_1_1core_1_1_arg_reduce.png | Bin 932 -> 0 bytes ...classmlx_1_1core_1_1_arg_sort-members.html | 115 - .../html/classmlx_1_1core_1_1_arg_sort.html | 386 - .../html/classmlx_1_1core_1_1_arg_sort.png | Bin 919 -> 0 bytes ...assmlx_1_1core_1_1_as_strided-members.html | 115 - .../html/classmlx_1_1core_1_1_as_strided.html | 413 - .../html/classmlx_1_1core_1_1_as_strided.png | Bin 917 -> 0 bytes .../classmlx_1_1core_1_1_as_type-members.html | 115 - .../html/classmlx_1_1core_1_1_as_type.html | 467 - .../html/classmlx_1_1core_1_1_as_type.png | Bin 918 -> 0 bytes ...lx_1_1core_1_1_bitwise_binary-members.html | 121 - .../classmlx_1_1core_1_1_bitwise_binary.html | 503 - .../classmlx_1_1core_1_1_bitwise_binary.png | Bin 937 -> 0 bytes ..._1_1core_1_1_block_masked_m_m-members.html | 115 - ...classmlx_1_1core_1_1_block_masked_m_m.html | 365 - .../classmlx_1_1core_1_1_block_masked_m_m.png | Bin 966 -> 0 bytes ...lassmlx_1_1core_1_1_broadcast-members.html | 115 - .../html/classmlx_1_1core_1_1_broadcast.html | 437 - .../html/classmlx_1_1core_1_1_broadcast.png | Bin 905 -> 0 bytes .../classmlx_1_1core_1_1_ceil-members.html | 115 - .../build/html/classmlx_1_1core_1_1_ceil.html | 463 - docs/build/html/classmlx_1_1core_1_1_ceil.png | Bin 864 -> 0 bytes ...classmlx_1_1core_1_1_cholesky-members.html | 115 - .../html/classmlx_1_1core_1_1_cholesky.html | 327 - .../html/classmlx_1_1core_1_1_cholesky.png | Bin 909 -> 0 bytes ...classmlx_1_1core_1_1_compiled-members.html | 108 - .../html/classmlx_1_1core_1_1_compiled.html | 493 - .../html/classmlx_1_1core_1_1_compiled.png | Bin 546 -> 0 bytes ...ssmlx_1_1core_1_1_concatenate-members.html | 115 - .../classmlx_1_1core_1_1_concatenate.html | 437 - .../html/classmlx_1_1core_1_1_concatenate.png | Bin 914 -> 0 bytes ...lassmlx_1_1core_1_1_conjugate-members.html | 115 - .../html/classmlx_1_1core_1_1_conjugate.html | 382 - .../html/classmlx_1_1core_1_1_conjugate.png | Bin 929 -> 0 bytes ...ssmlx_1_1core_1_1_convolution-members.html | 115 - .../classmlx_1_1core_1_1_convolution.html | 390 - .../html/classmlx_1_1core_1_1_convolution.png | Bin 907 -> 0 bytes .../classmlx_1_1core_1_1_copy-members.html | 115 - .../build/html/classmlx_1_1core_1_1_copy.html | 463 - docs/build/html/classmlx_1_1core_1_1_copy.png | Bin 892 -> 0 bytes .../classmlx_1_1core_1_1_cos-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_cos.html | 463 - docs/build/html/classmlx_1_1core_1_1_cos.png | Bin 875 -> 0 bytes .../classmlx_1_1core_1_1_cosh-members.html | 115 - .../build/html/classmlx_1_1core_1_1_cosh.html | 463 - docs/build/html/classmlx_1_1core_1_1_cosh.png | Bin 888 -> 0 bytes ...1_1core_1_1_custom_transforms-members.html | 107 - ...lassmlx_1_1core_1_1_custom_transforms.html | 407 - ...classmlx_1_1core_1_1_custom_transforms.png | Bin 667 -> 0 bytes .../classmlx_1_1core_1_1_depends-members.html | 107 - .../html/classmlx_1_1core_1_1_depends.html | 316 - .../html/classmlx_1_1core_1_1_depends.png | Bin 548 -> 0 bytes .../classmlx_1_1core_1_1_div_mod-members.html | 107 - .../html/classmlx_1_1core_1_1_div_mod.html | 447 - .../html/classmlx_1_1core_1_1_div_mod.png | Bin 536 -> 0 bytes .../classmlx_1_1core_1_1_divide-members.html | 115 - .../html/classmlx_1_1core_1_1_divide.html | 463 - .../html/classmlx_1_1core_1_1_divide.png | Bin 897 -> 0 bytes .../classmlx_1_1core_1_1_equal-members.html | 115 - .../html/classmlx_1_1core_1_1_equal.html | 467 - .../build/html/classmlx_1_1core_1_1_equal.png | Bin 893 -> 0 bytes .../classmlx_1_1core_1_1_erf-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_erf.html | 463 - docs/build/html/classmlx_1_1core_1_1_erf.png | Bin 861 -> 0 bytes .../classmlx_1_1core_1_1_erf_inv-members.html | 115 - .../html/classmlx_1_1core_1_1_erf_inv.html | 463 - .../html/classmlx_1_1core_1_1_erf_inv.png | Bin 880 -> 0 bytes .../classmlx_1_1core_1_1_event-members.html | 99 - .../html/classmlx_1_1core_1_1_event.html | 320 - .../classmlx_1_1core_1_1_exp-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_exp.html | 463 - docs/build/html/classmlx_1_1core_1_1_exp.png | Bin 875 -> 0 bytes .../classmlx_1_1core_1_1_expm1-members.html | 115 - .../html/classmlx_1_1core_1_1_expm1.html | 434 - .../build/html/classmlx_1_1core_1_1_expm1.png | Bin 883 -> 0 bytes .../classmlx_1_1core_1_1_f_f_t-members.html | 115 - .../html/classmlx_1_1core_1_1_f_f_t.html | 447 - .../build/html/classmlx_1_1core_1_1_f_f_t.png | Bin 847 -> 0 bytes .../classmlx_1_1core_1_1_floor-members.html | 115 - .../html/classmlx_1_1core_1_1_floor.html | 463 - .../build/html/classmlx_1_1core_1_1_floor.png | Bin 866 -> 0 bytes .../classmlx_1_1core_1_1_full-members.html | 115 - .../build/html/classmlx_1_1core_1_1_full.html | 433 - docs/build/html/classmlx_1_1core_1_1_full.png | Bin 852 -> 0 bytes .../classmlx_1_1core_1_1_gather-members.html | 115 - .../html/classmlx_1_1core_1_1_gather.html | 442 - .../html/classmlx_1_1core_1_1_gather.png | Bin 893 -> 0 bytes ...assmlx_1_1core_1_1_gather_m_m-members.html | 115 - .../html/classmlx_1_1core_1_1_gather_m_m.html | 361 - .../html/classmlx_1_1core_1_1_gather_m_m.png | Bin 920 -> 0 bytes ...smlx_1_1core_1_1_gather_q_m_m-members.html | 115 - .../classmlx_1_1core_1_1_gather_q_m_m.html | 447 - .../classmlx_1_1core_1_1_gather_q_m_m.png | Bin 922 -> 0 bytes .../classmlx_1_1core_1_1_greater-members.html | 115 - .../html/classmlx_1_1core_1_1_greater.html | 463 - .../html/classmlx_1_1core_1_1_greater.png | Bin 910 -> 0 bytes ...mlx_1_1core_1_1_greater_equal-members.html | 115 - .../classmlx_1_1core_1_1_greater_equal.html | 463 - .../classmlx_1_1core_1_1_greater_equal.png | Bin 945 -> 0 bytes ...classmlx_1_1core_1_1_hadamard-members.html | 115 - .../html/classmlx_1_1core_1_1_hadamard.html | 467 - .../html/classmlx_1_1core_1_1_hadamard.png | Bin 903 -> 0 bytes .../classmlx_1_1core_1_1_inverse-members.html | 115 - .../html/classmlx_1_1core_1_1_inverse.html | 332 - .../html/classmlx_1_1core_1_1_inverse.png | Bin 884 -> 0 bytes .../classmlx_1_1core_1_1_less-members.html | 115 - .../build/html/classmlx_1_1core_1_1_less.html | 463 - docs/build/html/classmlx_1_1core_1_1_less.png | Bin 867 -> 0 bytes ...assmlx_1_1core_1_1_less_equal-members.html | 115 - .../html/classmlx_1_1core_1_1_less_equal.html | 463 - .../html/classmlx_1_1core_1_1_less_equal.png | Bin 926 -> 0 bytes .../classmlx_1_1core_1_1_load-members.html | 115 - .../build/html/classmlx_1_1core_1_1_load.html | 303 - docs/build/html/classmlx_1_1core_1_1_load.png | Bin 872 -> 0 bytes .../classmlx_1_1core_1_1_log-members.html | 119 - docs/build/html/classmlx_1_1core_1_1_log.html | 496 - docs/build/html/classmlx_1_1core_1_1_log.png | Bin 866 -> 0 bytes .../classmlx_1_1core_1_1_log1p-members.html | 115 - .../html/classmlx_1_1core_1_1_log1p.html | 434 - .../build/html/classmlx_1_1core_1_1_log1p.png | Bin 884 -> 0 bytes ...ssmlx_1_1core_1_1_log_add_exp-members.html | 115 - .../classmlx_1_1core_1_1_log_add_exp.html | 463 - .../html/classmlx_1_1core_1_1_log_add_exp.png | Bin 943 -> 0 bytes ...ssmlx_1_1core_1_1_logical_and-members.html | 115 - .../classmlx_1_1core_1_1_logical_and.html | 463 - .../html/classmlx_1_1core_1_1_logical_and.png | Bin 930 -> 0 bytes ...ssmlx_1_1core_1_1_logical_not-members.html | 115 - .../classmlx_1_1core_1_1_logical_not.html | 463 - .../html/classmlx_1_1core_1_1_logical_not.png | Bin 918 -> 0 bytes ...assmlx_1_1core_1_1_logical_or-members.html | 115 - .../html/classmlx_1_1core_1_1_logical_or.html | 463 - .../html/classmlx_1_1core_1_1_logical_or.png | Bin 920 -> 0 bytes .../classmlx_1_1core_1_1_matmul-members.html | 115 - .../html/classmlx_1_1core_1_1_matmul.html | 395 - .../html/classmlx_1_1core_1_1_matmul.png | Bin 885 -> 0 bytes .../classmlx_1_1core_1_1_maximum-members.html | 115 - .../html/classmlx_1_1core_1_1_maximum.html | 463 - .../html/classmlx_1_1core_1_1_maximum.png | Bin 901 -> 0 bytes .../classmlx_1_1core_1_1_minimum-members.html | 115 - .../html/classmlx_1_1core_1_1_minimum.html | 463 - .../html/classmlx_1_1core_1_1_minimum.png | Bin 892 -> 0 bytes ...classmlx_1_1core_1_1_multiply-members.html | 115 - .../html/classmlx_1_1core_1_1_multiply.html | 463 - .../html/classmlx_1_1core_1_1_multiply.png | Bin 909 -> 0 bytes ...classmlx_1_1core_1_1_negative-members.html | 115 - .../html/classmlx_1_1core_1_1_negative.html | 463 - .../html/classmlx_1_1core_1_1_negative.png | Bin 929 -> 0 bytes ...lassmlx_1_1core_1_1_not_equal-members.html | 115 - .../html/classmlx_1_1core_1_1_not_equal.html | 463 - .../html/classmlx_1_1core_1_1_not_equal.png | Bin 916 -> 0 bytes ..._1core_1_1_number_of_elements-members.html | 115 - ...assmlx_1_1core_1_1_number_of_elements.html | 396 - ...lassmlx_1_1core_1_1_number_of_elements.png | Bin 991 -> 0 bytes .../classmlx_1_1core_1_1_pad-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_pad.html | 447 - docs/build/html/classmlx_1_1core_1_1_pad.png | Bin 874 -> 0 bytes ...lassmlx_1_1core_1_1_partition-members.html | 115 - .../html/classmlx_1_1core_1_1_partition.html | 472 - .../html/classmlx_1_1core_1_1_partition.png | Bin 888 -> 0 bytes .../classmlx_1_1core_1_1_power-members.html | 115 - .../html/classmlx_1_1core_1_1_power.html | 463 - .../build/html/classmlx_1_1core_1_1_power.png | Bin 900 -> 0 bytes ...lassmlx_1_1core_1_1_primitive-members.html | 106 - .../html/classmlx_1_1core_1_1_primitive.html | 633 - .../html/classmlx_1_1core_1_1_primitive.png | Bin 4997 -> 0 bytes .../classmlx_1_1core_1_1_q_r_f-members.html | 107 - .../html/classmlx_1_1core_1_1_q_r_f.html | 273 - .../build/html/classmlx_1_1core_1_1_q_r_f.png | Bin 520 -> 0 bytes ..._1_1core_1_1_quantized_matmul-members.html | 115 - ...classmlx_1_1core_1_1_quantized_matmul.html | 447 - .../classmlx_1_1core_1_1_quantized_matmul.png | Bin 975 -> 0 bytes ...ssmlx_1_1core_1_1_random_bits-members.html | 115 - .../classmlx_1_1core_1_1_random_bits.html | 361 - .../html/classmlx_1_1core_1_1_random_bits.png | Bin 920 -> 0 bytes .../classmlx_1_1core_1_1_reduce-members.html | 122 - .../html/classmlx_1_1core_1_1_reduce.html | 472 - .../html/classmlx_1_1core_1_1_reduce.png | Bin 895 -> 0 bytes ...lassmlx_1_1core_1_1_remainder-members.html | 115 - .../html/classmlx_1_1core_1_1_remainder.html | 463 - .../html/classmlx_1_1core_1_1_remainder.png | Bin 917 -> 0 bytes .../classmlx_1_1core_1_1_reshape-members.html | 115 - .../html/classmlx_1_1core_1_1_reshape.html | 437 - .../html/classmlx_1_1core_1_1_reshape.png | Bin 910 -> 0 bytes .../classmlx_1_1core_1_1_round-members.html | 115 - .../html/classmlx_1_1core_1_1_round.html | 463 - .../build/html/classmlx_1_1core_1_1_round.png | Bin 881 -> 0 bytes .../classmlx_1_1core_1_1_s_v_d-members.html | 107 - .../html/classmlx_1_1core_1_1_s_v_d.html | 307 - .../build/html/classmlx_1_1core_1_1_s_v_d.png | Bin 520 -> 0 bytes .../classmlx_1_1core_1_1_scan-members.html | 120 - .../build/html/classmlx_1_1core_1_1_scan.html | 483 - docs/build/html/classmlx_1_1core_1_1_scan.png | Bin 884 -> 0 bytes .../classmlx_1_1core_1_1_scatter-members.html | 121 - .../html/classmlx_1_1core_1_1_scatter.html | 478 - .../html/classmlx_1_1core_1_1_scatter.png | Bin 901 -> 0 bytes .../classmlx_1_1core_1_1_select-members.html | 115 - .../html/classmlx_1_1core_1_1_select.html | 463 - .../html/classmlx_1_1core_1_1_select.png | Bin 884 -> 0 bytes .../classmlx_1_1core_1_1_sigmoid-members.html | 115 - .../html/classmlx_1_1core_1_1_sigmoid.html | 463 - .../html/classmlx_1_1core_1_1_sigmoid.png | Bin 906 -> 0 bytes .../classmlx_1_1core_1_1_sign-members.html | 115 - .../build/html/classmlx_1_1core_1_1_sign.html | 463 - docs/build/html/classmlx_1_1core_1_1_sign.png | Bin 890 -> 0 bytes .../classmlx_1_1core_1_1_sin-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_sin.html | 463 - docs/build/html/classmlx_1_1core_1_1_sin.png | Bin 864 -> 0 bytes .../classmlx_1_1core_1_1_sinh-members.html | 115 - .../build/html/classmlx_1_1core_1_1_sinh.html | 463 - docs/build/html/classmlx_1_1core_1_1_sinh.png | Bin 870 -> 0 bytes .../classmlx_1_1core_1_1_slice-members.html | 115 - .../html/classmlx_1_1core_1_1_slice.html | 447 - .../build/html/classmlx_1_1core_1_1_slice.png | Bin 884 -> 0 bytes ...smlx_1_1core_1_1_slice_update-members.html | 115 - .../classmlx_1_1core_1_1_slice_update.html | 447 - .../classmlx_1_1core_1_1_slice_update.png | Bin 918 -> 0 bytes .../classmlx_1_1core_1_1_softmax-members.html | 115 - .../html/classmlx_1_1core_1_1_softmax.html | 467 - .../html/classmlx_1_1core_1_1_softmax.png | Bin 894 -> 0 bytes .../classmlx_1_1core_1_1_sort-members.html | 115 - .../build/html/classmlx_1_1core_1_1_sort.html | 467 - docs/build/html/classmlx_1_1core_1_1_sort.png | Bin 870 -> 0 bytes .../classmlx_1_1core_1_1_split-members.html | 107 - .../html/classmlx_1_1core_1_1_split.html | 426 - .../build/html/classmlx_1_1core_1_1_split.png | Bin 527 -> 0 bytes .../classmlx_1_1core_1_1_sqrt-members.html | 115 - .../build/html/classmlx_1_1core_1_1_sqrt.html | 467 - docs/build/html/classmlx_1_1core_1_1_sqrt.png | Bin 887 -> 0 bytes .../classmlx_1_1core_1_1_square-members.html | 115 - .../html/classmlx_1_1core_1_1_square.html | 463 - .../html/classmlx_1_1core_1_1_square.png | Bin 906 -> 0 bytes ...mlx_1_1core_1_1_stop_gradient-members.html | 115 - .../classmlx_1_1core_1_1_stop_gradient.html | 382 - .../classmlx_1_1core_1_1_stop_gradient.png | Bin 934 -> 0 bytes ...classmlx_1_1core_1_1_subtract-members.html | 115 - .../html/classmlx_1_1core_1_1_subtract.html | 463 - .../html/classmlx_1_1core_1_1_subtract.png | Bin 903 -> 0 bytes .../classmlx_1_1core_1_1_tan-members.html | 115 - docs/build/html/classmlx_1_1core_1_1_tan.html | 463 - docs/build/html/classmlx_1_1core_1_1_tan.png | Bin 875 -> 0 bytes .../classmlx_1_1core_1_1_tanh-members.html | 115 - .../build/html/classmlx_1_1core_1_1_tanh.html | 463 - docs/build/html/classmlx_1_1core_1_1_tanh.png | Bin 879 -> 0 bytes ...lassmlx_1_1core_1_1_transpose-members.html | 115 - .../html/classmlx_1_1core_1_1_transpose.html | 437 - .../html/classmlx_1_1core_1_1_transpose.png | Bin 914 -> 0 bytes ...x_1_1core_1_1_unary_primitive-members.html | 114 - .../classmlx_1_1core_1_1_unary_primitive.html | 536 - .../classmlx_1_1core_1_1_unary_primitive.png | Bin 33073 -> 0 bytes .../classmlx_1_1core_1_1_uniform-members.html | 115 - .../html/classmlx_1_1core_1_1_uniform.html | 352 - .../html/classmlx_1_1core_1_1_uniform.png | Bin 876 -> 0 bytes .../classmlx_1_1core_1_1_view-members.html | 115 - .../build/html/classmlx_1_1core_1_1_view.html | 356 - docs/build/html/classmlx_1_1core_1_1_view.png | Bin 882 -> 0 bytes ...re_1_1allocator_1_1_allocator-members.html | 99 - ...lx_1_1core_1_1allocator_1_1_allocator.html | 367 - ...mlx_1_1core_1_1allocator_1_1_allocator.png | Bin 1087 -> 0 bytes ...1core_1_1allocator_1_1_buffer-members.html | 94 - ...ssmlx_1_1core_1_1allocator_1_1_buffer.html | 201 - ...llocator_1_1_common_allocator-members.html | 100 - ...ore_1_1allocator_1_1_common_allocator.html | 248 - ...core_1_1allocator_1_1_common_allocator.png | Bin 724 -> 0 bytes .../classmlx_1_1core_1_1array-members.html | 160 - .../build/html/classmlx_1_1core_1_1array.html | 2028 -- ...1_1distributed_1_1_all_gather-members.html | 110 - ...1_1core_1_1distributed_1_1_all_gather.html | 388 - ..._1_1core_1_1distributed_1_1_all_gather.png | Bin 1072 -> 0 bytes ...1_1distributed_1_1_all_reduce-members.html | 116 - ...1_1core_1_1distributed_1_1_all_reduce.html | 441 - ..._1_1core_1_1distributed_1_1_all_reduce.png | Bin 1062 -> 0 bytes ...istributed_1_1_dist_primitive-members.html | 108 - ...ore_1_1distributed_1_1_dist_primitive.html | 214 - ...core_1_1distributed_1_1_dist_primitive.png | Bin 2061 -> 0 bytes ...1core_1_1distributed_1_1_recv-members.html | 110 - ...ssmlx_1_1core_1_1distributed_1_1_recv.html | 278 - ...assmlx_1_1core_1_1distributed_1_1_recv.png | Bin 1035 -> 0 bytes ...1core_1_1distributed_1_1_send-members.html | 110 - ...ssmlx_1_1core_1_1distributed_1_1_send.html | 312 - ...assmlx_1_1core_1_1distributed_1_1_send.png | Bin 1046 -> 0 bytes ...e_1_1fast_1_1_affine_quantize-members.html | 109 - ...x_1_1core_1_1fast_1_1_affine_quantize.html | 286 - ...lx_1_1core_1_1fast_1_1_affine_quantize.png | Bin 1003 -> 0 bytes ...lx_1_1core_1_1fast_1_1_custom-members.html | 107 - .../classmlx_1_1core_1_1fast_1_1_custom.html | 307 - .../classmlx_1_1core_1_1fast_1_1_custom.png | Bin 3025 -> 0 bytes ...ore_1_1fast_1_1_custom_kernel-members.html | 108 - ...mlx_1_1core_1_1fast_1_1_custom_kernel.html | 297 - ...smlx_1_1core_1_1fast_1_1_custom_kernel.png | Bin 680 -> 0 bytes ..._1core_1_1fast_1_1_layer_norm-members.html | 109 - ...assmlx_1_1core_1_1fast_1_1_layer_norm.html | 327 - ...lassmlx_1_1core_1_1fast_1_1_layer_norm.png | Bin 951 -> 0 bytes ..._1_1fast_1_1_layer_norm_v_j_p-members.html | 109 - ..._1_1core_1_1fast_1_1_layer_norm_v_j_p.html | 284 - ...x_1_1core_1_1fast_1_1_layer_norm_v_j_p.png | Bin 994 -> 0 bytes ..._1core_1_1fast_1_1_r_m_s_norm-members.html | 109 - ...assmlx_1_1core_1_1fast_1_1_r_m_s_norm.html | 327 - ...lassmlx_1_1core_1_1fast_1_1_r_m_s_norm.png | Bin 927 -> 0 bytes ..._1_1fast_1_1_r_m_s_norm_v_j_p-members.html | 109 - ..._1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html | 284 - ...x_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.png | Bin 981 -> 0 bytes ...lx_1_1core_1_1fast_1_1_ro_p_e-members.html | 109 - .../classmlx_1_1core_1_1fast_1_1_ro_p_e.html | 352 - .../classmlx_1_1core_1_1fast_1_1_ro_p_e.png | Bin 863 -> 0 bytes ..._scaled_dot_product_attention-members.html | 110 - ...fast_1_1_scaled_dot_product_attention.html | 333 - ...1fast_1_1_scaled_dot_product_attention.png | Bin 1075 -> 0 bytes ...1_1core_1_1io_1_1_file_writer-members.html | 99 - ...lassmlx_1_1core_1_1io_1_1_file_writer.html | 349 - ...classmlx_1_1core_1_1io_1_1_file_writer.png | Bin 612 -> 0 bytes ..._1io_1_1_parallel_file_reader-members.html | 100 - ..._1core_1_1io_1_1_parallel_file_reader.html | 387 - ...1_1core_1_1io_1_1_parallel_file_reader.png | Bin 707 -> 0 bytes ...smlx_1_1core_1_1io_1_1_reader-members.html | 98 - .../classmlx_1_1core_1_1io_1_1_reader.html | 357 - .../classmlx_1_1core_1_1io_1_1_reader.png | Bin 713 -> 0 bytes ...smlx_1_1core_1_1io_1_1_writer-members.html | 97 - .../classmlx_1_1core_1_1io_1_1_writer.html | 319 - .../classmlx_1_1core_1_1io_1_1_writer.png | Bin 619 -> 0 bytes ...x_1_1core_1_1metal_1_1_device-members.html | 112 - .../classmlx_1_1core_1_1metal_1_1_device.html | 639 - ..._1_1metal_1_1_metal_allocator-members.html | 107 - ..._1_1core_1_1metal_1_1_metal_allocator.html | 417 - ...x_1_1core_1_1metal_1_1_metal_allocator.png | Bin 680 -> 0 bytes ...re_1_1random_1_1_key_sequence-members.html | 94 - ...lx_1_1core_1_1random_1_1_key_sequence.html | 197 - ...re_1_1scheduler_1_1_scheduler-members.html | 104 - ...lx_1_1core_1_1scheduler_1_1_scheduler.html | 478 - ...etfft_1_1detail_1_1_t__dcst23-members.html | 93 - ...lasspocketfft_1_1detail_1_1_t__dcst23.html | 210 - ...ketfft_1_1detail_1_1_t__dcst4-members.html | 93 - ...classpocketfft_1_1detail_1_1_t__dcst4.html | 210 - ...cketfft_1_1detail_1_1_t__dct1-members.html | 93 - .../classpocketfft_1_1detail_1_1_t__dct1.html | 210 - ...cketfft_1_1detail_1_1_t__dst1-members.html | 93 - .../classpocketfft_1_1detail_1_1_t__dst1.html | 210 - ...asspocketfft_1_1detail_1_1arr-members.html | 100 - .../html/classpocketfft_1_1detail_1_1arr.html | 391 - ...ketfft_1_1detail_1_1arr__info-members.html | 99 - ...classpocketfft_1_1detail_1_1arr__info.html | 357 - .../classpocketfft_1_1detail_1_1arr__info.png | Bin 1040 -> 0 bytes ...spocketfft_1_1detail_1_1cfftp-members.html | 92 - .../classpocketfft_1_1detail_1_1cfftp.html | 171 - ...pocketfft_1_1detail_1_1cndarr-members.html | 102 - .../classpocketfft_1_1detail_1_1cndarr.html | 229 - .../classpocketfft_1_1detail_1_1cndarr.png | Bin 1037 -> 0 bytes ...ocketfft_1_1detail_1_1fftblue-members.html | 93 - .../classpocketfft_1_1detail_1_1fftblue.html | 212 - ...tfft_1_1detail_1_1multi__iter-members.html | 101 - ...asspocketfft_1_1detail_1_1multi__iter.html | 437 - ...spocketfft_1_1detail_1_1ndarr-members.html | 104 - .../classpocketfft_1_1detail_1_1ndarr.html | 209 - .../classpocketfft_1_1detail_1_1ndarr.png | Bin 1032 -> 0 bytes ...fft_1_1detail_1_1pocketfft__c-members.html | 93 - ...sspocketfft_1_1detail_1_1pocketfft__c.html | 200 - ...fft_1_1detail_1_1pocketfft__r-members.html | 93 - ...sspocketfft_1_1detail_1_1pocketfft__r.html | 200 - ...ketfft_1_1detail_1_1rev__iter-members.html | 95 - ...classpocketfft_1_1detail_1_1rev__iter.html | 240 - ...spocketfft_1_1detail_1_1rfftp-members.html | 92 - .../classpocketfft_1_1detail_1_1rfftp.html | 171 - ...fft_1_1detail_1_1simple__iter-members.html | 94 - ...sspocketfft_1_1detail_1_1simple__iter.html | 209 - ...t_1_1detail_1_1sincos__2pibyn-members.html | 92 - ...pocketfft_1_1detail_1_1sincos__2pibyn.html | 159 - ...hreading_1_1concurrent__queue-members.html | 93 - ...ail_1_1threading_1_1concurrent__queue.html | 187 - ...1detail_1_1threading_1_1latch-members.html | 94 - ...etfft_1_1detail_1_1threading_1_1latch.html | 209 - ..._1_1threading_1_1thread__pool-members.html | 96 - ..._1detail_1_1threading_1_1thread__pool.html | 263 - docs/build/html/clipboard.js | 61 - docs/build/html/closed.png | Bin 132 -> 0 bytes docs/build/html/common_2arange_8h.html | 107 - docs/build/html/common_2arange_8h_source.html | 192 - docs/build/html/common_2binary_8h.html | 118 - docs/build/html/common_2binary_8h_source.html | 768 - docs/build/html/common_2binary__two_8h.html | 101 - .../html/common_2binary__two_8h_source.html | 647 - docs/build/html/common_2copy_8h.html | 122 - docs/build/html/common_2copy_8h_source.html | 145 - docs/build/html/common_2hadamard_8h.html | 119 - .../html/common_2hadamard_8h_source.html | 209 - docs/build/html/common_2reduce_8h.html | 141 - docs/build/html/common_2reduce_8h_source.html | 385 - docs/build/html/common_2slicing_8h.html | 108 - .../build/html/common_2slicing_8h_source.html | 118 - docs/build/html/common_2ternary_8h.html | 103 - .../build/html/common_2ternary_8h_source.html | 356 - docs/build/html/common_2unary_8h.html | 103 - docs/build/html/common_2unary_8h_source.html | 231 - docs/build/html/compile_8h.html | 130 - docs/build/html/compile_8h_source.html | 123 - docs/build/html/compile__impl_8h.html | 108 - docs/build/html/compile__impl_8h_source.html | 107 - docs/build/html/compiled_8h.html | 131 - docs/build/html/compiled_8h_source.html | 195 - docs/build/html/compiled__preamble_8h.html | 118 - .../html/compiled__preamble_8h_source.html | 107 - docs/build/html/conv_2loader_8h.html | 91 - docs/build/html/conv_2loader_8h_source.html | 100 - docs/build/html/conv_2params_8h.html | 111 - docs/build/html/conv_2params_8h_source.html | 202 - docs/build/html/conv_8h.html | 94 - docs/build/html/conv_8h_source.html | 112 - docs/build/html/cookie.js | 58 - docs/build/html/cpp/ops.html | 48 +- docs/build/html/defines_8h.html | 291 - docs/build/html/defines_8h_source.html | 125 - docs/build/html/dev/custom_metal_kernels.html | 16 +- docs/build/html/dev/extensions.html | 16 +- docs/build/html/dev/metal_debugger.html | 16 +- docs/build/html/device_8h.html | 117 - docs/build/html/device_8h_source.html | 139 - .../dir_1d446c9bd3c99228254c9484e0bc5c06.html | 97 - .../dir_2193406f5b2eae6fc53753d8a9a80df3.html | 97 - .../dir_23833761034051b43bb6c170b56e2cce.html | 99 - .../dir_4336740ec0075891704443b417fef6cb.html | 109 - .../dir_47795aa8999234f6f402f7e89d34d08e.html | 99 - .../dir_6379e541ea5051a09bc0e3fdd92fcd3b.html | 95 - .../dir_6768c99e6145fb9510ccdb40db8ede25.html | 106 - .../dir_70a37effa88bcbd6b791977fa1e64356.html | 160 - .../dir_76215a6c54e2b67053e723fc2395583c.html | 102 - .../dir_86b95e7b1d0d6e25466bb9213752d32f.html | 93 - .../dir_8c751ccfa9f494753d976761a9d60a84.html | 95 - .../dir_938ab0ecf10b8b860ff766c820f665fd.html | 150 - .../dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html | 97 - .../dir_ad00dcd1517bfdbe01f68ec9b4eff877.html | 93 - .../dir_ba4426224ef60f409462a2a12fa18f06.html | 97 - .../dir_d0c977ea65824390717cdb7efc36c157.html | 124 - .../dir_df9494e83ef22ae6150a0e080d9709ed.html | 104 - .../dir_f149b24a1b5be11cd70151abe517e3f8.html | 123 - .../dir_f60cd69d27fd3faa641c79056fff0e2d.html | 101 - docs/build/html/distributed_2ops_8h.html | 118 - .../html/distributed_2ops_8h_source.html | 144 - .../html/distributed_2primitives_8h.html | 118 - .../distributed_2primitives_8h_source.html | 295 - docs/build/html/distributed_8h.html | 119 - docs/build/html/distributed_8h_source.html | 140 - docs/build/html/distributed__impl_8h.html | 120 - .../html/distributed__impl_8h_source.html | 126 - docs/build/html/doc.svg | 12 - docs/build/html/docd.svg | 12 - docs/build/html/doxygen.css | 2225 -- docs/build/html/doxygen.svg | 28 - docs/build/html/doxygen_crawl.html | 1315 -- docs/build/html/dtype_8h.html | 175 - docs/build/html/dtype_8h_source.html | 273 - docs/build/html/dynsections.js | 194 - docs/build/html/einsum_8h.html | 112 - docs/build/html/einsum_8h_source.html | 121 - docs/build/html/erf_8h.html | 135 - docs/build/html/erf_8h_source.html | 172 - docs/build/html/event_8h.html | 108 - docs/build/html/event_8h_source.html | 174 - .../html/examples/linear_regression.html | 16 +- docs/build/html/examples/llama-inference.html | 16 +- docs/build/html/examples/mlp.html | 16 +- docs/build/html/expm1f_8h.html | 139 - docs/build/html/expm1f_8h_source.html | 190 - docs/build/html/fast_8h.html | 132 - docs/build/html/fast_8h_source.html | 195 - docs/build/html/fast__primitives_8h.html | 127 - .../html/fast__primitives_8h_source.html | 503 - docs/build/html/fft_8h.html | 177 - docs/build/html/fft_8h_source.html | 280 - docs/build/html/files.html | 235 - docs/build/html/folderclosed.svg | 11 - docs/build/html/folderclosedd.svg | 11 - docs/build/html/folderopen.svg | 17 - docs/build/html/folderopend.svg | 12 - docs/build/html/fp16_8h.html | 741 - docs/build/html/fp16_8h_source.html | 369 - docs/build/html/functions.html | 86 - docs/build/html/functions_a.html | 132 - docs/build/html/functions_b.html | 124 - docs/build/html/functions_c.html | 124 - docs/build/html/functions_d.html | 114 - docs/build/html/functions_e.html | 105 - docs/build/html/functions_enum.html | 90 - docs/build/html/functions_eval.html | 146 - docs/build/html/functions_f.html | 101 - docs/build/html/functions_func.html | 86 - docs/build/html/functions_func_a.html | 118 - docs/build/html/functions_func_b.html | 95 - docs/build/html/functions_func_c.html | 116 - docs/build/html/functions_func_d.html | 106 - docs/build/html/functions_func_e.html | 101 - docs/build/html/functions_func_f.html | 91 - docs/build/html/functions_func_g.html | 106 - docs/build/html/functions_func_h.html | 86 - docs/build/html/functions_func_i.html | 100 - docs/build/html/functions_func_j.html | 85 - docs/build/html/functions_func_k.html | 85 - docs/build/html/functions_func_l.html | 109 - docs/build/html/functions_func_m.html | 98 - docs/build/html/functions_func_n.html | 96 - docs/build/html/functions_func_o.html | 106 - docs/build/html/functions_func_p.html | 100 - docs/build/html/functions_func_q.html | 88 - docs/build/html/functions_func_r.html | 112 - docs/build/html/functions_func_s.html | 146 - docs/build/html/functions_func_t.html | 99 - docs/build/html/functions_func_u.html | 86 - docs/build/html/functions_func_v.html | 89 - docs/build/html/functions_func_w.html | 89 - docs/build/html/functions_func_~.html | 104 - docs/build/html/functions_g.html | 117 - docs/build/html/functions_h.html | 90 - docs/build/html/functions_i.html | 116 - docs/build/html/functions_j.html | 88 - docs/build/html/functions_k.html | 89 - docs/build/html/functions_l.html | 121 - docs/build/html/functions_m.html | 111 - docs/build/html/functions_n.html | 107 - docs/build/html/functions_o.html | 117 - docs/build/html/functions_p.html | 104 - docs/build/html/functions_q.html | 90 - docs/build/html/functions_r.html | 124 - docs/build/html/functions_rela.html | 85 - docs/build/html/functions_s.html | 168 - docs/build/html/functions_t.html | 127 - docs/build/html/functions_type.html | 96 - docs/build/html/functions_u.html | 87 - docs/build/html/functions_v.html | 95 - docs/build/html/functions_vars.html | 92 - docs/build/html/functions_vars_b.html | 112 - docs/build/html/functions_vars_c.html | 91 - docs/build/html/functions_vars_d.html | 91 - docs/build/html/functions_vars_e.html | 87 - docs/build/html/functions_vars_f.html | 94 - docs/build/html/functions_vars_g.html | 95 - docs/build/html/functions_vars_h.html | 88 - docs/build/html/functions_vars_i.html | 98 - docs/build/html/functions_vars_j.html | 87 - docs/build/html/functions_vars_k.html | 87 - docs/build/html/functions_vars_l.html | 93 - docs/build/html/functions_vars_m.html | 95 - docs/build/html/functions_vars_n.html | 95 - docs/build/html/functions_vars_o.html | 91 - docs/build/html/functions_vars_p.html | 87 - docs/build/html/functions_vars_q.html | 86 - docs/build/html/functions_vars_r.html | 93 - docs/build/html/functions_vars_s.html | 107 - docs/build/html/functions_vars_t.html | 109 - docs/build/html/functions_vars_v.html | 87 - docs/build/html/functions_vars_w.html | 91 - docs/build/html/functions_vars_x.html | 85 - docs/build/html/functions_w.html | 96 - docs/build/html/functions_x.html | 86 - docs/build/html/functions_~.html | 104 - docs/build/html/gather_8h.html | 163 - docs/build/html/gather_8h_source.html | 148 - docs/build/html/gemm_2loader_8h.html | 108 - docs/build/html/gemm_2loader_8h_source.html | 263 - docs/build/html/gemm_2params_8h.html | 109 - docs/build/html/gemm_2params_8h_source.html | 195 - docs/build/html/gemm_8h.html | 112 - docs/build/html/gemm_8h_source.html | 413 - docs/build/html/genindex.html | 52 +- docs/build/html/gguf_8h.html | 112 - docs/build/html/gguf_8h_source.html | 119 - docs/build/html/globals.html | 86 - docs/build/html/globals_a.html | 95 - docs/build/html/globals_b.html | 118 - docs/build/html/globals_c.html | 111 - docs/build/html/globals_d.html | 93 - docs/build/html/globals_defs.html | 197 - docs/build/html/globals_e.html | 97 - docs/build/html/globals_f.html | 90 - docs/build/html/globals_func.html | 90 - docs/build/html/globals_func_b.html | 106 - docs/build/html/globals_func_c.html | 104 - docs/build/html/globals_func_d.html | 85 - docs/build/html/globals_func_e.html | 96 - docs/build/html/globals_func_f.html | 87 - docs/build/html/globals_func_g.html | 93 - docs/build/html/globals_func_h.html | 86 - docs/build/html/globals_func_i.html | 87 - docs/build/html/globals_func_l.html | 89 - docs/build/html/globals_func_m.html | 98 - docs/build/html/globals_func_o.html | 100 - docs/build/html/globals_func_p.html | 86 - docs/build/html/globals_func_q.html | 97 - docs/build/html/globals_func_r.html | 102 - docs/build/html/globals_func_s.html | 91 - docs/build/html/globals_func_t.html | 94 - docs/build/html/globals_func_u.html | 87 - docs/build/html/globals_func_w.html | 86 - docs/build/html/globals_g.html | 96 - docs/build/html/globals_h.html | 94 - docs/build/html/globals_i.html | 96 - docs/build/html/globals_l.html | 89 - docs/build/html/globals_m.html | 106 - docs/build/html/globals_n.html | 86 - docs/build/html/globals_o.html | 101 - docs/build/html/globals_p.html | 106 - docs/build/html/globals_q.html | 97 - docs/build/html/globals_r.html | 127 - docs/build/html/globals_s.html | 106 - docs/build/html/globals_t.html | 94 - docs/build/html/globals_type.html | 86 - docs/build/html/globals_u.html | 90 - docs/build/html/globals_vars.html | 212 - docs/build/html/globals_w.html | 86 - docs/build/html/globals_z.html | 85 - docs/build/html/graph__utils_8h.html | 120 - docs/build/html/graph__utils_8h_source.html | 136 - docs/build/html/group__ops.html | 9761 -------- docs/build/html/half__types_8h.html | 197 - docs/build/html/half__types_8h_source.html | 158 - docs/build/html/hierarchy.html | 472 - docs/build/html/includes_8h.html | 161 - docs/build/html/includes_8h_source.html | 159 - docs/build/html/index.html | 16 +- docs/build/html/install.html | 16 +- docs/build/html/io_2load_8h.html | 125 - docs/build/html/io_2load_8h_source.html | 315 - docs/build/html/io_8h.html | 144 - docs/build/html/io_8h_source.html | 161 - docs/build/html/jit_2gemv__masked_8h.html | 143 - .../html/jit_2gemv__masked_8h_source.html | 118 - docs/build/html/jit_2indexing_8h.html | 144 - docs/build/html/jit_2indexing_8h_source.html | 187 - docs/build/html/jit_2scan_8h.html | 144 - docs/build/html/jit_2scan_8h_source.html | 119 - docs/build/html/jit_2softmax_8h.html | 141 - docs/build/html/jit_2softmax_8h_source.html | 116 - docs/build/html/jit_2steel__conv_8h.html | 173 - .../html/jit_2steel__conv_8h_source.html | 126 - docs/build/html/jquery.js | 34 - docs/build/html/kernels_2gemv__masked_8h.html | 396 - .../html/kernels_2gemv__masked_8h_source.html | 972 - docs/build/html/kernels_2indexing_8h.html | 129 - .../html/kernels_2indexing_8h_source.html | 124 - docs/build/html/kernels_2scan_8h.html | 388 - docs/build/html/kernels_2scan_8h_source.html | 618 - docs/build/html/kernels_2softmax_8h.html | 233 - .../html/kernels_2softmax_8h_source.html | 294 - ...2steel_2conv_2kernels_2steel__conv_8h.html | 158 - ...2conv_2kernels_2steel__conv_8h_source.html | 281 - docs/build/html/kernels_8h.html | 151 - docs/build/html/kernels_8h_source.html | 341 - docs/build/html/lapack__helper_8h.html | 116 - docs/build/html/lapack__helper_8h_source.html | 115 - docs/build/html/linalg_8h.html | 137 - docs/build/html/linalg_8h_source.html | 181 - docs/build/html/loader__channel__l_8h.html | 111 - .../html/loader__channel__l_8h_source.html | 653 - docs/build/html/loader__channel__n_8h.html | 119 - .../html/loader__channel__n_8h_source.html | 499 - docs/build/html/loader__general_8h.html | 108 - .../build/html/loader__general_8h_source.html | 462 - docs/build/html/matmul_8h.html | 108 - docs/build/html/matmul_8h_source.html | 142 - docs/build/html/menu.js | 134 - docs/build/html/menudata.js | 272 - docs/build/html/metal_2binary_8h.html | 112 - docs/build/html/metal_2binary_8h_source.html | 132 - docs/build/html/metal_2copy_8h.html | 118 - docs/build/html/metal_2copy_8h_source.html | 144 - docs/build/html/metal_2jit_2arange_8h.html | 127 - .../html/metal_2jit_2arange_8h_source.html | 102 - docs/build/html/metal_2jit_2copy_8h.html | 120 - .../html/metal_2jit_2copy_8h_source.html | 193 - .../build/html/metal_2kernels_2arange_8h.html | 132 - .../metal_2kernels_2arange_8h_source.html | 104 - .../build/html/metal_2kernels_2binary_8h.html | 628 - .../metal_2kernels_2binary_8h_source.html | 278 - .../html/metal_2kernels_2binary__two_8h.html | 688 - ...metal_2kernels_2binary__two_8h_source.html | 314 - docs/build/html/metal_2kernels_2copy_8h.html | 665 - .../html/metal_2kernels_2copy_8h_source.html | 302 - .../html/metal_2kernels_2hadamard_8h.html | 203 - .../metal_2kernels_2hadamard_8h_source.html | 272 - .../build/html/metal_2kernels_2reduce_8h.html | 93 - .../metal_2kernels_2reduce_8h_source.html | 101 - .../html/metal_2kernels_2ternary_8h.html | 498 - .../metal_2kernels_2ternary_8h_source.html | 231 - docs/build/html/metal_2kernels_2unary_8h.html | 209 - .../html/metal_2kernels_2unary_8h_source.html | 133 - docs/build/html/metal_2reduce_8h.html | 112 - docs/build/html/metal_2reduce_8h_source.html | 146 - docs/build/html/metal_2slicing_8h.html | 110 - docs/build/html/metal_2slicing_8h_source.html | 129 - docs/build/html/metal_2ternary_8h.html | 108 - docs/build/html/metal_2ternary_8h_source.html | 120 - docs/build/html/metal_2unary_8h.html | 108 - docs/build/html/metal_2unary_8h_source.html | 120 - docs/build/html/metal_8h.html | 131 - docs/build/html/metal_8h_source.html | 177 - docs/build/html/metal__impl_8h.html | 121 - docs/build/html/metal__impl_8h_source.html | 124 - docs/build/html/minus.svg | 8 - docs/build/html/minusd.svg | 8 - docs/build/html/mlx_8h.html | 105 - docs/build/html/mlx_8h_source.html | 128 - docs/build/html/mma_8h.html | 110 - docs/build/html/mma_8h_source.html | 512 - docs/build/html/namespacemembers.html | 126 - docs/build/html/namespacemembers_b.html | 103 - docs/build/html/namespacemembers_c.html | 140 - docs/build/html/namespacemembers_d.html | 102 - docs/build/html/namespacemembers_e.html | 101 - docs/build/html/namespacemembers_enum.html | 85 - docs/build/html/namespacemembers_eval.html | 88 - docs/build/html/namespacemembers_f.html | 112 - docs/build/html/namespacemembers_func.html | 125 - docs/build/html/namespacemembers_func_b.html | 99 - docs/build/html/namespacemembers_func_c.html | 127 - docs/build/html/namespacemembers_func_d.html | 101 - docs/build/html/namespacemembers_func_e.html | 100 - docs/build/html/namespacemembers_func_f.html | 107 - docs/build/html/namespacemembers_func_g.html | 131 - docs/build/html/namespacemembers_func_h.html | 87 - docs/build/html/namespacemembers_func_i.html | 107 - docs/build/html/namespacemembers_func_j.html | 85 - docs/build/html/namespacemembers_func_k.html | 86 - docs/build/html/namespacemembers_func_l.html | 103 - docs/build/html/namespacemembers_func_m.html | 105 - docs/build/html/namespacemembers_func_n.html | 99 - docs/build/html/namespacemembers_func_o.html | 112 - docs/build/html/namespacemembers_func_p.html | 101 - docs/build/html/namespacemembers_func_q.html | 88 - docs/build/html/namespacemembers_func_r.html | 113 - docs/build/html/namespacemembers_func_s.html | 157 - docs/build/html/namespacemembers_func_t.html | 111 - docs/build/html/namespacemembers_func_u.html | 90 - docs/build/html/namespacemembers_func_v.html | 91 - docs/build/html/namespacemembers_func_w.html | 86 - docs/build/html/namespacemembers_func_z.html | 86 - docs/build/html/namespacemembers_g.html | 138 - docs/build/html/namespacemembers_h.html | 90 - docs/build/html/namespacemembers_i.html | 115 - docs/build/html/namespacemembers_j.html | 85 - docs/build/html/namespacemembers_k.html | 86 - docs/build/html/namespacemembers_l.html | 103 - docs/build/html/namespacemembers_m.html | 108 - docs/build/html/namespacemembers_n.html | 101 - docs/build/html/namespacemembers_o.html | 112 - docs/build/html/namespacemembers_p.html | 101 - docs/build/html/namespacemembers_q.html | 88 - docs/build/html/namespacemembers_r.html | 114 - docs/build/html/namespacemembers_s.html | 163 - docs/build/html/namespacemembers_t.html | 112 - docs/build/html/namespacemembers_type.html | 99 - docs/build/html/namespacemembers_u.html | 95 - docs/build/html/namespacemembers_v.html | 93 - docs/build/html/namespacemembers_vars.html | 164 - docs/build/html/namespacemembers_w.html | 86 - docs/build/html/namespacemembers_z.html | 86 - docs/build/html/namespacemetal.html | 1661 -- docs/build/html/namespacemetal_1_1fast.html | 1178 - .../build/html/namespacemetal_1_1precise.html | 1178 - docs/build/html/namespacemlx.html | 93 - docs/build/html/namespacemlx_1_1core.html | 18678 ---------------- .../namespacemlx_1_1core_1_1allocator.html | 180 - .../html/namespacemlx_1_1core_1_1detail.html | 460 - .../namespacemlx_1_1core_1_1distributed.html | 319 - ...emlx_1_1core_1_1distributed_1_1detail.html | 231 - .../html/namespacemlx_1_1core_1_1fast.html | 497 - .../html/namespacemlx_1_1core_1_1fft.html | 1082 - .../html/namespacemlx_1_1core_1_1io.html | 125 - .../html/namespacemlx_1_1core_1_1linalg.html | 521 - .../html/namespacemlx_1_1core_1_1metal.html | 1032 - .../html/namespacemlx_1_1core_1_1random.html | 1318 -- .../namespacemlx_1_1core_1_1scheduler.html | 255 - docs/build/html/namespacemlx_1_1steel.html | 147 - docs/build/html/namespacepocketfft.html | 91 - .../html/namespacepocketfft_1_1detail.html | 1725 -- ...spacepocketfft_1_1detail_1_1threading.html | 245 - docs/build/html/namespaces.html | 373 - docs/build/html/nav_f.png | Bin 153 -> 0 bytes docs/build/html/nav_fd.png | Bin 169 -> 0 bytes docs/build/html/nav_g.png | Bin 95 -> 0 bytes docs/build/html/nav_h.png | Bin 98 -> 0 bytes docs/build/html/nav_hd.png | Bin 114 -> 0 bytes docs/build/html/objects.inv | Bin 25856 -> 26167 bytes docs/build/html/open.png | Bin 123 -> 0 bytes docs/build/html/ops_8h.html | 911 - docs/build/html/ops_8h_source.html | 1524 -- docs/build/html/plus.svg | 9 - docs/build/html/plusd.svg | 9 - docs/build/html/pocketfft_8h.html | 1134 - docs/build/html/pocketfft_8h_source.html | 4171 ---- docs/build/html/primitives_8h.html | 425 - docs/build/html/primitives_8h_source.html | 3010 --- .../python/_autosummary/mlx.core.Device.html | 16 +- .../python/_autosummary/mlx.core.Dtype.html | 16 +- .../_autosummary/mlx.core.DtypeCategory.html | 16 +- .../python/_autosummary/mlx.core.abs.html | 16 +- .../python/_autosummary/mlx.core.add.html | 16 +- .../python/_autosummary/mlx.core.addmm.html | 16 +- .../python/_autosummary/mlx.core.all.html | 16 +- .../_autosummary/mlx.core.allclose.html | 16 +- .../python/_autosummary/mlx.core.any.html | 16 +- .../python/_autosummary/mlx.core.arange.html | 16 +- .../python/_autosummary/mlx.core.arccos.html | 16 +- .../python/_autosummary/mlx.core.arccosh.html | 16 +- .../python/_autosummary/mlx.core.arcsin.html | 16 +- .../python/_autosummary/mlx.core.arcsinh.html | 16 +- .../python/_autosummary/mlx.core.arctan.html | 16 +- .../python/_autosummary/mlx.core.arctan2.html | 16 +- .../python/_autosummary/mlx.core.arctanh.html | 16 +- .../python/_autosummary/mlx.core.argmax.html | 16 +- .../python/_autosummary/mlx.core.argmin.html | 16 +- .../_autosummary/mlx.core.argpartition.html | 16 +- .../python/_autosummary/mlx.core.argsort.html | 16 +- .../python/_autosummary/mlx.core.array.T.html | 16 +- .../_autosummary/mlx.core.array.abs.html | 16 +- .../_autosummary/mlx.core.array.all.html | 16 +- .../_autosummary/mlx.core.array.any.html | 16 +- .../_autosummary/mlx.core.array.argmax.html | 16 +- .../_autosummary/mlx.core.array.argmin.html | 16 +- .../_autosummary/mlx.core.array.astype.html | 16 +- .../_autosummary/mlx.core.array.at.html | 16 +- .../_autosummary/mlx.core.array.conj.html | 16 +- .../_autosummary/mlx.core.array.cos.html | 16 +- .../_autosummary/mlx.core.array.cummax.html | 16 +- .../_autosummary/mlx.core.array.cummin.html | 16 +- .../_autosummary/mlx.core.array.cumprod.html | 16 +- .../_autosummary/mlx.core.array.cumsum.html | 16 +- .../_autosummary/mlx.core.array.diag.html | 16 +- .../_autosummary/mlx.core.array.diagonal.html | 16 +- .../_autosummary/mlx.core.array.dtype.html | 16 +- .../_autosummary/mlx.core.array.exp.html | 16 +- .../_autosummary/mlx.core.array.flatten.html | 16 +- .../python/_autosummary/mlx.core.array.html | 16 +- .../_autosummary/mlx.core.array.item.html | 16 +- .../_autosummary/mlx.core.array.itemsize.html | 16 +- .../_autosummary/mlx.core.array.log.html | 16 +- .../_autosummary/mlx.core.array.log10.html | 16 +- .../_autosummary/mlx.core.array.log1p.html | 16 +- .../_autosummary/mlx.core.array.log2.html | 16 +- .../mlx.core.array.logsumexp.html | 16 +- .../_autosummary/mlx.core.array.max.html | 16 +- .../_autosummary/mlx.core.array.mean.html | 16 +- .../_autosummary/mlx.core.array.min.html | 16 +- .../_autosummary/mlx.core.array.moveaxis.html | 16 +- .../_autosummary/mlx.core.array.nbytes.html | 16 +- .../_autosummary/mlx.core.array.ndim.html | 16 +- .../_autosummary/mlx.core.array.prod.html | 16 +- .../mlx.core.array.reciprocal.html | 16 +- .../_autosummary/mlx.core.array.reshape.html | 16 +- .../_autosummary/mlx.core.array.round.html | 16 +- .../_autosummary/mlx.core.array.rsqrt.html | 16 +- .../_autosummary/mlx.core.array.shape.html | 16 +- .../_autosummary/mlx.core.array.sin.html | 16 +- .../_autosummary/mlx.core.array.size.html | 16 +- .../_autosummary/mlx.core.array.split.html | 16 +- .../_autosummary/mlx.core.array.sqrt.html | 16 +- .../_autosummary/mlx.core.array.square.html | 16 +- .../_autosummary/mlx.core.array.squeeze.html | 16 +- .../_autosummary/mlx.core.array.std.html | 16 +- .../_autosummary/mlx.core.array.sum.html | 16 +- .../_autosummary/mlx.core.array.swapaxes.html | 16 +- .../_autosummary/mlx.core.array.tolist.html | 16 +- .../mlx.core.array.transpose.html | 16 +- .../_autosummary/mlx.core.array.var.html | 16 +- .../_autosummary/mlx.core.array.view.html | 16 +- .../_autosummary/mlx.core.array_equal.html | 16 +- .../_autosummary/mlx.core.as_strided.html | 16 +- .../_autosummary/mlx.core.atleast_1d.html | 16 +- .../_autosummary/mlx.core.atleast_2d.html | 16 +- .../_autosummary/mlx.core.atleast_3d.html | 16 +- .../_autosummary/mlx.core.bitwise_and.html | 16 +- .../_autosummary/mlx.core.bitwise_or.html | 16 +- .../_autosummary/mlx.core.bitwise_xor.html | 16 +- .../mlx.core.block_masked_mm.html | 16 +- .../_autosummary/mlx.core.broadcast_to.html | 16 +- .../python/_autosummary/mlx.core.ceil.html | 16 +- .../python/_autosummary/mlx.core.clip.html | 16 +- .../python/_autosummary/mlx.core.compile.html | 16 +- .../_autosummary/mlx.core.concatenate.html | 16 +- .../python/_autosummary/mlx.core.conj.html | 16 +- .../_autosummary/mlx.core.conjugate.html | 16 +- .../python/_autosummary/mlx.core.conv1d.html | 16 +- .../python/_autosummary/mlx.core.conv2d.html | 16 +- .../python/_autosummary/mlx.core.conv3d.html | 16 +- .../_autosummary/mlx.core.conv_general.html | 16 +- .../mlx.core.conv_transpose1d.html | 16 +- .../mlx.core.conv_transpose2d.html | 16 +- .../mlx.core.conv_transpose3d.html | 16 +- .../_autosummary/mlx.core.convolve.html | 16 +- .../python/_autosummary/mlx.core.cos.html | 16 +- .../python/_autosummary/mlx.core.cosh.html | 16 +- .../python/_autosummary/mlx.core.cummax.html | 16 +- .../python/_autosummary/mlx.core.cummin.html | 16 +- .../python/_autosummary/mlx.core.cumprod.html | 16 +- .../python/_autosummary/mlx.core.cumsum.html | 16 +- .../mlx.core.custom_function.html | 16 +- .../_autosummary/mlx.core.default_device.html | 16 +- .../_autosummary/mlx.core.default_stream.html | 16 +- .../python/_autosummary/mlx.core.degrees.html | 16 +- .../_autosummary/mlx.core.dequantize.html | 16 +- .../python/_autosummary/mlx.core.diag.html | 16 +- .../_autosummary/mlx.core.diagonal.html | 16 +- .../mlx.core.disable_compile.html | 16 +- .../mlx.core.distributed.Group.html | 16 +- .../mlx.core.distributed.all_gather.html | 16 +- .../mlx.core.distributed.all_sum.html | 16 +- .../mlx.core.distributed.init.html | 16 +- .../mlx.core.distributed.is_available.html | 16 +- .../mlx.core.distributed.recv.html | 16 +- .../mlx.core.distributed.recv_like.html | 16 +- .../mlx.core.distributed.send.html | 16 +- .../python/_autosummary/mlx.core.divide.html | 16 +- .../python/_autosummary/mlx.core.divmod.html | 16 +- .../python/_autosummary/mlx.core.einsum.html | 16 +- .../_autosummary/mlx.core.einsum_path.html | 16 +- .../_autosummary/mlx.core.enable_compile.html | 16 +- .../python/_autosummary/mlx.core.equal.html | 16 +- .../python/_autosummary/mlx.core.erf.html | 16 +- .../python/_autosummary/mlx.core.erfinv.html | 16 +- .../python/_autosummary/mlx.core.eval.html | 16 +- .../python/_autosummary/mlx.core.exp.html | 16 +- .../_autosummary/mlx.core.expand_dims.html | 16 +- .../python/_autosummary/mlx.core.expm1.html | 16 +- .../python/_autosummary/mlx.core.eye.html | 16 +- .../mlx.core.fast.affine_quantize.html | 16 +- .../mlx.core.fast.layer_norm.html | 16 +- .../mlx.core.fast.metal_kernel.html | 16 +- .../_autosummary/mlx.core.fast.rms_norm.html | 16 +- .../_autosummary/mlx.core.fast.rope.html | 16 +- ...ore.fast.scaled_dot_product_attention.html | 16 +- .../python/_autosummary/mlx.core.fft.fft.html | 16 +- .../_autosummary/mlx.core.fft.fft2.html | 16 +- .../_autosummary/mlx.core.fft.fftn.html | 16 +- .../_autosummary/mlx.core.fft.ifft.html | 16 +- .../_autosummary/mlx.core.fft.ifft2.html | 16 +- .../_autosummary/mlx.core.fft.ifftn.html | 16 +- .../_autosummary/mlx.core.fft.irfft.html | 16 +- .../_autosummary/mlx.core.fft.irfft2.html | 16 +- .../_autosummary/mlx.core.fft.irfftn.html | 16 +- .../_autosummary/mlx.core.fft.rfft.html | 16 +- .../_autosummary/mlx.core.fft.rfft2.html | 16 +- .../_autosummary/mlx.core.fft.rfftn.html | 16 +- .../python/_autosummary/mlx.core.flatten.html | 16 +- .../python/_autosummary/mlx.core.floor.html | 16 +- .../_autosummary/mlx.core.floor_divide.html | 16 +- .../python/_autosummary/mlx.core.full.html | 16 +- .../_autosummary/mlx.core.gather_mm.html | 16 +- .../_autosummary/mlx.core.gather_qmm.html | 16 +- .../python/_autosummary/mlx.core.grad.html | 16 +- .../python/_autosummary/mlx.core.greater.html | 16 +- .../_autosummary/mlx.core.greater_equal.html | 16 +- .../mlx.core.hadamard_transform.html | 16 +- .../_autosummary/mlx.core.identity.html | 16 +- .../python/_autosummary/mlx.core.inner.html | 16 +- .../python/_autosummary/mlx.core.isclose.html | 16 +- .../_autosummary/mlx.core.isfinite.html | 16 +- .../python/_autosummary/mlx.core.isinf.html | 16 +- .../python/_autosummary/mlx.core.isnan.html | 16 +- .../_autosummary/mlx.core.isneginf.html | 16 +- .../_autosummary/mlx.core.isposinf.html | 16 +- .../_autosummary/mlx.core.issubdtype.html | 16 +- .../python/_autosummary/mlx.core.jvp.html | 16 +- .../_autosummary/mlx.core.left_shift.html | 16 +- .../python/_autosummary/mlx.core.less.html | 16 +- .../_autosummary/mlx.core.less_equal.html | 16 +- .../mlx.core.linalg.cholesky.html | 16 +- .../mlx.core.linalg.cholesky_inv.html | 22 +- .../_autosummary/mlx.core.linalg.cross.html | 1000 + .../_autosummary/mlx.core.linalg.inv.html | 16 +- .../_autosummary/mlx.core.linalg.norm.html | 16 +- .../_autosummary/mlx.core.linalg.qr.html | 22 +- .../_autosummary/mlx.core.linalg.svd.html | 16 +- .../_autosummary/mlx.core.linalg.tri_inv.html | 16 +- .../_autosummary/mlx.core.linspace.html | 16 +- .../python/_autosummary/mlx.core.load.html | 16 +- .../python/_autosummary/mlx.core.log.html | 16 +- .../python/_autosummary/mlx.core.log10.html | 16 +- .../python/_autosummary/mlx.core.log1p.html | 16 +- .../python/_autosummary/mlx.core.log2.html | 16 +- .../_autosummary/mlx.core.logaddexp.html | 16 +- .../_autosummary/mlx.core.logical_and.html | 16 +- .../_autosummary/mlx.core.logical_not.html | 16 +- .../_autosummary/mlx.core.logical_or.html | 16 +- .../_autosummary/mlx.core.logsumexp.html | 16 +- .../python/_autosummary/mlx.core.matmul.html | 16 +- .../python/_autosummary/mlx.core.max.html | 16 +- .../python/_autosummary/mlx.core.maximum.html | 16 +- .../python/_autosummary/mlx.core.mean.html | 16 +- .../_autosummary/mlx.core.meshgrid.html | 16 +- .../mlx.core.metal.clear_cache.html | 16 +- .../mlx.core.metal.device_info.html | 16 +- .../mlx.core.metal.get_active_memory.html | 16 +- .../mlx.core.metal.get_cache_memory.html | 16 +- .../mlx.core.metal.get_peak_memory.html | 16 +- .../mlx.core.metal.is_available.html | 16 +- .../mlx.core.metal.reset_peak_memory.html | 16 +- .../mlx.core.metal.set_cache_limit.html | 16 +- .../mlx.core.metal.set_memory_limit.html | 16 +- .../mlx.core.metal.start_capture.html | 16 +- .../mlx.core.metal.stop_capture.html | 16 +- .../python/_autosummary/mlx.core.min.html | 16 +- .../python/_autosummary/mlx.core.minimum.html | 16 +- .../_autosummary/mlx.core.moveaxis.html | 16 +- .../_autosummary/mlx.core.multiply.html | 16 +- .../_autosummary/mlx.core.nan_to_num.html | 16 +- .../_autosummary/mlx.core.negative.html | 16 +- .../_autosummary/mlx.core.new_stream.html | 16 +- .../_autosummary/mlx.core.not_equal.html | 16 +- .../python/_autosummary/mlx.core.ones.html | 16 +- .../_autosummary/mlx.core.ones_like.html | 16 +- .../python/_autosummary/mlx.core.outer.html | 16 +- .../python/_autosummary/mlx.core.pad.html | 16 +- .../_autosummary/mlx.core.partition.html | 16 +- .../python/_autosummary/mlx.core.power.html | 16 +- .../python/_autosummary/mlx.core.prod.html | 22 +- .../_autosummary/mlx.core.put_along_axis.html | 999 + .../_autosummary/mlx.core.quantize.html | 22 +- .../mlx.core.quantized_matmul.html | 16 +- .../python/_autosummary/mlx.core.radians.html | 16 +- .../mlx.core.random.bernoulli.html | 16 +- .../mlx.core.random.categorical.html | 16 +- .../_autosummary/mlx.core.random.gumbel.html | 16 +- .../_autosummary/mlx.core.random.key.html | 16 +- .../_autosummary/mlx.core.random.laplace.html | 16 +- .../mlx.core.random.multivariate_normal.html | 16 +- .../_autosummary/mlx.core.random.normal.html | 16 +- .../_autosummary/mlx.core.random.randint.html | 16 +- .../_autosummary/mlx.core.random.seed.html | 16 +- .../_autosummary/mlx.core.random.split.html | 16 +- .../mlx.core.random.truncated_normal.html | 16 +- .../_autosummary/mlx.core.random.uniform.html | 16 +- .../_autosummary/mlx.core.reciprocal.html | 16 +- .../_autosummary/mlx.core.remainder.html | 16 +- .../python/_autosummary/mlx.core.repeat.html | 16 +- .../python/_autosummary/mlx.core.reshape.html | 16 +- .../_autosummary/mlx.core.right_shift.html | 16 +- .../python/_autosummary/mlx.core.round.html | 16 +- .../python/_autosummary/mlx.core.rsqrt.html | 16 +- .../python/_autosummary/mlx.core.save.html | 16 +- .../_autosummary/mlx.core.save_gguf.html | 16 +- .../mlx.core.save_safetensors.html | 16 +- .../python/_autosummary/mlx.core.savez.html | 16 +- .../mlx.core.savez_compressed.html | 16 +- .../mlx.core.set_default_device.html | 16 +- .../mlx.core.set_default_stream.html | 16 +- .../python/_autosummary/mlx.core.sigmoid.html | 16 +- .../python/_autosummary/mlx.core.sign.html | 16 +- .../python/_autosummary/mlx.core.sin.html | 16 +- .../python/_autosummary/mlx.core.sinh.html | 16 +- .../python/_autosummary/mlx.core.softmax.html | 16 +- .../python/_autosummary/mlx.core.sort.html | 16 +- .../python/_autosummary/mlx.core.split.html | 16 +- .../python/_autosummary/mlx.core.sqrt.html | 16 +- .../python/_autosummary/mlx.core.square.html | 16 +- .../python/_autosummary/mlx.core.squeeze.html | 16 +- .../python/_autosummary/mlx.core.stack.html | 16 +- .../python/_autosummary/mlx.core.std.html | 16 +- .../_autosummary/mlx.core.stop_gradient.html | 16 +- ....core.Stream.html => mlx.core.stream.html} | 16 +- .../_autosummary/mlx.core.subtract.html | 16 +- .../python/_autosummary/mlx.core.sum.html | 16 +- .../_autosummary/mlx.core.swapaxes.html | 16 +- .../_autosummary/mlx.core.synchronize.html | 16 +- .../python/_autosummary/mlx.core.take.html | 20 +- .../mlx.core.take_along_axis.html | 18 +- .../python/_autosummary/mlx.core.tan.html | 16 +- .../python/_autosummary/mlx.core.tanh.html | 16 +- .../_autosummary/mlx.core.tensordot.html | 16 +- .../python/_autosummary/mlx.core.tile.html | 16 +- .../python/_autosummary/mlx.core.topk.html | 16 +- .../python/_autosummary/mlx.core.trace.html | 16 +- .../_autosummary/mlx.core.transpose.html | 16 +- .../python/_autosummary/mlx.core.tri.html | 16 +- .../python/_autosummary/mlx.core.tril.html | 16 +- .../python/_autosummary/mlx.core.triu.html | 16 +- .../_autosummary/mlx.core.value_and_grad.html | 16 +- .../python/_autosummary/mlx.core.var.html | 16 +- .../python/_autosummary/mlx.core.view.html | 16 +- .../python/_autosummary/mlx.core.vjp.html | 16 +- .../python/_autosummary/mlx.core.vmap.html | 16 +- .../python/_autosummary/mlx.core.where.html | 16 +- .../python/_autosummary/mlx.core.zeros.html | 16 +- .../_autosummary/mlx.core.zeros_like.html | 16 +- .../python/_autosummary/mlx.nn.quantize.html | 16 +- .../_autosummary/mlx.nn.value_and_grad.html | 16 +- .../mlx.optimizers.clip_grad_norm.html | 16 +- .../_autosummary/mlx.utils.tree_flatten.html | 16 +- .../_autosummary/mlx.utils.tree_map.html | 16 +- .../mlx.utils.tree_map_with_path.html | 16 +- .../_autosummary/mlx.utils.tree_reduce.html | 16 +- .../mlx.utils.tree_unflatten.html | 16 +- .../python/_autosummary/stream_class.html | 16 +- docs/build/html/python/array.html | 16 +- docs/build/html/python/data_types.html | 16 +- .../html/python/devices_and_streams.html | 16 +- docs/build/html/python/distributed.html | 16 +- docs/build/html/python/fast.html | 16 +- docs/build/html/python/fft.html | 16 +- docs/build/html/python/linalg.html | 23 +- docs/build/html/python/metal.html | 16 +- docs/build/html/python/nn.html | 40 +- .../python/nn/_autosummary/mlx.nn.ALiBi.html | 16 +- .../nn/_autosummary/mlx.nn.AvgPool1d.html | 16 +- .../nn/_autosummary/mlx.nn.AvgPool2d.html | 16 +- .../nn/_autosummary/mlx.nn.BatchNorm.html | 22 +- .../python/nn/_autosummary/mlx.nn.CELU.html | 995 + .../python/nn/_autosummary/mlx.nn.Conv1d.html | 26 +- .../python/nn/_autosummary/mlx.nn.Conv2d.html | 16 +- .../python/nn/_autosummary/mlx.nn.Conv3d.html | 16 +- .../_autosummary/mlx.nn.ConvTranspose1d.html | 16 +- .../_autosummary/mlx.nn.ConvTranspose2d.html | 16 +- .../_autosummary/mlx.nn.ConvTranspose3d.html | 16 +- .../nn/_autosummary/mlx.nn.Dropout.html | 16 +- .../nn/_autosummary/mlx.nn.Dropout2d.html | 16 +- .../nn/_autosummary/mlx.nn.Dropout3d.html | 16 +- .../python/nn/_autosummary/mlx.nn.ELU.html | 994 + .../nn/_autosummary/mlx.nn.Embedding.html | 22 +- .../python/nn/_autosummary/mlx.nn.GELU.html | 22 +- .../python/nn/_autosummary/mlx.nn.GLU.html | 16 +- .../python/nn/_autosummary/mlx.nn.GRU.html | 16 +- .../nn/_autosummary/mlx.nn.GroupNorm.html | 16 +- .../nn/_autosummary/mlx.nn.HardShrink.html | 16 +- .../nn/_autosummary/mlx.nn.HardTanh.html | 16 +- .../nn/_autosummary/mlx.nn.Hardswish.html | 16 +- .../nn/_autosummary/mlx.nn.InstanceNorm.html | 16 +- .../python/nn/_autosummary/mlx.nn.LSTM.html | 22 +- .../nn/_autosummary/mlx.nn.LayerNorm.html | 16 +- .../nn/_autosummary/mlx.nn.LeakyReLU.html | 16 +- .../python/nn/_autosummary/mlx.nn.Linear.html | 22 +- .../nn/_autosummary/mlx.nn.LogSigmoid.html | 985 + .../nn/_autosummary/mlx.nn.LogSoftmax.html | 985 + .../nn/_autosummary/mlx.nn.MaxPool1d.html | 16 +- .../nn/_autosummary/mlx.nn.MaxPool2d.html | 16 +- .../python/nn/_autosummary/mlx.nn.Mish.html | 16 +- .../nn/_autosummary/mlx.nn.Module.apply.html | 16 +- .../mlx.nn.Module.apply_to_modules.html | 16 +- .../_autosummary/mlx.nn.Module.children.html | 16 +- .../nn/_autosummary/mlx.nn.Module.eval.html | 16 +- .../mlx.nn.Module.filter_and_map.html | 16 +- .../nn/_autosummary/mlx.nn.Module.freeze.html | 16 +- .../mlx.nn.Module.leaf_modules.html | 16 +- .../mlx.nn.Module.load_weights.html | 16 +- .../_autosummary/mlx.nn.Module.modules.html | 16 +- .../mlx.nn.Module.named_modules.html | 16 +- .../mlx.nn.Module.parameters.html | 16 +- .../mlx.nn.Module.save_weights.html | 16 +- .../_autosummary/mlx.nn.Module.set_dtype.html | 16 +- .../nn/_autosummary/mlx.nn.Module.state.html | 16 +- .../nn/_autosummary/mlx.nn.Module.train.html | 16 +- .../mlx.nn.Module.trainable_parameters.html | 16 +- .../_autosummary/mlx.nn.Module.training.html | 16 +- .../_autosummary/mlx.nn.Module.unfreeze.html | 16 +- .../nn/_autosummary/mlx.nn.Module.update.html | 16 +- .../mlx.nn.Module.update_modules.html | 16 +- .../mlx.nn.MultiHeadAttention.html | 16 +- .../python/nn/_autosummary/mlx.nn.PReLU.html | 16 +- .../mlx.nn.QuantizedEmbedding.html | 16 +- .../_autosummary/mlx.nn.QuantizedLinear.html | 16 +- .../nn/_autosummary/mlx.nn.RMSNorm.html | 16 +- .../python/nn/_autosummary/mlx.nn.RNN.html | 16 +- .../python/nn/_autosummary/mlx.nn.ReLU.html | 16 +- .../python/nn/_autosummary/mlx.nn.ReLU6.html | 16 +- .../python/nn/_autosummary/mlx.nn.RoPE.html | 16 +- .../python/nn/_autosummary/mlx.nn.SELU.html | 16 +- .../nn/_autosummary/mlx.nn.Sequential.html | 22 +- .../python/nn/_autosummary/mlx.nn.SiLU.html | 22 +- .../nn/_autosummary/mlx.nn.Sigmoid.html | 987 + .../mlx.nn.SinusoidalPositionalEncoding.html | 16 +- .../nn/_autosummary/mlx.nn.Softmax.html | 16 +- .../nn/_autosummary/mlx.nn.Softmin.html | 16 +- .../nn/_autosummary/mlx.nn.Softplus.html | 16 +- .../nn/_autosummary/mlx.nn.Softshrink.html | 16 +- .../nn/_autosummary/mlx.nn.Softsign.html | 16 +- .../python/nn/_autosummary/mlx.nn.Step.html | 16 +- .../python/nn/_autosummary/mlx.nn.Tanh.html | 16 +- .../nn/_autosummary/mlx.nn.Transformer.html | 16 +- .../nn/_autosummary/mlx.nn.Upsample.html | 16 +- .../nn/_autosummary/mlx.nn.init.constant.html | 16 +- .../mlx.nn.init.glorot_normal.html | 16 +- .../mlx.nn.init.glorot_uniform.html | 16 +- .../_autosummary/mlx.nn.init.he_normal.html | 16 +- .../_autosummary/mlx.nn.init.he_uniform.html | 16 +- .../nn/_autosummary/mlx.nn.init.identity.html | 16 +- .../nn/_autosummary/mlx.nn.init.normal.html | 16 +- .../nn/_autosummary/mlx.nn.init.uniform.html | 16 +- .../_autosummary_functions/mlx.nn.celu.html | 982 + .../nn/_autosummary_functions/mlx.nn.elu.html | 22 +- .../_autosummary_functions/mlx.nn.gelu.html | 22 +- .../mlx.nn.gelu_approx.html | 16 +- .../mlx.nn.gelu_fast_approx.html | 16 +- .../nn/_autosummary_functions/mlx.nn.glu.html | 16 +- .../mlx.nn.hard_shrink.html | 16 +- .../mlx.nn.hard_tanh.html | 16 +- .../mlx.nn.hardswish.html | 16 +- .../mlx.nn.leaky_relu.html | 16 +- .../mlx.nn.log_sigmoid.html | 16 +- .../mlx.nn.log_softmax.html | 16 +- .../mlx.nn.losses.binary_cross_entropy.html | 16 +- .../mlx.nn.losses.cosine_similarity_loss.html | 16 +- .../mlx.nn.losses.cross_entropy.html | 16 +- .../mlx.nn.losses.gaussian_nll_loss.html | 16 +- .../mlx.nn.losses.hinge_loss.html | 16 +- .../mlx.nn.losses.huber_loss.html | 16 +- .../mlx.nn.losses.kl_div_loss.html | 16 +- .../mlx.nn.losses.l1_loss.html | 16 +- .../mlx.nn.losses.log_cosh_loss.html | 16 +- .../mlx.nn.losses.margin_ranking_loss.html | 16 +- .../mlx.nn.losses.mse_loss.html | 16 +- .../mlx.nn.losses.nll_loss.html | 16 +- .../mlx.nn.losses.smooth_l1_loss.html | 16 +- .../mlx.nn.losses.triplet_loss.html | 16 +- .../_autosummary_functions/mlx.nn.mish.html | 16 +- .../_autosummary_functions/mlx.nn.prelu.html | 16 +- .../_autosummary_functions/mlx.nn.relu.html | 16 +- .../_autosummary_functions/mlx.nn.relu6.html | 16 +- .../_autosummary_functions/mlx.nn.selu.html | 16 +- .../mlx.nn.sigmoid.html | 16 +- .../_autosummary_functions/mlx.nn.silu.html | 16 +- .../mlx.nn.softmax.html | 16 +- .../mlx.nn.softmin.html | 16 +- .../mlx.nn.softplus.html | 16 +- .../mlx.nn.softshrink.html | 16 +- .../_autosummary_functions/mlx.nn.step.html | 16 +- .../_autosummary_functions/mlx.nn.tanh.html | 16 +- docs/build/html/python/nn/functions.html | 65 +- docs/build/html/python/nn/init.html | 16 +- docs/build/html/python/nn/layers.html | 73 +- docs/build/html/python/nn/losses.html | 16 +- docs/build/html/python/nn/module.html | 16 +- docs/build/html/python/ops.html | 115 +- docs/build/html/python/optimizers.html | 16 +- .../_autosummary/mlx.optimizers.AdaDelta.html | 16 +- .../mlx.optimizers.Adafactor.html | 16 +- .../_autosummary/mlx.optimizers.Adagrad.html | 16 +- .../_autosummary/mlx.optimizers.Adam.html | 16 +- .../_autosummary/mlx.optimizers.AdamW.html | 16 +- .../_autosummary/mlx.optimizers.Adamax.html | 16 +- .../_autosummary/mlx.optimizers.Lion.html | 16 +- ....optimizers.Optimizer.apply_gradients.html | 16 +- .../mlx.optimizers.Optimizer.init.html | 16 +- .../mlx.optimizers.Optimizer.state.html | 16 +- .../mlx.optimizers.Optimizer.update.html | 16 +- .../_autosummary/mlx.optimizers.RMSprop.html | 16 +- .../_autosummary/mlx.optimizers.SGD.html | 16 +- .../mlx.optimizers.cosine_decay.html | 16 +- .../mlx.optimizers.exponential_decay.html | 16 +- .../mlx.optimizers.join_schedules.html | 16 +- .../mlx.optimizers.linear_schedule.html | 16 +- .../mlx.optimizers.step_decay.html | 16 +- .../python/optimizers/common_optimizers.html | 16 +- .../html/python/optimizers/optimizer.html | 16 +- .../html/python/optimizers/schedulers.html | 16 +- docs/build/html/python/random.html | 16 +- docs/build/html/python/transforms.html | 16 +- docs/build/html/python/tree_utils.html | 16 +- docs/build/html/quantized_8h.html | 2102 -- docs/build/html/quantized_8h_source.html | 1817 -- docs/build/html/radix_8h.html | 427 - docs/build/html/radix_8h_source.html | 464 - docs/build/html/random_8h.html | 196 - docs/build/html/random_8h_source.html | 394 - docs/build/html/readwrite_8h.html | 120 - docs/build/html/readwrite_8h_source.html | 810 - docs/build/html/reduce__all_8h.html | 162 - docs/build/html/reduce__all_8h_source.html | 158 - docs/build/html/reduce__col_8h.html | 298 - docs/build/html/reduce__col_8h_source.html | 425 - docs/build/html/reduce__init_8h.html | 122 - docs/build/html/reduce__init_8h_source.html | 103 - docs/build/html/reduce__row_8h.html | 617 - docs/build/html/reduce__row_8h_source.html | 475 - docs/build/html/reduce__utils_8h.html | 91 - docs/build/html/reduce__utils_8h_source.html | 100 - ...d__dot__product__attention__params_8h.html | 99 - ..._product__attention__params_8h_source.html | 165 - docs/build/html/scatter_8h.html | 239 - docs/build/html/scatter_8h_source.html | 180 - docs/build/html/scheduler_8h.html | 135 - docs/build/html/scheduler_8h_source.html | 360 - docs/build/html/search.html | 16 +- docs/build/html/search/all_0.js | 9 - docs/build/html/search/all_1.js | 113 - docs/build/html/search/all_10.js | 72 - docs/build/html/search/all_11.js | 27 - docs/build/html/search/all_12.js | 127 - docs/build/html/search/all_13.js | 197 - docs/build/html/search/all_14.js | 92 - docs/build/html/search/all_15.js | 27 - docs/build/html/search/all_16.js | 25 - docs/build/html/search/all_17.js | 19 - docs/build/html/search/all_18.js | 5 - docs/build/html/search/all_19.js | 6 - docs/build/html/search/all_1a.js | 23 - docs/build/html/search/all_2.js | 105 - docs/build/html/search/all_3.js | 151 - docs/build/html/search/all_4.js | 63 - docs/build/html/search/all_5.js | 58 - docs/build/html/search/all_6.js | 56 - docs/build/html/search/all_7.js | 110 - docs/build/html/search/all_8.js | 27 - docs/build/html/search/all_9.js | 80 - docs/build/html/search/all_a.js | 7 - docs/build/html/search/all_b.js | 13 - docs/build/html/search/all_c.js | 88 - docs/build/html/search/all_d.js | 106 - docs/build/html/search/all_e.js | 44 - docs/build/html/search/all_f.js | 59 - docs/build/html/search/classes_0.js | 7 - docs/build/html/search/classes_1.js | 35 - docs/build/html/search/classes_10.js | 6 - docs/build/html/search/classes_11.js | 21 - docs/build/html/search/classes_12.js | 30 - docs/build/html/search/classes_13.js | 17 - docs/build/html/search/classes_14.js | 6 - docs/build/html/search/classes_15.js | 6 - docs/build/html/search/classes_16.js | 4 - docs/build/html/search/classes_2.js | 16 - docs/build/html/search/classes_3.js | 47 - docs/build/html/search/classes_4.js | 12 - docs/build/html/search/classes_5.js | 13 - docs/build/html/search/classes_6.js | 10 - docs/build/html/search/classes_7.js | 15 - docs/build/html/search/classes_8.js | 4 - docs/build/html/search/classes_9.js | 8 - docs/build/html/search/classes_a.js | 6 - docs/build/html/search/classes_b.js | 37 - docs/build/html/search/classes_c.js | 17 - docs/build/html/search/classes_d.js | 10 - docs/build/html/search/classes_e.js | 4 - docs/build/html/search/classes_f.js | 12 - docs/build/html/search/close.svg | 18 - docs/build/html/search/defines_0.js | 5 - docs/build/html/search/defines_1.js | 4 - docs/build/html/search/defines_2.js | 13 - docs/build/html/search/defines_3.js | 5 - docs/build/html/search/defines_4.js | 9 - docs/build/html/search/defines_5.js | 4 - docs/build/html/search/defines_6.js | 10 - docs/build/html/search/defines_7.js | 9 - docs/build/html/search/defines_8.js | 10 - docs/build/html/search/defines_9.js | 22 - docs/build/html/search/defines_a.js | 4 - docs/build/html/search/defines_b.js | 5 - docs/build/html/search/defines_c.js | 4 - docs/build/html/search/enums_0.js | 4 - docs/build/html/search/enums_1.js | 6 - docs/build/html/search/enums_2.js | 4 - docs/build/html/search/enums_3.js | 4 - docs/build/html/search/enums_4.js | 4 - docs/build/html/search/enums_5.js | 5 - docs/build/html/search/enums_6.js | 4 - docs/build/html/search/enums_7.js | 4 - docs/build/html/search/enumvalues_0.js | 7 - docs/build/html/search/enumvalues_1.js | 6 - docs/build/html/search/enumvalues_10.js | 10 - docs/build/html/search/enumvalues_11.js | 5 - docs/build/html/search/enumvalues_12.js | 4 - docs/build/html/search/enumvalues_2.js | 10 - docs/build/html/search/enumvalues_3.js | 4 - docs/build/html/search/enumvalues_4.js | 5 - docs/build/html/search/enumvalues_5.js | 7 - docs/build/html/search/enumvalues_6.js | 10 - docs/build/html/search/enumvalues_7.js | 10 - docs/build/html/search/enumvalues_8.js | 4 - docs/build/html/search/enumvalues_9.js | 5 - docs/build/html/search/enumvalues_a.js | 7 - docs/build/html/search/enumvalues_b.js | 4 - docs/build/html/search/enumvalues_c.js | 4 - docs/build/html/search/enumvalues_d.js | 4 - docs/build/html/search/enumvalues_e.js | 7 - docs/build/html/search/enumvalues_f.js | 5 - docs/build/html/search/files_0.js | 7 - docs/build/html/search/files_1.js | 8 - docs/build/html/search/files_10.js | 17 - docs/build/html/search/files_11.js | 9 - docs/build/html/search/files_12.js | 6 - docs/build/html/search/files_2.js | 10 - docs/build/html/search/files_3.js | 8 - docs/build/html/search/files_4.js | 7 - docs/build/html/search/files_5.js | 7 - docs/build/html/search/files_6.js | 8 - docs/build/html/search/files_7.js | 5 - docs/build/html/search/files_8.js | 6 - docs/build/html/search/files_9.js | 4 - docs/build/html/search/files_a.js | 10 - docs/build/html/search/files_b.js | 8 - docs/build/html/search/files_c.js | 4 - docs/build/html/search/files_d.js | 6 - docs/build/html/search/files_e.js | 4 - docs/build/html/search/files_f.js | 12 - docs/build/html/search/functions_0.js | 5 - docs/build/html/search/functions_1.js | 81 - docs/build/html/search/functions_10.js | 37 - docs/build/html/search/functions_11.js | 24 - docs/build/html/search/functions_12.js | 77 - docs/build/html/search/functions_13.js | 137 - docs/build/html/search/functions_14.js | 54 - docs/build/html/search/functions_15.js | 14 - docs/build/html/search/functions_16.js | 13 - docs/build/html/search/functions_17.js | 11 - docs/build/html/search/functions_18.js | 5 - docs/build/html/search/functions_19.js | 23 - docs/build/html/search/functions_2.js | 50 - docs/build/html/search/functions_3.js | 97 - docs/build/html/search/functions_4.js | 41 - docs/build/html/search/functions_5.js | 43 - docs/build/html/search/functions_6.js | 34 - docs/build/html/search/functions_7.js | 76 - docs/build/html/search/functions_8.js | 10 - docs/build/html/search/functions_9.js | 43 - docs/build/html/search/functions_a.js | 4 - docs/build/html/search/functions_b.js | 6 - docs/build/html/search/functions_c.js | 48 - docs/build/html/search/functions_d.js | 49 - docs/build/html/search/functions_e.js | 26 - docs/build/html/search/functions_f.js | 48 - docs/build/html/search/groups_0.js | 4 - docs/build/html/search/groups_1.js | 4 - docs/build/html/search/groups_2.js | 4 - docs/build/html/search/mag.svg | 24 - docs/build/html/search/mag_d.svg | 24 - docs/build/html/search/mag_sel.svg | 31 - docs/build/html/search/mag_seld.svg | 31 - docs/build/html/search/namespaces_0.js | 20 - docs/build/html/search/namespaces_1.js | 6 - docs/build/html/search/related_0.js | 4 - docs/build/html/search/related_1.js | 5 - docs/build/html/search/search.css | 291 - docs/build/html/search/search.js | 694 - docs/build/html/search/searchdata.js | 48 - docs/build/html/search/typedefs_0.js | 5 - docs/build/html/search/typedefs_1.js | 5 - docs/build/html/search/typedefs_2.js | 5 - docs/build/html/search/typedefs_3.js | 4 - docs/build/html/search/typedefs_4.js | 4 - docs/build/html/search/typedefs_5.js | 5 - docs/build/html/search/typedefs_6.js | 5 - docs/build/html/search/typedefs_7.js | 5 - docs/build/html/search/typedefs_8.js | 7 - docs/build/html/search/typedefs_9.js | 4 - docs/build/html/search/typedefs_a.js | 5 - docs/build/html/search/typedefs_b.js | 8 - docs/build/html/search/typedefs_c.js | 6 - docs/build/html/search/typedefs_d.js | 7 - docs/build/html/search/variables_0.js | 15 - docs/build/html/search/variables_1.js | 34 - docs/build/html/search/variables_10.js | 5 - docs/build/html/search/variables_11.js | 35 - docs/build/html/search/variables_12.js | 40 - docs/build/html/search/variables_13.js | 28 - docs/build/html/search/variables_14.js | 10 - docs/build/html/search/variables_15.js | 8 - docs/build/html/search/variables_16.js | 10 - docs/build/html/search/variables_17.js | 4 - docs/build/html/search/variables_18.js | 4 - docs/build/html/search/variables_2.js | 22 - docs/build/html/search/variables_3.js | 12 - docs/build/html/search/variables_4.js | 7 - docs/build/html/search/variables_5.js | 17 - docs/build/html/search/variables_6.js | 20 - docs/build/html/search/variables_7.js | 11 - docs/build/html/search/variables_8.js | 28 - docs/build/html/search/variables_9.js | 6 - docs/build/html/search/variables_a.js | 6 - docs/build/html/search/variables_b.js | 12 - docs/build/html/search/variables_c.js | 16 - docs/build/html/search/variables_d.js | 17 - docs/build/html/search/variables_e.js | 10 - docs/build/html/search/variables_f.js | 7 - docs/build/html/searchindex.js | 2 +- docs/build/html/sort_8h.html | 527 - docs/build/html/sort_8h_source.html | 852 - docs/build/html/splitbar.png | Bin 314 -> 0 bytes docs/build/html/splitbard.png | Bin 282 -> 0 bytes docs/build/html/steel_2defines_8h.html | 128 - docs/build/html/steel_2defines_8h_source.html | 96 - docs/build/html/steel__conv__general_8h.html | 173 - .../html/steel__conv__general_8h_source.html | 286 - docs/build/html/steel__gemm_8h.html | 316 - docs/build/html/steel__gemm_8h_source.html | 203 - docs/build/html/steel__gemm__fused_8h.html | 335 - .../html/steel__gemm__fused_8h_source.html | 523 - docs/build/html/steel__gemm__masked_8h.html | 298 - .../html/steel__gemm__masked_8h_source.html | 833 - docs/build/html/steel__gemm__splitk_8h.html | 269 - .../html/steel__gemm__splitk_8h_source.html | 331 - docs/build/html/stream_8h.html | 127 - docs/build/html/stream_8h_source.html | 146 - .../struct___m_l_x___b_float16-members.html | 101 - .../html/struct___m_l_x___b_float16.html | 534 - ...b_float16_1_1bits__to__bfloat__struct.html | 92 - docs/build/html/struct___no_mask-members.html | 95 - docs/build/html/struct___no_mask.html | 334 - docs/build/html/struct_abs-members.html | 93 - docs/build/html/struct_abs.html | 306 - docs/build/html/struct_add-members.html | 87 - docs/build/html/struct_add.html | 130 - docs/build/html/struct_and.html | 88 - docs/build/html/struct_arc_cos-members.html | 87 - docs/build/html/struct_arc_cos.html | 126 - docs/build/html/struct_arc_cosh-members.html | 87 - docs/build/html/struct_arc_cosh.html | 126 - docs/build/html/struct_arc_sin-members.html | 87 - docs/build/html/struct_arc_sin.html | 126 - docs/build/html/struct_arc_sinh-members.html | 87 - docs/build/html/struct_arc_sinh.html | 126 - docs/build/html/struct_arc_tan-members.html | 87 - docs/build/html/struct_arc_tan.html | 126 - docs/build/html/struct_arc_tan2-members.html | 87 - docs/build/html/struct_arc_tan2.html | 130 - docs/build/html/struct_arc_tanh-members.html | 87 - docs/build/html/struct_arc_tanh.html | 126 - .../html/struct_bitwise_and-members.html | 87 - docs/build/html/struct_bitwise_and.html | 130 - .../build/html/struct_bitwise_or-members.html | 87 - docs/build/html/struct_bitwise_or.html | 130 - .../html/struct_bitwise_xor-members.html | 87 - docs/build/html/struct_bitwise_xor.html | 130 - .../html/struct_block_merge_sort-members.html | 90 - docs/build/html/struct_block_merge_sort.html | 276 - docs/build/html/struct_ceil-members.html | 96 - docs/build/html/struct_ceil.html | 396 - docs/build/html/struct_conjugate-members.html | 87 - docs/build/html/struct_conjugate.html | 123 - docs/build/html/struct_cos-members.html | 88 - docs/build/html/struct_cos.html | 156 - docs/build/html/struct_cosh-members.html | 88 - docs/build/html/struct_cosh.html | 156 - docs/build/html/struct_cum_max-members.html | 90 - docs/build/html/struct_cum_max.html | 221 - docs/build/html/struct_cum_min-members.html | 90 - docs/build/html/struct_cum_min.html | 221 - docs/build/html/struct_cum_prod-members.html | 90 - docs/build/html/struct_cum_prod.html | 221 - ...struct_cum_prod_3_01bool_01_4-members.html | 90 - .../html/struct_cum_prod_3_01bool_01_4.html | 213 - docs/build/html/struct_cum_sum-members.html | 90 - docs/build/html/struct_cum_sum.html | 221 - docs/build/html/struct_div_mod-members.html | 87 - docs/build/html/struct_div_mod.html | 130 - docs/build/html/struct_divide-members.html | 87 - docs/build/html/struct_divide.html | 130 - docs/build/html/struct_equal-members.html | 87 - docs/build/html/struct_equal.html | 130 - docs/build/html/struct_erf-members.html | 87 - docs/build/html/struct_erf.html | 126 - docs/build/html/struct_erf_inv-members.html | 87 - docs/build/html/struct_erf_inv.html | 126 - docs/build/html/struct_exp-members.html | 88 - docs/build/html/struct_exp.html | 156 - docs/build/html/struct_expm1-members.html | 87 - docs/build/html/struct_expm1.html | 126 - docs/build/html/struct_floor-members.html | 96 - docs/build/html/struct_floor.html | 396 - .../html/struct_floor_divide-members.html | 90 - docs/build/html/struct_floor_divide.html | 232 - .../html/struct_g_e_m_v_kernel-members.html | 99 - docs/build/html/struct_g_e_m_v_kernel.html | 546 - .../html/struct_g_e_m_v_t_kernel-members.html | 97 - docs/build/html/struct_g_e_m_v_t_kernel.html | 471 - docs/build/html/struct_greater-members.html | 87 - docs/build/html/struct_greater.html | 130 - .../html/struct_greater_equal-members.html | 87 - docs/build/html/struct_greater_equal.html | 130 - docs/build/html/struct_indices-members.html | 90 - docs/build/html/struct_indices.html | 168 - .../struct_kernel_merge_sort-members.html | 91 - docs/build/html/struct_kernel_merge_sort.html | 274 - ...kernel_multi_block_merge_sort-members.html | 90 - .../struct_kernel_multi_block_merge_sort.html | 274 - .../build/html/struct_left_shift-members.html | 87 - docs/build/html/struct_left_shift.html | 130 - docs/build/html/struct_less-members.html | 87 - docs/build/html/struct_less.html | 130 - .../build/html/struct_less_equal-members.html | 87 - docs/build/html/struct_less_equal.html | 130 - docs/build/html/struct_less_than-members.html | 88 - docs/build/html/struct_less_than.html | 160 - docs/build/html/struct_limits-members.html | 90 - docs/build/html/struct_limits.html | 200 - ...t_limits_3_01bfloat16__t_01_4-members.html | 90 - .../struct_limits_3_01bfloat16__t_01_4.html | 192 - .../struct_limits_3_01bool_01_4-members.html | 88 - .../html/struct_limits_3_01bool_01_4.html | 144 - ..._limits_3_01complex64__t_01_4-members.html | 88 - .../struct_limits_3_01complex64__t_01_4.html | 151 - .../struct_limits_3_01float_01_4-members.html | 90 - .../html/struct_limits_3_01float_01_4.html | 192 - .../struct_limits_3_01half_01_4-members.html | 90 - .../html/struct_limits_3_01half_01_4.html | 192 - ...ruct_limits_3_01int16__t_01_4-members.html | 90 - .../html/struct_limits_3_01int16__t_01_4.html | 192 - ...ruct_limits_3_01int32__t_01_4-members.html | 90 - .../html/struct_limits_3_01int32__t_01_4.html | 192 - ...ruct_limits_3_01int64__t_01_4-members.html | 90 - .../html/struct_limits_3_01int64__t_01_4.html | 192 - ...truct_limits_3_01int8__t_01_4-members.html | 90 - .../html/struct_limits_3_01int8__t_01_4.html | 192 - ...uct_limits_3_01uint16__t_01_4-members.html | 90 - .../struct_limits_3_01uint16__t_01_4.html | 192 - ...uct_limits_3_01uint32__t_01_4-members.html | 90 - .../struct_limits_3_01uint32__t_01_4.html | 192 - ...uct_limits_3_01uint64__t_01_4-members.html | 90 - .../struct_limits_3_01uint64__t_01_4.html | 192 - ...ruct_limits_3_01uint8__t_01_4-members.html | 90 - .../html/struct_limits_3_01uint8__t_01_4.html | 192 - docs/build/html/struct_log-members.html | 87 - docs/build/html/struct_log.html | 126 - docs/build/html/struct_log10-members.html | 87 - docs/build/html/struct_log10.html | 126 - docs/build/html/struct_log1p-members.html | 87 - docs/build/html/struct_log1p.html | 126 - docs/build/html/struct_log2-members.html | 87 - docs/build/html/struct_log2.html | 126 - .../html/struct_log_add_exp-members.html | 87 - docs/build/html/struct_log_add_exp.html | 130 - .../html/struct_logical_and-members.html | 87 - docs/build/html/struct_logical_and.html | 130 - .../html/struct_logical_not-members.html | 87 - docs/build/html/struct_logical_not.html | 126 - .../build/html/struct_logical_or-members.html | 87 - docs/build/html/struct_logical_or.html | 130 - .../struct_m_l_x_conv_params-members.html | 101 - docs/build/html/struct_m_l_x_conv_params.html | 366 - ...t_m_l_x_fast_attention_params-members.html | 106 - .../struct_m_l_x_fast_attention_params.html | 416 - ..._dot_product_attention_params-members.html | 91 - ...x_scaled_dot_product_attention_params.html | 176 - docs/build/html/struct_max-members.html | 87 - docs/build/html/struct_max.html | 117 - docs/build/html/struct_maximum-members.html | 89 - docs/build/html/struct_maximum.html | 198 - docs/build/html/struct_min.html | 88 - docs/build/html/struct_minimum-members.html | 89 - docs/build/html/struct_minimum.html | 198 - docs/build/html/struct_multiply-members.html | 87 - docs/build/html/struct_multiply.html | 130 - .../build/html/struct_na_n_equal-members.html | 88 - docs/build/html/struct_na_n_equal.html | 164 - docs/build/html/struct_negative-members.html | 87 - docs/build/html/struct_negative.html | 126 - docs/build/html/struct_none-members.html | 87 - docs/build/html/struct_none.html | 135 - docs/build/html/struct_not_equal-members.html | 88 - docs/build/html/struct_not_equal.html | 164 - docs/build/html/struct_or.html | 88 - docs/build/html/struct_power-members.html | 89 - docs/build/html/struct_power.html | 198 - docs/build/html/struct_prod.html | 88 - ...struct_quantized_block_loader-members.html | 105 - .../html/struct_quantized_block_loader.html | 556 - .../html/struct_read_writer-members.html | 128 - docs/build/html/struct_read_writer.html | 1125 - docs/build/html/struct_remainder-members.html | 90 - docs/build/html/struct_remainder.html | 232 - .../html/struct_right_shift-members.html | 87 - docs/build/html/struct_right_shift.html | 130 - docs/build/html/struct_round-members.html | 88 - docs/build/html/struct_round.html | 156 - docs/build/html/struct_rsqrt-members.html | 87 - docs/build/html/struct_rsqrt.html | 126 - docs/build/html/struct_scale_op-members.html | 89 - docs/build/html/struct_scale_op.html | 178 - docs/build/html/struct_select-members.html | 87 - docs/build/html/struct_select.html | 135 - docs/build/html/struct_sigmoid-members.html | 87 - docs/build/html/struct_sigmoid.html | 126 - docs/build/html/struct_sign-members.html | 89 - docs/build/html/struct_sign.html | 186 - docs/build/html/struct_sin-members.html | 88 - docs/build/html/struct_sin.html | 156 - docs/build/html/struct_sinh-members.html | 88 - docs/build/html/struct_sinh.html | 156 - docs/build/html/struct_sqrt-members.html | 87 - docs/build/html/struct_sqrt.html | 126 - docs/build/html/struct_square-members.html | 87 - docs/build/html/struct_square.html | 126 - docs/build/html/struct_subtract-members.html | 87 - docs/build/html/struct_subtract.html | 130 - docs/build/html/struct_sum.html | 88 - docs/build/html/struct_tan-members.html | 88 - docs/build/html/struct_tan.html | 156 - docs/build/html/struct_tanh-members.html | 88 - docs/build/html/struct_tanh.html | 156 - .../html/struct_thread_sort-members.html | 87 - docs/build/html/struct_thread_sort.html | 129 - .../html/structcomplex64__t-members.html | 99 - docs/build/html/structcomplex64__t.html | 459 - .../structlooped__elem__to__loc-members.html | 92 - .../html/structlooped__elem__to__loc.html | 269 - ...loc_3_010_00_01offset__t_01_4-members.html | 89 - ...em__to__loc_3_010_00_01offset__t_01_4.html | 210 - ...loc_3_011_00_01offset__t_01_4-members.html | 90 - ...em__to__loc_3_011_00_01offset__t_01_4.html | 233 - ...ts__impl_3_01bfloat16__t_01_4-members.html | 107 - ...ic__limits__impl_3_01bfloat16__t_01_4.html | 546 - ...ric__limits__impl_3_01bfloat16__t_01_4.png | Bin 833 -> 0 bytes ...1core_1_1___m_l_x___b_float16-members.html | 97 - ...ctmlx_1_1core_1_1___m_l_x___b_float16.html | 284 - ...1_1core_1_1___m_l_x___float16-members.html | 97 - ...ructmlx_1_1core_1_1___m_l_x___float16.html | 284 - ...core_1_1_contiguous_iterator-members.html} | 12 +- ...tmlx_1_1core_1_1_contiguous_iterator.html} | 72 +- ...1_1_default_contiguous_reduce-members.html | 93 - ...re_1_1_default_strided_reduce-members.html | 93 - ...lx_1_1core_1_1_default_strided_reduce.html | 196 - .../structmlx_1_1core_1_1_device-members.html | 96 - .../html/structmlx_1_1core_1_1_device.html | 255 - .../structmlx_1_1core_1_1_dtype-members.html | 97 - .../html/structmlx_1_1core_1_1_dtype.html | 344 - ...uctmlx_1_1core_1_1_node_namer-members.html | 92 - .../structmlx_1_1core_1_1_node_namer.html | 140 - ...x_1_1core_1_1_print_formatter-members.html | 102 - ...structmlx_1_1core_1_1_print_formatter.html | 462 - ...lx_1_1core_1_1_reduction_plan-members.html | 95 - .../structmlx_1_1core_1_1_reduction_plan.html | 216 - .../html/structmlx_1_1core_1_1_stream.html | 168 - ...lx_1_1core_1_1_stream_context-members.html | 92 - .../structmlx_1_1core_1_1_stream_context.html | 154 - ...mlx_1_1core_1_1_type_to_dtype-members.html | 91 - .../structmlx_1_1core_1_1_type_to_dtype.html | 121 - ...e_1_1array_1_1_array_iterator-members.html | 100 - ...x_1_1core_1_1array_1_1_array_iterator.html | 341 - ...mlx_1_1core_1_1array_1_1_data-members.html | 96 - .../structmlx_1_1core_1_1array_1_1_data.html | 250 - ...lx_1_1core_1_1array_1_1_flags-members.html | 93 - .../structmlx_1_1core_1_1array_1_1_flags.html | 148 - ...tmlx_1_1core_1_1complex128__t-members.html | 94 - .../structmlx_1_1core_1_1complex128__t.html | 222 - .../structmlx_1_1core_1_1complex128__t.png | Bin 614 -> 0 bytes ...ctmlx_1_1core_1_1complex64__t-members.html | 94 - .../structmlx_1_1core_1_1complex64__t.html | 222 - .../structmlx_1_1core_1_1complex64__t.png | Bin 618 -> 0 bytes ...mlx_1_1core_1_1detail_1_1_abs-members.html | 96 - .../structmlx_1_1core_1_1detail_1_1_abs.html | 265 - ...mlx_1_1core_1_1detail_1_1_add-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_add.html | 134 - ...1_1core_1_1detail_1_1_arc_cos-members.html | 91 - ...ructmlx_1_1core_1_1detail_1_1_arc_cos.html | 130 - ..._1core_1_1detail_1_1_arc_cosh-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_arc_cosh.html | 130 - ...1_1core_1_1detail_1_1_arc_sin-members.html | 91 - ...ructmlx_1_1core_1_1detail_1_1_arc_sin.html | 130 - ..._1core_1_1detail_1_1_arc_sinh-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_arc_sinh.html | 130 - ...1_1core_1_1detail_1_1_arc_tan-members.html | 91 - ...ructmlx_1_1core_1_1detail_1_1_arc_tan.html | 130 - ..._1core_1_1detail_1_1_arc_tan2-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_arc_tan2.html | 134 - ..._1core_1_1detail_1_1_arc_tanh-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_arc_tanh.html | 130 - ...ore_1_1detail_1_1_bitwise_and-members.html | 91 - ...mlx_1_1core_1_1detail_1_1_bitwise_and.html | 134 - ...core_1_1detail_1_1_bitwise_or-members.html | 91 - ...tmlx_1_1core_1_1detail_1_1_bitwise_or.html | 134 - ...ore_1_1detail_1_1_bitwise_xor-members.html | 91 - ...mlx_1_1core_1_1detail_1_1_bitwise_xor.html | 134 - ...lx_1_1core_1_1detail_1_1_ceil-members.html | 100 - .../structmlx_1_1core_1_1detail_1_1_ceil.html | 373 - ...1core_1_1detail_1_1_conjugate-members.html | 91 - ...ctmlx_1_1core_1_1detail_1_1_conjugate.html | 127 - ...mlx_1_1core_1_1detail_1_1_cos-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_cos.html | 130 - ...lx_1_1core_1_1detail_1_1_cosh-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_cosh.html | 130 - ..._1_1core_1_1detail_1_1_divide-members.html | 91 - ...tructmlx_1_1core_1_1detail_1_1_divide.html | 134 - ...x_1_1core_1_1detail_1_1_equal-members.html | 91 - ...structmlx_1_1core_1_1detail_1_1_equal.html | 134 - ...mlx_1_1core_1_1detail_1_1_erf-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_erf.html | 130 - ...1_1core_1_1detail_1_1_erf_inv-members.html | 91 - ...ructmlx_1_1core_1_1detail_1_1_erf_inv.html | 130 - ...mlx_1_1core_1_1detail_1_1_exp-members.html | 92 - .../structmlx_1_1core_1_1detail_1_1_exp.html | 157 - ...x_1_1core_1_1detail_1_1_expm1-members.html | 91 - ...structmlx_1_1core_1_1detail_1_1_expm1.html | 130 - ...x_1_1core_1_1detail_1_1_floor-members.html | 100 - ...structmlx_1_1core_1_1detail_1_1_floor.html | 373 - ...1_1core_1_1detail_1_1_greater-members.html | 91 - ...ructmlx_1_1core_1_1detail_1_1_greater.html | 134 - ...e_1_1detail_1_1_greater_equal-members.html | 91 - ...x_1_1core_1_1detail_1_1_greater_equal.html | 134 - ...core_1_1detail_1_1_in_tracing-members.html | 93 - ...tmlx_1_1core_1_1detail_1_1_in_tracing.html | 186 - ...core_1_1detail_1_1_left_shift-members.html | 91 - ...tmlx_1_1core_1_1detail_1_1_left_shift.html | 134 - ...lx_1_1core_1_1detail_1_1_less-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_less.html | 134 - ...core_1_1detail_1_1_less_equal-members.html | 91 - ...tmlx_1_1core_1_1detail_1_1_less_equal.html | 134 - ...mlx_1_1core_1_1detail_1_1_log-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_log.html | 130 - ...x_1_1core_1_1detail_1_1_log10-members.html | 91 - ...structmlx_1_1core_1_1detail_1_1_log10.html | 130 - ...x_1_1core_1_1detail_1_1_log1p-members.html | 91 - ...structmlx_1_1core_1_1detail_1_1_log1p.html | 130 - ...lx_1_1core_1_1detail_1_1_log2-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_log2.html | 130 - ...ore_1_1detail_1_1_log_add_exp-members.html | 91 - ...mlx_1_1core_1_1detail_1_1_log_add_exp.html | 134 - ...ore_1_1detail_1_1_logical_and-members.html | 91 - ...mlx_1_1core_1_1detail_1_1_logical_and.html | 134 - ...ore_1_1detail_1_1_logical_not-members.html | 91 - ...mlx_1_1core_1_1detail_1_1_logical_not.html | 130 - ...core_1_1detail_1_1_logical_or-members.html | 91 - ...tmlx_1_1core_1_1detail_1_1_logical_or.html | 134 - ...1_1core_1_1detail_1_1_maximum-members.html | 92 - ...ructmlx_1_1core_1_1detail_1_1_maximum.html | 168 - ...1_1core_1_1detail_1_1_minimum-members.html | 92 - ...ructmlx_1_1core_1_1detail_1_1_minimum.html | 168 - ..._1core_1_1detail_1_1_multiply-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_multiply.html | 134 - ...core_1_1detail_1_1_na_n_equal-members.html | 91 - ...tmlx_1_1core_1_1detail_1_1_na_n_equal.html | 134 - ..._1core_1_1detail_1_1_negative-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_negative.html | 130 - ...1core_1_1detail_1_1_not_equal-members.html | 91 - ...ctmlx_1_1core_1_1detail_1_1_not_equal.html | 134 - ...x_1_1core_1_1detail_1_1_power-members.html | 92 - ...structmlx_1_1core_1_1detail_1_1_power.html | 168 - ...1core_1_1detail_1_1_remainder-members.html | 94 - ...ctmlx_1_1core_1_1detail_1_1_remainder.html | 233 - ...re_1_1detail_1_1_retain_graph-members.html | 93 - ...lx_1_1core_1_1detail_1_1_retain_graph.html | 186 - ...ore_1_1detail_1_1_right_shift-members.html | 91 - ...mlx_1_1core_1_1detail_1_1_right_shift.html | 134 - ...x_1_1core_1_1detail_1_1_round-members.html | 92 - ...structmlx_1_1core_1_1detail_1_1_round.html | 157 - ...x_1_1core_1_1detail_1_1_rsqrt-members.html | 91 - ...structmlx_1_1core_1_1detail_1_1_rsqrt.html | 130 - ..._1_1core_1_1detail_1_1_select-members.html | 91 - ...tructmlx_1_1core_1_1detail_1_1_select.html | 139 - ...1_1core_1_1detail_1_1_sigmoid-members.html | 91 - ...ructmlx_1_1core_1_1detail_1_1_sigmoid.html | 130 - ...lx_1_1core_1_1detail_1_1_sign-members.html | 96 - .../structmlx_1_1core_1_1detail_1_1_sign.html | 265 - ...mlx_1_1core_1_1detail_1_1_sin-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_sin.html | 130 - ...lx_1_1core_1_1detail_1_1_sinh-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_sinh.html | 130 - ...lx_1_1core_1_1detail_1_1_sqrt-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_sqrt.html | 130 - ..._1_1core_1_1detail_1_1_square-members.html | 91 - ...tructmlx_1_1core_1_1detail_1_1_square.html | 130 - ..._1core_1_1detail_1_1_subtract-members.html | 91 - ...uctmlx_1_1core_1_1detail_1_1_subtract.html | 134 - ...mlx_1_1core_1_1detail_1_1_tan-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_tan.html | 130 - ...lx_1_1core_1_1detail_1_1_tanh-members.html | 91 - .../structmlx_1_1core_1_1detail_1_1_tanh.html | 130 - ...core_1_1distributed_1_1_group-members.html | 95 - ...tmlx_1_1core_1_1distributed_1_1_group.html | 227 - ..._1_1_custom_kernel_shape_info-members.html | 93 - ..._1_1fast_1_1_custom_kernel_shape_info.html | 148 - ..._1_1metal_1_1_command_encoder-members.html | 100 - ..._1_1core_1_1metal_1_1_command_encoder.html | 355 - ...ncoder_1_1_concurrent_context-members.html | 92 - ...ommand_encoder_1_1_concurrent_context.html | 154 - ..._1scheduler_1_1_stream_thread-members.html | 100 - ..._1core_1_1scheduler_1_1_stream_thread.html | 313 - ...mlx_1_1steel_1_1_accum_helper-members.html | 91 - .../structmlx_1_1steel_1_1_accum_helper.html | 118 - ...mlx_1_1steel_1_1_block_loader-members.html | 104 - .../structmlx_1_1steel_1_1_block_loader.html | 441 - ..._block_loader_1_1_read_vector-members.html | 91 - ...teel_1_1_block_loader_1_1_read_vector.html | 118 - ...tmlx_1_1steel_1_1_block_m_m_a-members.html | 118 - .../structmlx_1_1steel_1_1_block_m_m_a.html | 833 - ...lx_1_1steel_1_1_block_swizzle-members.html | 91 - .../structmlx_1_1steel_1_1_block_swizzle.html | 131 - ...x_1_1steel_1_1_channel_helper-members.html | 93 - ...structmlx_1_1steel_1_1_channel_helper.html | 154 - ...1_1_channel_helper_3_011_01_4-members.html | 93 - ..._1steel_1_1_channel_helper_3_011_01_4.html | 148 - ...1_1_channel_helper_3_012_01_4-members.html | 93 - ..._1steel_1_1_channel_helper_3_012_01_4.html | 148 - ...1_1_channel_helper_3_013_01_4-members.html | 93 - ..._1steel_1_1_channel_helper_3_013_01_4.html | 148 - ...1_1_channel_helper_3_014_01_4-members.html | 93 - ..._1steel_1_1_channel_helper_3_014_01_4.html | 148 - ...1_1_conv2_d_general_base_info-members.html | 92 - ..._1steel_1_1_conv2_d_general_base_info.html | 132 - ...1_conv2_d_general_jump_params-members.html | 98 - ...steel_1_1_conv2_d_general_jump_params.html | 228 - ..._d_input_block_loader_general-members.html | 114 - ..._1_conv2_d_input_block_loader_general.html | 610 - ...put_block_loader_large_filter-members.html | 112 - ...nv2_d_input_block_loader_large_filter.html | 564 - ...t_block_loader_small_channels-members.html | 111 - ...2_d_input_block_loader_small_channels.html | 546 - ...put_block_loader_small_filter-members.html | 112 - ...nv2_d_input_block_loader_small_filter.html | 569 - ...1_conv2_d_weight_block_loader-members.html | 110 - ...steel_1_1_conv2_d_weight_block_loader.html | 532 - ...d_weight_block_loader_general-members.html | 113 - ...1_conv2_d_weight_block_loader_general.html | 596 - ...t_block_loader_small_channels-members.html | 110 - ..._d_weight_block_loader_small_channels.html | 528 - ...el_1_1_g_e_m_m_add_m_m_params-members.html | 95 - ...x_1_1steel_1_1_g_e_m_m_add_m_m_params.html | 180 - ...x_1_1steel_1_1_g_e_m_m_kernel-members.html | 101 - ...structmlx_1_1steel_1_1_g_e_m_m_kernel.html | 456 - ...x_1_1steel_1_1_g_e_m_m_params-members.html | 104 - ...structmlx_1_1steel_1_1_g_e_m_m_params.html | 324 - ...el_1_1_g_e_m_m_spilt_k_params-members.html | 102 - ...x_1_1steel_1_1_g_e_m_m_spilt_k_params.html | 292 - ..._implicit_gemm_conv2_d_params-members.html | 100 - ...teel_1_1_implicit_gemm_conv2_d_params.html | 260 - ...structmlx_1_1steel_1_1_loop_alignment.html | 92 - ...lx_1_1steel_1_1_transform_add-members.html | 93 - .../structmlx_1_1steel_1_1_transform_add.html | 200 - ..._1_1steel_1_1_transform_axpby-members.html | 95 - ...tructmlx_1_1steel_1_1_transform_axpby.html | 241 - ...x_1_1steel_1_1_transform_none-members.html | 92 - ...structmlx_1_1steel_1_1_transform_none.html | 162 - .../build/html/structmlx__atomic-members.html | 87 - docs/build/html/structmlx__atomic.html | 114 - ..._atomic_3_01_t_01_4_01_4_01_4-members.html | 87 - ...__metal__atomic_3_01_t_01_4_01_4_01_4.html | 114 - ...etfft_1_1detail_1_1_exec_c2_c-members.html | 92 - ...ructpocketfft_1_1detail_1_1_exec_c2_c.html | 175 - ...etfft_1_1detail_1_1_exec_dcst-members.html | 94 - ...ructpocketfft_1_1detail_1_1_exec_dcst.html | 207 - ...ft_1_1detail_1_1_exec_hartley-members.html | 91 - ...tpocketfft_1_1detail_1_1_exec_hartley.html | 154 - ...etfft_1_1detail_1_1_exec_r2_r-members.html | 93 - ...ructpocketfft_1_1detail_1_1_exec_r2_r.html | 191 - ...cketfft_1_1detail_1_1_v_l_e_n-members.html | 91 - ...structpocketfft_1_1detail_1_1_v_l_e_n.html | 126 - ...ructpocketfft_1_1detail_1_1_v_t_y_p_e.html | 92 - ...cketfft_1_1detail_1_1add__vec-members.html | 91 - ...structpocketfft_1_1detail_1_1add__vec.html | 118 - ...ec_3_01cmplx_3_01_t_01_4_01_4-members.html | 91 - ..._1add__vec_3_01cmplx_3_01_t_01_4_01_4.html | 118 - ...tpocketfft_1_1detail_1_1cmplx-members.html | 106 - .../structpocketfft_1_1detail_1_1cmplx.html | 588 - ...reading_1_1aligned__allocator-members.html | 95 - ...il_1_1threading_1_1aligned__allocator.html | 247 - ...ctpocketfft_1_1detail_1_1util-members.html | 99 - .../structpocketfft_1_1detail_1_1util.html | 409 - docs/build/html/sync_off.png | Bin 853 -> 0 bytes docs/build/html/sync_on.png | Bin 845 -> 0 bytes docs/build/html/tab_a.png | Bin 142 -> 0 bytes docs/build/html/tab_ad.png | Bin 135 -> 0 bytes docs/build/html/tab_b.png | Bin 169 -> 0 bytes docs/build/html/tab_bd.png | Bin 173 -> 0 bytes docs/build/html/tab_h.png | Bin 177 -> 0 bytes docs/build/html/tab_hd.png | Bin 180 -> 0 bytes docs/build/html/tab_s.png | Bin 184 -> 0 bytes docs/build/html/tab_sd.png | Bin 188 -> 0 bytes docs/build/html/tabs.css | 1 - docs/build/html/ternary__ops_8h.html | 97 - docs/build/html/ternary__ops_8h_source.html | 108 - docs/build/html/threadpool_8h.html | 106 - docs/build/html/threadpool_8h_source.html | 208 - docs/build/html/threefry_8h.html | 110 - docs/build/html/threefry_8h_source.html | 111 - docs/build/html/topics.html | 88 - docs/build/html/transforms_8h.html | 176 - docs/build/html/transforms_8h_source.html | 265 - docs/build/html/transforms__impl_8h.html | 127 - .../html/transforms__impl_8h_source.html | 191 - docs/build/html/types_2bf16_8h.html | 743 - docs/build/html/types_2bf16_8h_source.html | 322 - docs/build/html/types_2complex_8h.html | 256 - docs/build/html/types_2complex_8h_source.html | 249 - docs/build/html/unary__ops_8h.html | 163 - docs/build/html/unary__ops_8h_source.html | 818 - .../html/unionbool4__or__uint-members.html | 88 - docs/build/html/unionbool4__or__uint.html | 128 - ...re_1_1detail_1_1_int_or_float-members.html | 92 - ...lx_1_1core_1_1detail_1_1_int_or_float.html | 132 - docs/build/html/usage/compile.html | 16 +- docs/build/html/usage/distributed.html | 16 +- .../build/html/usage/function_transforms.html | 16 +- docs/build/html/usage/indexing.html | 16 +- docs/build/html/usage/lazy_evaluation.html | 16 +- docs/build/html/usage/numpy.html | 16 +- docs/build/html/usage/quick_start.html | 16 +- docs/build/html/usage/saving_and_loading.html | 16 +- docs/build/html/usage/unified_memory.html | 16 +- docs/build/html/usage/using_streams.html | 16 +- docs/build/html/utils_8h.html | 174 - docs/build/html/utils_8h_source.html | 281 - 2077 files changed, 14038 insertions(+), 303005 deletions(-) create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.linalg.cross.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.put_along_axis.rst rename docs/build/html/_sources/python/_autosummary/{mlx.core.Stream.rst => mlx.core.stream.rst} (100%) create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.CELU.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ELU.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSigmoid.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSoftmax.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Sigmoid.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.celu.rst delete mode 100644 docs/build/html/allocator_8h.html delete mode 100644 docs/build/html/allocator_8h_source.html delete mode 100644 docs/build/html/annotated.html delete mode 100644 docs/build/html/array_8h.html delete mode 100644 docs/build/html/array_8h_source.html delete mode 100644 docs/build/html/atomic_8h.html delete mode 100644 docs/build/html/atomic_8h_source.html delete mode 100644 docs/build/html/backend_2accelerate_2utils_8h.html delete mode 100644 docs/build/html/backend_2accelerate_2utils_8h_source.html delete mode 100644 docs/build/html/backend_2common_2load_8h.html delete mode 100644 docs/build/html/backend_2common_2load_8h_source.html delete mode 100644 docs/build/html/backend_2common_2ops_8h.html delete mode 100644 docs/build/html/backend_2common_2ops_8h_source.html delete mode 100644 docs/build/html/backend_2common_2utils_8h.html delete mode 100644 docs/build/html/backend_2common_2utils_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2allocator_8h.html delete mode 100644 docs/build/html/backend_2metal_2allocator_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2device_8h.html delete mode 100644 docs/build/html/backend_2metal_2device_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2bf16_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2bf16_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2complex_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2complex_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2fft_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2fft_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2utils_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2utils_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2utils_8h.html delete mode 100644 docs/build/html/backend_2metal_2kernels_2utils_8h_source.html delete mode 100644 docs/build/html/backend_2metal_2utils_8h.html delete mode 100644 docs/build/html/backend_2metal_2utils_8h_source.html delete mode 100644 docs/build/html/bc_s.png delete mode 100644 docs/build/html/bc_sd.png delete mode 100644 docs/build/html/bf16__math_8h.html delete mode 100644 docs/build/html/bf16__math_8h_source.html delete mode 100644 docs/build/html/binary__ops_8h.html delete mode 100644 docs/build/html/binary__ops_8h_source.html delete mode 100644 docs/build/html/class_thread_pool-members.html delete mode 100644 docs/build/html/class_thread_pool.html delete mode 100644 docs/build/html/classes.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_abs-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_abs.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_abs.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_add-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_add.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_add.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_add_m_m-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_add_m_m.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_add_m_m.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arange-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arange.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arange.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cos-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cos.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cos.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cosh-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cosh.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cosh.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sin-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sin.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sin.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sinh-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sinh.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sinh.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan2-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan2.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan2.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tanh-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tanh.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tanh.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_partition-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_partition.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_partition.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_reduce-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_reduce.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_reduce.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_sort-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_sort.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_sort.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_as_strided-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_as_strided.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_as_strided.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_as_type-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_as_type.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_as_type.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_bitwise_binary-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_bitwise_binary.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_bitwise_binary.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_block_masked_m_m-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_broadcast-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_broadcast.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_broadcast.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_ceil-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_ceil.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_ceil.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cholesky-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cholesky.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cholesky.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_compiled-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_compiled.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_compiled.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_concatenate-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_concatenate.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_concatenate.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_conjugate-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_conjugate.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_conjugate.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_convolution-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_convolution.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_convolution.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_copy-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_copy.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_copy.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cos-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cos.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cos.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cosh-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cosh.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_cosh.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_custom_transforms-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_custom_transforms.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_custom_transforms.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_depends-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_depends.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_depends.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_div_mod-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_div_mod.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_div_mod.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_divide-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_divide.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_divide.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_equal-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_equal.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_equal.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_erf-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_erf.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_erf.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_erf_inv-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_erf_inv.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_erf_inv.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_event-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_event.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_exp-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_exp.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_exp.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_expm1-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_expm1.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_expm1.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_f_f_t-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_f_f_t.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_f_f_t.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_floor-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_floor.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_floor.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_full-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_full.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_full.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_m_m-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_m_m.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_m_m.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_q_m_m-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_greater-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_greater.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_greater.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_greater_equal-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_greater_equal.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_greater_equal.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_hadamard-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_hadamard.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_hadamard.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_inverse-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_inverse.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_inverse.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_less-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_less.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_less.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_less_equal-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_less_equal.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_less_equal.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_load-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_load.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_load.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log1p-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log1p.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log1p.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log_add_exp-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log_add_exp.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_log_add_exp.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_and-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_and.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_and.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_not-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_not.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_not.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_or-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_or.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_or.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_matmul-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_matmul.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_matmul.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_maximum-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_maximum.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_maximum.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_minimum-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_minimum.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_minimum.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_multiply-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_multiply.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_multiply.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_negative-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_negative.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_negative.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_not_equal-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_not_equal.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_not_equal.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_number_of_elements-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_number_of_elements.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_number_of_elements.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_pad-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_pad.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_pad.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_partition-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_partition.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_partition.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_power-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_power.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_power.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_primitive-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_primitive.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_primitive.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_q_r_f-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_q_r_f.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_q_r_f.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_quantized_matmul-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_quantized_matmul.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_quantized_matmul.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_random_bits-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_random_bits.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_random_bits.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_reduce-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_reduce.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_reduce.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_remainder-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_remainder.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_remainder.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_reshape-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_reshape.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_reshape.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_round-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_round.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_round.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_s_v_d-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_s_v_d.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_s_v_d.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_scan-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_scan.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_scan.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_scatter-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_scatter.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_scatter.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_select-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_select.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_select.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sigmoid-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sigmoid.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sigmoid.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sign-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sign.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sign.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sin-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sin.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sin.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sinh-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sinh.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sinh.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_slice-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_slice.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_slice.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_slice_update-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_slice_update.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_slice_update.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_softmax-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_softmax.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_softmax.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sort-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sort.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sort.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_split-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_split.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_split.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sqrt-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sqrt.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_sqrt.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_square-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_square.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_square.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_stop_gradient-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_stop_gradient.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_stop_gradient.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_subtract-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_subtract.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_subtract.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_tan-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_tan.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_tan.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_tanh-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_tanh.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_tanh.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_transpose-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_transpose.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_transpose.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_unary_primitive-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_unary_primitive.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_unary_primitive.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_uniform-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_uniform.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_uniform.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1_view-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_view.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1_view.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1array-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1array.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_send-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_reader-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_reader.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_reader.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_writer-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_writer.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_writer.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_device-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_device.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.png delete mode 100644 docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler-members.html delete mode 100644 docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dct1-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dct1.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dst1-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dst1.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr__info-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr__info.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr__info.png delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cfftp.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cndarr-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cndarr.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cndarr.png delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1fftblue.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1multi__iter-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1multi__iter.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1ndarr-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1ndarr.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1ndarr.png delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rev__iter-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rev__iter.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rfftp-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rfftp.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1simple__iter-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1simple__iter.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool-members.html delete mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool.html delete mode 100644 docs/build/html/clipboard.js delete mode 100644 docs/build/html/closed.png delete mode 100644 docs/build/html/common_2arange_8h.html delete mode 100644 docs/build/html/common_2arange_8h_source.html delete mode 100644 docs/build/html/common_2binary_8h.html delete mode 100644 docs/build/html/common_2binary_8h_source.html delete mode 100644 docs/build/html/common_2binary__two_8h.html delete mode 100644 docs/build/html/common_2binary__two_8h_source.html delete mode 100644 docs/build/html/common_2copy_8h.html delete mode 100644 docs/build/html/common_2copy_8h_source.html delete mode 100644 docs/build/html/common_2hadamard_8h.html delete mode 100644 docs/build/html/common_2hadamard_8h_source.html delete mode 100644 docs/build/html/common_2reduce_8h.html delete mode 100644 docs/build/html/common_2reduce_8h_source.html delete mode 100644 docs/build/html/common_2slicing_8h.html delete mode 100644 docs/build/html/common_2slicing_8h_source.html delete mode 100644 docs/build/html/common_2ternary_8h.html delete mode 100644 docs/build/html/common_2ternary_8h_source.html delete mode 100644 docs/build/html/common_2unary_8h.html delete mode 100644 docs/build/html/common_2unary_8h_source.html delete mode 100644 docs/build/html/compile_8h.html delete mode 100644 docs/build/html/compile_8h_source.html delete mode 100644 docs/build/html/compile__impl_8h.html delete mode 100644 docs/build/html/compile__impl_8h_source.html delete mode 100644 docs/build/html/compiled_8h.html delete mode 100644 docs/build/html/compiled_8h_source.html delete mode 100644 docs/build/html/compiled__preamble_8h.html delete mode 100644 docs/build/html/compiled__preamble_8h_source.html delete mode 100644 docs/build/html/conv_2loader_8h.html delete mode 100644 docs/build/html/conv_2loader_8h_source.html delete mode 100644 docs/build/html/conv_2params_8h.html delete mode 100644 docs/build/html/conv_2params_8h_source.html delete mode 100644 docs/build/html/conv_8h.html delete mode 100644 docs/build/html/conv_8h_source.html delete mode 100644 docs/build/html/cookie.js delete mode 100644 docs/build/html/defines_8h.html delete mode 100644 docs/build/html/defines_8h_source.html delete mode 100644 docs/build/html/device_8h.html delete mode 100644 docs/build/html/device_8h_source.html delete mode 100644 docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html delete mode 100644 docs/build/html/dir_2193406f5b2eae6fc53753d8a9a80df3.html delete mode 100644 docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html delete mode 100644 docs/build/html/dir_4336740ec0075891704443b417fef6cb.html delete mode 100644 docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html delete mode 100644 docs/build/html/dir_6379e541ea5051a09bc0e3fdd92fcd3b.html delete mode 100644 docs/build/html/dir_6768c99e6145fb9510ccdb40db8ede25.html delete mode 100644 docs/build/html/dir_70a37effa88bcbd6b791977fa1e64356.html delete mode 100644 docs/build/html/dir_76215a6c54e2b67053e723fc2395583c.html delete mode 100644 docs/build/html/dir_86b95e7b1d0d6e25466bb9213752d32f.html delete mode 100644 docs/build/html/dir_8c751ccfa9f494753d976761a9d60a84.html delete mode 100644 docs/build/html/dir_938ab0ecf10b8b860ff766c820f665fd.html delete mode 100644 docs/build/html/dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html delete mode 100644 docs/build/html/dir_ad00dcd1517bfdbe01f68ec9b4eff877.html delete mode 100644 docs/build/html/dir_ba4426224ef60f409462a2a12fa18f06.html delete mode 100644 docs/build/html/dir_d0c977ea65824390717cdb7efc36c157.html delete mode 100644 docs/build/html/dir_df9494e83ef22ae6150a0e080d9709ed.html delete mode 100644 docs/build/html/dir_f149b24a1b5be11cd70151abe517e3f8.html delete mode 100644 docs/build/html/dir_f60cd69d27fd3faa641c79056fff0e2d.html delete mode 100644 docs/build/html/distributed_2ops_8h.html delete mode 100644 docs/build/html/distributed_2ops_8h_source.html delete mode 100644 docs/build/html/distributed_2primitives_8h.html delete mode 100644 docs/build/html/distributed_2primitives_8h_source.html delete mode 100644 docs/build/html/distributed_8h.html delete mode 100644 docs/build/html/distributed_8h_source.html delete mode 100644 docs/build/html/distributed__impl_8h.html delete mode 100644 docs/build/html/distributed__impl_8h_source.html delete mode 100644 docs/build/html/doc.svg delete mode 100644 docs/build/html/docd.svg delete mode 100644 docs/build/html/doxygen.css delete mode 100644 docs/build/html/doxygen.svg delete mode 100644 docs/build/html/doxygen_crawl.html delete mode 100644 docs/build/html/dtype_8h.html delete mode 100644 docs/build/html/dtype_8h_source.html delete mode 100644 docs/build/html/dynsections.js delete mode 100644 docs/build/html/einsum_8h.html delete mode 100644 docs/build/html/einsum_8h_source.html delete mode 100644 docs/build/html/erf_8h.html delete mode 100644 docs/build/html/erf_8h_source.html delete mode 100644 docs/build/html/event_8h.html delete mode 100644 docs/build/html/event_8h_source.html delete mode 100644 docs/build/html/expm1f_8h.html delete mode 100644 docs/build/html/expm1f_8h_source.html delete mode 100644 docs/build/html/fast_8h.html delete mode 100644 docs/build/html/fast_8h_source.html delete mode 100644 docs/build/html/fast__primitives_8h.html delete mode 100644 docs/build/html/fast__primitives_8h_source.html delete mode 100644 docs/build/html/fft_8h.html delete mode 100644 docs/build/html/fft_8h_source.html delete mode 100644 docs/build/html/files.html delete mode 100644 docs/build/html/folderclosed.svg delete mode 100644 docs/build/html/folderclosedd.svg delete mode 100644 docs/build/html/folderopen.svg delete mode 100644 docs/build/html/folderopend.svg delete mode 100644 docs/build/html/fp16_8h.html delete mode 100644 docs/build/html/fp16_8h_source.html delete mode 100644 docs/build/html/functions.html delete mode 100644 docs/build/html/functions_a.html delete mode 100644 docs/build/html/functions_b.html delete mode 100644 docs/build/html/functions_c.html delete mode 100644 docs/build/html/functions_d.html delete mode 100644 docs/build/html/functions_e.html delete mode 100644 docs/build/html/functions_enum.html delete mode 100644 docs/build/html/functions_eval.html delete mode 100644 docs/build/html/functions_f.html delete mode 100644 docs/build/html/functions_func.html delete mode 100644 docs/build/html/functions_func_a.html delete mode 100644 docs/build/html/functions_func_b.html delete mode 100644 docs/build/html/functions_func_c.html delete mode 100644 docs/build/html/functions_func_d.html delete mode 100644 docs/build/html/functions_func_e.html delete mode 100644 docs/build/html/functions_func_f.html delete mode 100644 docs/build/html/functions_func_g.html delete mode 100644 docs/build/html/functions_func_h.html delete mode 100644 docs/build/html/functions_func_i.html delete mode 100644 docs/build/html/functions_func_j.html delete mode 100644 docs/build/html/functions_func_k.html delete mode 100644 docs/build/html/functions_func_l.html delete mode 100644 docs/build/html/functions_func_m.html delete mode 100644 docs/build/html/functions_func_n.html delete mode 100644 docs/build/html/functions_func_o.html delete mode 100644 docs/build/html/functions_func_p.html delete mode 100644 docs/build/html/functions_func_q.html delete mode 100644 docs/build/html/functions_func_r.html delete mode 100644 docs/build/html/functions_func_s.html delete mode 100644 docs/build/html/functions_func_t.html delete mode 100644 docs/build/html/functions_func_u.html delete mode 100644 docs/build/html/functions_func_v.html delete mode 100644 docs/build/html/functions_func_w.html delete mode 100644 docs/build/html/functions_func_~.html delete mode 100644 docs/build/html/functions_g.html delete mode 100644 docs/build/html/functions_h.html delete mode 100644 docs/build/html/functions_i.html delete mode 100644 docs/build/html/functions_j.html delete mode 100644 docs/build/html/functions_k.html delete mode 100644 docs/build/html/functions_l.html delete mode 100644 docs/build/html/functions_m.html delete mode 100644 docs/build/html/functions_n.html delete mode 100644 docs/build/html/functions_o.html delete mode 100644 docs/build/html/functions_p.html delete mode 100644 docs/build/html/functions_q.html delete mode 100644 docs/build/html/functions_r.html delete mode 100644 docs/build/html/functions_rela.html delete mode 100644 docs/build/html/functions_s.html delete mode 100644 docs/build/html/functions_t.html delete mode 100644 docs/build/html/functions_type.html delete mode 100644 docs/build/html/functions_u.html delete mode 100644 docs/build/html/functions_v.html delete mode 100644 docs/build/html/functions_vars.html delete mode 100644 docs/build/html/functions_vars_b.html delete mode 100644 docs/build/html/functions_vars_c.html delete mode 100644 docs/build/html/functions_vars_d.html delete mode 100644 docs/build/html/functions_vars_e.html delete mode 100644 docs/build/html/functions_vars_f.html delete mode 100644 docs/build/html/functions_vars_g.html delete mode 100644 docs/build/html/functions_vars_h.html delete mode 100644 docs/build/html/functions_vars_i.html delete mode 100644 docs/build/html/functions_vars_j.html delete mode 100644 docs/build/html/functions_vars_k.html delete mode 100644 docs/build/html/functions_vars_l.html delete mode 100644 docs/build/html/functions_vars_m.html delete mode 100644 docs/build/html/functions_vars_n.html delete mode 100644 docs/build/html/functions_vars_o.html delete mode 100644 docs/build/html/functions_vars_p.html delete mode 100644 docs/build/html/functions_vars_q.html delete mode 100644 docs/build/html/functions_vars_r.html delete mode 100644 docs/build/html/functions_vars_s.html delete mode 100644 docs/build/html/functions_vars_t.html delete mode 100644 docs/build/html/functions_vars_v.html delete mode 100644 docs/build/html/functions_vars_w.html delete mode 100644 docs/build/html/functions_vars_x.html delete mode 100644 docs/build/html/functions_w.html delete mode 100644 docs/build/html/functions_x.html delete mode 100644 docs/build/html/functions_~.html delete mode 100644 docs/build/html/gather_8h.html delete mode 100644 docs/build/html/gather_8h_source.html delete mode 100644 docs/build/html/gemm_2loader_8h.html delete mode 100644 docs/build/html/gemm_2loader_8h_source.html delete mode 100644 docs/build/html/gemm_2params_8h.html delete mode 100644 docs/build/html/gemm_2params_8h_source.html delete mode 100644 docs/build/html/gemm_8h.html delete mode 100644 docs/build/html/gemm_8h_source.html delete mode 100644 docs/build/html/gguf_8h.html delete mode 100644 docs/build/html/gguf_8h_source.html delete mode 100644 docs/build/html/globals.html delete mode 100644 docs/build/html/globals_a.html delete mode 100644 docs/build/html/globals_b.html delete mode 100644 docs/build/html/globals_c.html delete mode 100644 docs/build/html/globals_d.html delete mode 100644 docs/build/html/globals_defs.html delete mode 100644 docs/build/html/globals_e.html delete mode 100644 docs/build/html/globals_f.html delete mode 100644 docs/build/html/globals_func.html delete mode 100644 docs/build/html/globals_func_b.html delete mode 100644 docs/build/html/globals_func_c.html delete mode 100644 docs/build/html/globals_func_d.html delete mode 100644 docs/build/html/globals_func_e.html delete mode 100644 docs/build/html/globals_func_f.html delete mode 100644 docs/build/html/globals_func_g.html delete mode 100644 docs/build/html/globals_func_h.html delete mode 100644 docs/build/html/globals_func_i.html delete mode 100644 docs/build/html/globals_func_l.html delete mode 100644 docs/build/html/globals_func_m.html delete mode 100644 docs/build/html/globals_func_o.html delete mode 100644 docs/build/html/globals_func_p.html delete mode 100644 docs/build/html/globals_func_q.html delete mode 100644 docs/build/html/globals_func_r.html delete mode 100644 docs/build/html/globals_func_s.html delete mode 100644 docs/build/html/globals_func_t.html delete mode 100644 docs/build/html/globals_func_u.html delete mode 100644 docs/build/html/globals_func_w.html delete mode 100644 docs/build/html/globals_g.html delete mode 100644 docs/build/html/globals_h.html delete mode 100644 docs/build/html/globals_i.html delete mode 100644 docs/build/html/globals_l.html delete mode 100644 docs/build/html/globals_m.html delete mode 100644 docs/build/html/globals_n.html delete mode 100644 docs/build/html/globals_o.html delete mode 100644 docs/build/html/globals_p.html delete mode 100644 docs/build/html/globals_q.html delete mode 100644 docs/build/html/globals_r.html delete mode 100644 docs/build/html/globals_s.html delete mode 100644 docs/build/html/globals_t.html delete mode 100644 docs/build/html/globals_type.html delete mode 100644 docs/build/html/globals_u.html delete mode 100644 docs/build/html/globals_vars.html delete mode 100644 docs/build/html/globals_w.html delete mode 100644 docs/build/html/globals_z.html delete mode 100644 docs/build/html/graph__utils_8h.html delete mode 100644 docs/build/html/graph__utils_8h_source.html delete mode 100644 docs/build/html/group__ops.html delete mode 100644 docs/build/html/half__types_8h.html delete mode 100644 docs/build/html/half__types_8h_source.html delete mode 100644 docs/build/html/hierarchy.html delete mode 100644 docs/build/html/includes_8h.html delete mode 100644 docs/build/html/includes_8h_source.html delete mode 100644 docs/build/html/io_2load_8h.html delete mode 100644 docs/build/html/io_2load_8h_source.html delete mode 100644 docs/build/html/io_8h.html delete mode 100644 docs/build/html/io_8h_source.html delete mode 100644 docs/build/html/jit_2gemv__masked_8h.html delete mode 100644 docs/build/html/jit_2gemv__masked_8h_source.html delete mode 100644 docs/build/html/jit_2indexing_8h.html delete mode 100644 docs/build/html/jit_2indexing_8h_source.html delete mode 100644 docs/build/html/jit_2scan_8h.html delete mode 100644 docs/build/html/jit_2scan_8h_source.html delete mode 100644 docs/build/html/jit_2softmax_8h.html delete mode 100644 docs/build/html/jit_2softmax_8h_source.html delete mode 100644 docs/build/html/jit_2steel__conv_8h.html delete mode 100644 docs/build/html/jit_2steel__conv_8h_source.html delete mode 100644 docs/build/html/jquery.js delete mode 100644 docs/build/html/kernels_2gemv__masked_8h.html delete mode 100644 docs/build/html/kernels_2gemv__masked_8h_source.html delete mode 100644 docs/build/html/kernels_2indexing_8h.html delete mode 100644 docs/build/html/kernels_2indexing_8h_source.html delete mode 100644 docs/build/html/kernels_2scan_8h.html delete mode 100644 docs/build/html/kernels_2scan_8h_source.html delete mode 100644 docs/build/html/kernels_2softmax_8h.html delete mode 100644 docs/build/html/kernels_2softmax_8h_source.html delete mode 100644 docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h.html delete mode 100644 docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h_source.html delete mode 100644 docs/build/html/kernels_8h.html delete mode 100644 docs/build/html/kernels_8h_source.html delete mode 100644 docs/build/html/lapack__helper_8h.html delete mode 100644 docs/build/html/lapack__helper_8h_source.html delete mode 100644 docs/build/html/linalg_8h.html delete mode 100644 docs/build/html/linalg_8h_source.html delete mode 100644 docs/build/html/loader__channel__l_8h.html delete mode 100644 docs/build/html/loader__channel__l_8h_source.html delete mode 100644 docs/build/html/loader__channel__n_8h.html delete mode 100644 docs/build/html/loader__channel__n_8h_source.html delete mode 100644 docs/build/html/loader__general_8h.html delete mode 100644 docs/build/html/loader__general_8h_source.html delete mode 100644 docs/build/html/matmul_8h.html delete mode 100644 docs/build/html/matmul_8h_source.html delete mode 100644 docs/build/html/menu.js delete mode 100644 docs/build/html/menudata.js delete mode 100644 docs/build/html/metal_2binary_8h.html delete mode 100644 docs/build/html/metal_2binary_8h_source.html delete mode 100644 docs/build/html/metal_2copy_8h.html delete mode 100644 docs/build/html/metal_2copy_8h_source.html delete mode 100644 docs/build/html/metal_2jit_2arange_8h.html delete mode 100644 docs/build/html/metal_2jit_2arange_8h_source.html delete mode 100644 docs/build/html/metal_2jit_2copy_8h.html delete mode 100644 docs/build/html/metal_2jit_2copy_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2arange_8h.html delete mode 100644 docs/build/html/metal_2kernels_2arange_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2binary_8h.html delete mode 100644 docs/build/html/metal_2kernels_2binary_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2binary__two_8h.html delete mode 100644 docs/build/html/metal_2kernels_2binary__two_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2copy_8h.html delete mode 100644 docs/build/html/metal_2kernels_2copy_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2hadamard_8h.html delete mode 100644 docs/build/html/metal_2kernels_2hadamard_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2reduce_8h.html delete mode 100644 docs/build/html/metal_2kernels_2reduce_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2ternary_8h.html delete mode 100644 docs/build/html/metal_2kernels_2ternary_8h_source.html delete mode 100644 docs/build/html/metal_2kernels_2unary_8h.html delete mode 100644 docs/build/html/metal_2kernels_2unary_8h_source.html delete mode 100644 docs/build/html/metal_2reduce_8h.html delete mode 100644 docs/build/html/metal_2reduce_8h_source.html delete mode 100644 docs/build/html/metal_2slicing_8h.html delete mode 100644 docs/build/html/metal_2slicing_8h_source.html delete mode 100644 docs/build/html/metal_2ternary_8h.html delete mode 100644 docs/build/html/metal_2ternary_8h_source.html delete mode 100644 docs/build/html/metal_2unary_8h.html delete mode 100644 docs/build/html/metal_2unary_8h_source.html delete mode 100644 docs/build/html/metal_8h.html delete mode 100644 docs/build/html/metal_8h_source.html delete mode 100644 docs/build/html/metal__impl_8h.html delete mode 100644 docs/build/html/metal__impl_8h_source.html delete mode 100644 docs/build/html/minus.svg delete mode 100644 docs/build/html/minusd.svg delete mode 100644 docs/build/html/mlx_8h.html delete mode 100644 docs/build/html/mlx_8h_source.html delete mode 100644 docs/build/html/mma_8h.html delete mode 100644 docs/build/html/mma_8h_source.html delete mode 100644 docs/build/html/namespacemembers.html delete mode 100644 docs/build/html/namespacemembers_b.html delete mode 100644 docs/build/html/namespacemembers_c.html delete mode 100644 docs/build/html/namespacemembers_d.html delete mode 100644 docs/build/html/namespacemembers_e.html delete mode 100644 docs/build/html/namespacemembers_enum.html delete mode 100644 docs/build/html/namespacemembers_eval.html delete mode 100644 docs/build/html/namespacemembers_f.html delete mode 100644 docs/build/html/namespacemembers_func.html delete mode 100644 docs/build/html/namespacemembers_func_b.html delete mode 100644 docs/build/html/namespacemembers_func_c.html delete mode 100644 docs/build/html/namespacemembers_func_d.html delete mode 100644 docs/build/html/namespacemembers_func_e.html delete mode 100644 docs/build/html/namespacemembers_func_f.html delete mode 100644 docs/build/html/namespacemembers_func_g.html delete mode 100644 docs/build/html/namespacemembers_func_h.html delete mode 100644 docs/build/html/namespacemembers_func_i.html delete mode 100644 docs/build/html/namespacemembers_func_j.html delete mode 100644 docs/build/html/namespacemembers_func_k.html delete mode 100644 docs/build/html/namespacemembers_func_l.html delete mode 100644 docs/build/html/namespacemembers_func_m.html delete mode 100644 docs/build/html/namespacemembers_func_n.html delete mode 100644 docs/build/html/namespacemembers_func_o.html delete mode 100644 docs/build/html/namespacemembers_func_p.html delete mode 100644 docs/build/html/namespacemembers_func_q.html delete mode 100644 docs/build/html/namespacemembers_func_r.html delete mode 100644 docs/build/html/namespacemembers_func_s.html delete mode 100644 docs/build/html/namespacemembers_func_t.html delete mode 100644 docs/build/html/namespacemembers_func_u.html delete mode 100644 docs/build/html/namespacemembers_func_v.html delete mode 100644 docs/build/html/namespacemembers_func_w.html delete mode 100644 docs/build/html/namespacemembers_func_z.html delete mode 100644 docs/build/html/namespacemembers_g.html delete mode 100644 docs/build/html/namespacemembers_h.html delete mode 100644 docs/build/html/namespacemembers_i.html delete mode 100644 docs/build/html/namespacemembers_j.html delete mode 100644 docs/build/html/namespacemembers_k.html delete mode 100644 docs/build/html/namespacemembers_l.html delete mode 100644 docs/build/html/namespacemembers_m.html delete mode 100644 docs/build/html/namespacemembers_n.html delete mode 100644 docs/build/html/namespacemembers_o.html delete mode 100644 docs/build/html/namespacemembers_p.html delete mode 100644 docs/build/html/namespacemembers_q.html delete mode 100644 docs/build/html/namespacemembers_r.html delete mode 100644 docs/build/html/namespacemembers_s.html delete mode 100644 docs/build/html/namespacemembers_t.html delete mode 100644 docs/build/html/namespacemembers_type.html delete mode 100644 docs/build/html/namespacemembers_u.html delete mode 100644 docs/build/html/namespacemembers_v.html delete mode 100644 docs/build/html/namespacemembers_vars.html delete mode 100644 docs/build/html/namespacemembers_w.html delete mode 100644 docs/build/html/namespacemembers_z.html delete mode 100644 docs/build/html/namespacemetal.html delete mode 100644 docs/build/html/namespacemetal_1_1fast.html delete mode 100644 docs/build/html/namespacemetal_1_1precise.html delete mode 100644 docs/build/html/namespacemlx.html delete mode 100644 docs/build/html/namespacemlx_1_1core.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1allocator.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1detail.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1distributed.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1distributed_1_1detail.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1fast.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1fft.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1io.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1linalg.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1metal.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1random.html delete mode 100644 docs/build/html/namespacemlx_1_1core_1_1scheduler.html delete mode 100644 docs/build/html/namespacemlx_1_1steel.html delete mode 100644 docs/build/html/namespacepocketfft.html delete mode 100644 docs/build/html/namespacepocketfft_1_1detail.html delete mode 100644 docs/build/html/namespacepocketfft_1_1detail_1_1threading.html delete mode 100644 docs/build/html/namespaces.html delete mode 100644 docs/build/html/nav_f.png delete mode 100644 docs/build/html/nav_fd.png delete mode 100644 docs/build/html/nav_g.png delete mode 100644 docs/build/html/nav_h.png delete mode 100644 docs/build/html/nav_hd.png delete mode 100644 docs/build/html/open.png delete mode 100644 docs/build/html/ops_8h.html delete mode 100644 docs/build/html/ops_8h_source.html delete mode 100644 docs/build/html/plus.svg delete mode 100644 docs/build/html/plusd.svg delete mode 100644 docs/build/html/pocketfft_8h.html delete mode 100644 docs/build/html/pocketfft_8h_source.html delete mode 100644 docs/build/html/primitives_8h.html delete mode 100644 docs/build/html/primitives_8h_source.html create mode 100644 docs/build/html/python/_autosummary/mlx.core.linalg.cross.html create mode 100644 docs/build/html/python/_autosummary/mlx.core.put_along_axis.html rename docs/build/html/python/_autosummary/{mlx.core.Stream.html => mlx.core.stream.html} (98%) create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.CELU.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.ELU.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.LogSigmoid.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.LogSoftmax.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Sigmoid.html create mode 100644 docs/build/html/python/nn/_autosummary_functions/mlx.nn.celu.html delete mode 100644 docs/build/html/quantized_8h.html delete mode 100644 docs/build/html/quantized_8h_source.html delete mode 100644 docs/build/html/radix_8h.html delete mode 100644 docs/build/html/radix_8h_source.html delete mode 100644 docs/build/html/random_8h.html delete mode 100644 docs/build/html/random_8h_source.html delete mode 100644 docs/build/html/readwrite_8h.html delete mode 100644 docs/build/html/readwrite_8h_source.html delete mode 100644 docs/build/html/reduce__all_8h.html delete mode 100644 docs/build/html/reduce__all_8h_source.html delete mode 100644 docs/build/html/reduce__col_8h.html delete mode 100644 docs/build/html/reduce__col_8h_source.html delete mode 100644 docs/build/html/reduce__init_8h.html delete mode 100644 docs/build/html/reduce__init_8h_source.html delete mode 100644 docs/build/html/reduce__row_8h.html delete mode 100644 docs/build/html/reduce__row_8h_source.html delete mode 100644 docs/build/html/reduce__utils_8h.html delete mode 100644 docs/build/html/reduce__utils_8h_source.html delete mode 100644 docs/build/html/scaled__dot__product__attention__params_8h.html delete mode 100644 docs/build/html/scaled__dot__product__attention__params_8h_source.html delete mode 100644 docs/build/html/scatter_8h.html delete mode 100644 docs/build/html/scatter_8h_source.html delete mode 100644 docs/build/html/scheduler_8h.html delete mode 100644 docs/build/html/scheduler_8h_source.html delete mode 100644 docs/build/html/search/all_0.js delete mode 100644 docs/build/html/search/all_1.js delete mode 100644 docs/build/html/search/all_10.js delete mode 100644 docs/build/html/search/all_11.js delete mode 100644 docs/build/html/search/all_12.js delete mode 100644 docs/build/html/search/all_13.js delete mode 100644 docs/build/html/search/all_14.js delete mode 100644 docs/build/html/search/all_15.js delete mode 100644 docs/build/html/search/all_16.js delete mode 100644 docs/build/html/search/all_17.js delete mode 100644 docs/build/html/search/all_18.js delete mode 100644 docs/build/html/search/all_19.js delete mode 100644 docs/build/html/search/all_1a.js delete mode 100644 docs/build/html/search/all_2.js delete mode 100644 docs/build/html/search/all_3.js delete mode 100644 docs/build/html/search/all_4.js delete mode 100644 docs/build/html/search/all_5.js delete mode 100644 docs/build/html/search/all_6.js delete mode 100644 docs/build/html/search/all_7.js delete mode 100644 docs/build/html/search/all_8.js delete mode 100644 docs/build/html/search/all_9.js delete mode 100644 docs/build/html/search/all_a.js delete mode 100644 docs/build/html/search/all_b.js delete mode 100644 docs/build/html/search/all_c.js delete mode 100644 docs/build/html/search/all_d.js delete mode 100644 docs/build/html/search/all_e.js delete mode 100644 docs/build/html/search/all_f.js delete mode 100644 docs/build/html/search/classes_0.js delete mode 100644 docs/build/html/search/classes_1.js delete mode 100644 docs/build/html/search/classes_10.js delete mode 100644 docs/build/html/search/classes_11.js delete mode 100644 docs/build/html/search/classes_12.js delete mode 100644 docs/build/html/search/classes_13.js delete mode 100644 docs/build/html/search/classes_14.js delete mode 100644 docs/build/html/search/classes_15.js delete mode 100644 docs/build/html/search/classes_16.js delete mode 100644 docs/build/html/search/classes_2.js delete mode 100644 docs/build/html/search/classes_3.js delete mode 100644 docs/build/html/search/classes_4.js delete mode 100644 docs/build/html/search/classes_5.js delete mode 100644 docs/build/html/search/classes_6.js delete mode 100644 docs/build/html/search/classes_7.js delete mode 100644 docs/build/html/search/classes_8.js delete mode 100644 docs/build/html/search/classes_9.js delete mode 100644 docs/build/html/search/classes_a.js delete mode 100644 docs/build/html/search/classes_b.js delete mode 100644 docs/build/html/search/classes_c.js delete mode 100644 docs/build/html/search/classes_d.js delete mode 100644 docs/build/html/search/classes_e.js delete mode 100644 docs/build/html/search/classes_f.js delete mode 100644 docs/build/html/search/close.svg delete mode 100644 docs/build/html/search/defines_0.js delete mode 100644 docs/build/html/search/defines_1.js delete mode 100644 docs/build/html/search/defines_2.js delete mode 100644 docs/build/html/search/defines_3.js delete mode 100644 docs/build/html/search/defines_4.js delete mode 100644 docs/build/html/search/defines_5.js delete mode 100644 docs/build/html/search/defines_6.js delete mode 100644 docs/build/html/search/defines_7.js delete mode 100644 docs/build/html/search/defines_8.js delete mode 100644 docs/build/html/search/defines_9.js delete mode 100644 docs/build/html/search/defines_a.js delete mode 100644 docs/build/html/search/defines_b.js delete mode 100644 docs/build/html/search/defines_c.js delete mode 100644 docs/build/html/search/enums_0.js delete mode 100644 docs/build/html/search/enums_1.js delete mode 100644 docs/build/html/search/enums_2.js delete mode 100644 docs/build/html/search/enums_3.js delete mode 100644 docs/build/html/search/enums_4.js delete mode 100644 docs/build/html/search/enums_5.js delete mode 100644 docs/build/html/search/enums_6.js delete mode 100644 docs/build/html/search/enums_7.js delete mode 100644 docs/build/html/search/enumvalues_0.js delete mode 100644 docs/build/html/search/enumvalues_1.js delete mode 100644 docs/build/html/search/enumvalues_10.js delete mode 100644 docs/build/html/search/enumvalues_11.js delete mode 100644 docs/build/html/search/enumvalues_12.js delete mode 100644 docs/build/html/search/enumvalues_2.js delete mode 100644 docs/build/html/search/enumvalues_3.js delete mode 100644 docs/build/html/search/enumvalues_4.js delete mode 100644 docs/build/html/search/enumvalues_5.js delete mode 100644 docs/build/html/search/enumvalues_6.js delete mode 100644 docs/build/html/search/enumvalues_7.js delete mode 100644 docs/build/html/search/enumvalues_8.js delete mode 100644 docs/build/html/search/enumvalues_9.js delete mode 100644 docs/build/html/search/enumvalues_a.js delete mode 100644 docs/build/html/search/enumvalues_b.js delete mode 100644 docs/build/html/search/enumvalues_c.js delete mode 100644 docs/build/html/search/enumvalues_d.js delete mode 100644 docs/build/html/search/enumvalues_e.js delete mode 100644 docs/build/html/search/enumvalues_f.js delete mode 100644 docs/build/html/search/files_0.js delete mode 100644 docs/build/html/search/files_1.js delete mode 100644 docs/build/html/search/files_10.js delete mode 100644 docs/build/html/search/files_11.js delete mode 100644 docs/build/html/search/files_12.js delete mode 100644 docs/build/html/search/files_2.js delete mode 100644 docs/build/html/search/files_3.js delete mode 100644 docs/build/html/search/files_4.js delete mode 100644 docs/build/html/search/files_5.js delete mode 100644 docs/build/html/search/files_6.js delete mode 100644 docs/build/html/search/files_7.js delete mode 100644 docs/build/html/search/files_8.js delete mode 100644 docs/build/html/search/files_9.js delete mode 100644 docs/build/html/search/files_a.js delete mode 100644 docs/build/html/search/files_b.js delete mode 100644 docs/build/html/search/files_c.js delete mode 100644 docs/build/html/search/files_d.js delete mode 100644 docs/build/html/search/files_e.js delete mode 100644 docs/build/html/search/files_f.js delete mode 100644 docs/build/html/search/functions_0.js delete mode 100644 docs/build/html/search/functions_1.js delete mode 100644 docs/build/html/search/functions_10.js delete mode 100644 docs/build/html/search/functions_11.js delete mode 100644 docs/build/html/search/functions_12.js delete mode 100644 docs/build/html/search/functions_13.js delete mode 100644 docs/build/html/search/functions_14.js delete mode 100644 docs/build/html/search/functions_15.js delete mode 100644 docs/build/html/search/functions_16.js delete mode 100644 docs/build/html/search/functions_17.js delete mode 100644 docs/build/html/search/functions_18.js delete mode 100644 docs/build/html/search/functions_19.js delete mode 100644 docs/build/html/search/functions_2.js delete mode 100644 docs/build/html/search/functions_3.js delete mode 100644 docs/build/html/search/functions_4.js delete mode 100644 docs/build/html/search/functions_5.js delete mode 100644 docs/build/html/search/functions_6.js delete mode 100644 docs/build/html/search/functions_7.js delete mode 100644 docs/build/html/search/functions_8.js delete mode 100644 docs/build/html/search/functions_9.js delete mode 100644 docs/build/html/search/functions_a.js delete mode 100644 docs/build/html/search/functions_b.js delete mode 100644 docs/build/html/search/functions_c.js delete mode 100644 docs/build/html/search/functions_d.js delete mode 100644 docs/build/html/search/functions_e.js delete mode 100644 docs/build/html/search/functions_f.js delete mode 100644 docs/build/html/search/groups_0.js delete mode 100644 docs/build/html/search/groups_1.js delete mode 100644 docs/build/html/search/groups_2.js delete mode 100644 docs/build/html/search/mag.svg delete mode 100644 docs/build/html/search/mag_d.svg delete mode 100644 docs/build/html/search/mag_sel.svg delete mode 100644 docs/build/html/search/mag_seld.svg delete mode 100644 docs/build/html/search/namespaces_0.js delete mode 100644 docs/build/html/search/namespaces_1.js delete mode 100644 docs/build/html/search/related_0.js delete mode 100644 docs/build/html/search/related_1.js delete mode 100644 docs/build/html/search/search.css delete mode 100644 docs/build/html/search/search.js delete mode 100644 docs/build/html/search/searchdata.js delete mode 100644 docs/build/html/search/typedefs_0.js delete mode 100644 docs/build/html/search/typedefs_1.js delete mode 100644 docs/build/html/search/typedefs_2.js delete mode 100644 docs/build/html/search/typedefs_3.js delete mode 100644 docs/build/html/search/typedefs_4.js delete mode 100644 docs/build/html/search/typedefs_5.js delete mode 100644 docs/build/html/search/typedefs_6.js delete mode 100644 docs/build/html/search/typedefs_7.js delete mode 100644 docs/build/html/search/typedefs_8.js delete mode 100644 docs/build/html/search/typedefs_9.js delete mode 100644 docs/build/html/search/typedefs_a.js delete mode 100644 docs/build/html/search/typedefs_b.js delete mode 100644 docs/build/html/search/typedefs_c.js delete mode 100644 docs/build/html/search/typedefs_d.js delete mode 100644 docs/build/html/search/variables_0.js delete mode 100644 docs/build/html/search/variables_1.js delete mode 100644 docs/build/html/search/variables_10.js delete mode 100644 docs/build/html/search/variables_11.js delete mode 100644 docs/build/html/search/variables_12.js delete mode 100644 docs/build/html/search/variables_13.js delete mode 100644 docs/build/html/search/variables_14.js delete mode 100644 docs/build/html/search/variables_15.js delete mode 100644 docs/build/html/search/variables_16.js delete mode 100644 docs/build/html/search/variables_17.js delete mode 100644 docs/build/html/search/variables_18.js delete mode 100644 docs/build/html/search/variables_2.js delete mode 100644 docs/build/html/search/variables_3.js delete mode 100644 docs/build/html/search/variables_4.js delete mode 100644 docs/build/html/search/variables_5.js delete mode 100644 docs/build/html/search/variables_6.js delete mode 100644 docs/build/html/search/variables_7.js delete mode 100644 docs/build/html/search/variables_8.js delete mode 100644 docs/build/html/search/variables_9.js delete mode 100644 docs/build/html/search/variables_a.js delete mode 100644 docs/build/html/search/variables_b.js delete mode 100644 docs/build/html/search/variables_c.js delete mode 100644 docs/build/html/search/variables_d.js delete mode 100644 docs/build/html/search/variables_e.js delete mode 100644 docs/build/html/search/variables_f.js delete mode 100644 docs/build/html/sort_8h.html delete mode 100644 docs/build/html/sort_8h_source.html delete mode 100644 docs/build/html/splitbar.png delete mode 100644 docs/build/html/splitbard.png delete mode 100644 docs/build/html/steel_2defines_8h.html delete mode 100644 docs/build/html/steel_2defines_8h_source.html delete mode 100644 docs/build/html/steel__conv__general_8h.html delete mode 100644 docs/build/html/steel__conv__general_8h_source.html delete mode 100644 docs/build/html/steel__gemm_8h.html delete mode 100644 docs/build/html/steel__gemm_8h_source.html delete mode 100644 docs/build/html/steel__gemm__fused_8h.html delete mode 100644 docs/build/html/steel__gemm__fused_8h_source.html delete mode 100644 docs/build/html/steel__gemm__masked_8h.html delete mode 100644 docs/build/html/steel__gemm__masked_8h_source.html delete mode 100644 docs/build/html/steel__gemm__splitk_8h.html delete mode 100644 docs/build/html/steel__gemm__splitk_8h_source.html delete mode 100644 docs/build/html/stream_8h.html delete mode 100644 docs/build/html/stream_8h_source.html delete mode 100644 docs/build/html/struct___m_l_x___b_float16-members.html delete mode 100644 docs/build/html/struct___m_l_x___b_float16.html delete mode 100644 docs/build/html/struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html delete mode 100644 docs/build/html/struct___no_mask-members.html delete mode 100644 docs/build/html/struct___no_mask.html delete mode 100644 docs/build/html/struct_abs-members.html delete mode 100644 docs/build/html/struct_abs.html delete mode 100644 docs/build/html/struct_add-members.html delete mode 100644 docs/build/html/struct_add.html delete mode 100644 docs/build/html/struct_and.html delete mode 100644 docs/build/html/struct_arc_cos-members.html delete mode 100644 docs/build/html/struct_arc_cos.html delete mode 100644 docs/build/html/struct_arc_cosh-members.html delete mode 100644 docs/build/html/struct_arc_cosh.html delete mode 100644 docs/build/html/struct_arc_sin-members.html delete mode 100644 docs/build/html/struct_arc_sin.html delete mode 100644 docs/build/html/struct_arc_sinh-members.html delete mode 100644 docs/build/html/struct_arc_sinh.html delete mode 100644 docs/build/html/struct_arc_tan-members.html delete mode 100644 docs/build/html/struct_arc_tan.html delete mode 100644 docs/build/html/struct_arc_tan2-members.html delete mode 100644 docs/build/html/struct_arc_tan2.html delete mode 100644 docs/build/html/struct_arc_tanh-members.html delete mode 100644 docs/build/html/struct_arc_tanh.html delete mode 100644 docs/build/html/struct_bitwise_and-members.html delete mode 100644 docs/build/html/struct_bitwise_and.html delete mode 100644 docs/build/html/struct_bitwise_or-members.html delete mode 100644 docs/build/html/struct_bitwise_or.html delete mode 100644 docs/build/html/struct_bitwise_xor-members.html delete mode 100644 docs/build/html/struct_bitwise_xor.html delete mode 100644 docs/build/html/struct_block_merge_sort-members.html delete mode 100644 docs/build/html/struct_block_merge_sort.html delete mode 100644 docs/build/html/struct_ceil-members.html delete mode 100644 docs/build/html/struct_ceil.html delete mode 100644 docs/build/html/struct_conjugate-members.html delete mode 100644 docs/build/html/struct_conjugate.html delete mode 100644 docs/build/html/struct_cos-members.html delete mode 100644 docs/build/html/struct_cos.html delete mode 100644 docs/build/html/struct_cosh-members.html delete mode 100644 docs/build/html/struct_cosh.html delete mode 100644 docs/build/html/struct_cum_max-members.html delete mode 100644 docs/build/html/struct_cum_max.html delete mode 100644 docs/build/html/struct_cum_min-members.html delete mode 100644 docs/build/html/struct_cum_min.html delete mode 100644 docs/build/html/struct_cum_prod-members.html delete mode 100644 docs/build/html/struct_cum_prod.html delete mode 100644 docs/build/html/struct_cum_prod_3_01bool_01_4-members.html delete mode 100644 docs/build/html/struct_cum_prod_3_01bool_01_4.html delete mode 100644 docs/build/html/struct_cum_sum-members.html delete mode 100644 docs/build/html/struct_cum_sum.html delete mode 100644 docs/build/html/struct_div_mod-members.html delete mode 100644 docs/build/html/struct_div_mod.html delete mode 100644 docs/build/html/struct_divide-members.html delete mode 100644 docs/build/html/struct_divide.html delete mode 100644 docs/build/html/struct_equal-members.html delete mode 100644 docs/build/html/struct_equal.html delete mode 100644 docs/build/html/struct_erf-members.html delete mode 100644 docs/build/html/struct_erf.html delete mode 100644 docs/build/html/struct_erf_inv-members.html delete mode 100644 docs/build/html/struct_erf_inv.html delete mode 100644 docs/build/html/struct_exp-members.html delete mode 100644 docs/build/html/struct_exp.html delete mode 100644 docs/build/html/struct_expm1-members.html delete mode 100644 docs/build/html/struct_expm1.html delete mode 100644 docs/build/html/struct_floor-members.html delete mode 100644 docs/build/html/struct_floor.html delete mode 100644 docs/build/html/struct_floor_divide-members.html delete mode 100644 docs/build/html/struct_floor_divide.html delete mode 100644 docs/build/html/struct_g_e_m_v_kernel-members.html delete mode 100644 docs/build/html/struct_g_e_m_v_kernel.html delete mode 100644 docs/build/html/struct_g_e_m_v_t_kernel-members.html delete mode 100644 docs/build/html/struct_g_e_m_v_t_kernel.html delete mode 100644 docs/build/html/struct_greater-members.html delete mode 100644 docs/build/html/struct_greater.html delete mode 100644 docs/build/html/struct_greater_equal-members.html delete mode 100644 docs/build/html/struct_greater_equal.html delete mode 100644 docs/build/html/struct_indices-members.html delete mode 100644 docs/build/html/struct_indices.html delete mode 100644 docs/build/html/struct_kernel_merge_sort-members.html delete mode 100644 docs/build/html/struct_kernel_merge_sort.html delete mode 100644 docs/build/html/struct_kernel_multi_block_merge_sort-members.html delete mode 100644 docs/build/html/struct_kernel_multi_block_merge_sort.html delete mode 100644 docs/build/html/struct_left_shift-members.html delete mode 100644 docs/build/html/struct_left_shift.html delete mode 100644 docs/build/html/struct_less-members.html delete mode 100644 docs/build/html/struct_less.html delete mode 100644 docs/build/html/struct_less_equal-members.html delete mode 100644 docs/build/html/struct_less_equal.html delete mode 100644 docs/build/html/struct_less_than-members.html delete mode 100644 docs/build/html/struct_less_than.html delete mode 100644 docs/build/html/struct_limits-members.html delete mode 100644 docs/build/html/struct_limits.html delete mode 100644 docs/build/html/struct_limits_3_01bfloat16__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01bfloat16__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01bool_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01bool_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01complex64__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01complex64__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01float_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01float_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01half_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01half_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01int16__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01int16__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01int32__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01int32__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01int64__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01int64__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01int8__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01int8__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01uint16__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01uint16__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01uint32__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01uint32__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01uint64__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01uint64__t_01_4.html delete mode 100644 docs/build/html/struct_limits_3_01uint8__t_01_4-members.html delete mode 100644 docs/build/html/struct_limits_3_01uint8__t_01_4.html delete mode 100644 docs/build/html/struct_log-members.html delete mode 100644 docs/build/html/struct_log.html delete mode 100644 docs/build/html/struct_log10-members.html delete mode 100644 docs/build/html/struct_log10.html delete mode 100644 docs/build/html/struct_log1p-members.html delete mode 100644 docs/build/html/struct_log1p.html delete mode 100644 docs/build/html/struct_log2-members.html delete mode 100644 docs/build/html/struct_log2.html delete mode 100644 docs/build/html/struct_log_add_exp-members.html delete mode 100644 docs/build/html/struct_log_add_exp.html delete mode 100644 docs/build/html/struct_logical_and-members.html delete mode 100644 docs/build/html/struct_logical_and.html delete mode 100644 docs/build/html/struct_logical_not-members.html delete mode 100644 docs/build/html/struct_logical_not.html delete mode 100644 docs/build/html/struct_logical_or-members.html delete mode 100644 docs/build/html/struct_logical_or.html delete mode 100644 docs/build/html/struct_m_l_x_conv_params-members.html delete mode 100644 docs/build/html/struct_m_l_x_conv_params.html delete mode 100644 docs/build/html/struct_m_l_x_fast_attention_params-members.html delete mode 100644 docs/build/html/struct_m_l_x_fast_attention_params.html delete mode 100644 docs/build/html/struct_m_l_x_scaled_dot_product_attention_params-members.html delete mode 100644 docs/build/html/struct_m_l_x_scaled_dot_product_attention_params.html delete mode 100644 docs/build/html/struct_max-members.html delete mode 100644 docs/build/html/struct_max.html delete mode 100644 docs/build/html/struct_maximum-members.html delete mode 100644 docs/build/html/struct_maximum.html delete mode 100644 docs/build/html/struct_min.html delete mode 100644 docs/build/html/struct_minimum-members.html delete mode 100644 docs/build/html/struct_minimum.html delete mode 100644 docs/build/html/struct_multiply-members.html delete mode 100644 docs/build/html/struct_multiply.html delete mode 100644 docs/build/html/struct_na_n_equal-members.html delete mode 100644 docs/build/html/struct_na_n_equal.html delete mode 100644 docs/build/html/struct_negative-members.html delete mode 100644 docs/build/html/struct_negative.html delete mode 100644 docs/build/html/struct_none-members.html delete mode 100644 docs/build/html/struct_none.html delete mode 100644 docs/build/html/struct_not_equal-members.html delete mode 100644 docs/build/html/struct_not_equal.html delete mode 100644 docs/build/html/struct_or.html delete mode 100644 docs/build/html/struct_power-members.html delete mode 100644 docs/build/html/struct_power.html delete mode 100644 docs/build/html/struct_prod.html delete mode 100644 docs/build/html/struct_quantized_block_loader-members.html delete mode 100644 docs/build/html/struct_quantized_block_loader.html delete mode 100644 docs/build/html/struct_read_writer-members.html delete mode 100644 docs/build/html/struct_read_writer.html delete mode 100644 docs/build/html/struct_remainder-members.html delete mode 100644 docs/build/html/struct_remainder.html delete mode 100644 docs/build/html/struct_right_shift-members.html delete mode 100644 docs/build/html/struct_right_shift.html delete mode 100644 docs/build/html/struct_round-members.html delete mode 100644 docs/build/html/struct_round.html delete mode 100644 docs/build/html/struct_rsqrt-members.html delete mode 100644 docs/build/html/struct_rsqrt.html delete mode 100644 docs/build/html/struct_scale_op-members.html delete mode 100644 docs/build/html/struct_scale_op.html delete mode 100644 docs/build/html/struct_select-members.html delete mode 100644 docs/build/html/struct_select.html delete mode 100644 docs/build/html/struct_sigmoid-members.html delete mode 100644 docs/build/html/struct_sigmoid.html delete mode 100644 docs/build/html/struct_sign-members.html delete mode 100644 docs/build/html/struct_sign.html delete mode 100644 docs/build/html/struct_sin-members.html delete mode 100644 docs/build/html/struct_sin.html delete mode 100644 docs/build/html/struct_sinh-members.html delete mode 100644 docs/build/html/struct_sinh.html delete mode 100644 docs/build/html/struct_sqrt-members.html delete mode 100644 docs/build/html/struct_sqrt.html delete mode 100644 docs/build/html/struct_square-members.html delete mode 100644 docs/build/html/struct_square.html delete mode 100644 docs/build/html/struct_subtract-members.html delete mode 100644 docs/build/html/struct_subtract.html delete mode 100644 docs/build/html/struct_sum.html delete mode 100644 docs/build/html/struct_tan-members.html delete mode 100644 docs/build/html/struct_tan.html delete mode 100644 docs/build/html/struct_tanh-members.html delete mode 100644 docs/build/html/struct_tanh.html delete mode 100644 docs/build/html/struct_thread_sort-members.html delete mode 100644 docs/build/html/struct_thread_sort.html delete mode 100644 docs/build/html/structcomplex64__t-members.html delete mode 100644 docs/build/html/structcomplex64__t.html delete mode 100644 docs/build/html/structlooped__elem__to__loc-members.html delete mode 100644 docs/build/html/structlooped__elem__to__loc.html delete mode 100644 docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4-members.html delete mode 100644 docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html delete mode 100644 docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4-members.html delete mode 100644 docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html delete mode 100644 docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4-members.html delete mode 100644 docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html delete mode 100644 docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.png delete mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___float16-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___float16.html rename docs/build/html/{structmlx_1_1core_1_1_stream-members.html => structmlx_1_1core_1_1_contiguous_iterator-members.html} (72%) rename docs/build/html/{structmlx_1_1core_1_1_default_contiguous_reduce.html => structmlx_1_1core_1_1_contiguous_iterator.html} (61%) delete mode 100644 docs/build/html/structmlx_1_1core_1_1_default_contiguous_reduce-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_default_strided_reduce-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_default_strided_reduce.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_device-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_device.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_dtype-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_dtype.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_node_namer-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_node_namer.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_print_formatter-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_print_formatter.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_reduction_plan-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_reduction_plan.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_stream.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_stream_context-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_stream_context.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_type_to_dtype-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1_type_to_dtype.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_data-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_data.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_flags-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_flags.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1complex128__t-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1complex128__t.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1complex128__t.png delete mode 100644 docs/build/html/structmlx_1_1core_1_1complex64__t-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1complex64__t.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1complex64__t.png delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_abs-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_abs.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_add-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_add.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cos-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cos.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_divide-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_divide.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_equal-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_equal.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_exp-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_exp.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_floor-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_floor.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log10-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log10.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log2-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log2.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_negative-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_negative.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_power-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_power.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_round-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_round.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_select-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_select.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sign-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sign.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sin-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sin.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_square-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_square.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tan-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tan.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1distributed_1_1_group-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1distributed_1_1_group.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread-members.html delete mode 100644 docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_accum_helper-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_accum_helper.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_m_m_a-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_m_m_a.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_swizzle-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_swizzle.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_loop_alignment.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_add-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_add.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_axpby-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_axpby.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_none-members.html delete mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_none.html delete mode 100644 docs/build/html/structmlx__atomic-members.html delete mode 100644 docs/build/html/structmlx__atomic.html delete mode 100644 docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4-members.html delete mode 100644 docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_v_t_y_p_e.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1cmplx-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1cmplx.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1util-members.html delete mode 100644 docs/build/html/structpocketfft_1_1detail_1_1util.html delete mode 100644 docs/build/html/sync_off.png delete mode 100644 docs/build/html/sync_on.png delete mode 100644 docs/build/html/tab_a.png delete mode 100644 docs/build/html/tab_ad.png delete mode 100644 docs/build/html/tab_b.png delete mode 100644 docs/build/html/tab_bd.png delete mode 100644 docs/build/html/tab_h.png delete mode 100644 docs/build/html/tab_hd.png delete mode 100644 docs/build/html/tab_s.png delete mode 100644 docs/build/html/tab_sd.png delete mode 100644 docs/build/html/tabs.css delete mode 100644 docs/build/html/ternary__ops_8h.html delete mode 100644 docs/build/html/ternary__ops_8h_source.html delete mode 100644 docs/build/html/threadpool_8h.html delete mode 100644 docs/build/html/threadpool_8h_source.html delete mode 100644 docs/build/html/threefry_8h.html delete mode 100644 docs/build/html/threefry_8h_source.html delete mode 100644 docs/build/html/topics.html delete mode 100644 docs/build/html/transforms_8h.html delete mode 100644 docs/build/html/transforms_8h_source.html delete mode 100644 docs/build/html/transforms__impl_8h.html delete mode 100644 docs/build/html/transforms__impl_8h_source.html delete mode 100644 docs/build/html/types_2bf16_8h.html delete mode 100644 docs/build/html/types_2bf16_8h_source.html delete mode 100644 docs/build/html/types_2complex_8h.html delete mode 100644 docs/build/html/types_2complex_8h_source.html delete mode 100644 docs/build/html/unary__ops_8h.html delete mode 100644 docs/build/html/unary__ops_8h_source.html delete mode 100644 docs/build/html/unionbool4__or__uint-members.html delete mode 100644 docs/build/html/unionbool4__or__uint.html delete mode 100644 docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float-members.html delete mode 100644 docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float.html delete mode 100644 docs/build/html/utils_8h.html delete mode 100644 docs/build/html/utils_8h_source.html diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index ebb1ce0e..bfb5ce6e 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: f082975f44ec5c3f7984889467f4528a +config: 85eddbee44d4b85d5bc17c721e79c928 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.linalg.cross.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.linalg.cross.rst new file mode 100644 index 00000000..08f9a552 --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.linalg.cross.rst @@ -0,0 +1,6 @@ +mlx.core.linalg.cross +===================== + +.. currentmodule:: mlx.core.linalg + +.. autofunction:: cross \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.put_along_axis.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.put_along_axis.rst new file mode 100644 index 00000000..80691221 --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.put_along_axis.rst @@ -0,0 +1,6 @@ +mlx.core.put\_along\_axis +========================= + +.. currentmodule:: mlx.core + +.. autofunction:: put_along_axis \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.Stream.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.stream.rst similarity index 100% rename from docs/build/html/_sources/python/_autosummary/mlx.core.Stream.rst rename to docs/build/html/_sources/python/_autosummary/mlx.core.stream.rst diff --git a/docs/build/html/_sources/python/linalg.rst b/docs/build/html/_sources/python/linalg.rst index e7fd5ece..227711c2 100644 --- a/docs/build/html/_sources/python/linalg.rst +++ b/docs/build/html/_sources/python/linalg.rst @@ -13,5 +13,6 @@ Linear Algebra norm cholesky cholesky_inv + cross qr svd diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.CELU.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.CELU.rst new file mode 100644 index 00000000..00b03872 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.CELU.rst @@ -0,0 +1,16 @@ +mlx.nn.CELU +=========== + +.. currentmodule:: mlx.nn + +.. autoclass:: CELU + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ELU.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ELU.rst new file mode 100644 index 00000000..1f11f7ef --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ELU.rst @@ -0,0 +1,16 @@ +mlx.nn.ELU +========== + +.. currentmodule:: mlx.nn + +.. autoclass:: ELU + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSigmoid.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSigmoid.rst new file mode 100644 index 00000000..baedb0df --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSigmoid.rst @@ -0,0 +1,16 @@ +mlx.nn.LogSigmoid +================= + +.. currentmodule:: mlx.nn + +.. autoclass:: LogSigmoid + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSoftmax.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSoftmax.rst new file mode 100644 index 00000000..298a10bf --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LogSoftmax.rst @@ -0,0 +1,16 @@ +mlx.nn.LogSoftmax +================= + +.. currentmodule:: mlx.nn + +.. autoclass:: LogSoftmax + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Sigmoid.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Sigmoid.rst new file mode 100644 index 00000000..2cfb4eba --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Sigmoid.rst @@ -0,0 +1,16 @@ +mlx.nn.Sigmoid +============== + +.. currentmodule:: mlx.nn + +.. autoclass:: Sigmoid + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.celu.rst b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.celu.rst new file mode 100644 index 00000000..c4869617 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.celu.rst @@ -0,0 +1,11 @@ +mlx.nn.celu +=========== + +.. currentmodule:: mlx.nn + +.. autoclass:: celu + + + + + diff --git a/docs/build/html/_sources/python/nn/functions.rst b/docs/build/html/_sources/python/nn/functions.rst index f1077776..9b6cd9f6 100644 --- a/docs/build/html/_sources/python/nn/functions.rst +++ b/docs/build/html/_sources/python/nn/functions.rst @@ -13,6 +13,7 @@ simple functions. :template: nn-module-template.rst elu + celu gelu gelu_approx gelu_fast_approx diff --git a/docs/build/html/_sources/python/nn/layers.rst b/docs/build/html/_sources/python/nn/layers.rst index 77105ea3..fc24d410 100644 --- a/docs/build/html/_sources/python/nn/layers.rst +++ b/docs/build/html/_sources/python/nn/layers.rst @@ -13,6 +13,7 @@ Layers AvgPool1d AvgPool2d BatchNorm + CELU Conv1d Conv2d Conv3d @@ -23,6 +24,7 @@ Layers Dropout2d Dropout3d Embedding + ELU GELU GLU GroupNorm @@ -34,6 +36,8 @@ Layers LayerNorm LeakyReLU Linear + LogSigmoid + LogSoftmax LSTM MaxPool1d MaxPool2d @@ -49,6 +53,7 @@ Layers RoPE SELU Sequential + Sigmoid SiLU SinusoidalPositionalEncoding Softmin diff --git a/docs/build/html/_sources/python/ops.rst b/docs/build/html/_sources/python/ops.rst index 65ed3006..e0d70ea1 100644 --- a/docs/build/html/_sources/python/ops.rst +++ b/docs/build/html/_sources/python/ops.rst @@ -121,6 +121,7 @@ Operations pad power prod + put_along_axis quantize quantized_matmul radians diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index 03a7b8a7..ca5dbe08 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.17.3', + VERSION: '0.18.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/build/html/allocator_8h.html b/docs/build/html/allocator_8h.html deleted file mode 100644 index 8e3b1e76..00000000 --- a/docs/build/html/allocator_8h.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -MLX: mlx/allocator.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
allocator.h File Reference
-
-
-
#include <cstdlib>
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

class  mlx::core::allocator::Buffer
 
class  mlx::core::allocator::Allocator
 
class  mlx::core::allocator::CommonAllocator
 
- - - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
namespace  mlx::core::allocator
 
- - - - - - - - - -

-Functions

Buffer mlx::core::allocator::malloc (size_t size)
 
void mlx::core::allocator::free (Buffer buffer)
 
Buffer mlx::core::allocator::malloc_or_wait (size_t size)
 
Allocatormlx::core::allocator::allocator ()
 
-
- - - - diff --git a/docs/build/html/allocator_8h_source.html b/docs/build/html/allocator_8h_source.html deleted file mode 100644 index fab57357..00000000 --- a/docs/build/html/allocator_8h_source.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - -MLX: mlx/allocator.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
allocator.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <cstdlib>
-
6
-
- -
8
-
9// Simple wrapper around buffer pointers
-
10// WARNING: Only Buffer objects constructed from and those that wrap
-
11// raw pointers from mlx::allocator are supported.
-
-
12class Buffer {
-
13 private:
-
14 void* ptr_;
-
15
-
16 public:
-
17 Buffer(void* ptr) : ptr_(ptr) {};
-
18
-
19 // Get the raw data pointer from the buffer
-
20 void* raw_ptr();
-
21
-
22 // Get the buffer pointer from the buffer
-
-
23 const void* ptr() const {
-
24 return ptr_;
-
25 };
-
-
-
26 void* ptr() {
-
27 return ptr_;
-
28 };
-
-
29};
-
-
30
-
31Buffer malloc(size_t size);
-
32
-
33void free(Buffer buffer);
-
34
-
35// Wait for running tasks to finish and free up memory
-
36// if allocation fails
- -
38
-
-
39class Allocator {
-
41 public:
-
42 virtual Buffer malloc(size_t size, bool allow_swap = false) = 0;
-
43 virtual void free(Buffer buffer) = 0;
-
44 virtual size_t size(Buffer buffer) const = 0;
-
45
-
46 Allocator() = default;
-
47 Allocator(const Allocator& other) = delete;
-
48 Allocator(Allocator&& other) = delete;
-
49 Allocator& operator=(const Allocator& other) = delete;
-
50 Allocator& operator=(Allocator&& other) = delete;
-
51 virtual ~Allocator() = default;
-
52};
-
-
53
- -
55
-
-
56class CommonAllocator : public Allocator {
-
58 public:
-
59 virtual Buffer malloc(size_t size, bool allow_swap = false) override;
-
60 virtual void free(Buffer buffer) override;
-
61 virtual size_t size(Buffer buffer) const override;
-
62
-
63 private:
-
64 CommonAllocator() = default;
- -
66};
-
-
67
-
68} // namespace mlx::core::allocator
-
-
Definition allocator.h:39
-
Allocator & operator=(const Allocator &other)=delete
-
virtual size_t size(Buffer buffer) const =0
-
Allocator & operator=(Allocator &&other)=delete
- -
Allocator(Allocator &&other)=delete
- -
virtual Buffer malloc(size_t size, bool allow_swap=false)=0
Abstract base class for a memory allocator.
-
Allocator(const Allocator &other)=delete
-
virtual void free(Buffer buffer)=0
-
Definition allocator.h:12
- -
const void * ptr() const
Definition allocator.h:23
-
Buffer(void *ptr)
Definition allocator.h:17
-
void * ptr()
Definition allocator.h:26
-
Definition allocator.h:56
-
virtual Buffer malloc(size_t size, bool allow_swap=false) override
A general CPU allocator.
-
virtual void free(Buffer buffer) override
-
virtual size_t size(Buffer buffer) const override
- -
Definition allocator.h:7
-
Buffer malloc(size_t size)
-
void free(Buffer buffer)
-
Buffer malloc_or_wait(size_t size)
-
Allocator & allocator()
-
- - - - diff --git a/docs/build/html/annotated.html b/docs/build/html/annotated.html deleted file mode 100644 index 383e2b07..00000000 --- a/docs/build/html/annotated.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - -MLX: Class List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 12345]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Nmetal
 Nmlx
 Npocketfft
 C_MLX_BFloat16
 C_NoMask
 CAbs
 CAdd
 CAnd
 CArcCos
 CArcCosh
 CArcSin
 CArcSinh
 CArcTan
 CArcTan2
 CArcTanh
 CBitwiseAnd
 CBitwiseOr
 CBitwiseXor
 CBlockMergeSort
 Cbool4_or_uint
 CCeil
 Ccomplex64_t
 CConjugate
 CCos
 CCosh
 CCumMax
 CCumMin
 CCumProd
 CCumProd< bool >
 CCumSum
 CDivide
 CDivMod
 CEqual
 CErf
 CErfInv
 CExp
 CExpm1
 CFloor
 CFloorDivide
 CGEMVKernel
 CGEMVTKernelVector matrix multiplication
 CGreater
 CGreaterEqual
 CIndices
 CKernelMergeSort
 CKernelMultiBlockMergeSort
 CLeftShift
 CLess
 CLessEqual
 CLessThan
 CLimits
 CLimits< bfloat16_t >
 CLimits< bool >
 CLimits< complex64_t >
 CLimits< float >
 CLimits< half >
 CLimits< int16_t >
 CLimits< int32_t >
 CLimits< int64_t >
 CLimits< int8_t >
 CLimits< uint16_t >
 CLimits< uint32_t >
 CLimits< uint64_t >
 CLimits< uint8_t >
 CLog
 CLog10
 CLog1p
 CLog2
 CLogAddExp
 CLogicalAnd
 CLogicalNot
 CLogicalOr
 Clooped_elem_to_loc
 Clooped_elem_to_loc< 0, offset_t >
 Clooped_elem_to_loc< 1, offset_t >
 CMax
 CMaximum
 CMin
 CMinimum
 Cmlx_atomic
 Cmlx_atomic< T, enable_if_t< is_metal_atomic< T > > >
 CMLXConvParams
 CMLXFastAttentionParams
 CMLXScaledDotProductAttentionParams
 CMultiply
 CNaNEqual
 CNegative
 CNone
 CNotEqual
 COr
 CPower
 CProd
 CQuantizedBlockLoader
 CReadWriter
 CRemainder
 CRightShift
 CRound
 CRsqrt
 CScaleOp
 CSelect
 CSigmoid
 CSign
 CSin
 CSinh
 CSqrt
 CSquare
 CSubtract
 CSum
 CTan
 CTanh
 CThreadPool
 CThreadSort
-
-
- - - - diff --git a/docs/build/html/array_8h.html b/docs/build/html/array_8h.html deleted file mode 100644 index bdfcf22d..00000000 --- a/docs/build/html/array_8h.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -MLX: mlx/array.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
array.h File Reference
-
-
-
#include <algorithm>
-#include <cstdint>
-#include <functional>
-#include <memory>
-#include <vector>
-#include "mlx/allocator.h"
-#include "mlx/dtype.h"
-#include "mlx/event.h"
-
-

Go to the source code of this file.

- - - - - - - - - - -

-Classes

class  mlx::core::array
 
struct  mlx::core::array::ArrayIterator
 
struct  mlx::core::array::Data
 
struct  mlx::core::array::Flags
 
- - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - - - - -

-Typedefs

using mlx::core::deleter_t = std::function<void(allocator::Buffer)>
 
template<typename... T>
using mlx::core::enable_for_arrays_t = typename std::enable_if_t<is_arrays_v<T...>>
 
- - - - - - - -

-Variables

template<typename T >
constexpr bool mlx::core::is_array_v
 
template<typename... T>
constexpr bool mlx::core::is_arrays_v = (is_array_v<T> && ...)
 
-
- - - - diff --git a/docs/build/html/array_8h_source.html b/docs/build/html/array_8h_source.html deleted file mode 100644 index 85662e7c..00000000 --- a/docs/build/html/array_8h_source.html +++ /dev/null @@ -1,862 +0,0 @@ - - - - - - - -MLX: mlx/array.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
array.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2#pragma once
-
3
-
4#include <algorithm>
-
5#include <cstdint>
-
6#include <functional>
-
7#include <memory>
-
8#include <vector>
-
9
-
10#include "mlx/allocator.h"
-
11#include "mlx/dtype.h"
-
12#include "mlx/event.h"
-
13
-
14namespace mlx::core {
-
15
-
16// Forward declaration
-
17class Primitive;
-
18using deleter_t = std::function<void(allocator::Buffer)>;
-
19
-
-
20class array {
-
21 /* An array is really a node in a graph. It contains a shared ArrayDesc
-
22 * object */
-
23
-
24 public:
-
26 template <typename T>
-
27 explicit array(T val, Dtype dtype = TypeToDtype<T>());
-
28
-
29 /* Special case since std::complex can't be implicitly converted to other
-
30 * types. */
-
31 explicit array(const std::complex<float>& val, Dtype dtype = complex64);
-
32
-
33 template <typename It>
-
34 array(
-
35 It data,
-
36 std::vector<int> shape,
-
37 Dtype dtype =
-
38 TypeToDtype<typename std::iterator_traits<It>::value_type>());
-
39
-
40 template <typename T>
-
41 array(std::initializer_list<T> data, Dtype dtype = TypeToDtype<T>());
-
42
-
43 /* Special case so empty lists default to float32. */
-
44 array(std::initializer_list<float> data);
-
45
-
46 /* Special case so array({}, type) is an empty array. */
-
47 array(std::initializer_list<int> data, Dtype dtype);
-
48
-
49 template <typename T>
-
50 array(
-
51 std::initializer_list<T> data,
-
52 std::vector<int> shape,
- -
54
-
55 /* Build an array from a buffer */
- - -
58 std::vector<int> shape,
- -
60 deleter_t deleter = allocator::free);
-
61
-
63 array& operator=(const array& other) && = delete;
-
64 array& operator=(array&& other) && = delete;
-
65
-
67 array& operator=(array&& other) & = default;
-
68 array(const array& other) = default;
-
69 array(array&& other) = default;
-
70
-
-
71 array& operator=(const array& other) & {
-
72 if (this->id() != other.id()) {
-
73 this->array_desc_ = other.array_desc_;
-
74 }
-
75 return *this;
-
76 }
-
-
77
-
-
79 size_t itemsize() const {
-
80 return size_of(dtype());
-
81 }
-
-
82
-
-
84 size_t size() const {
-
85 return array_desc_->size;
-
86 }
-
-
87
-
-
89 size_t nbytes() const {
-
90 return size() * itemsize();
-
91 }
-
-
92
-
-
94 size_t ndim() const {
-
95 return array_desc_->shape.size();
-
96 }
-
-
97
-
-
99 const std::vector<int>& shape() const {
-
100 return array_desc_->shape;
-
101 }
-
-
102
-
-
108 int shape(int dim) const {
-
109 return shape().at(dim < 0 ? dim + ndim() : dim);
-
110 }
-
-
111
-
-
113 const std::vector<size_t>& strides() const {
-
114 return array_desc_->strides;
-
115 }
-
-
116
-
-
122 size_t strides(int dim) const {
-
123 return strides().at(dim < 0 ? dim + ndim() : dim);
-
124 }
-
-
125
-
-
127 Dtype dtype() const {
-
128 return array_desc_->dtype;
-
129 }
-
-
130
-
132 void eval();
-
133
-
135 template <typename T>
-
136 T item();
-
137
-
138 template <typename T>
-
139 T item() const;
-
140
-
- -
142 using iterator_category = std::random_access_iterator_tag;
-
143 using difference_type = size_t;
-
144 using value_type = const array;
- -
146
-
147 explicit ArrayIterator(const array& arr, int idx = 0);
-
148
- -
150
-
- -
152 idx += diff;
-
153 return *this;
-
154 }
-
-
155
-
- -
157 idx++;
-
158 return *this;
-
159 }
-
-
160
-
-
161 friend bool operator==(const ArrayIterator& a, const ArrayIterator& b) {
-
162 return a.arr.id() == b.arr.id() && a.idx == b.idx;
-
163 }
-
-
-
164 friend bool operator!=(const ArrayIterator& a, const ArrayIterator& b) {
-
165 return !(a == b);
-
166 }
-
-
167
-
168 private:
-
169 const array& arr;
-
170 int idx;
-
171 };
-
-
172
-
- -
174 return ArrayIterator(*this);
-
175 }
-
-
- -
177 return ArrayIterator(*this, shape(0));
-
178 }
-
-
179
- -
187 std::vector<int> shape,
-
188 Dtype dtype,
-
189 std::shared_ptr<Primitive> primitive,
-
190 std::vector<array> inputs);
-
191
-
192 static std::vector<array> make_arrays(
-
193 std::vector<std::vector<int>> shapes,
-
194 const std::vector<Dtype>& dtypes,
-
195 const std::shared_ptr<Primitive>& primitive,
-
196 const std::vector<array>& inputs);
-
197
-
-
199 std::uintptr_t id() const {
-
200 return reinterpret_cast<std::uintptr_t>(array_desc_.get());
-
201 }
-
-
202
-
-
204 std::uintptr_t primitive_id() const {
-
205 return reinterpret_cast<std::uintptr_t>(array_desc_->primitive.get());
-
206 }
-
-
207
-
-
208 struct Data {
- - - -
213 // Not copyable
-
214 Data(const Data& d) = delete;
-
215 Data& operator=(const Data& d) = delete;
-
- -
217 d(buffer);
-
218 }
-
-
219 };
-
-
220
-
-
221 struct Flags {
-
222 // True iff there are no gaps in the underlying data. Each item
-
223 // in the underlying data buffer belongs to at least one index.
-
224 //
-
225 // True iff:
-
226 // prod(shape[i] for i in range(ndim) if strides[i] > 0) == data_size()
-
227 bool contiguous : 1;
-
228
-
229 // True iff:
-
230 // strides[-1] == 1 and
-
231 // all(strides[i] == (shape[i+1]*strides[i+1]) or shape[i] == 1 for i in
-
232 // range(ndim - 1))
- -
234
-
235 // True iff:
-
236 // strides[0] == 1 and
-
237 // all(strides[i] == (shape[i-1]*strides[i-1]) or shape[i] == 1 for i in
-
238 // range(1, ndim))
- -
240 };
-
-
241
-
- -
244 return *(array_desc_->primitive);
-
245 }
-
-
246
-
-
248 std::shared_ptr<Primitive>& primitive_ptr() const {
-
249 return array_desc_->primitive;
-
250 }
-
-
251
-
-
253 bool has_primitive() const {
-
254 return array_desc_->primitive != nullptr;
-
255 }
-
-
256
-
-
258 const std::vector<array>& inputs() const {
-
259 return array_desc_->inputs;
-
260 }
-
-
261
-
-
262 std::vector<array>& inputs() {
-
263 return array_desc_->inputs;
-
264 }
-
-
265
-
-
267 bool is_donatable() const {
-
268 return array_desc_.use_count() == 1 && (array_desc_->data.use_count() == 1);
-
269 }
-
-
270
-
-
272 const std::vector<array>& siblings() const {
-
273 return array_desc_->siblings;
-
274 }
-
-
275
-
-
277 std::vector<array>& siblings() {
-
278 return array_desc_->siblings;
-
279 }
-
-
280
-
-
281 void set_siblings(std::vector<array> siblings, uint16_t position) {
-
282 array_desc_->siblings = std::move(siblings);
-
283 array_desc_->position = position;
-
284 }
-
-
285
-
-
288 std::vector<array> outputs() const {
-
289 auto idx = array_desc_->position;
-
290 std::vector<array> outputs;
-
291 outputs.reserve(siblings().size() + 1);
-
292 outputs.insert(outputs.end(), siblings().begin(), siblings().begin() + idx);
-
293 outputs.push_back(*this);
-
294 outputs.insert(outputs.end(), siblings().begin() + idx, siblings().end());
-
295 return outputs;
-
296 }
-
-
297
-
299 void detach();
-
300
-
-
302 const Flags& flags() const {
-
303 return array_desc_->flags;
-
304 }
-
-
305
-
-
316 size_t data_size() const {
-
317 return array_desc_->data_size;
-
318 }
-
-
319
-
- -
321 return array_desc_->data->buffer;
-
322 }
-
-
-
323 const allocator::Buffer& buffer() const {
-
324 return array_desc_->data->buffer;
-
325 }
-
-
326
-
-
327 size_t buffer_size() const {
-
328 return allocator::allocator().size(buffer());
-
329 }
-
-
330
-
331 // Return a copy of the shared pointer
-
332 // to the array::Data struct
-
-
333 std::shared_ptr<Data> data_shared_ptr() const {
-
334 return array_desc_->data;
-
335 }
-
-
336 // Return a raw pointer to the arrays data
-
337 template <typename T>
-
-
338 T* data() {
-
339 return static_cast<T*>(array_desc_->data_ptr);
-
340 }
-
-
341
-
342 template <typename T>
-
-
343 const T* data() const {
-
344 return static_cast<T*>(array_desc_->data_ptr);
-
345 }
-
-
346
- -
348
-
-
349 bool is_available() const {
-
350 return status() == Status::available;
-
351 }
-
-
352
-
-
353 Status status() const {
-
354 return array_desc_->status;
-
355 }
-
-
356
-
-
357 void set_status(Status s) const {
-
358 array_desc_->status = s;
-
359 }
-
-
360
-
361 // Get the array's shared event
-
-
362 Event& event() const {
-
363 return array_desc_->event;
-
364 }
-
-
365
-
366 // Attach an event to a not yet evaluated array
-
-
367 void attach_event(Event e) const {
-
368 array_desc_->event = std::move(e);
-
369 }
-
-
370
-
371 // Mark the array as a tracer array (true) or not.
-
- -
373 array_desc_->is_tracer = is_tracer;
-
374 }
-
-
375 // Check if the array is a tracer array
-
376 bool is_tracer() const;
-
377
- -
379
- - -
382 size_t data_size,
-
383 std::vector<size_t> strides,
-
384 Flags flags,
- -
386
- -
388 const array& other,
-
389 const std::vector<size_t>& strides,
-
390 Flags flags,
-
391 size_t data_size,
-
392 size_t offset = 0);
-
393
-
394 void copy_shared_buffer(const array& other);
-
395
- -
397 array other,
-
398 const std::vector<size_t>& strides,
-
399 Flags flags,
-
400 size_t data_size,
-
401 size_t offset = 0);
-
402
- -
404
-
-
405 void overwrite_descriptor(const array& other) {
-
406 array_desc_ = other.array_desc_;
-
407 }
-
-
408
- -
410
-
411 private:
-
412 // Initialize the arrays data
-
413 template <typename It>
-
414 void init(const It src);
-
415
-
416 struct ArrayDesc {
-
417 std::vector<int> shape;
-
418 std::vector<size_t> strides;
-
419 size_t size;
-
420 Dtype dtype;
-
421 std::shared_ptr<Primitive> primitive;
-
422
-
423 Status status;
-
424
-
425 // An event on the array used for synchronization
-
426 Event event;
-
427
-
428 // Indicates an array is being used in a graph transform
-
429 // and should not be detached from the graph
-
430 bool is_tracer{false};
-
431
-
432 // This is a shared pointer so that *different* arrays
-
433 // can share the underlying data buffer.
-
434 std::shared_ptr<Data> data;
-
435
-
436 // Properly offset data pointer
-
437 void* data_ptr{nullptr};
-
438
-
439 // The size in elements of the data buffer the array accesses
-
440 size_t data_size;
-
441
-
442 // Contains useful meta data about the array
-
443 Flags flags;
-
444
-
445 std::vector<array> inputs;
-
446 // An array to keep track of the siblings from a multi-output
-
447 // primitive.
-
448 std::vector<array> siblings;
-
449 // The arrays position in the output list
-
450 uint32_t position{0};
-
451
-
452 explicit ArrayDesc(std::vector<int> shape, Dtype dtype);
-
453
-
454 explicit ArrayDesc(
-
455 std::vector<int> shape,
-
456 Dtype dtype,
-
457 std::shared_ptr<Primitive> primitive,
-
458 std::vector<array> inputs);
-
459
-
460 ~ArrayDesc();
-
461
-
462 private:
-
463 // Initialize size, strides, and other metadata
-
464 void init();
-
465 };
-
466
-
467 // The ArrayDesc contains the details of the materialized array including the
-
468 // shape, strides, the data type. It also includes
-
469 // the primitive which knows how to compute the array's data from its inputs
-
470 // and the list of array's inputs for the primitive.
-
471 std::shared_ptr<ArrayDesc> array_desc_;
-
472};
-
-
473
-
474template <typename T>
-
-
475array::array(T val, Dtype dtype /* = TypeToDtype<T>() */)
-
476 : array_desc_(std::make_shared<ArrayDesc>(std::vector<int>{}, dtype)) {
-
477 init(&val);
-
478}
-
-
479
-
480template <typename It>
-
- -
482 It data,
-
483 std::vector<int> shape,
-
484 Dtype dtype /* = TypeToDtype<typename std::iterator_traits<It>::value_type>() */) :
-
485 array_desc_(std::make_shared<ArrayDesc>(std::move(shape), dtype)) {
-
486 init(data);
-
487}
-
-
488
-
489template <typename T>
-
- -
491 std::initializer_list<T> data,
-
492 Dtype dtype /* = TypeToDtype<T>() */)
-
493 : array_desc_(std::make_shared<ArrayDesc>(
-
494 std::vector<int>{static_cast<int>(data.size())},
-
495 dtype)) {
-
496 init(data.begin());
-
497}
-
-
498
-
499template <typename T>
-
- -
501 std::initializer_list<T> data,
-
502 std::vector<int> shape,
-
503 Dtype dtype /* = TypeToDtype<T>() */)
-
504 : array_desc_(std::make_shared<ArrayDesc>(std::move(shape), dtype)) {
-
505 if (data.size() != size()) {
-
506 throw std::invalid_argument(
-
507 "Data size and provided shape mismatch in array construction.");
-
508 }
-
509 init(data.begin());
-
510}
-
-
511
-
512template <typename T>
-
- -
514 if (size() != 1) {
-
515 throw std::invalid_argument("item can only be called on arrays of size 1.");
-
516 }
-
517 eval();
-
518 return *data<T>();
-
519}
-
-
520
-
521template <typename T>
-
-
522T array::item() const {
-
523 if (size() != 1) {
-
524 throw std::invalid_argument("item can only be called on arrays of size 1.");
-
525 }
-
526 if (status() == Status::unscheduled) {
-
527 throw std::invalid_argument(
-
528 "item() const can only be called on evaled arrays");
-
529 }
-
530 const_cast<array*>(this)->eval();
-
531 return *data<T>();
-
532}
-
-
533
-
534template <typename It>
-
535void array::init(It src) {
- -
537 switch (dtype()) {
-
538 case bool_:
-
539 std::copy(src, src + size(), data<bool>());
-
540 break;
-
541 case uint8:
-
542 std::copy(src, src + size(), data<uint8_t>());
-
543 break;
-
544 case uint16:
-
545 std::copy(src, src + size(), data<uint16_t>());
-
546 break;
-
547 case uint32:
-
548 std::copy(src, src + size(), data<uint32_t>());
-
549 break;
-
550 case uint64:
-
551 std::copy(src, src + size(), data<uint64_t>());
-
552 break;
-
553 case int8:
-
554 std::copy(src, src + size(), data<int8_t>());
-
555 break;
-
556 case int16:
-
557 std::copy(src, src + size(), data<int16_t>());
-
558 break;
-
559 case int32:
-
560 std::copy(src, src + size(), data<int32_t>());
-
561 break;
-
562 case int64:
-
563 std::copy(src, src + size(), data<int64_t>());
-
564 break;
-
565 case float16:
-
566 std::copy(src, src + size(), data<float16_t>());
-
567 break;
-
568 case float32:
-
569 std::copy(src, src + size(), data<float>());
-
570 break;
-
571 case bfloat16:
-
572 std::copy(src, src + size(), data<bfloat16_t>());
-
573 break;
-
574 case complex64:
-
575 std::copy(src, src + size(), data<complex64_t>());
-
576 break;
-
577 }
-
578}
-
579
-
580/* Utilities for determining whether a template parameter is array. */
-
581template <typename T>
-
582inline constexpr bool is_array_v =
-
583 std::is_same_v<std::remove_cv_t<std::remove_reference_t<T>>, array>;
-
584
-
585template <typename... T>
-
586inline constexpr bool is_arrays_v = (is_array_v<T> && ...);
-
587
-
588template <typename... T>
-
589using enable_for_arrays_t = typename std::enable_if_t<is_arrays_v<T...>>;
-
590
-
591} // namespace mlx::core
- -
Definition event.h:11
-
Definition primitives.h:48
-
virtual size_t size(Buffer buffer) const =0
-
Definition allocator.h:12
-
Definition array.h:20
-
void attach_event(Event e) const
Definition array.h:367
-
const Flags & flags() const
Get the Flags bit-field.
Definition array.h:302
-
Event & event() const
Definition array.h:362
-
static std::vector< array > make_arrays(std::vector< std::vector< int > > shapes, const std::vector< Dtype > &dtypes, const std::shared_ptr< Primitive > &primitive, const std::vector< array > &inputs)
-
const std::vector< size_t > & strides() const
The strides of the array.
Definition array.h:113
-
Status
Definition array.h:347
-
@ available
Definition array.h:347
-
@ unscheduled
Definition array.h:347
-
@ scheduled
Definition array.h:347
-
void set_data(allocator::Buffer buffer, size_t data_size, std::vector< size_t > strides, Flags flags, deleter_t d=allocator::free)
-
void eval()
Evaluate the array.
-
void copy_shared_buffer(const array &other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)
-
const std::vector< array > & inputs() const
The array's inputs.
Definition array.h:258
-
array(const array &other)=default
-
std::vector< array > outputs() const
The outputs of the array's primitive (i.e.
Definition array.h:288
- -
size_t nbytes() const
The number of bytes in the array.
Definition array.h:89
-
void move_shared_buffer(array other)
-
array(std::initializer_list< float > data)
-
bool is_donatable() const
True indicates the arrays buffer is safe to reuse.
Definition array.h:267
-
const std::vector< int > & shape() const
The shape of the array as a vector of integers.
Definition array.h:99
-
std::shared_ptr< Primitive > & primitive_ptr() const
A shared pointer to the array's primitive.
Definition array.h:248
-
int shape(int dim) const
Get the size of the corresponding dimension.
Definition array.h:108
-
size_t ndim() const
The number of dimensions of the array.
Definition array.h:94
-
size_t size() const
The number of elements in the array.
Definition array.h:84
-
array(allocator::Buffer data, std::vector< int > shape, Dtype dtype, deleter_t deleter=allocator::free)
-
array & operator=(array &&other) &&=delete
-
array & operator=(const array &other) &
Definition array.h:71
-
ArrayIterator end() const
Definition array.h:176
-
array(std::initializer_list< int > data, Dtype dtype)
-
void set_data(allocator::Buffer buffer, deleter_t d=allocator::free)
-
const allocator::Buffer & buffer() const
Definition array.h:323
-
void set_status(Status s) const
Definition array.h:357
-
array(const std::complex< float > &val, Dtype dtype=complex64)
-
Status status() const
Definition array.h:353
-
std::vector< array > & siblings()
The array's siblings.
Definition array.h:277
-
T * data()
Definition array.h:338
-
array(T val, Dtype dtype=TypeToDtype< T >())
Construct a scalar array with zero dimensions.
Definition array.h:475
-
ArrayIterator begin() const
Definition array.h:173
-
Primitive & primitive() const
The array's primitive.
Definition array.h:243
-
void detach()
Detach the array from the graph.
-
array & operator=(const array &other) &&=delete
Assignment to rvalue does not compile.
-
void set_siblings(std::vector< array > siblings, uint16_t position)
Definition array.h:281
-
T item()
Get the value from a scalar array.
Definition array.h:513
-
size_t buffer_size() const
Definition array.h:327
-
size_t strides(int dim) const
Get the stride of the corresponding dimension.
Definition array.h:122
-
void copy_shared_buffer(const array &other)
-
void overwrite_descriptor(const array &other)
Definition array.h:405
-
const T * data() const
Definition array.h:343
-
bool has_primitive() const
Check if the array has an attached primitive or is a leaf node.
Definition array.h:253
-
allocator::Buffer & buffer()
Definition array.h:320
-
array(array &&other)=default
-
std::shared_ptr< Data > data_shared_ptr() const
Definition array.h:333
-
void move_shared_buffer(array other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)
-
const std::vector< array > & siblings() const
The array's siblings.
Definition array.h:272
-
std::vector< array > & inputs()
Definition array.h:262
-
array & operator=(array &&other) &=default
Default copy and move constructors otherwise.
-
array(std::vector< int > shape, Dtype dtype, std::shared_ptr< Primitive > primitive, std::vector< array > inputs)
The following methods should be used with caution.
-
std::uintptr_t id() const
A unique identifier for an array.
Definition array.h:199
-
Dtype dtype() const
Get the arrays data type.
Definition array.h:127
-
bool is_available() const
Definition array.h:349
-
void set_tracer(bool is_tracer)
Definition array.h:372
-
size_t itemsize() const
The size of the array's datatype in bytes.
Definition array.h:79
-
std::uintptr_t primitive_id() const
A unique identifier for an arrays primitive.
Definition array.h:204
-
bool is_tracer() const
-
size_t data_size() const
The size (in elements) of the underlying buffer the array points to.
Definition array.h:316
- - -
array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
Computes the standard deviation of the elements of an array.
-
Buffer malloc(size_t size)
-
void free(Buffer buffer)
-
Allocator & allocator()
-
Definition allocator.h:7
-
constexpr bool is_array_v
Definition array.h:582
-
constexpr Dtype bool_
Definition dtype.h:58
-
std::function< void(allocator::Buffer)> deleter_t
Definition array.h:18
-
constexpr Dtype uint64
Definition dtype.h:63
-
constexpr Dtype uint16
Definition dtype.h:61
-
constexpr Dtype bfloat16
Definition dtype.h:72
-
constexpr Dtype int32
Definition dtype.h:67
-
constexpr Dtype float32
Definition dtype.h:71
-
constexpr Dtype int16
Definition dtype.h:66
-
constexpr Dtype int8
Definition dtype.h:65
-
constexpr Dtype int64
Definition dtype.h:68
-
constexpr bool is_arrays_v
Definition array.h:586
-
constexpr Dtype uint8
Definition dtype.h:60
-
constexpr Dtype float16
Definition dtype.h:70
-
constexpr Dtype uint32
Definition dtype.h:62
-
uint8_t size_of(const Dtype &t)
Definition dtype.h:93
-
typename std::enable_if_t< is_arrays_v< T... > > enable_for_arrays_t
Definition array.h:589
-
constexpr Dtype complex64
Definition dtype.h:73
-
Definition dtype.h:13
-
Definition dtype.h:100
-
Definition array.h:141
- -
friend bool operator==(const ArrayIterator &a, const ArrayIterator &b)
Definition array.h:161
-
std::random_access_iterator_tag iterator_category
Definition array.h:142
-
ArrayIterator & operator++()
Definition array.h:156
-
friend bool operator!=(const ArrayIterator &a, const ArrayIterator &b)
Definition array.h:164
-
ArrayIterator(const array &arr, int idx=0)
-
size_t difference_type
Definition array.h:143
-
const array value_type
Definition array.h:144
-
ArrayIterator & operator+(difference_type diff)
Definition array.h:151
-
Definition array.h:208
-
~Data()
Definition array.h:216
-
deleter_t d
Definition array.h:210
-
Data(const Data &d)=delete
-
Data & operator=(const Data &d)=delete
-
Data(allocator::Buffer buffer, deleter_t d=allocator::free)
Definition array.h:211
-
allocator::Buffer buffer
Definition array.h:209
-
Definition array.h:221
-
bool row_contiguous
Definition array.h:233
-
bool col_contiguous
Definition array.h:239
-
bool contiguous
Definition array.h:227
-
- - - - diff --git a/docs/build/html/atomic_8h.html b/docs/build/html/atomic_8h.html deleted file mode 100644 index 89991c07..00000000 --- a/docs/build/html/atomic_8h.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/atomic.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
atomic.h File Reference
-
-
-
#include <metal_atomic>
-#include <metal_stdlib>
-
-

Go to the source code of this file.

- - - - - - -

-Classes

struct  mlx_atomic< T, typename >
 
struct  mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC T mlx_atomic_load_explicit (device mlx_atomic< T > *object, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_store_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_fetch_and_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_fetch_or_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_fetch_min_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_fetch_max_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_fetch_add_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC void mlx_atomic_fetch_mul_explicit (device mlx_atomic< T > *object, T val, size_t offset)
 
template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
METAL_FUNC bool mlx_atomic_compare_exchange_weak_explicit (device mlx_atomic< T > *object, thread T *expected, T val, size_t offset)
 
template<>
METAL_FUNC void mlx_atomic_fetch_min_explicit< float > (device mlx_atomic< float > *object, float val, size_t offset)
 
template<>
METAL_FUNC void mlx_atomic_fetch_max_explicit< float > (device mlx_atomic< float > *object, float val, size_t offset)
 
template<typename T , enable_if_t<!is_metal_atomic< T >, bool > = true>
METAL_FUNC bool mlx_atomic_compare_exchange_weak_explicit (device mlx_atomic< T > *object, thread uint *expected, uint val, size_t offset)
 
- - - - -

-Variables

template<typename T >
constexpr constant bool is_metal_atomic
 
-

Function Documentation

- -

◆ mlx_atomic_compare_exchange_weak_explicit() [1/2]

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC bool mlx_atomic_compare_exchange_weak_explicit (device mlx_atomic< T > * object,
thread T * expected,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_compare_exchange_weak_explicit() [2/2]

- -
-
-
-template<typename T , enable_if_t<!is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC bool mlx_atomic_compare_exchange_weak_explicit (device mlx_atomic< T > * object,
thread uint * expected,
uint val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_add_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_add_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_and_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_and_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_max_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_max_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_max_explicit< float >()

- -
-
-
-template<>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_max_explicit< float > (device mlx_atomic< float > * object,
float val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_min_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_min_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_min_explicit< float >()

- -
-
-
-template<>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_min_explicit< float > (device mlx_atomic< float > * object,
float val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_mul_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_mul_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_fetch_or_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_fetch_or_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_load_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - -
METAL_FUNC T mlx_atomic_load_explicit (device mlx_atomic< T > * object,
size_t offset )
-
- -
-
- -

◆ mlx_atomic_store_explicit()

- -
-
-
-template<typename T , enable_if_t< is_metal_atomic< T >, bool > = true>
- - - - - - - - - - - - - - - - -
METAL_FUNC void mlx_atomic_store_explicit (device mlx_atomic< T > * object,
T val,
size_t offset )
-
- -
-
-

Variable Documentation

- -

◆ is_metal_atomic

- -
-
-
-template<typename T >
- - - - - -
- - - - -
constexpr constant bool is_metal_atomic
-
-constexpr
-
-Initial value:
= _disjunction<
-
is_same<T, int>,
-
is_same<T, uint>,
-
is_same<T, ulong>,
-
is_same<T, float>>::value
-
-
-
-
- - - - diff --git a/docs/build/html/atomic_8h_source.html b/docs/build/html/atomic_8h_source.html deleted file mode 100644 index ac3f9721..00000000 --- a/docs/build/html/atomic_8h_source.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/atomic.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
atomic.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_atomic>
-
6#include <metal_stdlib>
-
7
-
8using namespace metal;
-
9
-
11// Atomic utils
-
13
-
14#pragma METAL internals : enable
-
15template <typename T>
-
16constexpr constant bool is_metal_atomic = _disjunction<
-
17 is_same<T, int>,
-
18 is_same<T, uint>,
-
19 is_same<T, ulong>,
-
20 is_same<T, float>>::value;
-
21
-
22#pragma METAL internals : disable
-
23
-
24template <typename T, typename = void>
-
-
25struct mlx_atomic {
-
26 atomic<uint> val;
-
27};
-
-
28
-
29template <typename T>
-
-
30struct mlx_atomic<T, enable_if_t<is_metal_atomic<T>>> {
-
31 atomic<T> val;
-
32};
-
-
33
-
35// Native metal atomics
-
37
-
38template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
39METAL_FUNC T
-
-
40mlx_atomic_load_explicit(device mlx_atomic<T>* object, size_t offset) {
-
41 return atomic_load_explicit(&(object[offset].val), memory_order_relaxed);
-
42}
-
-
43
-
44template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
45METAL_FUNC void
-
-
46mlx_atomic_store_explicit(device mlx_atomic<T>* object, T val, size_t offset) {
-
47 atomic_store_explicit(&(object[offset].val), val, memory_order_relaxed);
-
48}
-
-
49
-
50template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
52 device mlx_atomic<T>* object,
-
53 T val,
-
54 size_t offset) {
-
55 atomic_fetch_and_explicit(&(object[offset].val), val, memory_order_relaxed);
-
56}
-
-
57
-
58template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
60 device mlx_atomic<T>* object,
-
61 T val,
-
62 size_t offset) {
-
63 atomic_fetch_or_explicit(&(object[offset].val), val, memory_order_relaxed);
-
64}
-
-
65
-
66template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
68 device mlx_atomic<T>* object,
-
69 T val,
-
70 size_t offset) {
-
71 atomic_fetch_min_explicit(&(object[offset].val), val, memory_order_relaxed);
-
72}
-
-
73
-
74template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
76 device mlx_atomic<T>* object,
-
77 T val,
-
78 size_t offset) {
-
79 atomic_fetch_max_explicit(&(object[offset].val), val, memory_order_relaxed);
-
80}
-
-
81
-
82template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
84 device mlx_atomic<T>* object,
-
85 T val,
-
86 size_t offset) {
-
87 atomic_fetch_add_explicit(&(object[offset].val), val, memory_order_relaxed);
-
88}
-
-
89
-
90template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
92 device mlx_atomic<T>* object,
-
93 T val,
-
94 size_t offset) {
-
95 T expected = mlx_atomic_load_explicit(object, offset);
- -
97 object, &expected, val * expected, offset)) {
-
98 }
-
99}
-
-
100
-
101template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
-
- -
103 device mlx_atomic<T>* object,
-
104 thread T* expected,
-
105 T val,
-
106 size_t offset) {
-
107 return atomic_compare_exchange_weak_explicit(
-
108 &(object[offset].val),
-
109 expected,
-
110 val,
-
111 memory_order_relaxed,
-
112 memory_order_relaxed);
-
113}
-
-
114
-
115// Specialization for float since it does not atomic_fetch_min_explicit
-
116template <>
-
- -
118 device mlx_atomic<float>* object,
-
119 float val,
-
120 size_t offset) {
-
121 float expected = mlx_atomic_load_explicit(object, offset);
-
122 while (val < expected) {
- -
124 object, &expected, val, offset)) {
-
125 return;
-
126 }
-
127 }
-
128}
-
-
129
-
130// Specialization for float since it does not atomic_fetch_max_explicit
-
131template <>
-
- -
133 device mlx_atomic<float>* object,
-
134 float val,
-
135 size_t offset) {
-
136 float expected = mlx_atomic_load_explicit(object, offset);
-
137 while (val > expected) {
- -
139 object, &expected, val, offset)) {
-
140 return;
-
141 }
-
142 }
-
143}
-
-
144
-
146// Custom atomics
-
148
-
149namespace {
-
150
-
151template <typename T>
-
152constexpr constant uint packing_size = sizeof(uint) / sizeof(T);
-
153
-
154template <typename T>
-
155union uint_or_packed {
-
156 T val[packing_size<T>];
-
157 uint bits;
-
158};
-
159
-
160template <typename T, typename Op>
-
161struct mlx_atomic_update_helper {
-
162 uint operator()(uint_or_packed<T> init, T update, size_t elem_offset) {
-
163 Op op;
-
164 init.val[elem_offset] = op(update, init.val[elem_offset]);
-
165 return init.bits;
-
166 }
-
167};
-
168
-
169template <typename T, typename Op>
-
170METAL_FUNC void mlx_atomic_update_and_store(
-
171 device mlx_atomic<T>* object,
-
172 T update,
-
173 size_t offset) {
-
174 size_t pack_offset = offset / packing_size<T>;
-
175 size_t elem_offset = offset % packing_size<T>;
-
176
-
177 mlx_atomic_update_helper<T, Op> helper;
-
178 uint_or_packed<T> expected;
-
179 expected.bits =
-
180 atomic_load_explicit(&(object[pack_offset].val), memory_order_relaxed);
-
181
-
182 while (Op::condition(update, expected.val[elem_offset]) &&
- -
184 object,
-
185 &(expected.bits),
-
186 helper(expected, update, elem_offset),
-
187 pack_offset)) {
-
188 }
-
189}
-
190
-
191template <typename T>
-
192struct __None {
-
193 static bool condition(T a, T b) {
-
194#pragma unused(a)
-
195#pragma unused(b)
-
196 return true;
-
197 }
-
198
-
199 T operator()(T a, T b) {
-
200#pragma unused(b)
-
201 return a;
-
202 }
-
203};
-
204
-
205template <typename T>
-
206struct __Add {
-
207 static bool condition(T a, T b) {
-
208#pragma unused(a)
-
209#pragma unused(b)
-
210 return true;
-
211 }
-
212
-
213 T operator()(T a, T b) {
-
214 return a + b;
-
215 }
-
216};
-
217
-
218template <typename T>
-
219struct __Mul {
-
220 static bool condition(T a, T b) {
-
221#pragma unused(a)
-
222 return b != 0;
-
223 }
-
224
-
225 T operator()(T a, T b) {
-
226 return a * b;
-
227 }
-
228};
-
229
-
230template <typename T>
-
231struct __Max {
-
232 static bool condition(T a, T b) {
-
233 return a > b;
-
234 }
-
235
-
236 T operator()(T a, T b) {
-
237 return max(a, b);
-
238 }
-
239};
-
240
-
241template <typename T>
-
242struct __Min {
-
243 static bool condition(T a, T b) {
-
244 return a < b;
-
245 }
-
246
-
247 T operator()(T a, T b) {
-
248 return min(a, b);
-
249 }
-
250};
-
251
-
252} // namespace
-
253
-
254template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
255METAL_FUNC T
-
256mlx_atomic_load_explicit(device mlx_atomic<T>* object, size_t offset) {
-
257 size_t pack_offset = offset / sizeof(T);
-
258 size_t elem_offset = offset % sizeof(T);
-
259 uint_or_packed<T> packed_val;
-
260 packed_val.bits =
-
261 atomic_load_explicit(&(object[pack_offset].val), memory_order_relaxed);
-
262 return packed_val.val[elem_offset];
-
263}
-
264
-
265template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
266METAL_FUNC void
-
267mlx_atomic_store_explicit(device mlx_atomic<T>* object, T val, size_t offset) {
-
268 mlx_atomic_update_and_store<T, __None<T>>(object, val, offset);
-
269}
-
270
-
271template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
272METAL_FUNC void mlx_atomic_fetch_and_explicit(
-
273 device mlx_atomic<T>* object,
-
274 T val,
-
275 size_t offset) {
-
276 size_t pack_offset = offset / packing_size<T>;
-
277 size_t elem_offset = offset % packing_size<T>;
-
278 uint_or_packed<T> identity;
-
279 identity.bits = __UINT32_MAX__;
-
280 identity.val[elem_offset] = val;
-
281
-
282 atomic_fetch_and_explicit(
-
283 &(object[pack_offset].val), identity.bits, memory_order_relaxed);
-
284}
-
285
-
286template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
287METAL_FUNC void mlx_atomic_fetch_or_explicit(
-
288 device mlx_atomic<T>* object,
-
289 T val,
-
290 size_t offset) {
-
291 size_t pack_offset = offset / packing_size<T>;
-
292 size_t elem_offset = offset % packing_size<T>;
-
293 uint_or_packed<T> identity;
-
294 identity.bits = 0;
-
295 identity.val[elem_offset] = val;
-
296
-
297 atomic_fetch_or_explicit(
-
298 &(object[pack_offset].val), identity.bits, memory_order_relaxed);
-
299}
-
300
-
301template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
302METAL_FUNC void mlx_atomic_fetch_min_explicit(
-
303 device mlx_atomic<T>* object,
-
304 T val,
-
305 size_t offset) {
-
306 mlx_atomic_update_and_store<T, __Min<T>>(object, val, offset);
-
307}
-
308
-
309template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
310METAL_FUNC void mlx_atomic_fetch_max_explicit(
-
311 device mlx_atomic<T>* object,
-
312 T val,
-
313 size_t offset) {
-
314 mlx_atomic_update_and_store<T, __Max<T>>(object, val, offset);
-
315}
-
316
-
317template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
318METAL_FUNC void mlx_atomic_fetch_add_explicit(
-
319 device mlx_atomic<T>* object,
-
320 T val,
-
321 size_t offset) {
-
322 mlx_atomic_update_and_store<T, __Add<T>>(object, val, offset);
-
323}
-
324
-
325template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
326METAL_FUNC void mlx_atomic_fetch_mul_explicit(
-
327 device mlx_atomic<T>* object,
-
328 T val,
-
329 size_t offset) {
-
330 mlx_atomic_update_and_store<T, __Mul<T>>(object, val, offset);
-
331}
-
332
-
333template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
-
- -
335 device mlx_atomic<T>* object,
-
336 thread uint* expected,
-
337 uint val,
-
338 size_t offset) {
-
339 return atomic_compare_exchange_weak_explicit(
-
340 &(object[offset].val),
-
341 expected,
-
342 val,
-
343 memory_order_relaxed,
-
344 memory_order_relaxed);
-
345}
-
-
METAL_FUNC void mlx_atomic_store_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:46
-
METAL_FUNC void mlx_atomic_fetch_max_explicit< float >(device mlx_atomic< float > *object, float val, size_t offset)
Definition atomic.h:132
-
METAL_FUNC T mlx_atomic_load_explicit(device mlx_atomic< T > *object, size_t offset)
Definition atomic.h:40
-
METAL_FUNC void mlx_atomic_fetch_and_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:51
-
METAL_FUNC void mlx_atomic_fetch_min_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:67
-
constexpr constant bool is_metal_atomic
Definition atomic.h:16
-
METAL_FUNC void mlx_atomic_fetch_add_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:83
-
METAL_FUNC void mlx_atomic_fetch_or_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:59
-
METAL_FUNC void mlx_atomic_fetch_min_explicit< float >(device mlx_atomic< float > *object, float val, size_t offset)
Definition atomic.h:117
-
METAL_FUNC void mlx_atomic_fetch_max_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:75
-
METAL_FUNC bool mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread T *expected, T val, size_t offset)
Definition atomic.h:102
-
METAL_FUNC void mlx_atomic_fetch_mul_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:91
-
Op op
Definition binary.h:141
-
array identity(int n, Dtype dtype, StreamOrDevice s={})
Create a square matrix of shape (n,n) of zeros, and ones in the major diagonal.
-
Definition bf16.h:265
-
METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t max(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
-
Group init(bool strict=false)
Initialize the distributed backend and return the group containing all discoverable processes.
-
array bits(const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
Generate an array with type uint32 filled with random bits.
- -
Definition atomic.h:25
-
atomic< uint > val
Definition atomic.h:26
-
- - - - diff --git a/docs/build/html/backend_2accelerate_2utils_8h.html b/docs/build/html/backend_2accelerate_2utils_8h.html deleted file mode 100644 index dfc5590b..00000000 --- a/docs/build/html/backend_2accelerate_2utils_8h.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: mlx/backend/accelerate/utils.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
utils.h File Reference
-
-
-
#include <Accelerate/Accelerate.h>
-#include "mlx/dtype.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - -

-Functions

BNNSDataType mlx::core::to_bnns_dtype (Dtype mlx_dtype)
 
-
- - - - diff --git a/docs/build/html/backend_2accelerate_2utils_8h_source.html b/docs/build/html/backend_2accelerate_2utils_8h_source.html deleted file mode 100644 index f5ce8d3f..00000000 --- a/docs/build/html/backend_2accelerate_2utils_8h_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx/backend/accelerate/utils.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
utils.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <Accelerate/Accelerate.h>
-
6#include "mlx/dtype.h"
-
7
-
8namespace mlx::core {
-
9
-
-
10BNNSDataType to_bnns_dtype(Dtype mlx_dtype) {
-
11 uint32_t size_bits = size_of(mlx_dtype) * 8;
-
12 switch (kindof(mlx_dtype)) {
-
13 case Dtype::Kind::b:
-
14 return BNNSDataTypeBoolean;
-
15 case Dtype::Kind::u:
-
16 return BNNSDataType(BNNSDataTypeUIntBit | size_bits);
-
17 case Dtype::Kind::i:
-
18 return BNNSDataType(BNNSDataTypeIntBit | size_bits);
-
19 case Dtype::Kind::f:
-
20 return BNNSDataType(BNNSDataTypeFloatBit | size_bits);
-
21 case Dtype::Kind::V:
-
22 return BNNSDataTypeBFloat16;
-
23 case Dtype::Kind::c:
-
24 throw std::invalid_argument("BNNS does not support complex types");
-
25 }
-
26}
-
-
27
-
28} // namespace mlx::core
- -
Definition allocator.h:7
-
BNNSDataType to_bnns_dtype(Dtype mlx_dtype)
Definition utils.h:10
-
Dtype::Kind kindof(const Dtype &t)
-
uint8_t size_of(const Dtype &t)
Definition dtype.h:93
-
Definition dtype.h:13
- - - - - - -
- - - - diff --git a/docs/build/html/backend_2common_2load_8h.html b/docs/build/html/backend_2common_2load_8h.html deleted file mode 100644 index 213ffbf5..00000000 --- a/docs/build/html/backend_2common_2load_8h.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/load.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
load.h File Reference
-
-
-
#include "mlx/array.h"
-#include "mlx/io/load.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - -

-Functions

void mlx::core::load (array &out, size_t offset, const std::shared_ptr< io::Reader > &reader, bool swap_endianess)
 
-
- - - - diff --git a/docs/build/html/backend_2common_2load_8h_source.html b/docs/build/html/backend_2common_2load_8h_source.html deleted file mode 100644 index 65ca1bb4..00000000 --- a/docs/build/html/backend_2common_2load_8h_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/load.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
load.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#include "mlx/array.h"
-
4#include "mlx/io/load.h"
-
5
-
6namespace mlx::core {
-
7
-
8void load(
-
9 array& out,
-
10 size_t offset,
-
11 const std::shared_ptr<io::Reader>& reader,
-
12 bool swap_endianess);
-
13
-
14} // namespace mlx::core
- -
Definition array.h:20
- -
Definition allocator.h:7
-
void load(array &out, size_t offset, const std::shared_ptr< io::Reader > &reader, bool swap_endianess)
-
- - - - diff --git a/docs/build/html/backend_2common_2ops_8h.html b/docs/build/html/backend_2common_2ops_8h.html deleted file mode 100644 index c976bb46..00000000 --- a/docs/build/html/backend_2common_2ops_8h.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/ops.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
ops.h File Reference
-
-
-
#include <stdint.h>
-#include <cmath>
-#include <complex>
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

union  mlx::core::detail::IntOrFloat
 
struct  mlx::core::detail::Abs
 
struct  mlx::core::detail::ArcCos
 
struct  mlx::core::detail::ArcCosh
 
struct  mlx::core::detail::ArcSin
 
struct  mlx::core::detail::ArcSinh
 
struct  mlx::core::detail::ArcTan
 
struct  mlx::core::detail::ArcTan2
 
struct  mlx::core::detail::ArcTanh
 
struct  mlx::core::detail::Ceil
 
struct  mlx::core::detail::Conjugate
 
struct  mlx::core::detail::Cos
 
struct  mlx::core::detail::Cosh
 
struct  mlx::core::detail::Erf
 
struct  mlx::core::detail::ErfInv
 
struct  mlx::core::detail::Exp
 
struct  mlx::core::detail::Expm1
 
struct  mlx::core::detail::Floor
 
struct  mlx::core::detail::Log
 
struct  mlx::core::detail::Log2
 
struct  mlx::core::detail::Log10
 
struct  mlx::core::detail::Log1p
 
struct  mlx::core::detail::LogicalNot
 
struct  mlx::core::detail::Negative
 
struct  mlx::core::detail::Round
 
struct  mlx::core::detail::Sigmoid
 
struct  mlx::core::detail::Sign
 
struct  mlx::core::detail::Sin
 
struct  mlx::core::detail::Sinh
 
struct  mlx::core::detail::Square
 
struct  mlx::core::detail::Sqrt
 
struct  mlx::core::detail::Rsqrt
 
struct  mlx::core::detail::Tan
 
struct  mlx::core::detail::Tanh
 
struct  mlx::core::detail::Add
 
struct  mlx::core::detail::Divide
 
struct  mlx::core::detail::Remainder
 
struct  mlx::core::detail::Equal
 
struct  mlx::core::detail::NaNEqual
 
struct  mlx::core::detail::Greater
 
struct  mlx::core::detail::GreaterEqual
 
struct  mlx::core::detail::Less
 
struct  mlx::core::detail::LessEqual
 
struct  mlx::core::detail::Maximum
 
struct  mlx::core::detail::Minimum
 
struct  mlx::core::detail::LogAddExp
 
struct  mlx::core::detail::Multiply
 
struct  mlx::core::detail::NotEqual
 
struct  mlx::core::detail::Power
 
struct  mlx::core::detail::Subtract
 
struct  mlx::core::detail::LogicalAnd
 
struct  mlx::core::detail::LogicalOr
 
struct  mlx::core::detail::Select
 
struct  mlx::core::detail::BitwiseAnd
 
struct  mlx::core::detail::BitwiseOr
 
struct  mlx::core::detail::BitwiseXor
 
struct  mlx::core::detail::LeftShift
 
struct  mlx::core::detail::RightShift
 
- - - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
namespace  mlx::core::detail
 
- - - - - - - -

-Functions

float mlx::core::detail::fast_exp (float x)
 
float mlx::core::detail::fast_erf (float a)
 
float mlx::core::detail::fast_erfinv (float a)
 
-
- - - - diff --git a/docs/build/html/backend_2common_2ops_8h_source.html b/docs/build/html/backend_2common_2ops_8h_source.html deleted file mode 100644 index bffe865d..00000000 --- a/docs/build/html/backend_2common_2ops_8h_source.html +++ /dev/null @@ -1,1225 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/ops.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
ops.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4#include <stdint.h>
-
5#include <cmath>
-
6#include <complex>
-
7
-
- -
9
-
10namespace {
-
11constexpr float inf = std::numeric_limits<float>::infinity();
-
12} // namespace
-
13
-
-
14typedef union {
-
15 int i;
-
16 float f;
- -
-
18
-
-
19inline float fast_exp(float x) {
-
20 if (x == -std::numeric_limits<float>::infinity()) {
-
21 return 0.0f;
-
22 } else if (x == std::numeric_limits<float>::infinity() || std::isnan(x)) {
-
23 return x;
-
24 }
-
25 x *= 1.442695; // multiply with log_2(e)
-
26 float ipart, fpart;
-
27 IntOrFloat epart;
-
28 x = std::max(-80.f, std::min(x, 80.f));
-
29 ipart = std::floor(x + 0.5);
-
30 fpart = x - ipart;
-
31
-
32 x = 1.535336188319500e-4f;
-
33 x = x * fpart + 1.339887440266574e-3f;
-
34 x = x * fpart + 9.618437357674640e-3f;
-
35 x = x * fpart + 5.550332471162809e-2f;
-
36 x = x * fpart + 2.402264791363012e-1f;
-
37 x = x * fpart + 6.931472028550421e-1f;
-
38 x = x * fpart + 1.000000000000000f;
-
39
-
40 // generate 2**ipart in the floating point representation using integer
-
41 // bitshifting
-
42 epart.i = (int(ipart) + 127) << 23;
-
43
-
44 return epart.f * x;
-
45}
-
-
46
-
-
47inline float fast_erf(float a) {
-
48 float r, s, t, u;
-
49 t = std::abs(a);
-
50 s = a * a;
-
51 if (t > 0.927734375f) {
-
52 // maximum error 0.99527 ulp
-
53 r = std::fma(
-
54 -1.72853470e-5f, t, 3.83197126e-4f); // -0x1.220000p-16,0x1.91cfb2p-12
-
55 u = std::fma(
-
56 -3.88396438e-3f, t, 2.42546219e-2f); // -0x1.fd1438p-9, 0x1.8d6342p-6
-
57 r = std::fma(r, s, u);
-
58 r = std::fma(r, t, -1.06777877e-1f); // -0x1.b55cb8p-4
-
59 r = std::fma(r, t, -6.34846687e-1f); // -0x1.450aa0p-1
-
60 r = std::fma(r, t, -1.28717512e-1f); // -0x1.079d0cp-3
-
61 r = std::fma(r, t, -t);
-
62 // TODO, replace with expm1 when implemented
-
63 r = 1.0f - std::exp(r);
-
64 r = std::copysign(r, a);
-
65 } else {
-
66 // maximum error 0.98929 ulp
-
67 r = -5.96761703e-4f; // -0x1.38e000p-11
-
68 r = std::fma(r, s, 4.99119423e-3f); // 0x1.471a58p-8
-
69 r = std::fma(r, s, -2.67681349e-2f); // -0x1.b691b2p-6
-
70 r = std::fma(r, s, 1.12819925e-1f); // 0x1.ce1c44p-4
-
71 r = std::fma(r, s, -3.76125336e-1f); // -0x1.812700p-2
-
72 r = std::fma(r, s, 1.28379166e-1f); // 0x1.06eba8p-3
-
73 r = std::fma(r, a, a);
-
74 }
-
75 return r;
-
76}
-
-
77
-
-
78inline float fast_erfinv(float a) {
-
79 auto t = std::fma(a, 0.0f - a, 1.0f);
-
80 t = std::log(t);
-
81 float p;
-
82 if (std::abs(t) > 6.125f) { // maximum ulp error = 2.35793
-
83 p = 3.03697567e-10f; // 0x1.4deb44p-32
-
84 p = std::fma(p, t, 2.93243101e-8f); // 0x1.f7c9aep-26
-
85 p = std::fma(p, t, 1.22150334e-6f); // 0x1.47e512p-20
-
86 p = std::fma(p, t, 2.84108955e-5f); // 0x1.dca7dep-16
-
87 p = std::fma(p, t, 3.93552968e-4f); // 0x1.9cab92p-12
-
88 p = std::fma(p, t, 3.02698812e-3f); // 0x1.8cc0dep-9
-
89 p = std::fma(p, t, 4.83185798e-3f); // 0x1.3ca920p-8
-
90 p = std::fma(p, t, -2.64646143e-1f); // -0x1.0eff66p-2
-
91 p = std::fma(p, t, 8.40016484e-1f); // 0x1.ae16a4p-1
-
92 } else { // maximum ulp error = 2.35002
-
93 p = 5.43877832e-9f; // 0x1.75c000p-28
-
94 p = std::fma(p, t, 1.43285448e-7f); // 0x1.33b402p-23
-
95 p = std::fma(p, t, 1.22774793e-6f); // 0x1.499232p-20
-
96 p = std::fma(p, t, 1.12963626e-7f); // 0x1.e52cd2p-24
-
97 p = std::fma(p, t, -5.61530760e-5f); // -0x1.d70bd0p-15
-
98 p = std::fma(p, t, -1.47697632e-4f); // -0x1.35be90p-13
-
99 p = std::fma(p, t, 2.31468678e-3f); // 0x1.2f6400p-9
-
100 p = std::fma(p, t, 1.15392581e-2f); // 0x1.7a1e50p-7
-
101 p = std::fma(p, t, -2.32015476e-1f); // -0x1.db2aeep-3
-
102 p = std::fma(p, t, 8.86226892e-1f); // 0x1.c5bf88p-1
-
103 }
-
104 return a * p;
-
105}
-
-
106
-
-
107struct Abs {
-
108 template <typename T>
-
-
109 T operator()(T x) {
-
110 return std::abs(x);
-
111 }
-
-
-
112 uint8_t operator()(uint8_t x) {
-
113 return x;
-
114 }
-
-
-
115 uint16_t operator()(uint16_t x) {
-
116 return x;
-
117 }
-
-
-
118 uint32_t operator()(uint32_t x) {
-
119 return x;
-
120 }
-
-
-
121 uint64_t operator()(uint64_t x) {
-
122 return x;
-
123 }
-
-
-
124 bool operator()(bool x) {
-
125 return x;
-
126 }
-
-
127};
-
-
128
-
-
129struct ArcCos {
-
130 template <typename T>
-
-
131 T operator()(T x) {
-
132 return std::acos(x);
-
133 }
-
-
134};
-
-
135
-
-
136struct ArcCosh {
-
137 template <typename T>
-
-
138 T operator()(T x) {
-
139 return std::acosh(x);
-
140 }
-
-
141};
-
-
142
-
-
143struct ArcSin {
-
144 template <typename T>
-
-
145 T operator()(T x) {
-
146 return std::asin(x);
-
147 }
-
-
148};
-
-
149
-
-
150struct ArcSinh {
-
151 template <typename T>
-
-
152 T operator()(T x) {
-
153 return std::asinh(x);
-
154 }
-
-
155};
-
-
156
-
-
157struct ArcTan {
-
158 template <typename T>
-
-
159 T operator()(T x) {
-
160 return std::atan(x);
-
161 }
-
-
162};
-
-
163
-
-
164struct ArcTan2 {
-
165 template <typename T>
-
-
166 T operator()(T y, T x) {
-
167 return std::atan2(y, x);
-
168 }
-
-
169};
-
-
170
-
-
171struct ArcTanh {
-
172 template <typename T>
-
-
173 T operator()(T x) {
-
174 return std::atanh(x);
-
175 }
-
-
176};
-
-
177
-
-
178struct Ceil {
-
179 template <typename T>
-
-
180 T operator()(T x) {
-
181 return std::ceil(x);
-
182 }
-
-
-
183 int8_t operator()(int8_t x) {
-
184 return x;
-
185 }
-
-
-
186 int16_t operator()(int16_t x) {
-
187 return x;
-
188 }
-
-
-
189 int32_t operator()(int32_t x) {
-
190 return x;
-
191 }
-
-
-
192 int64_t operator()(int64_t x) {
-
193 return x;
-
194 }
-
-
-
195 uint8_t operator()(uint8_t x) {
-
196 return x;
-
197 }
-
-
-
198 uint16_t operator()(uint16_t x) {
-
199 return x;
-
200 }
-
-
-
201 uint32_t operator()(uint32_t x) {
-
202 return x;
-
203 }
-
-
-
204 uint64_t operator()(uint64_t x) {
-
205 return x;
-
206 }
-
-
-
207 bool operator()(bool x) {
-
208 return x;
-
209 }
-
-
210};
-
-
211
-
-
212struct Conjugate {
-
- -
214 return std::conj(x);
-
215 }
-
-
216};
-
-
217
-
-
218struct Cos {
-
219 template <typename T>
-
-
220 T operator()(T x) {
-
221 return std::cos(x);
-
222 }
-
-
223};
-
-
224
-
-
225struct Cosh {
-
226 template <typename T>
-
-
227 T operator()(T x) {
-
228 return std::cosh(x);
-
229 }
-
-
230};
-
-
231
-
-
232struct Erf {
-
233 template <typename T>
-
-
234 T operator()(T x) {
-
235 return static_cast<T>(fast_erf(static_cast<float>(x)));
-
236 }
-
-
237};
-
-
238
-
-
239struct ErfInv {
-
240 template <typename T>
-
-
241 T operator()(T x) {
-
242 return static_cast<T>(fast_erfinv(static_cast<float>(x)));
-
243 }
-
-
244};
-
-
245
-
-
246struct Exp {
-
247 template <typename T>
-
-
248 T operator()(T x) {
-
249 return fast_exp(x);
-
250 }
-
-
251
-
- -
253 return std::exp(x);
-
254 }
-
-
255};
-
-
256
-
-
257struct Expm1 {
-
258 template <typename T>
-
-
259 T operator()(T x) {
-
260 return expm1(x);
-
261 }
-
-
262};
-
-
263
-
-
264struct Floor {
-
265 template <typename T>
-
-
266 T operator()(T x) {
-
267 return std::floor(x);
-
268 }
-
-
-
269 int8_t operator()(int8_t x) {
-
270 return x;
-
271 }
-
-
-
272 int16_t operator()(int16_t x) {
-
273 return x;
-
274 }
-
-
-
275 int32_t operator()(int32_t x) {
-
276 return x;
-
277 }
-
-
-
278 int64_t operator()(int64_t x) {
-
279 return x;
-
280 }
-
-
-
281 uint8_t operator()(uint8_t x) {
-
282 return x;
-
283 }
-
-
-
284 uint16_t operator()(uint16_t x) {
-
285 return x;
-
286 }
-
-
-
287 uint32_t operator()(uint32_t x) {
-
288 return x;
-
289 }
-
-
-
290 uint64_t operator()(uint64_t x) {
-
291 return x;
-
292 }
-
-
-
293 bool operator()(bool x) {
-
294 return x;
-
295 }
-
-
296};
-
-
297
-
-
298struct Log {
-
299 template <typename T>
-
-
300 T operator()(T x) {
-
301 return std::log(x);
-
302 }
-
-
303};
-
-
304
-
-
305struct Log2 {
-
306 template <typename T>
-
-
307 T operator()(T x) {
-
308 return std::log2(x);
-
309 }
-
-
310};
-
-
311
-
-
312struct Log10 {
-
313 template <typename T>
-
-
314 T operator()(T x) {
-
315 return std::log10(x);
-
316 }
-
-
317};
-
-
318
-
-
319struct Log1p {
-
320 template <typename T>
-
-
321 T operator()(T x) {
-
322 return log1p(x);
-
323 }
-
-
324};
-
-
325
-
- -
327 template <typename T>
-
-
328 T operator()(T x) {
-
329 return !x;
-
330 }
-
-
331};
-
-
332
-
-
333struct Negative {
-
334 template <typename T>
-
-
335 T operator()(T x) {
-
336 return -x;
-
337 }
-
-
338};
-
-
339
-
-
340struct Round {
-
341 template <typename T>
-
-
342 T operator()(T x) {
-
343 return std::rint(x);
-
344 }
-
-
345
-
- -
347 return {std::rint(x.real()), std::rint(x.imag())};
-
348 }
-
-
349};
-
-
350
-
-
351struct Sigmoid {
-
352 template <typename T>
-
-
353 T operator()(T x) {
-
354 auto one = static_cast<decltype(x)>(1.0);
-
355 return one / (one + fast_exp(-x));
-
356 }
-
-
357};
-
-
358
-
-
359struct Sign {
-
360 template <typename T>
-
-
361 T operator()(T x) {
-
362 return (x > T(0)) - (x < T(0));
-
363 }
-
-
-
364 uint8_t operator()(uint8_t x) {
-
365 return x != 0;
-
366 }
-
-
-
367 uint16_t operator()(uint16_t x) {
-
368 return x != 0;
-
369 }
-
-
-
370 uint32_t operator()(uint32_t x) {
-
371 return x != 0;
-
372 }
-
-
-
373 uint64_t operator()(uint64_t x) {
-
374 return x != 0;
-
375 }
-
-
376
-
- -
378 return x == complex64_t(0) ? x : x / std::abs(x);
-
379 }
-
-
380};
-
-
381
-
-
382struct Sin {
-
383 template <typename T>
-
-
384 T operator()(T x) {
-
385 return std::sin(x);
-
386 }
-
-
387};
-
-
388
-
-
389struct Sinh {
-
390 template <typename T>
-
-
391 T operator()(T x) {
-
392 return std::sinh(x);
-
393 }
-
-
394};
-
-
395
-
-
396struct Square {
-
397 template <typename T>
-
-
398 T operator()(T x) {
-
399 return x * x;
-
400 }
-
-
401};
-
-
402
-
-
403struct Sqrt {
-
404 template <typename T>
-
-
405 T operator()(T x) {
-
406 return std::sqrt(x);
-
407 }
-
-
408};
-
-
409
-
-
410struct Rsqrt {
-
411 template <typename T>
-
-
412 T operator()(T x) {
-
413 return static_cast<decltype(x)>(1.0) / std::sqrt(x);
-
414 }
-
-
415};
-
-
416
-
-
417struct Tan {
-
418 template <typename T>
-
-
419 T operator()(T x) {
-
420 return std::tan(x);
-
421 }
-
-
422};
-
-
423
-
-
424struct Tanh {
-
425 template <typename T>
-
-
426 T operator()(T x) {
-
427 return std::tanh(x);
-
428 }
-
-
429};
-
-
430
-
-
431struct Add {
-
432 template <typename T>
-
-
433 T operator()(T x, T y) {
-
434 return x + y;
-
435 }
-
-
436};
-
-
437
-
-
438struct Divide {
-
439 template <typename T>
-
-
440 T operator()(T x, T y) {
-
441 return x / y;
-
442 }
-
-
443};
-
-
444
-
-
445struct Remainder {
-
446 template <typename T>
-
-
447 std::enable_if_t<std::is_integral_v<T> & !std::is_signed_v<T>, T> operator()(
-
448 T numerator,
-
449 T denominator) {
-
450 return numerator % denominator;
-
451 }
-
-
452
-
453 template <typename T>
-
-
454 std::enable_if_t<std::is_integral_v<T> & std::is_signed_v<T>, T> operator()(
-
455 T numerator,
-
456 T denominator) {
-
457 auto r = numerator % denominator;
-
458 if (r != 0 && (r < 0 != denominator < 0))
-
459 r += denominator;
-
460 return r;
-
461 }
-
-
462
-
463 template <typename T>
-
-
464 std::enable_if_t<!std::is_integral_v<T>, T> operator()(
-
465 T numerator,
-
466 T denominator) {
-
467 auto r = std::fmod(numerator, denominator);
-
468 if (r != 0 && (r < 0 != denominator < 0)) {
-
469 r += denominator;
-
470 }
-
471 return r;
-
472 }
-
-
473
-
- -
475 return numerator % denominator;
-
476 }
-
-
477};
-
-
478
-
-
479struct Equal {
-
480 template <typename T>
-
-
481 bool operator()(T x, T y) {
-
482 return x == y;
-
483 }
-
-
484};
-
-
485
-
-
486struct NaNEqual {
-
487 template <typename T>
-
-
488 bool operator()(T x, T y) {
-
489 return x == y || (std::isnan(x) && std::isnan(y));
-
490 }
-
-
491};
-
-
492
-
-
493struct Greater {
-
494 template <typename T>
-
-
495 bool operator()(T x, T y) {
-
496 return x > y;
-
497 }
-
-
498};
-
-
499
-
- -
501 template <typename T>
-
-
502 bool operator()(T x, T y) {
-
503 return x >= y;
-
504 }
-
-
505};
-
-
506
-
-
507struct Less {
-
508 template <typename T>
-
-
509 bool operator()(T x, T y) {
-
510 return x < y;
-
511 }
-
-
512};
-
-
513
-
-
514struct LessEqual {
-
515 template <typename T>
-
-
516 bool operator()(T x, T y) {
-
517 return x <= y;
-
518 }
-
-
519};
-
-
520
-
-
521struct Maximum {
-
522 template <typename T>
-
-
523 std::enable_if_t<std::is_integral_v<T>, T> operator()(T x, T y) {
-
524 return (x > y) ? x : y;
-
525 }
-
-
526
-
527 template <typename T>
-
-
528 std::enable_if_t<!std::is_integral_v<T>, T> operator()(T x, T y) {
-
529 if (std::isnan(x)) {
-
530 return x;
-
531 }
-
532 return (x > y) ? x : y;
-
533 }
-
-
534};
-
-
535
-
-
536struct Minimum {
-
537 template <typename T>
-
-
538 std::enable_if_t<std::is_integral_v<T>, T> operator()(T x, T y) {
-
539 return x < y ? x : y;
-
540 }
-
-
541
-
542 template <typename T>
-
-
543 std::enable_if_t<!std::is_integral_v<T>, T> operator()(T x, T y) {
-
544 if (std::isnan(x)) {
-
545 return x;
-
546 }
-
547 return x < y ? x : y;
-
548 }
-
-
549};
-
-
550
-
-
551struct LogAddExp {
-
552 template <typename T>
-
-
553 T operator()(T x, T y) {
-
554 constexpr float inf = std::numeric_limits<float>::infinity();
-
555 auto maxval = Maximum()(x, y);
-
556 auto minval = Minimum()(x, y);
-
557 return (minval == -inf || maxval == inf)
-
558 ? maxval
-
559 : static_cast<decltype(x)>(
-
560 maxval + std::log1p(fast_exp(minval - maxval)));
-
561 }
-
-
562};
-
-
563
-
-
564struct Multiply {
-
565 template <typename T>
-
-
566 T operator()(T x, T y) {
-
567 return x * y;
-
568 }
-
-
569};
-
-
570
-
-
571struct NotEqual {
-
572 template <typename T>
-
-
573 bool operator()(T x, T y) {
-
574 return x != y;
-
575 }
-
-
576};
-
-
577
-
-
578struct Power {
-
579 template <typename T>
-
-
580 std::enable_if_t<!std::is_integral_v<T>, T> operator()(T base, T exp) {
-
581 return std::pow(base, exp);
-
582 }
-
-
583
-
584 template <typename T>
-
-
585 std::enable_if_t<std::is_integral_v<T>, T> operator()(T base, T exp) {
-
586 T res = 1;
-
587 while (exp) {
-
588 if (exp & 1) {
-
589 res *= base;
-
590 }
-
591 exp >>= 1;
-
592 base *= base;
-
593 }
-
594 return res;
-
595 }
-
-
596};
-
-
597
-
-
598struct Subtract {
-
599 template <typename T>
-
-
600 T operator()(T x, T y) {
-
601 return x - y;
-
602 }
-
-
603};
-
-
604
-
- -
606 template <typename T>
-
-
607 T operator()(T x, T y) {
-
608 return x && y;
-
609 }
-
-
610};
-
-
611
-
-
612struct LogicalOr {
-
613 template <typename T>
-
-
614 T operator()(T x, T y) {
-
615 return x || y;
-
616 }
-
-
617};
-
-
618
-
-
619struct Select {
-
620 template <typename T>
-
-
621 T operator()(bool condition, T x, T y) {
-
622 return condition ? x : y;
-
623 }
-
-
624};
-
-
625
-
- -
627 template <typename T>
-
-
628 T operator()(T x, T y) {
-
629 return x & y;
-
630 }
-
-
631};
-
-
632
-
-
633struct BitwiseOr {
-
634 template <typename T>
-
-
635 T operator()(T x, T y) {
-
636 return x | y;
-
637 }
-
-
638};
-
-
639
-
- -
641 template <typename T>
-
-
642 T operator()(T x, T y) {
-
643 return x ^ y;
-
644 }
-
-
645};
-
-
646
-
-
647struct LeftShift {
-
648 template <typename T>
-
-
649 T operator()(T x, T y) {
-
650 return x << y;
-
651 }
-
-
652};
-
-
653
-
- -
655 template <typename T>
-
-
656 T operator()(T x, T y) {
-
657 return x >> y;
-
658 }
-
-
659};
-
-
660
-
661} // namespace mlx::core::detail
-
-
array log1p(const array &a, StreamOrDevice s={})
Natural logarithm of one plus elements in the array: log(1 + a).
-
array expm1(const array &a, StreamOrDevice s={})
Computes the expm1 function of the elements of an array.
-
array exp(const array &a, StreamOrDevice s={})
Exponential of the elements of an array.
-
Definition ops.h:8
-
float fast_exp(float x)
Definition ops.h:19
-
float fast_erf(float a)
Definition ops.h:47
-
float fast_erfinv(float a)
Definition ops.h:78
-
Definition complex.h:34
-
Definition ops.h:107
-
T operator()(T x)
Definition ops.h:109
-
uint8_t operator()(uint8_t x)
Definition ops.h:112
-
uint64_t operator()(uint64_t x)
Definition ops.h:121
-
uint16_t operator()(uint16_t x)
Definition ops.h:115
-
bool operator()(bool x)
Definition ops.h:124
-
uint32_t operator()(uint32_t x)
Definition ops.h:118
-
Definition ops.h:431
-
T operator()(T x, T y)
Definition ops.h:433
-
Definition ops.h:129
-
T operator()(T x)
Definition ops.h:131
-
Definition ops.h:136
-
T operator()(T x)
Definition ops.h:138
-
Definition ops.h:143
-
T operator()(T x)
Definition ops.h:145
-
Definition ops.h:150
-
T operator()(T x)
Definition ops.h:152
-
Definition ops.h:164
-
T operator()(T y, T x)
Definition ops.h:166
-
Definition ops.h:157
-
T operator()(T x)
Definition ops.h:159
-
Definition ops.h:171
-
T operator()(T x)
Definition ops.h:173
-
Definition ops.h:626
-
T operator()(T x, T y)
Definition ops.h:628
-
Definition ops.h:633
-
T operator()(T x, T y)
Definition ops.h:635
-
Definition ops.h:640
-
T operator()(T x, T y)
Definition ops.h:642
-
Definition ops.h:178
-
uint8_t operator()(uint8_t x)
Definition ops.h:195
-
T operator()(T x)
Definition ops.h:180
-
uint32_t operator()(uint32_t x)
Definition ops.h:201
-
int8_t operator()(int8_t x)
Definition ops.h:183
-
int16_t operator()(int16_t x)
Definition ops.h:186
-
bool operator()(bool x)
Definition ops.h:207
-
uint16_t operator()(uint16_t x)
Definition ops.h:198
-
uint64_t operator()(uint64_t x)
Definition ops.h:204
-
int32_t operator()(int32_t x)
Definition ops.h:189
-
int64_t operator()(int64_t x)
Definition ops.h:192
-
Definition ops.h:212
-
complex64_t operator()(complex64_t x)
Definition ops.h:213
-
Definition ops.h:218
-
T operator()(T x)
Definition ops.h:220
-
Definition ops.h:225
-
T operator()(T x)
Definition ops.h:227
-
Definition ops.h:438
-
T operator()(T x, T y)
Definition ops.h:440
-
Definition ops.h:479
-
bool operator()(T x, T y)
Definition ops.h:481
-
Definition ops.h:232
-
T operator()(T x)
Definition ops.h:234
-
Definition ops.h:239
-
T operator()(T x)
Definition ops.h:241
-
Definition ops.h:246
-
T operator()(T x)
Definition ops.h:248
-
complex64_t operator()(complex64_t x)
Definition ops.h:252
-
Definition ops.h:257
-
T operator()(T x)
Definition ops.h:259
-
Definition ops.h:264
-
T operator()(T x)
Definition ops.h:266
-
uint32_t operator()(uint32_t x)
Definition ops.h:287
-
uint16_t operator()(uint16_t x)
Definition ops.h:284
-
uint8_t operator()(uint8_t x)
Definition ops.h:281
-
int32_t operator()(int32_t x)
Definition ops.h:275
-
int64_t operator()(int64_t x)
Definition ops.h:278
-
bool operator()(bool x)
Definition ops.h:293
-
int8_t operator()(int8_t x)
Definition ops.h:269
-
uint64_t operator()(uint64_t x)
Definition ops.h:290
-
int16_t operator()(int16_t x)
Definition ops.h:272
- -
bool operator()(T x, T y)
Definition ops.h:502
-
Definition ops.h:493
-
bool operator()(T x, T y)
Definition ops.h:495
-
Definition ops.h:647
-
T operator()(T x, T y)
Definition ops.h:649
-
Definition ops.h:514
-
bool operator()(T x, T y)
Definition ops.h:516
-
Definition ops.h:507
-
bool operator()(T x, T y)
Definition ops.h:509
-
Definition ops.h:312
-
T operator()(T x)
Definition ops.h:314
-
Definition ops.h:319
-
T operator()(T x)
Definition ops.h:321
-
Definition ops.h:305
-
T operator()(T x)
Definition ops.h:307
-
Definition ops.h:551
-
T operator()(T x, T y)
Definition ops.h:553
-
Definition ops.h:298
-
T operator()(T x)
Definition ops.h:300
-
Definition ops.h:605
-
T operator()(T x, T y)
Definition ops.h:607
-
Definition ops.h:326
-
T operator()(T x)
Definition ops.h:328
-
Definition ops.h:612
-
T operator()(T x, T y)
Definition ops.h:614
-
Definition ops.h:521
-
std::enable_if_t< std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:523
-
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:528
-
Definition ops.h:536
-
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:543
-
std::enable_if_t< std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:538
-
Definition ops.h:564
-
T operator()(T x, T y)
Definition ops.h:566
-
Definition ops.h:486
-
bool operator()(T x, T y)
Definition ops.h:488
-
Definition ops.h:333
-
T operator()(T x)
Definition ops.h:335
-
Definition ops.h:571
-
bool operator()(T x, T y)
Definition ops.h:573
-
Definition ops.h:578
-
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T base, T exp)
Definition ops.h:580
-
std::enable_if_t< std::is_integral_v< T >, T > operator()(T base, T exp)
Definition ops.h:585
-
Definition ops.h:445
-
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T numerator, T denominator)
Definition ops.h:464
-
std::enable_if_t< std::is_integral_v< T > &!std::is_signed_v< T >, T > operator()(T numerator, T denominator)
Definition ops.h:447
-
std::enable_if_t< std::is_integral_v< T > &std::is_signed_v< T >, T > operator()(T numerator, T denominator)
Definition ops.h:454
-
complex64_t operator()(complex64_t numerator, complex64_t denominator)
Definition ops.h:474
-
Definition ops.h:654
-
T operator()(T x, T y)
Definition ops.h:656
-
Definition ops.h:340
-
T operator()(T x)
Definition ops.h:342
-
complex64_t operator()(complex64_t x)
Definition ops.h:346
-
Definition ops.h:410
-
T operator()(T x)
Definition ops.h:412
-
Definition ops.h:619
-
T operator()(bool condition, T x, T y)
Definition ops.h:621
-
Definition ops.h:351
-
T operator()(T x)
Definition ops.h:353
-
Definition ops.h:359
-
uint64_t operator()(uint64_t x)
Definition ops.h:373
-
T operator()(T x)
Definition ops.h:361
-
uint8_t operator()(uint8_t x)
Definition ops.h:364
-
uint16_t operator()(uint16_t x)
Definition ops.h:367
-
complex64_t operator()(complex64_t x)
Definition ops.h:377
-
uint32_t operator()(uint32_t x)
Definition ops.h:370
-
Definition ops.h:382
-
T operator()(T x)
Definition ops.h:384
-
Definition ops.h:389
-
T operator()(T x)
Definition ops.h:391
-
Definition ops.h:403
-
T operator()(T x)
Definition ops.h:405
-
Definition ops.h:396
-
T operator()(T x)
Definition ops.h:398
-
Definition ops.h:598
-
T operator()(T x, T y)
Definition ops.h:600
-
Definition ops.h:417
-
T operator()(T x)
Definition ops.h:419
-
Definition ops.h:424
-
T operator()(T x)
Definition ops.h:426
-
uint32_t u
Definition bf16.h:17
- -
float f
Definition ops.h:16
-
int i
Definition ops.h:15
-
- - - - diff --git a/docs/build/html/backend_2common_2utils_8h.html b/docs/build/html/backend_2common_2utils_8h.html deleted file mode 100644 index 3e853333..00000000 --- a/docs/build/html/backend_2common_2utils_8h.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/utils.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
utils.h File Reference
-
-
-
#include <vector>
-#include "mlx/array.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename stride_t >
stride_t mlx::core::elem_to_loc (int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
 
size_t mlx::core::elem_to_loc (int elem, const array &a)
 
template<typename stride_t >
std::vector< stride_t > mlx::core::make_contiguous_strides (const std::vector< int > &shape)
 
template<typename stride_t >
std::tuple< std::vector< int >, std::vector< std::vector< stride_t > > > mlx::core::collapse_contiguous_dims (const std::vector< int > &shape, const std::vector< std::vector< stride_t > > strides)
 
std::tuple< std::vector< int >, std::vector< std::vector< size_t > > > mlx::core::collapse_contiguous_dims (const std::vector< array > &xs)
 
template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
auto mlx::core::collapse_contiguous_dims (Arrays &&... xs)
 
std::tuple< std::vector< int >, std::vector< size_t > > mlx::core::collapse_contiguous_dims (const std::vector< int > &shape, const std::vector< size_t > &strides)
 
template<typename stride_t >
auto mlx::core::check_contiguity (const std::vector< int > &shape, const std::vector< stride_t > &strides)
 
bool mlx::core::is_donatable (const array &in, const array &out)
 
-
- - - - diff --git a/docs/build/html/backend_2common_2utils_8h_source.html b/docs/build/html/backend_2common_2utils_8h_source.html deleted file mode 100644 index 21aece41..00000000 --- a/docs/build/html/backend_2common_2utils_8h_source.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/utils.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
utils.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <vector>
-
6
-
7#include "mlx/array.h"
-
8
-
9namespace mlx::core {
-
10
-
11template <typename stride_t>
-
-
12inline stride_t elem_to_loc(
-
13 int elem,
-
14 const std::vector<int>& shape,
-
15 const std::vector<stride_t>& strides) {
-
16 stride_t loc = 0;
-
17 for (int i = shape.size() - 1; i >= 0; --i) {
-
18 auto q_and_r = ldiv(elem, shape[i]);
-
19 loc += q_and_r.rem * strides[i];
-
20 elem = q_and_r.quot;
-
21 }
-
22 return loc;
-
23}
-
-
24
-
-
25inline size_t elem_to_loc(int elem, const array& a) {
-
26 if (a.flags().row_contiguous) {
-
27 return elem;
-
28 }
-
29 return elem_to_loc(elem, a.shape(), a.strides());
-
30}
-
-
31
-
32template <typename stride_t>
-
-
33std::vector<stride_t> make_contiguous_strides(const std::vector<int>& shape) {
-
34 std::vector<stride_t> strides(shape.size(), 1);
-
35 for (int i = shape.size() - 1; i > 0; i--) {
-
36 strides[i - 1] = strides[i] * shape[i];
-
37 }
-
38 return strides;
-
39}
-
-
40
-
41// Collapse dims that are contiguous to possibly route to a better kernel
-
42// e.g. for x = transpose(array({0, 1, 2, 3, 4, 5, 6, 7}, {2, 2, 2}), {2, 0, 1})
-
43// should return {{2, 4}, {{1, 2}}}.
-
44//
-
45// When multiple arrays are passed they should all have the same shape. The
-
46// collapsed axes are also the same so one shape is returned.
-
47template <typename stride_t>
-
48inline std::tuple<std::vector<int>, std::vector<std::vector<stride_t>>>
-
- -
50 const std::vector<int>& shape,
-
51 const std::vector<std::vector<stride_t>> strides) {
-
52 // Make a vector that has axes separated with -1. Collapse all axes between
-
53 // -1.
-
54 std::vector<int> to_collapse;
-
55 if (shape.size() > 0) {
-
56 to_collapse.push_back(0);
-
57 for (int i = 1; i < shape.size(); i++) {
-
58 bool contiguous = true;
-
59 for (const std::vector<stride_t>& st : strides) {
-
60 if (st[i] * shape[i] != st[i - 1]) {
-
61 contiguous = false;
-
62 }
-
63 if (!contiguous) {
-
64 break;
-
65 }
-
66 }
-
67 if (!contiguous) {
-
68 to_collapse.push_back(-1);
-
69 }
-
70 to_collapse.push_back(i);
-
71 }
-
72 to_collapse.push_back(-1);
-
73 }
-
74
-
75 std::vector<int> out_shape;
-
76 std::vector<std::vector<stride_t>> out_strides(strides.size());
-
77 for (int i = 0; i < to_collapse.size(); i++) {
-
78 int current_shape = shape[to_collapse[i]];
-
79 while (to_collapse[++i] != -1) {
-
80 current_shape *= shape[to_collapse[i]];
-
81 }
-
82 out_shape.push_back(current_shape);
-
83 for (int j = 0; j < strides.size(); j++) {
-
84 const std::vector<stride_t>& st = strides[j];
-
85 out_strides[j].push_back(st[to_collapse[i - 1]]);
-
86 }
-
87 }
-
88
-
89 return std::make_tuple(out_shape, out_strides);
-
90}
-
-
91
-
92inline std::tuple<std::vector<int>, std::vector<std::vector<size_t>>>
-
-
93collapse_contiguous_dims(const std::vector<array>& xs) {
-
94 std::vector<std::vector<size_t>> strides;
-
95 for (auto& x : xs) {
-
96 strides.emplace_back(x.strides());
-
97 }
-
98 return collapse_contiguous_dims(xs[0].shape(), strides);
-
99}
-
-
100
-
101template <typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
-
-
102inline auto collapse_contiguous_dims(Arrays&&... xs) {
- -
104 std::vector<array>{std::forward<Arrays>(xs)...});
-
105}
-
-
106
-
107// The single array version of the above.
-
108inline std::tuple<std::vector<int>, std::vector<size_t>>
-
- -
110 const std::vector<int>& shape,
-
111 const std::vector<size_t>& strides) {
-
112 std::vector<int> collapsed_shape;
-
113 std::vector<size_t> collapsed_strides;
-
114
-
115 if (shape.size() > 0) {
-
116 collapsed_shape.push_back(shape[0]);
-
117 collapsed_strides.push_back(strides[0]);
-
118 for (int i = 1; i < shape.size(); i++) {
-
119 if (strides[i] * shape[i] != collapsed_strides.back() ||
-
120 collapsed_shape.back() * static_cast<size_t>(shape[i]) >
-
121 std::numeric_limits<int>::max()) {
-
122 collapsed_shape.push_back(shape[i]);
-
123 collapsed_strides.push_back(strides[i]);
-
124 } else {
-
125 collapsed_shape.back() *= shape[i];
-
126 collapsed_strides.back() = strides[i];
-
127 }
-
128 }
-
129 }
-
130
-
131 return std::make_tuple(collapsed_shape, collapsed_strides);
-
132}
-
-
133
-
134template <typename stride_t>
-
- -
136 const std::vector<int>& shape,
-
137 const std::vector<stride_t>& strides) {
-
138 size_t no_broadcast_data_size = 1;
-
139 size_t f_stride = 1;
-
140 size_t b_stride = 1;
-
141 bool is_row_contiguous = true;
-
142 bool is_col_contiguous = true;
-
143
-
144 for (int i = 0, ri = shape.size() - 1; ri >= 0; i++, ri--) {
-
145 is_col_contiguous &= strides[i] == f_stride || shape[i] == 1;
-
146 is_row_contiguous &= strides[ri] == b_stride || shape[ri] == 1;
-
147 f_stride *= shape[i];
-
148 b_stride *= shape[ri];
-
149 if (strides[i] > 0) {
-
150 no_broadcast_data_size *= shape[i];
-
151 }
-
152 }
-
153
-
154 return std::make_tuple(
-
155 no_broadcast_data_size, is_row_contiguous, is_col_contiguous);
-
156}
-
-
157
-
-
158inline bool is_donatable(const array& in, const array& out) {
-
159 constexpr size_t donation_extra = 16384;
-
160
-
161 return in.is_donatable() && in.itemsize() == out.itemsize() &&
-
162 in.buffer_size() <= out.nbytes() + donation_extra;
-
163}
-
-
164
-
165} // namespace mlx::core
- -
Definition array.h:20
-
const Flags & flags() const
Get the Flags bit-field.
Definition array.h:302
-
const std::vector< size_t > & strides() const
The strides of the array.
Definition array.h:113
-
size_t nbytes() const
The number of bytes in the array.
Definition array.h:89
-
bool is_donatable() const
True indicates the arrays buffer is safe to reuse.
Definition array.h:267
-
const std::vector< int > & shape() const
The shape of the array as a vector of integers.
Definition array.h:99
-
size_t buffer_size() const
Definition array.h:327
-
size_t itemsize() const
The size of the array's datatype in bytes.
Definition array.h:79
-
Definition allocator.h:7
-
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
-
auto check_contiguity(const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:135
-
std::tuple< std::vector< int >, std::vector< std::vector< stride_t > > > collapse_contiguous_dims(const std::vector< int > &shape, const std::vector< std::vector< stride_t > > strides)
Definition utils.h:49
-
std::vector< stride_t > make_contiguous_strides(const std::vector< int > &shape)
Definition utils.h:33
-
bool is_donatable(const array &in, const array &out)
Definition utils.h:158
-
typename std::enable_if_t< is_arrays_v< T... > > enable_for_arrays_t
Definition array.h:589
-
bool row_contiguous
Definition array.h:233
-
- - - - diff --git a/docs/build/html/backend_2metal_2allocator_8h.html b/docs/build/html/backend_2metal_2allocator_8h.html deleted file mode 100644 index a8d38c66..00000000 --- a/docs/build/html/backend_2metal_2allocator_8h.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/allocator.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
allocator.h File Reference
-
-
-
#include <map>
-#include <mutex>
-#include <vector>
-#include "mlx/allocator.h"
-#include "mlx/backend/metal/device.h"
-
-

Go to the source code of this file.

- - - - -

-Classes

class  mlx::core::metal::MetalAllocator
 
- - - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
namespace  mlx::core::metal
 
- - - -

-Functions

MetalAllocatormlx::core::metal::allocator ()
 
-

Variable Documentation

- -

◆ buf

- -
-
- - - - -
MTL::Buffer* buf
-
- -
-
- -

◆ next

- -
-
- - - - -
BufferHolder* next
-
- -
-
- -

◆ prev

- -
-
- - - - -
BufferHolder* prev
-
- -
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2allocator_8h_source.html b/docs/build/html/backend_2metal_2allocator_8h_source.html deleted file mode 100644 index 2fd03631..00000000 --- a/docs/build/html/backend_2metal_2allocator_8h_source.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/allocator.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
allocator.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <map>
-
6#include <mutex>
-
7#include <vector>
-
8
-
9#include "mlx/allocator.h"
- -
11
-
- -
13
- -
15
-
16namespace {
-
17
-
18class BufferCache {
-
19 public:
-
20 BufferCache(MTL::Device* device);
-
21 ~BufferCache();
-
22
-
23 MTL::Buffer* reuse_from_cache(size_t size);
-
24 void recycle_to_cache(MTL::Buffer* buf);
-
25 void release_cached_buffers(size_t min_bytes_to_free);
-
26 size_t cache_size() {
-
27 return pool_size_;
-
28 }
-
29 void clear();
-
30
-
31 private:
-
32 struct BufferHolder {
-
33 public:
-
34 BufferHolder(MTL::Buffer* buf_) : buf(buf_), prev(nullptr), next(nullptr) {}
-
35
-
36 BufferHolder* prev;
-
37 BufferHolder* next;
-
38 MTL::Buffer* buf;
-
39 };
-
40
-
41 void add_at_head(BufferHolder* to_add);
-
42 void remove_from_list(BufferHolder* to_remove);
-
43
-
44 MTL::Device* device_;
-
45
-
46 std::multimap<size_t, BufferHolder*> buffer_pool_;
-
47 BufferHolder* head_;
-
48 BufferHolder* tail_;
-
49 size_t pool_size_;
-
50};
-
51
-
52} // namespace
-
53
-
- -
56 public:
-
57 virtual Buffer malloc(size_t size, bool allow_swap = false) override;
-
58 virtual void free(Buffer buffer) override;
-
59 virtual size_t size(Buffer buffer) const override;
-
- -
61 return active_memory_;
-
62 };
-
-
-
63 size_t get_peak_memory() {
-
64 return peak_memory_;
-
65 };
-
-
- -
67 std::unique_lock lk(mutex_);
-
68 peak_memory_ = 0;
-
69 };
-
-
- -
71 return buffer_cache_.cache_size();
-
72 };
-
-
73 size_t set_cache_limit(size_t limit);
-
74 size_t set_memory_limit(size_t limit, bool relaxed);
- -
76
-
77 private:
-
78 MTL::Device* device_;
- - -
81
-
82 // Caching allocator
-
83 BufferCache buffer_cache_;
-
84
-
85 // Allocation stats
-
86 size_t block_limit_;
-
87 size_t gc_limit_;
-
88 size_t active_memory_{0};
-
89 size_t peak_memory_{0};
-
90 size_t max_pool_size_;
-
91 bool relaxed_{true};
-
92
-
93 std::mutex mutex_;
-
94};
-
-
95
- -
97
-
98} // namespace mlx::core::metal
-
- -
MTL::Buffer * buf
Definition allocator.h:38
-
BufferHolder * prev
Definition allocator.h:36
-
BufferHolder * next
Definition allocator.h:37
- -
Definition allocator.h:39
-
Definition allocator.h:12
-
Definition allocator.h:54
-
virtual void free(Buffer buffer) override
-
size_t set_memory_limit(size_t limit, bool relaxed)
-
void reset_peak_memory()
Definition allocator.h:66
- -
virtual size_t size(Buffer buffer) const override
-
virtual Buffer malloc(size_t size, bool allow_swap=false) override
Allocator for Metal GPUs.
-
size_t get_active_memory()
Definition allocator.h:60
-
size_t get_peak_memory()
Definition allocator.h:63
-
size_t get_cache_memory()
Definition allocator.h:70
-
size_t set_cache_limit(size_t limit)
-
friend MetalAllocator & allocator()
-
Definition allocator.h:12
-
MetalAllocator & allocator()
-
Device & device(mlx::core::Device)
-
- - - - diff --git a/docs/build/html/backend_2metal_2device_8h.html b/docs/build/html/backend_2metal_2device_8h.html deleted file mode 100644 index 28b1ab15..00000000 --- a/docs/build/html/backend_2metal_2device_8h.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/device.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
device.h File Reference
-
-
-
#include <Metal/Metal.hpp>
-#include <dlfcn.h>
-#include <filesystem>
-#include <functional>
-#include <mutex>
-#include <string>
-#include <unordered_map>
-#include <unordered_set>
-#include "mlx/array.h"
-#include "mlx/device.h"
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

struct  mlx::core::metal::CommandEncoder
 
struct  mlx::core::metal::CommandEncoder::ConcurrentContext
 
class  mlx::core::metal::Device
 
- - - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
namespace  mlx::core::metal
 
- - - -

-Typedefs

using mlx::core::metal::MTLFCList
 
- - - - - -

-Functions

std::string mlx::core::metal::get_colocated_mtllib_path (const std::string &lib_name)
 
Devicemlx::core::metal::device (mlx::core::Device)
 
-
- - - - diff --git a/docs/build/html/backend_2metal_2device_8h_source.html b/docs/build/html/backend_2metal_2device_8h_source.html deleted file mode 100644 index 7bb46a5c..00000000 --- a/docs/build/html/backend_2metal_2device_8h_source.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/device.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
device.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <Metal/Metal.hpp>
-
6#include <dlfcn.h>
-
7#include <filesystem>
-
8#include <functional>
-
9#include <mutex>
-
10#include <string>
-
11#include <unordered_map>
-
12#include <unordered_set>
-
13
-
14#include "mlx/array.h"
-
15#include "mlx/device.h"
-
16
-
17namespace fs = std::filesystem;
-
18
-
19namespace mlx::core::metal {
-
20
-
21// Note, this function must be left inline in a header so that it is not
-
22// dynamically linked.
-
-
23inline std::string get_colocated_mtllib_path(const std::string& lib_name) {
-
24 Dl_info info;
-
25 std::string mtllib_path;
-
26 std::string lib_ext = lib_name + ".metallib";
-
27
-
28 int success = dladdr((void*)get_colocated_mtllib_path, &info);
-
29 if (success) {
-
30 auto mtllib = fs::path(info.dli_fname).remove_filename() / lib_ext;
-
31 mtllib_path = mtllib.c_str();
-
32 }
-
33
-
34 return mtllib_path;
-
35}
-
-
36
-
37using MTLFCList =
-
38 std::vector<std::tuple<const void*, MTL::DataType, NS::UInteger>>;
-
39
-
- -
41 CommandEncoder(MTL::CommandBuffer* cbuf);
- - -
44
-
- -
- -
47 enc.concurrent = true;
-
48 }
-
-
- -
50 enc.concurrent = false;
-
51 enc.outputs.insert(
-
52 enc.concurrent_outputs.begin(), enc.concurrent_outputs.end());
-
53 enc.concurrent_outputs.clear();
-
54 }
-
-
55
-
56 private:
-
57 CommandEncoder& enc;
-
58 };
-
-
59
-
-
60 MTL::ComputeCommandEncoder* operator->() {
-
61 return enc;
-
62 }
-
-
63
-
64 void set_input_array(const array& a, int idx, int64_t offset = 0);
-
65 void set_output_array(array& a, int idx, int64_t offset = 0);
-
66 void dispatchThreadgroups(MTL::Size grid_dims, MTL::Size group_dims);
-
67 void dispatchThreads(MTL::Size grid_dims, MTL::Size group_dims);
-
68
-
- -
70 return ConcurrentContext(*this);
-
71 }
-
-
72
- -
74
-
75 private:
-
76 void maybe_split();
-
77
-
78 int num_dispatches{0};
-
79 MTL::CommandBuffer* cbuf;
-
80 MTL::ComputeCommandEncoder* enc;
-
81 bool concurrent{false};
-
82 std::unordered_set<MTL::Resource*> outputs;
-
83 std::unordered_set<MTL::Resource*> concurrent_outputs;
-
84};
-
-
85
-
-
86class Device {
-
87 public:
- -
89 Device(const Device&) = delete;
-
90 Device& operator=(const Device&) = delete;
- -
92
-
-
93 MTL::Device* mtl_device() {
-
94 return device_;
-
95 };
-
-
96
-
97 void new_queue(int index);
-
98 MTL::CommandBuffer* get_command_buffer(int index);
-
99 int get_command_buffer_ops(int index);
- -
101 void commit_command_buffer(int index);
- -
103 void end_encoding(int index);
-
104
- -
106 const std::string& lib_name,
-
107 const std::string& lib_path);
-
108
-
109 // Note, this should remain in the header so that it is not dynamically
-
110 // linked
-
-
111 void register_library(const std::string& lib_name) {
-
112 if (auto it = library_map_.find(lib_name); it == library_map_.end()) {
-
113 register_library(lib_name, get_colocated_mtllib_path(lib_name));
-
114 }
-
115 }
-
-
116
-
117 MTL::Library* get_library(const std::string& name);
-
118
-
119 MTL::Library* get_library(
-
120 const std::string& name,
-
121 const std::string& source_string,
-
122 bool cache = true);
-
123
-
124 MTL::Library* get_library(
-
125 const std::string& name,
-
126 const MTL::StitchedLibraryDescriptor* desc,
-
127 bool cache = true);
-
128
-
129 MTL::Function* get_function(
-
130 const std::string& base_name,
-
131 MTL::Library* mtl_lib,
-
132 const std::string& specialized_name = "",
-
133 const MTLFCList& func_consts = {});
-
134
-
135 MTL::Function* get_function(
-
136 const std::string& base_name,
-
137 const std::string& lib_name = "mlx",
-
138 const std::string& specialized_name = "",
-
139 const MTLFCList& func_consts = {});
-
140
-
141 MTL::ComputePipelineState* get_kernel(
-
142 const std::string& base_name,
-
143 MTL::Library* mtl_lib,
-
144 const std::string& hash_name = "",
-
145 const MTLFCList& func_consts = {},
-
146 const std::vector<MTL::Function*>& linked_functions = {});
-
147
-
148 MTL::ComputePipelineState* get_kernel(
-
149 const std::string& base_name,
-
150 const std::string& lib_name = "mlx",
-
151 const std::string& hash_name = "",
-
152 const MTLFCList& func_consts = {},
-
153 const std::vector<MTL::Function*>& linked_functions = {});
-
154
-
155 MTL::ArgumentEncoder* argument_encoder(
-
156 const std::vector<MTL::ArgumentDescriptor*>& arg_descs) const;
-
157
-
158 private:
-
159 MTL::Library* get_library_cache_(const std::string& name);
-
160
-
161 MTL::Library* get_library_(const std::string& source_string);
-
162 MTL::Library* get_library_(const MTL::StitchedLibraryDescriptor* desc);
-
163
-
164 MTL::Function* get_function_(const std::string& name, MTL::Library* mtl_lib);
-
165
-
166 MTL::Function* get_function_(
-
167 const std::string& name,
-
168 const std::string& specialized_name,
-
169 const MTLFCList& func_consts,
-
170 MTL::Library* mtl_lib);
-
171
-
172 MTL::LinkedFunctions* get_linked_functions_(
-
173 const std::vector<MTL::Function*>& funcs);
-
174
-
175 MTL::ComputePipelineState* get_kernel_(
-
176 const std::string& name,
-
177 const MTL::Function* mtl_function);
-
178
-
179 MTL::ComputePipelineState* get_kernel_(
-
180 const std::string& name,
-
181 const MTL::Function* mtl_function,
-
182 const MTL::LinkedFunctions* linked_functions);
-
183
-
184 MTL::Device* device_;
-
185 std::unordered_map<int32_t, MTL::CommandQueue*> queue_map_;
-
186 std::unordered_map<int32_t, std::pair<int, MTL::CommandBuffer*>> buffer_map_;
-
187 std::unordered_map<int32_t, std::unique_ptr<CommandEncoder>> encoder_map_;
-
188 std::unordered_map<std::string, MTL::ComputePipelineState*> kernel_map_;
-
189 std::unordered_map<std::string, MTL::Library*> library_map_;
-
190 std::mutex mtx_;
-
191};
-
-
192
- -
194
-
195} // namespace mlx::core::metal
- -
Definition array.h:20
-
Definition device.h:86
-
int get_command_buffer_ops(int index)
-
MTL::Device * mtl_device()
Definition device.h:93
-
void register_library(const std::string &lib_name, const std::string &lib_path)
- -
MTL::CommandBuffer * get_command_buffer(int index)
-
void end_encoding(int index)
-
MTL::ComputePipelineState * get_kernel(const std::string &base_name, MTL::Library *mtl_lib, const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})
-
MTL::ArgumentEncoder * argument_encoder(const std::vector< MTL::ArgumentDescriptor * > &arg_descs) const
-
void increment_command_buffer_ops(int index)
-
void new_queue(int index)
-
MTL::Library * get_library(const std::string &name)
-
MTL::Library * get_library(const std::string &name, const MTL::StitchedLibraryDescriptor *desc, bool cache=true)
-
void commit_command_buffer(int index)
-
MTL::Library * get_library(const std::string &name, const std::string &source_string, bool cache=true)
-
void register_library(const std::string &lib_name)
Definition device.h:111
-
MTL::Function * get_function(const std::string &base_name, MTL::Library *mtl_lib, const std::string &specialized_name="", const MTLFCList &func_consts={})
-
Device(const Device &)=delete
-
MTL::Function * get_function(const std::string &base_name, const std::string &lib_name="mlx", const std::string &specialized_name="", const MTLFCList &func_consts={})
-
Device & operator=(const Device &)=delete
- -
MTL::ComputePipelineState * get_kernel(const std::string &base_name, const std::string &lib_name="mlx", const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})
-
CommandEncoder & get_command_encoder(int index)
- -
Definition allocator.h:12
-
std::string get_colocated_mtllib_path(const std::string &lib_name)
Definition device.h:23
-
std::vector< std::tuple< const void *, MTL::DataType, NS::UInteger > > MTLFCList
Definition device.h:37
-
Device & device(mlx::core::Device)
-
Definition device.h:7
- - -
ConcurrentContext(CommandEncoder &enc)
Definition device.h:46
-
Definition device.h:40
-
void dispatchThreads(MTL::Size grid_dims, MTL::Size group_dims)
-
CommandEncoder(MTL::CommandBuffer *cbuf)
-
CommandEncoder & operator=(const CommandEncoder &)=delete
-
ConcurrentContext start_concurrent()
Definition device.h:69
-
void set_output_array(array &a, int idx, int64_t offset=0)
-
void dispatchThreadgroups(MTL::Size grid_dims, MTL::Size group_dims)
- -
MTL::ComputeCommandEncoder * operator->()
Definition device.h:60
-
void set_input_array(const array &a, int idx, int64_t offset=0)
-
CommandEncoder(const CommandEncoder &)=delete
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2bf16_8h.html b/docs/build/html/backend_2metal_2kernels_2bf16_8h.html deleted file mode 100644 index ccea11b1..00000000 --- a/docs/build/html/backend_2metal_2kernels_2bf16_8h.html +++ /dev/null @@ -1,10952 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/bf16.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
bf16.h File Reference
-
-
-
#include <metal_stdlib>
-#include "mlx/backend/metal/kernels/bf16_math.h"
-
-

Go to the source code of this file.

- - - - - - - - -

-Classes

struct  _MLX_BFloat16
 
struct  _MLX_BFloat16::bits_to_bfloat_struct
 
struct  metal::_numeric_limits_impl< bfloat16_t >
 
- - - -

-Namespaces

namespace  metal
 
- - - - - - - - - - - - - - - - - - - -

-Macros

#define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype)
 
#define bfloat_binop_helper(__op__, __operator__, otype, itype, ctype)
 
#define bfloat_binop(_op_, _operator_)
 
#define bfloat_compop(__op__, __operator__)
 
#define bfloat_inplace_op_helper(__op__, __operator__, itype, addr_space)
 
#define bfloat_inplace_op_addr_space_helper(__op__, __operator__, itype)
 
#define bfloat_inplace_op(itype)
 
#define bfloat_inplace_op_helper(__op__, __operator__, addr_space)
 
#define bfloat_inplace_op_addr_space_helper(__op__, __operator__)
 
- - - -

-Typedefs

typedef struct _MLX_BFloat16 bfloat16_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

constexpr METAL_FUNC uint16_t float_to_bfloat_bits (float x)
 
constexpr METAL_FUNC float bfloat_bits_to_float (uint16_t x)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 x)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator+ (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC float operator+ (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator+ (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC float operator+ (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator+ (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator- (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC float operator- (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator- (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC float operator- (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator- (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator* (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC float operator* (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator* (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC float operator* (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator* (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator/ (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC float operator/ (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC float operator/ (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC float operator/ (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC _MLX_BFloat16 operator/ (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC bool operator> (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC bool operator> (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC bool operator> (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC bool operator> (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC bool operator> (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC bool operator> (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC bool operator< (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC bool operator< (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC bool operator< (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC bool operator< (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC bool operator< (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC bool operator< (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC bool operator>= (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC bool operator>= (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC bool operator>= (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC bool operator>= (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC bool operator>= (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC bool operator>= (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC bool operator<= (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC bool operator<= (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC bool operator<= (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC bool operator<= (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC bool operator<= (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC bool operator<= (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC bool operator== (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC bool operator== (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC bool operator== (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC bool operator== (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC bool operator== (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC bool operator== (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, float rhs)
 
constexpr METAL_FUNC bool operator!= (float lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, half rhs)
 
constexpr METAL_FUNC bool operator!= (half lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, int32_t rhs)
 
constexpr METAL_FUNC bool operator!= (int32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, uint32_t rhs)
 
constexpr METAL_FUNC bool operator!= (uint32_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, int64_t rhs)
 
constexpr METAL_FUNC bool operator!= (int64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs, uint64_t rhs)
 
constexpr METAL_FUNC bool operator!= (uint64_t lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC device float & operator+= (device float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC thread float & operator+= (thread float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC threadgroup float & operator+= (threadgroup float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC device float & operator-= (device float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC thread float & operator-= (thread float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC threadgroup float & operator-= (threadgroup float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC device float & operator*= (device float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC thread float & operator*= (thread float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC threadgroup float & operator*= (threadgroup float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC device float & operator/= (device float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC thread float & operator/= (thread float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, float rhs)
 
constexpr METAL_FUNC threadgroup float & operator/= (threadgroup float &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC device half & operator+= (device half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC thread half & operator+= (thread half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC threadgroup half & operator+= (threadgroup half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC device half & operator-= (device half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC thread half & operator-= (thread half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC threadgroup half & operator-= (threadgroup half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC device half & operator*= (device half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC thread half & operator*= (thread half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC threadgroup half & operator*= (threadgroup half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC device half & operator/= (device half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC thread half & operator/= (thread half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, half rhs)
 
constexpr METAL_FUNC threadgroup half & operator/= (threadgroup half &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC device int16_t & operator+= (device int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC thread int16_t & operator+= (thread int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC threadgroup int16_t & operator+= (threadgroup int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC device int16_t & operator-= (device int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC thread int16_t & operator-= (thread int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC threadgroup int16_t & operator-= (threadgroup int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC device int16_t & operator*= (device int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC thread int16_t & operator*= (thread int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC threadgroup int16_t & operator*= (threadgroup int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC device int16_t & operator/= (device int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC thread int16_t & operator/= (thread int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, int16_t rhs)
 
constexpr METAL_FUNC threadgroup int16_t & operator/= (threadgroup int16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC device int32_t & operator+= (device int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC thread int32_t & operator+= (thread int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC threadgroup int32_t & operator+= (threadgroup int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC device int32_t & operator-= (device int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC thread int32_t & operator-= (thread int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC threadgroup int32_t & operator-= (threadgroup int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC device int32_t & operator*= (device int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC thread int32_t & operator*= (thread int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC threadgroup int32_t & operator*= (threadgroup int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC device int32_t & operator/= (device int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC thread int32_t & operator/= (thread int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, int32_t rhs)
 
constexpr METAL_FUNC threadgroup int32_t & operator/= (threadgroup int32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC device int64_t & operator+= (device int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC thread int64_t & operator+= (thread int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC threadgroup int64_t & operator+= (threadgroup int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC device int64_t & operator-= (device int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC thread int64_t & operator-= (thread int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC threadgroup int64_t & operator-= (threadgroup int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC device int64_t & operator*= (device int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC thread int64_t & operator*= (thread int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC threadgroup int64_t & operator*= (threadgroup int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC device int64_t & operator/= (device int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC thread int64_t & operator/= (thread int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, int64_t rhs)
 
constexpr METAL_FUNC threadgroup int64_t & operator/= (threadgroup int64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC device uint16_t & operator+= (device uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC thread uint16_t & operator+= (thread uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC threadgroup uint16_t & operator+= (threadgroup uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC device uint16_t & operator-= (device uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC thread uint16_t & operator-= (thread uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC threadgroup uint16_t & operator-= (threadgroup uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC device uint16_t & operator*= (device uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC thread uint16_t & operator*= (thread uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC threadgroup uint16_t & operator*= (threadgroup uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC device uint16_t & operator/= (device uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC thread uint16_t & operator/= (thread uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, uint16_t rhs)
 
constexpr METAL_FUNC threadgroup uint16_t & operator/= (threadgroup uint16_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC device uint32_t & operator+= (device uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC thread uint32_t & operator+= (thread uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC threadgroup uint32_t & operator+= (threadgroup uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC device uint32_t & operator-= (device uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC thread uint32_t & operator-= (thread uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC threadgroup uint32_t & operator-= (threadgroup uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC device uint32_t & operator*= (device uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC thread uint32_t & operator*= (thread uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC threadgroup uint32_t & operator*= (threadgroup uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC device uint32_t & operator/= (device uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC thread uint32_t & operator/= (thread uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, uint32_t rhs)
 
constexpr METAL_FUNC threadgroup uint32_t & operator/= (threadgroup uint32_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC device uint64_t & operator+= (device uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC thread uint64_t & operator+= (thread uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC threadgroup uint64_t & operator+= (threadgroup uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC device uint64_t & operator-= (device uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC thread uint64_t & operator-= (thread uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC threadgroup uint64_t & operator-= (threadgroup uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC device uint64_t & operator*= (device uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC thread uint64_t & operator*= (thread uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC threadgroup uint64_t & operator*= (threadgroup uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC device uint64_t & operator/= (device uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC thread uint64_t & operator/= (thread uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, uint64_t rhs)
 
constexpr METAL_FUNC threadgroup uint64_t & operator/= (threadgroup uint64_t &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator+= (device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator+= (thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator+= (threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator-= (device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator-= (thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator-= (threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator*= (device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator*= (thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator*= (threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC device _MLX_BFloat16operator/= (device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC thread _MLX_BFloat16operator/= (thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
constexpr METAL_FUNC threadgroup _MLX_BFloat16operator/= (threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
 
METAL_FUNC bool metal::isnan (_MLX_BFloat16 x)
 
- - - - - - - -

-Variables

template<typename T >
static constexpr constant bool can_convert_to_bfloat
 
template<typename T >
static constexpr constant bool can_convert_from_bfloat
 
-

Macro Definition Documentation

- -

◆ bfloat_binop

- -
-
- - - - - - - - - - - -
#define bfloat_binop( _op_,
_operator_ )
-
-Value:
-
_op_, _operator_, _MLX_BFloat16, _MLX_BFloat16, _MLX_BFloat16, float); \
-
bfloat_binop_helper(_op_, _operator_, float, float, float); \
-
bfloat_binop_helper(_op_, _operator_, float, half, float); \
-
bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int32_t, float); \
-
bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint32_t, float); \
-
bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int64_t, float); \
-
bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint64_t, float);
-
#define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype)
Definition bf16.h:141
-
Definition bf16.h:54
-
-
-
- -

◆ bfloat_binop_base

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define bfloat_binop_base( __op__,
__operator__,
otype,
atype,
btype,
ctype )
-
-Value:
constexpr METAL_FUNC otype __operator__(atype lhs, btype rhs) { \
-
return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
-
}
-
-
-
- -

◆ bfloat_binop_helper

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
#define bfloat_binop_helper( __op__,
__operator__,
otype,
itype,
ctype )
-
-Value:
constexpr METAL_FUNC otype __operator__(_MLX_BFloat16 lhs, itype rhs) { \
-
return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
-
} \
-
constexpr METAL_FUNC otype __operator__(itype lhs, _MLX_BFloat16 rhs) { \
-
return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
-
}
-
-
-
- -

◆ bfloat_compop

- -
-
- - - - - - - - - - - -
#define bfloat_compop( __op__,
__operator__ )
-
-Value:
-
__op__, __operator__, bool, _MLX_BFloat16, _MLX_BFloat16, float); \
-
bfloat_binop_helper(__op__, __operator__, bool, float, float); \
-
bfloat_binop_helper(__op__, __operator__, bool, half, float); \
-
bfloat_binop_helper(__op__, __operator__, bool, int32_t, float); \
-
bfloat_binop_helper(__op__, __operator__, bool, uint32_t, float); \
-
bfloat_binop_helper(__op__, __operator__, bool, int64_t, float); \
-
bfloat_binop_helper(__op__, __operator__, bool, uint64_t, float);
-
-
-
- -

◆ bfloat_inplace_op

- -
-
- - - - - - - -
#define bfloat_inplace_op( itype)
-
-Value:
bfloat_inplace_op_addr_space_helper(+, operator+=, itype); \
-
bfloat_inplace_op_addr_space_helper(-, operator-=, itype); \
-
bfloat_inplace_op_addr_space_helper(*, operator*=, itype); \
-
bfloat_inplace_op_addr_space_helper(/, operator/=, itype);
-
#define bfloat_inplace_op_addr_space_helper(__op__, __operator__, itype)
Definition bf16.h:209
-
-
-
- -

◆ bfloat_inplace_op_addr_space_helper [1/2]

- -
-
- - - - - - - - - - - -
#define bfloat_inplace_op_addr_space_helper( __op__,
__operator__ )
-
-Value:
bfloat_inplace_op_helper(__op__, __operator__, device); \
-
bfloat_inplace_op_helper(__op__, __operator__, thread); \
-
bfloat_inplace_op_helper(__op__, __operator__, threadgroup);
-
#define bfloat_inplace_op_helper(__op__, __operator__, itype, addr_space)
Definition bf16.h:197
-
-
-
- -

◆ bfloat_inplace_op_addr_space_helper [2/2]

- -
-
- - - - - - - - - - - - - - - - -
#define bfloat_inplace_op_addr_space_helper( __op__,
__operator__,
itype )
-
-Value:
bfloat_inplace_op_helper(__op__, __operator__, itype, device); \
-
bfloat_inplace_op_helper(__op__, __operator__, itype, thread); \
-
bfloat_inplace_op_helper(__op__, __operator__, itype, threadgroup);
-
-
-
- -

◆ bfloat_inplace_op_helper [1/2]

- -
-
- - - - - - - - - - - - - - - - -
#define bfloat_inplace_op_helper( __op__,
__operator__,
addr_space )
-
-Value:
constexpr METAL_FUNC addr_space _MLX_BFloat16& __operator__( \
-
addr_space _MLX_BFloat16& lhs, _MLX_BFloat16 rhs) { \
-
lhs = static_cast<float>(lhs) __op__ static_cast<float>(rhs); \
-
return lhs; \
-
}
-
-
-
- -

◆ bfloat_inplace_op_helper [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - -
#define bfloat_inplace_op_helper( __op__,
__operator__,
itype,
addr_space )
-
-Value:
constexpr METAL_FUNC addr_space _MLX_BFloat16& __operator__( \
-
addr_space _MLX_BFloat16& lhs, itype rhs) { \
-
lhs = static_cast<float>(lhs) __op__ static_cast<float>(rhs); \
-
return lhs; \
-
} \
-
constexpr METAL_FUNC addr_space itype& __operator__( \
-
addr_space itype& lhs, _MLX_BFloat16 rhs) { \
-
lhs = static_cast<float>(lhs) __op__ static_cast<float>(rhs); \
-
return lhs; \
-
}
-
-
-
-

Typedef Documentation

- -

◆ bfloat16_t

- -
-
- - - - -
typedef struct _MLX_BFloat16 bfloat16_t
-
- -
-
-

Function Documentation

- -

◆ bfloat_bits_to_float()

- -
-
- - - - - -
- - - - - - - -
constexpr METAL_FUNC float bfloat_bits_to_float (uint16_t x)
-
-constexpr
-
- -
-
- -

◆ float_to_bfloat_bits()

- -
-
- - - - - -
- - - - - - - -
constexpr METAL_FUNC uint16_t float_to_bfloat_bits (float x)
-
-constexpr
-
- -
-
- -

◆ operator!=() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator!=() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator!= (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator* (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator* (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator* (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator* (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator* (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [1/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [2/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [3/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [4/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [5/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [6/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [7/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [8/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [9/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator*= (device _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [10/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device float & operator*= (device float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [11/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device half & operator*= (device half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [12/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int16_t & operator*= (device int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [13/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int32_t & operator*= (device int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [14/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int64_t & operator*= (device int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [15/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint16_t & operator*= (device uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [16/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint32_t & operator*= (device uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [17/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint64_t & operator*= (device uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [18/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [19/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [20/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [21/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [22/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [23/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [24/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [25/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [26/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator*= (thread _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [27/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread float & operator*= (thread float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [28/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread half & operator*= (thread half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [29/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int16_t & operator*= (thread int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [30/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int32_t & operator*= (thread int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [31/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int64_t & operator*= (thread int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [32/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint16_t & operator*= (thread uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [33/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint32_t & operator*= (thread uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [34/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint64_t & operator*= (thread uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [35/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [36/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [37/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [38/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [39/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [40/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [41/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [42/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [43/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator*= (threadgroup _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [44/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup float & operator*= (threadgroup float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [45/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup half & operator*= (threadgroup half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [46/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int16_t & operator*= (threadgroup int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [47/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int32_t & operator*= (threadgroup int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [48/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int64_t & operator*= (threadgroup int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [49/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint16_t & operator*= (threadgroup uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [50/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint32_t & operator*= (threadgroup uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator*=() [51/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint64_t & operator*= (threadgroup uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator+ (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator+ (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator+ (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator+ (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator+ (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [1/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [2/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [3/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [4/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [5/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [6/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [7/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [8/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [9/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator+= (device _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [10/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device float & operator+= (device float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [11/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device half & operator+= (device half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [12/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int16_t & operator+= (device int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [13/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int32_t & operator+= (device int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [14/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int64_t & operator+= (device int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [15/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint16_t & operator+= (device uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [16/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint32_t & operator+= (device uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [17/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint64_t & operator+= (device uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [18/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [19/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [20/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [21/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [22/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [23/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [24/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [25/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [26/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator+= (thread _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [27/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread float & operator+= (thread float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [28/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread half & operator+= (thread half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [29/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int16_t & operator+= (thread int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [30/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int32_t & operator+= (thread int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [31/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int64_t & operator+= (thread int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [32/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint16_t & operator+= (thread uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [33/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint32_t & operator+= (thread uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [34/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint64_t & operator+= (thread uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [35/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [36/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [37/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [38/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [39/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [40/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [41/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [42/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [43/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator+= (threadgroup _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [44/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup float & operator+= (threadgroup float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [45/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup half & operator+= (threadgroup half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [46/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int16_t & operator+= (threadgroup int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [47/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int32_t & operator+= (threadgroup int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [48/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int64_t & operator+= (threadgroup int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [49/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint16_t & operator+= (threadgroup uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [50/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint32_t & operator+= (threadgroup uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator+=() [51/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint64_t & operator+= (threadgroup uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [1/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [2/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator- (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [3/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator- (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [4/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [5/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [6/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [7/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [8/14]

- -
-
- - - - - -
- - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (_MLX_BFloat16 x)
-
-constexpr
-
- -
-
- -

◆ operator-() [9/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator- (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [10/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator- (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [11/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [12/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [13/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-() [14/14]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator- (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [1/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [2/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [3/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [4/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [5/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [6/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [7/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [8/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [9/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator-= (device _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [10/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device float & operator-= (device float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [11/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device half & operator-= (device half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [12/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int16_t & operator-= (device int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [13/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int32_t & operator-= (device int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [14/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int64_t & operator-= (device int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [15/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint16_t & operator-= (device uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [16/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint32_t & operator-= (device uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [17/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint64_t & operator-= (device uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [18/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [19/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [20/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [21/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [22/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [23/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [24/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [25/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [26/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator-= (thread _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [27/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread float & operator-= (thread float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [28/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread half & operator-= (thread half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [29/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int16_t & operator-= (thread int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [30/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int32_t & operator-= (thread int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [31/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int64_t & operator-= (thread int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [32/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint16_t & operator-= (thread uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [33/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint32_t & operator-= (thread uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [34/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint64_t & operator-= (thread uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [35/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [36/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [37/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [38/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [39/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [40/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [41/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [42/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [43/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator-= (threadgroup _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [44/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup float & operator-= (threadgroup float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [45/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup half & operator-= (threadgroup half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [46/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int16_t & operator-= (threadgroup int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [47/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int32_t & operator-= (threadgroup int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [48/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int64_t & operator-= (threadgroup int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [49/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint16_t & operator-= (threadgroup uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [50/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint32_t & operator-= (threadgroup uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator-=() [51/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint64_t & operator-= (threadgroup uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator/ (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator/ (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator/ (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC float operator/ (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC _MLX_BFloat16 operator/ (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [1/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [2/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [3/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [4/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [5/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [6/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [7/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [8/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [9/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device _MLX_BFloat16 & operator/= (device _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [10/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device float & operator/= (device float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [11/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device half & operator/= (device half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [12/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int16_t & operator/= (device int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [13/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int32_t & operator/= (device int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [14/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device int64_t & operator/= (device int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [15/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint16_t & operator/= (device uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [16/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint32_t & operator/= (device uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [17/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC device uint64_t & operator/= (device uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [18/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [19/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [20/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [21/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [22/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [23/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [24/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [25/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [26/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread _MLX_BFloat16 & operator/= (thread _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [27/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread float & operator/= (thread float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [28/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread half & operator/= (thread half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [29/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int16_t & operator/= (thread int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [30/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int32_t & operator/= (thread int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [31/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread int64_t & operator/= (thread int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [32/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint16_t & operator/= (thread uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [33/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint32_t & operator/= (thread uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [34/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC thread uint64_t & operator/= (thread uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [35/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [36/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [37/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [38/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
int16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [39/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [40/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [41/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
uint16_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [42/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [43/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup _MLX_BFloat16 & operator/= (threadgroup _MLX_BFloat16 & lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [44/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup float & operator/= (threadgroup float & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [45/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup half & operator/= (threadgroup half & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [46/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int16_t & operator/= (threadgroup int16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [47/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int32_t & operator/= (threadgroup int32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [48/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup int64_t & operator/= (threadgroup int64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [49/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint16_t & operator/= (threadgroup uint16_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [50/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint32_t & operator/= (threadgroup uint32_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator/=() [51/51]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC threadgroup uint64_t & operator/= (threadgroup uint64_t & lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator< (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator<=() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator<= (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator==() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator== (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator> (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [1/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [2/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
float rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [3/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
half rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [4/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
int32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [5/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
int64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [6/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
uint32_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [7/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (_MLX_BFloat16 lhs,
uint64_t rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [8/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (float lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [9/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (half lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [10/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (int32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [11/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (int64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [12/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (uint32_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
- -

◆ operator>=() [13/13]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr METAL_FUNC bool operator>= (uint64_t lhs,
_MLX_BFloat16 rhs )
-
-constexpr
-
- -
-
-

Variable Documentation

- -

◆ can_convert_from_bfloat

- -
-
-
-template<typename T >
- - - - - -
- - - - -
constexpr constant bool can_convert_from_bfloat
-
-staticconstexpr
-
-Initial value:
=
-
!is_same_v<T, _MLX_BFloat16> && is_convertible_v<float, T>
-
-
-
- -

◆ can_convert_to_bfloat

- -
-
-
-template<typename T >
- - - - - -
- - - - -
constexpr constant bool can_convert_to_bfloat
-
-staticconstexpr
-
-Initial value:
=
-
!is_same_v<T, _MLX_BFloat16> && is_convertible_v<T, float>
-
-
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2bf16_8h_source.html b/docs/build/html/backend_2metal_2kernels_2bf16_8h_source.html deleted file mode 100644 index fc69903e..00000000 --- a/docs/build/html/backend_2metal_2kernels_2bf16_8h_source.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/bf16.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
bf16.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_stdlib>
-
6
-
7using namespace metal;
-
8
-
9#if (MLX_METAL_VERSION >= 310) || (__METAL_VERSION__ >= 310)
-
10
-
11typedef bfloat bfloat16_t;
-
12
-
13#else
-
14
-
16// Helpers
-
18
-
-
19constexpr METAL_FUNC uint16_t float_to_bfloat_bits(float x) {
-
20 // Check for nan
-
21 if ((as_type<uint32_t>(x) & ~_fp_encoding_traits<float>::sign_mask) >
-
22 _fp_encoding_traits<float>::inf_mask) {
-
23 return uint16_t(as_type<uint32_t>(0x7FC0));
-
24 }
-
25 // Take bits
-
26 uint32_t float_bits = as_type<uint32_t>(x);
-
27
-
28 // Round to nearest even
-
29 float_bits += ((float_bits >> 16) & 1) + as_type<uint32_t>(0x7FFF);
-
30
-
31 // Take upper 16 bits
-
32 return float_bits >> 16;
-
33}
-
-
34
-
-
35constexpr METAL_FUNC float bfloat_bits_to_float(uint16_t x) {
-
36 // Upper 16 bits are the data and lower 16 bits are 0s
-
37 return as_type<float>((uint32_t)x << 16);
-
38}
-
-
39
-
40struct _MLX_BFloat16;
-
41
-
42template <typename T>
-
43static constexpr constant bool can_convert_to_bfloat =
-
44 !is_same_v<T, _MLX_BFloat16> && is_convertible_v<T, float>;
-
45
-
46template <typename T>
-
47static constexpr constant bool can_convert_from_bfloat =
-
48 !is_same_v<T, _MLX_BFloat16> && is_convertible_v<float, T>;
-
49
-
51// Bfloat struct
-
53
-
- -
56 // Constructors
-
57 uint16_t bits_;
-
58 _MLX_BFloat16() thread = default;
-
59 _MLX_BFloat16() threadgroup = default;
-
60 _MLX_BFloat16() device = default;
-
61 _MLX_BFloat16() constant = default;
-
62
- -
-
64 static constexpr METAL_FUNC bits_to_bfloat_struct bits_to_bfloat() {
-
65 return bits_to_bfloat_struct();
-
66 }
-
-
-
67 constexpr METAL_FUNC _MLX_BFloat16(uint16_t bits, bits_to_bfloat_struct)
-
68 : bits_(bits) {}
-
-
69
-
71 // Conversions to bfloat
-
72
-
73 template <
-
74 typename T,
-
75 typename = typename enable_if<can_convert_to_bfloat<T>>::type>
-
-
76 constexpr METAL_FUNC _MLX_BFloat16(T x) thread
-
77 : bits_(float_to_bfloat_bits(static_cast<float>(x))) {}
-
-
78
-
79 template <
-
80 typename T,
-
81 typename = typename enable_if<can_convert_to_bfloat<T>>::type>
-
-
82 constexpr METAL_FUNC _MLX_BFloat16(T x) threadgroup
-
83 : bits_(float_to_bfloat_bits(static_cast<float>(x))) {}
-
-
84
-
85 template <
-
86 typename T,
-
87 typename = typename enable_if<can_convert_to_bfloat<T>>::type>
-
-
88 constexpr METAL_FUNC _MLX_BFloat16(T x) device
-
89 : bits_(float_to_bfloat_bits(static_cast<float>(x))) {}
-
-
90
-
91 template <
-
92 typename T,
-
93 typename = typename enable_if<can_convert_to_bfloat<T>>::type>
-
-
94 constexpr METAL_FUNC _MLX_BFloat16(T x) constant
-
95 : bits_(float_to_bfloat_bits(static_cast<float>(x))) {}
-
-
96
-
98 // Conversions from bfloat
-
99
-
100 template <
-
101 typename T,
-
102 typename = typename enable_if<can_convert_from_bfloat<T>>::type>
-
-
103 constexpr METAL_FUNC operator T() const thread {
-
104 return static_cast<T>(bfloat_bits_to_float(bits_));
-
105 }
-
-
106
-
107 template <
-
108 typename T,
-
109 typename = typename enable_if<can_convert_from_bfloat<T>>::type>
-
-
110 constexpr METAL_FUNC operator T() const threadgroup {
-
111 return static_cast<T>(bfloat_bits_to_float(bits_));
-
112 }
-
-
113
-
114 template <
-
115 typename T,
-
116 typename = typename enable_if<can_convert_from_bfloat<T>>::type>
-
-
117 constexpr METAL_FUNC operator T() const device {
-
118 return static_cast<T>(bfloat_bits_to_float(bits_));
-
119 }
-
-
120
-
121 template <
-
122 typename T,
-
123 typename = typename enable_if<can_convert_from_bfloat<T>>::type>
-
-
124 constexpr METAL_FUNC operator T() const constant {
-
125 return static_cast<T>(bfloat_bits_to_float(bits_));
-
126 }
-
-
127};
-
-
128
-
130// Bfloat operators
-
132
-
134// Unary ops
-
-
135constexpr METAL_FUNC _MLX_BFloat16 operator-(_MLX_BFloat16 x) {
-
136 return -static_cast<float>(x);
-
137}
-
-
138
-
140// Binary operators
-
-
141#define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype) \
-
142 constexpr METAL_FUNC otype __operator__(atype lhs, btype rhs) { \
-
143 return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
-
144 }
-
-
145
-
-
146#define bfloat_binop_helper(__op__, __operator__, otype, itype, ctype) \
-
147 constexpr METAL_FUNC otype __operator__(_MLX_BFloat16 lhs, itype rhs) { \
-
148 return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
-
149 } \
-
150 constexpr METAL_FUNC otype __operator__(itype lhs, _MLX_BFloat16 rhs) { \
-
151 return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
-
152 }
-
-
153
-
155// Arithmetic Operators
-
-
156#define bfloat_binop(_op_, _operator_) \
-
157 bfloat_binop_base( \
-
158 _op_, _operator_, _MLX_BFloat16, _MLX_BFloat16, _MLX_BFloat16, float); \
-
159 bfloat_binop_helper(_op_, _operator_, float, float, float); \
-
160 bfloat_binop_helper(_op_, _operator_, float, half, float); \
-
161 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int32_t, float); \
-
162 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint32_t, float); \
-
163 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int64_t, float); \
-
164 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint64_t, float);
-
-
165
-
166bfloat_binop(+, operator+);
-
167bfloat_binop(-, operator-);
-
168bfloat_binop(*, operator*);
-
169bfloat_binop(/, operator/);
-
170
-
172// Comparison ops
-
-
173#define bfloat_compop(__op__, __operator__) \
-
174 bfloat_binop_base( \
-
175 __op__, __operator__, bool, _MLX_BFloat16, _MLX_BFloat16, float); \
-
176 bfloat_binop_helper(__op__, __operator__, bool, float, float); \
-
177 bfloat_binop_helper(__op__, __operator__, bool, half, float); \
-
178 bfloat_binop_helper(__op__, __operator__, bool, int32_t, float); \
-
179 bfloat_binop_helper(__op__, __operator__, bool, uint32_t, float); \
-
180 bfloat_binop_helper(__op__, __operator__, bool, int64_t, float); \
-
181 bfloat_binop_helper(__op__, __operator__, bool, uint64_t, float);
-
-
182
-
183bfloat_compop(>, operator>);
-
184bfloat_compop(<, operator<);
-
185bfloat_compop(>=, operator>=);
-
186bfloat_compop(<=, operator<=);
-
187bfloat_compop(==, operator==);
-
188bfloat_compop(!=, operator!=);
-
189
-
190#undef bfloat_compop
-
191#undef bfloat_binop_base
-
192#undef bfloat_binop_helper
-
193#undef bfloat_binop
-
194
-
196// Inplace Operators
-
-
197#define bfloat_inplace_op_helper(__op__, __operator__, itype, addr_space) \
-
198 constexpr METAL_FUNC addr_space _MLX_BFloat16& __operator__( \
-
199 addr_space _MLX_BFloat16& lhs, itype rhs) { \
-
200 lhs = static_cast<float>(lhs) __op__ static_cast<float>(rhs); \
-
201 return lhs; \
-
202 } \
-
203 constexpr METAL_FUNC addr_space itype& __operator__( \
-
204 addr_space itype& lhs, _MLX_BFloat16 rhs) { \
-
205 lhs = static_cast<float>(lhs) __op__ static_cast<float>(rhs); \
-
206 return lhs; \
-
207 }
-
-
208
-
-
209#define bfloat_inplace_op_addr_space_helper(__op__, __operator__, itype) \
-
210 bfloat_inplace_op_helper(__op__, __operator__, itype, device); \
-
211 bfloat_inplace_op_helper(__op__, __operator__, itype, thread); \
-
212 bfloat_inplace_op_helper(__op__, __operator__, itype, threadgroup);
-
-
213
-
-
214#define bfloat_inplace_op(itype) \
-
215 bfloat_inplace_op_addr_space_helper(+, operator+=, itype); \
-
216 bfloat_inplace_op_addr_space_helper(-, operator-=, itype); \
-
217 bfloat_inplace_op_addr_space_helper(*, operator*=, itype); \
-
218 bfloat_inplace_op_addr_space_helper(/, operator/=, itype);
-
-
219
- - - - - - - - -
228
-
229#undef bfloat_inplace_op_helper
-
230#undef bfloat_inplace_op_addr_space_helper
-
231#undef bfloat_inplace_op
-
232
-
233#define bfloat_inplace_op_helper(__op__, __operator__, addr_space) \
-
234 constexpr METAL_FUNC addr_space _MLX_BFloat16& __operator__( \
-
235 addr_space _MLX_BFloat16& lhs, _MLX_BFloat16 rhs) { \
-
236 lhs = static_cast<float>(lhs) __op__ static_cast<float>(rhs); \
-
237 return lhs; \
-
238 }
-
239
-
240#define bfloat_inplace_op_addr_space_helper(__op__, __operator__) \
-
241 bfloat_inplace_op_helper(__op__, __operator__, device); \
-
242 bfloat_inplace_op_helper(__op__, __operator__, thread); \
-
243 bfloat_inplace_op_helper(__op__, __operator__, threadgroup);
-
244
- - - - -
249
-
250#undef bfloat_inplace_op_helper
-
251#undef bfloat_inplace_op_addr_space_helper
-
252
-
254// Bfloat typedef
-
256
- -
258
-
260// Bfloat numeric limits
-
262
-
263#pragma METAL internals : enable
-
264
-
-
265namespace metal {
-
266
-
267template <>
-
-
268struct _numeric_limits_impl<bfloat16_t> : _fp_numeric_limits_impl_base {
-
269 static constexpr constant int digits = 8;
-
270 static constexpr constant int digits10 = 2;
-
271 static constexpr constant int max_digits10 = 4;
-
272 static constexpr constant int radix = 2;
-
273 static constexpr constant int min_exponent = -125;
-
274 static constexpr constant int min_exponent10 = -37;
-
275 static constexpr constant int max_exponent = 128;
-
276 static constexpr constant int max_exponent10 = 38;
-
277
-
-
278 static constexpr bfloat16_t min() {
- -
280 }
-
-
-
281 static constexpr bfloat16_t lowest() {
- -
283 }
-
-
-
284 static constexpr bfloat16_t max() {
- -
286 }
-
-
-
287 static constexpr bfloat16_t epsilon() {
- -
289 }
-
-
-
290 static constexpr bfloat16_t round_error() {
- -
292 }
-
-
-
293 static constexpr bfloat16_t infinity() {
- -
295 }
-
-
-
296 static constexpr bfloat16_t quiet_NaN() {
- -
298 }
-
-
-
299 static constexpr bfloat16_t signaling_NaN() {
- -
301 }
-
-
-
302 static constexpr bfloat16_t denorm_min() {
- -
304 }
-
-
305};
-
-
306
-
-
307METAL_FUNC bool isnan(_MLX_BFloat16 x) {
-
308 return x != x;
-
309}
-
-
310
-
311} // namespace metal
-
-
312
-
313#pragma METAL internals : disable
-
314
-
315#endif
-
316
- -
constexpr METAL_FUNC uint16_t float_to_bfloat_bits(float x)
Definition bf16.h:19
-
#define bfloat_compop(__op__, __operator__)
Definition bf16.h:173
-
constexpr METAL_FUNC float bfloat_bits_to_float(uint16_t x)
Definition bf16.h:35
-
#define bfloat_inplace_op(itype)
Definition bf16.h:214
-
constexpr METAL_FUNC _MLX_BFloat16 operator-(_MLX_BFloat16 x)
Definition bf16.h:135
-
#define bfloat_binop(_op_, _operator_)
Definition bf16.h:156
-
struct _MLX_BFloat16 bfloat16_t
Definition bf16.h:257
-
static constexpr constant bool can_convert_from_bfloat
Definition bf16.h:47
-
static constexpr constant bool can_convert_to_bfloat
Definition bf16.h:43
-
#define bfloat_inplace_op_addr_space_helper(__op__, __operator__, itype)
Definition bf16.h:209
- -
Definition bf16.h:265
-
METAL_FUNC bool isnan(_MLX_BFloat16 x)
Definition bf16.h:307
- -
Definition bf16.h:54
-
constexpr METAL_FUNC _MLX_BFloat16(T x) thread
Definition bf16.h:76
-
uint16_t bits_
Definition bf16.h:57
-
constexpr METAL_FUNC _MLX_BFloat16(uint16_t bits, bits_to_bfloat_struct)
Definition bf16.h:67
-
static constexpr METAL_FUNC bits_to_bfloat_struct bits_to_bfloat()
Definition bf16.h:64
-
_MLX_BFloat16() thread=default
-
constexpr METAL_FUNC _MLX_BFloat16(T x) device
Definition bf16.h:88
-
constexpr METAL_FUNC _MLX_BFloat16(T x) threadgroup
Definition bf16.h:82
-
constexpr METAL_FUNC _MLX_BFloat16(T x) const ant
Definition bf16.h:94
-
static constexpr bfloat16_t infinity()
Definition bf16.h:293
-
static constexpr bfloat16_t denorm_min()
Definition bf16.h:302
-
static constexpr bfloat16_t max()
Definition bf16.h:284
-
static constexpr bfloat16_t epsilon()
Definition bf16.h:287
-
static constexpr bfloat16_t signaling_NaN()
Definition bf16.h:299
-
static constexpr bfloat16_t min()
Definition bf16.h:278
-
static constexpr bfloat16_t lowest()
Definition bf16.h:281
-
static constexpr bfloat16_t quiet_NaN()
Definition bf16.h:296
-
static constexpr bfloat16_t round_error()
Definition bf16.h:290
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2complex_8h.html b/docs/build/html/backend_2metal_2kernels_2complex_8h.html deleted file mode 100644 index f45ed8b0..00000000 --- a/docs/build/html/backend_2metal_2kernels_2complex_8h.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/complex.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
complex.h File Reference
-
-
-
#include <metal_stdlib>
-
-

Go to the source code of this file.

- - - - -

-Classes

struct  complex64_t
 
- - - - - - - - - - - - - - - - - - - - - - - -

-Functions

constexpr complex64_t operator- (complex64_t x)
 
constexpr bool operator>= (complex64_t a, complex64_t b)
 
constexpr bool operator> (complex64_t a, complex64_t b)
 
constexpr bool operator<= (complex64_t a, complex64_t b)
 
constexpr bool operator< (complex64_t a, complex64_t b)
 
constexpr bool operator== (complex64_t a, complex64_t b)
 
constexpr complex64_t operator+ (complex64_t a, complex64_t b)
 
constexpr complex64_t operator- (complex64_t a, complex64_t b)
 
constexpr complex64_t operator* (complex64_t a, complex64_t b)
 
constexpr complex64_t operator/ (complex64_t a, complex64_t b)
 
constexpr complex64_t operator% (complex64_t a, complex64_t b)
 
- - - - - - - -

-Variables

template<typename T >
static constexpr constant bool can_convert_to_complex64
 
template<typename T >
static constexpr constant bool can_convert_from_complex64
 
-

Function Documentation

- -

◆ operator%()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr complex64_t operator% (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator*()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr complex64_t operator* (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator+()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr complex64_t operator+ (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator-() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr complex64_t operator- (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator-() [2/2]

- -
-
- - - - - -
- - - - - - - -
constexpr complex64_t operator- (complex64_t x)
-
-constexpr
-
- -
-
- -

◆ operator/()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr complex64_t operator/ (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator<()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr bool operator< (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator<=()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr bool operator<= (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator==()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr bool operator== (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator>()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr bool operator> (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
- -

◆ operator>=()

- -
-
- - - - - -
- - - - - - - - - - - -
constexpr bool operator>= (complex64_t a,
complex64_t b )
-
-constexpr
-
- -
-
-

Variable Documentation

- -

◆ can_convert_from_complex64

- -
-
-
-template<typename T >
- - - - - -
- - - - -
constexpr constant bool can_convert_from_complex64
-
-staticconstexpr
-
-Initial value:
=
-
!is_same_v<T, complex64_t> &&
-
(is_convertible_v<float, T> || is_convertible_v<bfloat16_t, T>)
-
-
-
- -

◆ can_convert_to_complex64

- -
-
-
-template<typename T >
- - - - - -
- - - - -
constexpr constant bool can_convert_to_complex64
-
-staticconstexpr
-
-Initial value:
=
-
!is_same_v<T, complex64_t> && is_convertible_v<T, float>
-
-
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2complex_8h_source.html b/docs/build/html/backend_2metal_2kernels_2complex_8h_source.html deleted file mode 100644 index 32e2f5b7..00000000 --- a/docs/build/html/backend_2metal_2kernels_2complex_8h_source.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/complex.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
complex.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_stdlib>
-
6
-
7using namespace metal;
-
8
-
9struct complex64_t;
-
10
-
11template <typename T>
-
12static constexpr constant bool can_convert_to_complex64 =
-
13 !is_same_v<T, complex64_t> && is_convertible_v<T, float>;
-
14
-
15template <typename T>
-
16static constexpr constant bool can_convert_from_complex64 =
-
17 !is_same_v<T, complex64_t> &&
-
18 (is_convertible_v<float, T> || is_convertible_v<bfloat16_t, T>);
-
19
-
- -
21 float real;
-
22 float imag;
-
23
-
24 // Constructors
-
25 constexpr complex64_t(float real, float imag) : real(real), imag(imag) {};
-
26 constexpr complex64_t() : real(0), imag(0) {};
-
27 constexpr complex64_t() threadgroup : real(0), imag(0) {};
-
28
-
29 // Conversions to complex64_t
-
30 template <
-
31 typename T,
-
32 typename = typename enable_if<can_convert_to_complex64<T>>::type>
-
33 constexpr complex64_t(T x) thread : real(x), imag(0) {}
-
34
-
35 template <
-
36 typename T,
-
37 typename = typename enable_if<can_convert_to_complex64<T>>::type>
-
38 constexpr complex64_t(T x) threadgroup : real(x), imag(0) {}
-
39
-
40 template <
-
41 typename T,
-
42 typename = typename enable_if<can_convert_to_complex64<T>>::type>
-
43 constexpr complex64_t(T x) device : real(x), imag(0) {}
-
44
-
45 template <
-
46 typename T,
-
47 typename = typename enable_if<can_convert_to_complex64<T>>::type>
-
48 constexpr complex64_t(T x) constant : real(x), imag(0) {}
-
49
-
50 // Conversions from complex64_t
-
51 template <
-
52 typename T,
-
53 typename = typename enable_if<can_convert_from_complex64<T>>::type>
-
-
54 constexpr operator T() const thread {
-
55 return static_cast<T>(real);
-
56 }
-
-
57
-
58 template <
-
59 typename T,
-
60 typename = typename enable_if<can_convert_from_complex64<T>>::type>
-
-
61 constexpr operator T() const threadgroup {
-
62 return static_cast<T>(real);
-
63 }
-
-
64
-
65 template <
-
66 typename T,
-
67 typename = typename enable_if<can_convert_from_complex64<T>>::type>
-
-
68 constexpr operator T() const device {
-
69 return static_cast<T>(real);
-
70 }
-
-
71
-
72 template <
-
73 typename T,
-
74 typename = typename enable_if<can_convert_from_complex64<T>>::type>
-
-
75 constexpr operator T() const constant {
-
76 return static_cast<T>(real);
-
77 }
-
-
78};
-
-
79
-
- -
81 return {-x.real, -x.imag};
-
82}
-
-
83
-
-
84constexpr bool operator>=(complex64_t a, complex64_t b) {
-
85 return (a.real > b.real) || (a.real == b.real && a.imag >= b.imag);
-
86}
-
-
87
-
-
88constexpr bool operator>(complex64_t a, complex64_t b) {
-
89 return (a.real > b.real) || (a.real == b.real && a.imag > b.imag);
-
90}
-
-
91
-
-
92constexpr bool operator<=(complex64_t a, complex64_t b) {
-
93 return operator>=(b, a);
-
94}
-
-
95
-
-
96constexpr bool operator<(complex64_t a, complex64_t b) {
-
97 return operator>(b, a);
-
98}
-
-
99
-
-
100constexpr bool operator==(complex64_t a, complex64_t b) {
-
101 return a.real == b.real && a.imag == b.imag;
-
102}
-
-
103
-
- -
105 return {a.real + b.real, a.imag + b.imag};
-
106}
-
-
107
-
- -
109 return {a.real - b.real, a.imag - b.imag};
-
110}
-
-
111
-
- -
113 return {a.real * b.real - a.imag * b.imag, a.real * b.imag + a.imag * b.real};
-
114}
-
-
115
-
- -
117 auto denom = b.real * b.real + b.imag * b.imag;
-
118 auto x = a.real * b.real + a.imag * b.imag;
-
119 auto y = a.imag * b.real - a.real * b.imag;
-
120 return {x / denom, y / denom};
-
121}
-
-
122
-
- -
124 auto real = a.real - (b.real * static_cast<int64_t>(a.real / b.real));
-
125 auto imag = a.imag - (b.imag * static_cast<int64_t>(a.imag / b.imag));
-
126 if (real != 0 && (real < 0 != b.real < 0)) {
-
127 real += b.real;
-
128 }
-
129 if (imag != 0 && (imag < 0 != b.imag < 0)) {
-
130 imag += b.imag;
-
131 }
-
132 return {real, imag};
-
133}
-
-
constexpr bool operator>(complex64_t a, complex64_t b)
Definition complex.h:88
-
constexpr complex64_t operator-(complex64_t x)
Definition complex.h:80
-
static constexpr constant bool can_convert_to_complex64
Definition complex.h:12
-
constexpr bool operator<(complex64_t a, complex64_t b)
Definition complex.h:96
-
constexpr complex64_t operator*(complex64_t a, complex64_t b)
Definition complex.h:112
-
constexpr complex64_t operator%(complex64_t a, complex64_t b)
Definition complex.h:123
-
constexpr bool operator>=(complex64_t a, complex64_t b)
Definition complex.h:84
-
static constexpr constant bool can_convert_from_complex64
Definition complex.h:16
-
constexpr bool operator==(complex64_t a, complex64_t b)
Definition complex.h:100
-
constexpr complex64_t operator+(complex64_t a, complex64_t b)
Definition complex.h:104
-
constexpr complex64_t operator/(complex64_t a, complex64_t b)
Definition complex.h:116
-
constexpr bool operator<=(complex64_t a, complex64_t b)
Definition complex.h:92
-
Definition bf16.h:265
-
Definition complex.h:20
-
constexpr complex64_t(T x) const ant
Definition complex.h:48
-
constexpr complex64_t()
Definition complex.h:26
-
constexpr complex64_t(T x) thread
Definition complex.h:33
-
constexpr complex64_t(T x) threadgroup
Definition complex.h:38
-
constexpr complex64_t() threadgroup
Definition complex.h:27
-
float imag
Definition complex.h:22
-
float real
Definition complex.h:21
-
constexpr complex64_t(T x) device
Definition complex.h:43
-
constexpr complex64_t(float real, float imag)
Definition complex.h:25
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2fft_8h.html b/docs/build/html/backend_2metal_2kernels_2fft_8h.html deleted file mode 100644 index 01765e30..00000000 --- a/docs/build/html/backend_2metal_2kernels_2fft_8h.html +++ /dev/null @@ -1,913 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
fft.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - -

-Macros

#define MAX_RADIX   13
 
#define MAX_OUTPUT_SIZE   18
 
#define RADIX_STEP(radix, radix_func, num_steps)
 
- - - -

-Typedefs

typedef void(* RadixFunc) (thread float2 *, thread float2 *)
 
- - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<int radix, RadixFunc radix_func>
METAL_FUNC void radix_butterfly (int i, int p, thread float2 *x, thread short *indices, thread float2 *y)
 
template<int radix, RadixFunc radix_func>
METAL_FUNC void radix_n_steps (int i, thread int *p, int m, int n, int num_steps, thread float2 *inputs, thread short *indices, thread float2 *values, threadgroup float2 *buf)
 
template<bool rader = false>
METAL_FUNC void perform_fft (int fft_idx, thread int *p, int m, int n, threadgroup float2 *buf)
 
template<int tg_mem_size, typename in_T , typename out_T >
void fft (const device in_T *in, device out_T *out, constant const int &n, constant const int &batch_size, uint3 elem, uint3 grid)
 
template<int tg_mem_size, typename in_T , typename out_T >
void rader_fft (const device in_T *in, device out_T *out, const device float2 *raders_b_q, const device short *raders_g_q, const device short *raders_g_minus_q, constant const int &n, constant const int &batch_size, constant const int &rader_n, uint3 elem, uint3 grid)
 
template<int tg_mem_size, typename in_T , typename out_T >
void bluestein_fft (const device in_T *in, device out_T *out, const device float2 *w_q, const device float2 *w_k, constant const int &length, constant const int &n, constant const int &batch_size, uint3 elem, uint3 grid)
 
template<int tg_mem_size, typename in_T , typename out_T , int step, bool real = false>
void four_step_fft (const device in_T *in, device out_T *out, constant const int &n1, constant const int &n2, constant const int &batch_size, uint3 elem, uint3 grid)
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

STEEL_CONST bool inv_
 
STEEL_CONST bool is_power_of_2_
 
STEEL_CONST int elems_per_thread_
 
STEEL_CONST int rader_m_
 
STEEL_CONST int radix_13_steps_
 
STEEL_CONST int radix_11_steps_
 
STEEL_CONST int radix_8_steps_
 
STEEL_CONST int radix_7_steps_
 
STEEL_CONST int radix_6_steps_
 
STEEL_CONST int radix_5_steps_
 
STEEL_CONST int radix_4_steps_
 
STEEL_CONST int radix_3_steps_
 
STEEL_CONST int radix_2_steps_
 
STEEL_CONST int rader_13_steps_
 
STEEL_CONST int rader_11_steps_
 
STEEL_CONST int rader_8_steps_
 
STEEL_CONST int rader_7_steps_
 
STEEL_CONST int rader_6_steps_
 
STEEL_CONST int rader_5_steps_
 
STEEL_CONST int rader_4_steps_
 
STEEL_CONST int rader_3_steps_
 
STEEL_CONST int rader_2_steps_
 
-

Macro Definition Documentation

- -

◆ MAX_OUTPUT_SIZE

- -
-
- - - - -
#define MAX_OUTPUT_SIZE   18
-
- -
-
- -

◆ MAX_RADIX

- -
-
- - - - -
#define MAX_RADIX   13
-
- -
-
- -

◆ RADIX_STEP

- -
-
- - - - - - - - - - - - - - - - -
#define RADIX_STEP( radix,
radix_func,
num_steps )
-
-Value:
radix_n_steps<radix, radix_func>( \
-
fft_idx, p, m, n, num_steps, inputs, indices, values, buf);
-
MTL::Buffer * buf
Definition allocator.h:38
-
-
-
-

Typedef Documentation

- -

◆ RadixFunc

- -
-
- - - - -
typedef void(* RadixFunc) (thread float2 *, thread float2 *)
-
- -
-
-

Function Documentation

- -

◆ bluestein_fft()

- -
-
-
-template<int tg_mem_size, typename in_T , typename out_T >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void bluestein_fft (const device in_T * in,
device out_T * out,
const device float2 * w_q,
const device float2 * w_k,
constant const int & length,
constant const int & n,
constant const int & batch_size,
uint3 elem,
uint3 grid )
-
- -
-
- -

◆ fft()

- -
-
-
-template<int tg_mem_size, typename in_T , typename out_T >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void fft (const device in_T * in,
device out_T * out,
constant const int & n,
constant const int & batch_size,
uint3 elem,
uint3 grid )
-
- -
-
- -

◆ four_step_fft()

- -
-
-
-template<int tg_mem_size, typename in_T , typename out_T , int step, bool real = false>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void four_step_fft (const device in_T * in,
device out_T * out,
constant const int & n1,
constant const int & n2,
constant const int & batch_size,
uint3 elem,
uint3 grid )
-
- -
-
- -

◆ perform_fft()

- -
-
-
-template<bool rader = false>
- - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC void perform_fft (int fft_idx,
thread int * p,
int m,
int n,
threadgroup float2 * buf )
-
- -
-
- -

◆ rader_fft()

- -
-
-
-template<int tg_mem_size, typename in_T , typename out_T >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void rader_fft (const device in_T * in,
device out_T * out,
const device float2 * raders_b_q,
const device short * raders_g_q,
const device short * raders_g_minus_q,
constant const int & n,
constant const int & batch_size,
constant const int & rader_n,
uint3 elem,
uint3 grid )
-
- -
-
- -

◆ radix_butterfly()

- -
-
-
-template<int radix, RadixFunc radix_func>
- - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC void radix_butterfly (int i,
int p,
thread float2 * x,
thread short * indices,
thread float2 * y )
-
- -
-
- -

◆ radix_n_steps()

- -
-
-
-template<int radix, RadixFunc radix_func>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC void radix_n_steps (int i,
thread int * p,
int m,
int n,
int num_steps,
thread float2 * inputs,
thread short * indices,
thread float2 * values,
threadgroup float2 * buf )
-
- -
-
-

Variable Documentation

- -

◆ elems_per_thread_

- -
-
- - - - -
STEEL_CONST int elems_per_thread_
-
- -
-
- -

◆ inv_

- -
-
- - - - -
STEEL_CONST bool inv_
-
- -
-
- -

◆ is_power_of_2_

- -
-
- - - - -
STEEL_CONST bool is_power_of_2_
-
- -
-
- -

◆ rader_11_steps_

- -
-
- - - - -
STEEL_CONST int rader_11_steps_
-
- -
-
- -

◆ rader_13_steps_

- -
-
- - - - -
STEEL_CONST int rader_13_steps_
-
- -
-
- -

◆ rader_2_steps_

- -
-
- - - - -
STEEL_CONST int rader_2_steps_
-
- -
-
- -

◆ rader_3_steps_

- -
-
- - - - -
STEEL_CONST int rader_3_steps_
-
- -
-
- -

◆ rader_4_steps_

- -
-
- - - - -
STEEL_CONST int rader_4_steps_
-
- -
-
- -

◆ rader_5_steps_

- -
-
- - - - -
STEEL_CONST int rader_5_steps_
-
- -
-
- -

◆ rader_6_steps_

- -
-
- - - - -
STEEL_CONST int rader_6_steps_
-
- -
-
- -

◆ rader_7_steps_

- -
-
- - - - -
STEEL_CONST int rader_7_steps_
-
- -
-
- -

◆ rader_8_steps_

- -
-
- - - - -
STEEL_CONST int rader_8_steps_
-
- -
-
- -

◆ rader_m_

- -
-
- - - - -
STEEL_CONST int rader_m_
-
- -
-
- -

◆ radix_11_steps_

- -
-
- - - - -
STEEL_CONST int radix_11_steps_
-
- -
-
- -

◆ radix_13_steps_

- -
-
- - - - -
STEEL_CONST int radix_13_steps_
-
- -
-
- -

◆ radix_2_steps_

- -
-
- - - - -
STEEL_CONST int radix_2_steps_
-
- -
-
- -

◆ radix_3_steps_

- -
-
- - - - -
STEEL_CONST int radix_3_steps_
-
- -
-
- -

◆ radix_4_steps_

- -
-
- - - - -
STEEL_CONST int radix_4_steps_
-
- -
-
- -

◆ radix_5_steps_

- -
-
- - - - -
STEEL_CONST int radix_5_steps_
-
- -
-
- -

◆ radix_6_steps_

- -
-
- - - - -
STEEL_CONST int radix_6_steps_
-
- -
-
- -

◆ radix_7_steps_

- -
-
- - - - -
STEEL_CONST int radix_7_steps_
-
- -
-
- -

◆ radix_8_steps_

- -
-
- - - - -
STEEL_CONST int radix_8_steps_
-
- -
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2fft_8h_source.html b/docs/build/html/backend_2metal_2kernels_2fft_8h_source.html deleted file mode 100644 index 19d611d2..00000000 --- a/docs/build/html/backend_2metal_2kernels_2fft_8h_source.html +++ /dev/null @@ -1,648 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
fft.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3// Metal FFT using Stockham's algorithm
-
4//
-
5// References:
-
6// - VkFFT (https://github.com/DTolm/VkFFT)
-
7// - Eric Bainville's excellent page (http://www.bealto.com/gpu-fft.html)
-
8
-
9#include <metal_common>
-
10
- - - -
14
-
15using namespace metal;
-
16
-
17#define MAX_RADIX 13
-
18// Reached when elems_per_thread_ = 6, max_radix = 13
-
19// and some threads have to do 3 radix 6s requiring 18 float2s.
-
20#define MAX_OUTPUT_SIZE 18
-
21
-
22// Specialize for a particular value of N at runtime
-
23STEEL_CONST bool inv_ [[function_constant(0)]];
-
24STEEL_CONST bool is_power_of_2_ [[function_constant(1)]];
-
25STEEL_CONST int elems_per_thread_ [[function_constant(2)]];
-
26// rader_m = n / rader_n
-
27STEEL_CONST int rader_m_ [[function_constant(3)]];
-
28// Stockham steps
-
29STEEL_CONST int radix_13_steps_ [[function_constant(4)]];
-
30STEEL_CONST int radix_11_steps_ [[function_constant(5)]];
-
31STEEL_CONST int radix_8_steps_ [[function_constant(6)]];
-
32STEEL_CONST int radix_7_steps_ [[function_constant(7)]];
-
33STEEL_CONST int radix_6_steps_ [[function_constant(8)]];
-
34STEEL_CONST int radix_5_steps_ [[function_constant(9)]];
-
35STEEL_CONST int radix_4_steps_ [[function_constant(10)]];
-
36STEEL_CONST int radix_3_steps_ [[function_constant(11)]];
-
37STEEL_CONST int radix_2_steps_ [[function_constant(12)]];
-
38// Rader steps
-
39STEEL_CONST int rader_13_steps_ [[function_constant(13)]];
-
40STEEL_CONST int rader_11_steps_ [[function_constant(14)]];
-
41STEEL_CONST int rader_8_steps_ [[function_constant(15)]];
-
42STEEL_CONST int rader_7_steps_ [[function_constant(16)]];
-
43STEEL_CONST int rader_6_steps_ [[function_constant(17)]];
-
44STEEL_CONST int rader_5_steps_ [[function_constant(18)]];
-
45STEEL_CONST int rader_4_steps_ [[function_constant(19)]];
-
46STEEL_CONST int rader_3_steps_ [[function_constant(20)]];
-
47STEEL_CONST int rader_2_steps_ [[function_constant(21)]];
-
48
-
49// See "radix.h" for radix codelets
-
50typedef void (*RadixFunc)(thread float2*, thread float2*);
-
51
-
52// Perform a single radix n butterfly with appropriate twiddles
-
53template <int radix, RadixFunc radix_func>
-
-
54METAL_FUNC void radix_butterfly(
-
55 int i,
-
56 int p,
-
57 thread float2* x,
-
58 thread short* indices,
-
59 thread float2* y) {
-
60 // i: the index in the overall DFT that we're processing.
-
61 // p: the size of the DFTs we're merging at this step.
-
62 // m: how many threads are working on this DFT.
-
63 int k, j;
-
64
-
65 // Use faster bitwise operations when working with powers of two
-
66 constexpr bool radix_p_2 = (radix & (radix - 1)) == 0;
-
67 if (radix_p_2 && is_power_of_2_) {
-
68 constexpr short power = __builtin_ctz(radix);
-
69 k = i & (p - 1);
-
70 j = ((i - k) << power) + k;
-
71 } else {
-
72 k = i % p;
-
73 j = (i / p) * radix * p + k;
-
74 }
-
75
-
76 // Apply twiddles
-
77 if (p > 1) {
-
78 float2 twiddle_1 = get_twiddle(k, radix * p);
-
79 float2 twiddle = twiddle_1;
-
80 x[1] = complex_mul(x[1], twiddle);
-
81
- -
83 for (int t = 2; t < radix; t++) {
-
84 twiddle = complex_mul(twiddle, twiddle_1);
-
85 x[t] = complex_mul(x[t], twiddle);
-
86 }
-
87 }
-
88
-
89 radix_func(x, y);
-
90
- -
92 for (int t = 0; t < radix; t++) {
-
93 indices[t] = j + t * p;
-
94 }
-
95}
-
-
96
-
97// Perform all the radix steps required for a
-
98// particular radix size n.
-
99template <int radix, RadixFunc radix_func>
-
-
100METAL_FUNC void radix_n_steps(
-
101 int i,
-
102 thread int* p,
-
103 int m,
-
104 int n,
-
105 int num_steps,
-
106 thread float2* inputs,
-
107 thread short* indices,
-
108 thread float2* values,
-
109 threadgroup float2* buf) {
-
110 int m_r = n / radix;
-
111 // When combining different sized radices, we have to do
-
112 // multiple butterflies in a single thread.
-
113 // E.g. n = 28 = 4 * 7
-
114 // 4 threads, 7 elems_per_thread
-
115 // All threads do 1 radix7 butterfly.
-
116 // 3 threads do 2 radix4 butterflies.
-
117 // 1 thread does 1 radix4 butterfly.
-
118 int max_radices_per_thread = (elems_per_thread_ + radix - 1) / radix;
-
119
-
120 int index = 0;
-
121 int r_index = 0;
-
122 for (int s = 0; s < num_steps; s++) {
-
123 for (int t = 0; t < max_radices_per_thread; t++) {
-
124 index = i + t * m;
-
125 if (index < m_r) {
-
126 for (int r = 0; r < radix; r++) {
-
127 inputs[r] = buf[index + r * m_r];
-
128 }
-
129 radix_butterfly<radix, radix_func>(
-
130 index, *p, inputs, indices + t * radix, values + t * radix);
-
131 }
-
132 }
-
133
-
134 // Wait until all threads have read their inputs into thread local mem
-
135 threadgroup_barrier(mem_flags::mem_threadgroup);
-
136
-
137 for (int t = 0; t < max_radices_per_thread; t++) {
-
138 index = i + t * m;
-
139 if (index < m_r) {
-
140 for (int r = 0; r < radix; r++) {
-
141 r_index = t * radix + r;
-
142 buf[indices[r_index]] = values[r_index];
-
143 }
-
144 }
-
145 }
-
146
-
147 // Wait until all threads have written back to threadgroup mem
-
148 threadgroup_barrier(mem_flags::mem_threadgroup);
-
149 *p *= radix;
-
150 }
-
151}
-
-
152
-
-
153#define RADIX_STEP(radix, radix_func, num_steps) \
-
154 radix_n_steps<radix, radix_func>( \
-
155 fft_idx, p, m, n, num_steps, inputs, indices, values, buf);
-
-
156
-
157template <bool rader = false>
-
158METAL_FUNC void
-
-
159perform_fft(int fft_idx, thread int* p, int m, int n, threadgroup float2* buf) {
-
160 float2 inputs[MAX_RADIX];
-
161 short indices[MAX_OUTPUT_SIZE];
-
162 float2 values[MAX_OUTPUT_SIZE];
-
163
- - - - - - - - - -
173}
-
-
174
-
175// Each FFT is computed entirely in shared GPU memory.
-
176//
-
177// N is decomposed into radix-n DFTs:
-
178// e.g. 128 = 2 * 4 * 4 * 4
-
179template <int tg_mem_size, typename in_T, typename out_T>
-
-
180[[kernel]] void fft(
-
181 const device in_T* in [[buffer(0)]],
-
182 device out_T* out [[buffer(1)]],
-
183 constant const int& n,
-
184 constant const int& batch_size,
-
185 uint3 elem [[thread_position_in_grid]],
-
186 uint3 grid [[threads_per_grid]]) {
-
187 threadgroup float2 shared_in[tg_mem_size];
-
188
- -
190 in,
-
191 &shared_in[0],
-
192 out,
-
193 n,
-
194 batch_size,
- -
196 elem,
-
197 grid,
-
198 inv_);
-
199
-
200 if (read_writer.out_of_bounds()) {
-
201 return;
-
202 };
-
203 read_writer.load();
-
204
-
205 threadgroup_barrier(mem_flags::mem_threadgroup);
-
206
-
207 int p = 1;
-
208 int fft_idx = elem.z; // Thread index in DFT
-
209 int m = grid.z; // Threads per DFT
-
210 int tg_idx = elem.y * n; // Index of this DFT in threadgroup
-
211 threadgroup float2* buf = &shared_in[tg_idx];
-
212
-
213 perform_fft(fft_idx, &p, m, n, buf);
-
214
-
215 read_writer.write();
-
216}
-
-
217
-
218template <int tg_mem_size, typename in_T, typename out_T>
-
-
219[[kernel]] void rader_fft(
-
220 const device in_T* in [[buffer(0)]],
-
221 device out_T* out [[buffer(1)]],
-
222 const device float2* raders_b_q [[buffer(2)]],
-
223 const device short* raders_g_q [[buffer(3)]],
-
224 const device short* raders_g_minus_q [[buffer(4)]],
-
225 constant const int& n,
-
226 constant const int& batch_size,
-
227 constant const int& rader_n,
-
228 uint3 elem [[thread_position_in_grid]],
-
229 uint3 grid [[threads_per_grid]]) {
-
230 // Use Rader's algorithm to compute fast FFTs
-
231 // when a prime factor `p` of `n` is greater than 13 but
-
232 // has `p - 1` Stockham decomposable into to prime factors <= 13.
-
233 //
-
234 // E.g. n = 102
-
235 // = 2 * 3 * 17
-
236 // . = 2 * 3 * RADER(16)
-
237 // . = 2 * 3 * RADER(4 * 4)
-
238 //
-
239 // In numpy:
-
240 // x_perm = x[g_q]
-
241 // y = np.fft.fft(x_perm) * b_q
-
242 // z = np.fft.ifft(y) + x[0]
-
243 // out = z[g_minus_q]
-
244 // out[0] = x[1:].sum()
-
245 //
-
246 // Where the g_q and g_minus_q are permutations formed
-
247 // by the group under multiplicative modulo N using the
-
248 // primitive root of N and b_q is a constant.
-
249 // See https://en.wikipedia.org/wiki/Rader%27s_FFT_algorithm
-
250 //
-
251 // Rader's uses fewer operations than Bluestein's and so
-
252 // is more accurate. It's also faster in most cases.
-
253 threadgroup float2 shared_in[tg_mem_size];
-
254
- -
256 in,
-
257 &shared_in[0],
-
258 out,
-
259 n,
-
260 batch_size,
- -
262 elem,
-
263 grid,
-
264 inv_);
-
265
-
266 if (read_writer.out_of_bounds()) {
-
267 return;
-
268 };
-
269 read_writer.load();
-
270
-
271 threadgroup_barrier(mem_flags::mem_threadgroup);
-
272
-
273 // The number of the threads we're using for each DFT
-
274 int m = grid.z;
-
275
-
276 int fft_idx = elem.z;
-
277 int tg_idx = elem.y * n;
-
278 threadgroup float2* buf = &shared_in[tg_idx];
-
279
-
280 // rader_m = n / rader_n;
-
281 int rader_m = rader_m_;
-
282
-
283 // We have to load two x_0s for each thread since sometimes
-
284 // elems_per_thread_ crosses a boundary.
-
285 // E.g. with n = 34, rader_n = 17, elems_per_thread_ = 4
-
286 // 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8
-
287 // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-
288 short x_0_index =
-
289 metal::min(fft_idx * elems_per_thread_ / (rader_n - 1), rader_m - 1);
-
290 float2 x_0[2] = {buf[x_0_index], buf[x_0_index + 1]};
-
291
-
292 // Do the Rader permutation in shared memory
-
293 float2 temp[MAX_RADIX];
-
294 int max_index = n - rader_m - 1;
-
295 for (int e = 0; e < elems_per_thread_; e++) {
-
296 short index = metal::min(fft_idx * elems_per_thread_ + e, max_index);
-
297 short g_q = raders_g_q[index / rader_m];
-
298 temp[e] = buf[rader_m + (g_q - 1) * rader_m + index % rader_m];
-
299 }
-
300
-
301 threadgroup_barrier(mem_flags::mem_threadgroup);
-
302
-
303 for (int e = 0; e < elems_per_thread_; e++) {
-
304 short index = metal::min(fft_idx * elems_per_thread_ + e, max_index);
-
305 buf[index + rader_m] = temp[e];
-
306 }
-
307
-
308 threadgroup_barrier(mem_flags::mem_threadgroup);
-
309
-
310 // Rader FFT on x[rader_m:]
-
311 int p = 1;
-
312 perform_fft</*rader=*/true>(fft_idx, &p, m, n - rader_m, buf + rader_m);
-
313
-
314 // x_1 + ... + x_n is computed for us in the first FFT step so
-
315 // we save it in the first rader_m indices of the array for later.
-
316 int x_sum_index = metal::min(fft_idx, rader_m - 1);
-
317 buf[x_sum_index] = buf[rader_m + x_sum_index * (rader_n - 1)];
-
318
-
319 float2 inv = {1.0f, -1.0f};
-
320 for (int e = 0; e < elems_per_thread_; e++) {
-
321 short index = metal::min(fft_idx * elems_per_thread_ + e, max_index);
-
322 short interleaved_index =
-
323 index / rader_m + (index % rader_m) * (rader_n - 1);
-
324 temp[e] = complex_mul(
-
325 buf[rader_m + interleaved_index],
-
326 raders_b_q[interleaved_index % (rader_n - 1)]);
-
327 }
-
328
-
329 threadgroup_barrier(mem_flags::mem_threadgroup);
-
330
-
331 for (int e = 0; e < elems_per_thread_; e++) {
-
332 short index = metal::min(fft_idx * elems_per_thread_ + e, max_index);
-
333 buf[rader_m + index] = temp[e] * inv;
-
334 }
-
335
-
336 threadgroup_barrier(mem_flags::mem_threadgroup);
-
337
-
338 // Rader IFFT on x[rader_m:]
-
339 p = 1;
-
340 perform_fft</*rader=*/true>(fft_idx, &p, m, n - rader_m, buf + rader_m);
-
341
-
342 float2 rader_inv_factor = {1.0f / (rader_n - 1), -1.0f / (rader_n - 1)};
-
343
-
344 for (int e = 0; e < elems_per_thread_; e++) {
-
345 short index = metal::min(fft_idx * elems_per_thread_ + e, n - rader_m - 1);
-
346 short diff_index = index / (rader_n - 1) - x_0_index;
-
347 temp[e] = buf[rader_m + index] * rader_inv_factor + x_0[diff_index];
-
348 }
-
349
-
350 // Use the sum of elements that was computed in the first FFT
-
351 float2 x_sum = buf[x_0_index] + x_0[0];
-
352
-
353 threadgroup_barrier(mem_flags::mem_threadgroup);
-
354
-
355 for (int e = 0; e < elems_per_thread_; e++) {
-
356 short index = metal::min(fft_idx * elems_per_thread_ + e, max_index);
-
357 short g_q_index = index % (rader_n - 1);
-
358 short g_q = raders_g_minus_q[g_q_index];
-
359 short out_index = index - g_q_index + g_q + (index / (rader_n - 1));
-
360 buf[out_index] = temp[e];
-
361 }
-
362
-
363 buf[x_0_index * rader_n] = x_sum;
-
364
-
365 threadgroup_barrier(mem_flags::mem_threadgroup);
-
366
-
367 p = rader_n;
-
368 perform_fft(fft_idx, &p, m, n, buf);
-
369
-
370 read_writer.write();
-
371}
-
-
372
-
373template <int tg_mem_size, typename in_T, typename out_T>
-
-
374[[kernel]] void bluestein_fft(
-
375 const device in_T* in [[buffer(0)]],
-
376 device out_T* out [[buffer(1)]],
-
377 const device float2* w_q [[buffer(2)]],
-
378 const device float2* w_k [[buffer(3)]],
-
379 constant const int& length,
-
380 constant const int& n,
-
381 constant const int& batch_size,
-
382 uint3 elem [[thread_position_in_grid]],
-
383 uint3 grid [[threads_per_grid]]) {
-
384 // Computes arbitrary length FFTs with Bluestein's algorithm
-
385 //
-
386 // In numpy:
-
387 // bluestein_n = next_power_of_2(2*n - 1)
-
388 // out = w_k * np.fft.ifft(np.fft.fft(w_k * in, bluestein_n) * w_q)
-
389 //
-
390 // Where w_k and w_q are precomputed on CPU in high precision as:
-
391 // w_k = np.exp(-1j * np.pi / n * (np.arange(-n + 1, n) ** 2))
-
392 // w_q = np.fft.fft(1/w_k[-n:])
-
393 threadgroup float2 shared_in[tg_mem_size];
-
394
- -
396 in,
-
397 &shared_in[0],
-
398 out,
-
399 n,
-
400 batch_size,
- -
402 elem,
-
403 grid,
-
404 inv_);
-
405
-
406 if (read_writer.out_of_bounds()) {
-
407 return;
-
408 };
-
409 read_writer.load_padded(length, w_k);
-
410
-
411 threadgroup_barrier(mem_flags::mem_threadgroup);
-
412
-
413 int p = 1;
-
414 int fft_idx = elem.z; // Thread index in DFT
-
415 int m = grid.z; // Threads per DFT
-
416 int tg_idx = elem.y * n; // Index of this DFT in threadgroup
-
417 threadgroup float2* buf = &shared_in[tg_idx];
-
418
-
419 // fft
-
420 perform_fft(fft_idx, &p, m, n, buf);
-
421
-
422 float2 inv = float2(1.0f, -1.0f);
-
423 for (int t = 0; t < elems_per_thread_; t++) {
-
424 int index = fft_idx + t * m;
-
425 buf[index] = complex_mul(buf[index], w_q[index]) * inv;
-
426 }
-
427
-
428 threadgroup_barrier(mem_flags::mem_threadgroup);
-
429
-
430 // ifft
-
431 p = 1;
-
432 perform_fft(fft_idx, &p, m, n, buf);
-
433
-
434 read_writer.write_padded(length, w_k);
-
435}
-
-
436
-
437template <
-
438 int tg_mem_size,
-
439 typename in_T,
-
440 typename out_T,
-
441 int step,
-
442 bool real = false>
-
-
443[[kernel]] void four_step_fft(
-
444 const device in_T* in [[buffer(0)]],
-
445 device out_T* out [[buffer(1)]],
-
446 constant const int& n1,
-
447 constant const int& n2,
-
448 constant const int& batch_size,
-
449 uint3 elem [[thread_position_in_grid]],
-
450 uint3 grid [[threads_per_grid]]) {
-
451 // Fast four step FFT implementation for powers of 2.
-
452 int overall_n = n1 * n2;
-
453 int n = step == 0 ? n1 : n2;
-
454 int stride = step == 0 ? n2 : n1;
-
455
-
456 // The number of the threads we're using for each DFT
-
457 int m = grid.z;
-
458 int fft_idx = elem.z;
-
459
-
460 threadgroup float2 shared_in[tg_mem_size];
-
461 threadgroup float2* buf = &shared_in[elem.y * n];
-
462
-
463 using read_writer_t = ReadWriter<in_T, out_T, step, real>;
-
464 read_writer_t read_writer = read_writer_t(
-
465 in,
-
466 &shared_in[0],
-
467 out,
-
468 n,
-
469 batch_size,
- -
471 elem,
-
472 grid,
-
473 inv_);
-
474
-
475 if (read_writer.out_of_bounds()) {
-
476 return;
-
477 };
-
478 read_writer.load_strided(stride, overall_n);
-
479
-
480 threadgroup_barrier(mem_flags::mem_threadgroup);
-
481
-
482 int p = 1;
-
483 perform_fft(fft_idx, &p, m, n, buf);
-
484
-
485 read_writer.write_strided(stride, overall_n);
-
486}
-
-
MTL::Buffer * buf
Definition allocator.h:38
-
STEEL_CONST int radix_7_steps_
Definition fft.h:32
-
METAL_FUNC void perform_fft(int fft_idx, thread int *p, int m, int n, threadgroup float2 *buf)
Definition fft.h:159
-
void bluestein_fft(const device in_T *in, device out_T *out, const device float2 *w_q, const device float2 *w_k, constant const int &length, constant const int &n, constant const int &batch_size, uint3 elem, uint3 grid)
Definition fft.h:374
-
STEEL_CONST bool inv_
Definition fft.h:23
-
METAL_FUNC void radix_butterfly(int i, int p, thread float2 *x, thread short *indices, thread float2 *y)
Definition fft.h:54
-
#define MAX_OUTPUT_SIZE
Definition fft.h:20
-
void fft(const device in_T *in, device out_T *out, constant const int &n, constant const int &batch_size, uint3 elem, uint3 grid)
Definition fft.h:180
-
STEEL_CONST int radix_13_steps_
Definition fft.h:29
-
STEEL_CONST int rader_m_
Definition fft.h:27
-
void four_step_fft(const device in_T *in, device out_T *out, constant const int &n1, constant const int &n2, constant const int &batch_size, uint3 elem, uint3 grid)
Definition fft.h:443
-
void(* RadixFunc)(thread float2 *, thread float2 *)
Definition fft.h:50
-
STEEL_CONST int rader_2_steps_
Definition fft.h:47
-
#define RADIX_STEP(radix, radix_func, num_steps)
Definition fft.h:153
-
STEEL_CONST int radix_3_steps_
Definition fft.h:36
-
#define MAX_RADIX
Definition fft.h:17
-
STEEL_CONST int radix_5_steps_
Definition fft.h:34
-
STEEL_CONST int rader_13_steps_
Definition fft.h:39
-
STEEL_CONST int radix_6_steps_
Definition fft.h:33
-
STEEL_CONST int rader_6_steps_
Definition fft.h:43
-
STEEL_CONST int rader_7_steps_
Definition fft.h:42
-
STEEL_CONST int rader_3_steps_
Definition fft.h:46
-
STEEL_CONST int radix_8_steps_
Definition fft.h:31
-
METAL_FUNC void radix_n_steps(int i, thread int *p, int m, int n, int num_steps, thread float2 *inputs, thread short *indices, thread float2 *values, threadgroup float2 *buf)
Definition fft.h:100
-
STEEL_CONST bool is_power_of_2_
Definition fft.h:24
-
STEEL_CONST int elems_per_thread_
Definition fft.h:25
-
void rader_fft(const device in_T *in, device out_T *out, const device float2 *raders_b_q, const device short *raders_g_q, const device short *raders_g_minus_q, constant const int &n, constant const int &batch_size, constant const int &rader_n, uint3 elem, uint3 grid)
Definition fft.h:219
-
STEEL_CONST int radix_4_steps_
Definition fft.h:35
-
STEEL_CONST int rader_5_steps_
Definition fft.h:44
-
STEEL_CONST int rader_8_steps_
Definition fft.h:41
-
STEEL_CONST int rader_4_steps_
Definition fft.h:45
-
STEEL_CONST int rader_11_steps_
Definition fft.h:40
-
STEEL_CONST int radix_2_steps_
Definition fft.h:37
-
STEEL_CONST int radix_11_steps_
Definition fft.h:30
-
METAL_FUNC void radix_func(thread float *x)
Definition hadamard.h:11
-
Definition bf16.h:265
-
METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
- -
METAL_FUNC void radix5(thread float2 *x, thread float2 *y)
Definition radix.h:69
-
METAL_FUNC void radix4(thread float2 *x, thread float2 *y)
Definition radix.h:56
-
METAL_FUNC void radix11(thread float2 *x, thread float2 *y)
Definition radix.h:201
-
METAL_FUNC void radix3(thread float2 *x, thread float2 *y)
Definition radix.h:41
-
METAL_FUNC float2 complex_mul(float2 a, float2 b)
Definition radix.h:19
-
METAL_FUNC void radix8(thread float2 *x, thread float2 *y)
Definition radix.h:151
-
METAL_FUNC void radix7(thread float2 *x, thread float2 *y)
Definition radix.h:122
-
METAL_FUNC void radix2(thread float2 *x, thread float2 *y)
Definition radix.h:36
-
METAL_FUNC void radix13(thread float2 *x, thread float2 *y)
Definition radix.h:290
-
METAL_FUNC float2 get_twiddle(int k, int p)
Definition radix.h:29
-
METAL_FUNC void radix6(thread float2 *x, thread float2 *y)
Definition radix.h:96
- - -
#define STEEL_PRAGMA_UNROLL
Definition defines.h:4
-
#define STEEL_CONST
Definition defines.h:3
-
Definition readwrite.h:35
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h.html b/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h.html deleted file mode 100644 index 97187d1a..00000000 --- a/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/ops.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
ops.h File Reference
-
-
-
#include <metal_atomic>
-#include <metal_simdgroup>
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Classes

union  bool4_or_uint
 
struct  None
 
struct  And< U >
 
struct  Or< U >
 
struct  Sum< U >
 
struct  Prod< U >
 
struct  Min< U >
 
struct  Max< U >
 
- - - -

-Macros

#define DEFINE_SIMD_REDUCE()
 
- - - -

-Variables

static constant constexpr const uint8_t simd_size = 32
 
-

Macro Definition Documentation

- -

◆ DEFINE_SIMD_REDUCE

- -
-
- - - - - - - -
#define DEFINE_SIMD_REDUCE()
-
-Value:
template <typename T, metal::enable_if_t<sizeof(T) < 8, bool> = true> \
-
T simd_reduce(T val) { \
-
return simd_reduce_impl(val); \
-
} \
-
\
-
template <typename T, metal::enable_if_t<sizeof(T) == 8, bool> = true> \
-
T simd_reduce(T val) { \
-
for (short i = simd_size / 2; i > 0; i /= 2) { \
-
val = operator()(val, simd_shuffle_down(val, i)); \
-
} \
-
return val; \
-
}
-
static constant constexpr const uint8_t simd_size
Definition ops.h:22
-
uint64_t simd_shuffle_down(uint64_t data, uint16_t delta)
Definition utils.h:442
-
-
-
-

Variable Documentation

- -

◆ simd_size

- -
-
- - - - - -
- - - - -
constant constexpr const uint8_t simd_size = 32
-
-staticconstexpr
-
- -
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h_source.html b/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h_source.html deleted file mode 100644 index 9ecdb730..00000000 --- a/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h_source.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/ops.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
ops.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_atomic>
-
6#include <metal_simdgroup>
-
7
-
-
8#define DEFINE_SIMD_REDUCE() \
-
9 template <typename T, metal::enable_if_t<sizeof(T) < 8, bool> = true> \
-
10 T simd_reduce(T val) { \
-
11 return simd_reduce_impl(val); \
-
12 } \
-
13 \
-
14 template <typename T, metal::enable_if_t<sizeof(T) == 8, bool> = true> \
-
15 T simd_reduce(T val) { \
-
16 for (short i = simd_size / 2; i > 0; i /= 2) { \
-
17 val = operator()(val, simd_shuffle_down(val, i)); \
-
18 } \
-
19 return val; \
-
20 }
-
-
21
-
22static constant constexpr const uint8_t simd_size = 32;
-
23
-
- -
25 bool4 b;
-
26 unsigned int i;
-
27};
-
-
28
-
-
29struct None {
-
30 template <typename T>
-
-
31 void atomic_update(device mlx_atomic<T>* out, T val, size_t offset = 0) {
-
32 mlx_atomic_store_explicit(out, val, offset);
-
33 }
-
-
34};
-
-
35
-
36template <typename U = bool>
-
-
37struct And {
- -
39
-
40 bool simd_reduce_impl(bool val) {
-
41 return simd_all(val);
-
42 }
-
43
-
44 static constexpr constant bool init = true;
-
45
-
46 void atomic_update(
-
47 device mlx_atomic<unsigned int>* out,
-
48 bool val,
-
49 int elem_idx,
-
50 size_t offset = 0) {
-
51 if (!val) {
-
52 bool4_or_uint update;
-
53 update.b = {true, true, true, true};
-
54 update.b[elem_idx] = false;
-
55 mlx_atomic_fetch_and_explicit(out, update.i, offset);
-
56 }
-
57 }
-
58
-
59 void
-
60 atomic_update(device mlx_atomic<bool>* out, bool val, size_t offset = 0) {
-
61 if (!val) {
-
62 mlx_atomic_store_explicit(out, val, offset);
-
63 }
-
64 }
-
65
-
66 // Non atomic update
-
67 void update(device bool* out, bool val) {
-
68 *out &= val;
-
69 }
-
70
-
71 // Operator
-
72 bool operator()(bool a, bool b) {
-
73 return a && b;
-
74 }
-
75};
-
-
76
-
77template <typename U = bool>
-
-
78struct Or {
- -
80
-
81 bool simd_reduce_impl(bool val) {
-
82 return simd_any(val);
-
83 }
-
84
-
85 static constexpr constant bool init = false;
-
86
-
87 void atomic_update(
-
88 device mlx_atomic<unsigned int>* out,
-
89 bool val,
-
90 int elem_idx,
-
91 size_t offset = 0) {
-
92 if (val) {
-
93 bool4_or_uint update;
-
94 update.b = {false, false, false, false};
-
95 update.b[elem_idx] = true;
-
96 mlx_atomic_fetch_or_explicit(out, update.i, offset);
-
97 }
-
98 }
-
99
-
100 void
-
101 atomic_update(device mlx_atomic<bool>* out, bool val, size_t offset = 0) {
-
102 if (val) {
-
103 mlx_atomic_store_explicit(out, val, offset);
-
104 }
-
105 }
-
106
-
107 // Non atomic update
-
108 void update(device bool* out, bool val) {
-
109 *out |= val;
-
110 }
-
111
-
112 // Operator
-
113 bool operator()(bool a, bool b) {
-
114 return a || b;
-
115 }
-
116};
-
-
117
-
118template <typename U>
-
-
119struct Sum {
- -
121
-
122 template <typename T>
-
123 T simd_reduce_impl(T val) {
-
124 return simd_sum(val);
-
125 }
-
126
-
127 static constexpr constant U init = U(0);
-
128
-
129 template <typename T>
-
130 void atomic_update(device mlx_atomic<T>* out, T val, size_t offset = 0) {
-
131 mlx_atomic_fetch_add_explicit(out, val, offset);
-
132 }
-
133
-
134 // Operator
-
135 U operator()(U a, U b) {
-
136 return a + b;
-
137 }
-
138};
-
-
139
-
140template <typename U>
-
-
141struct Prod {
- -
143
-
144 template <typename T>
-
145 T simd_reduce_impl(T val) {
-
146 return simd_product(val);
-
147 }
-
148
-
149 static constexpr constant U init = U(1);
-
150
-
151 template <typename T>
-
152 void atomic_update(device mlx_atomic<T>* out, T val, size_t offset = 0) {
-
153 mlx_atomic_fetch_mul_explicit(out, val, offset);
-
154 }
-
155
-
156 // Operator
-
157 U operator()(U a, U b) {
-
158 return a * b;
-
159 }
-
160};
-
-
161
-
162template <typename U>
-
-
163struct Min {
- -
165
-
166 template <typename T>
-
167 T simd_reduce_impl(T val) {
-
168 return simd_min(val);
-
169 }
-
170
-
171 static constexpr constant U init = Limits<U>::max;
-
172
-
173 template <typename T>
-
174 void atomic_update(device mlx_atomic<T>* out, T val, size_t offset = 0) {
-
175 mlx_atomic_fetch_min_explicit(out, val, offset);
-
176 }
-
177
-
178 // Operator
-
179 U operator()(U a, U b) {
-
180 return a < b ? a : b;
-
181 }
-
182};
-
-
183
-
184template <typename U>
-
-
185struct Max {
- -
187
-
188 template <typename T>
-
189 T simd_reduce_impl(T val) {
-
190 return simd_max(val);
-
191 }
-
192
-
193 static constexpr constant U init = Limits<U>::min;
-
194
-
195 template <typename T>
-
196 void atomic_update(device mlx_atomic<T>* out, T val, size_t offset = 0) {
-
197 mlx_atomic_fetch_max_explicit(out, val, offset);
-
198 }
-
199
-
200 // Operator
-
201 U operator()(U a, U b) {
-
202 return a > b ? a : b;
-
203 }
-
204};
-
-
METAL_FUNC void mlx_atomic_store_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:46
-
METAL_FUNC void mlx_atomic_fetch_and_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:51
-
METAL_FUNC void mlx_atomic_fetch_min_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:67
-
METAL_FUNC void mlx_atomic_fetch_add_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:83
-
METAL_FUNC void mlx_atomic_fetch_or_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:59
-
METAL_FUNC void mlx_atomic_fetch_max_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:75
-
METAL_FUNC void mlx_atomic_fetch_mul_explicit(device mlx_atomic< T > *object, T val, size_t offset)
Definition atomic.h:91
-
static constant constexpr const uint8_t simd_size
Definition ops.h:22
-
#define DEFINE_SIMD_REDUCE()
Definition ops.h:8
-
Definition ops.h:37
-
Definition utils.h:17
-
Definition ops.h:185
-
b a
Definition ops.h:202
-
Definition ops.h:163
-
Definition ops.h:29
-
void atomic_update(device mlx_atomic< T > *out, T val, size_t offset=0)
Definition ops.h:31
-
Definition ops.h:78
-
Definition ops.h:141
-
Definition ops.h:119
-
Definition atomic.h:25
-
Definition ops.h:24
-
bool4 b
Definition ops.h:25
-
unsigned int i
Definition ops.h:26
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html b/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html deleted file mode 100644 index 2f5a4eaa..00000000 --- a/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/transforms.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
transforms.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - - - - - -

-Classes

struct  mlx::steel::TransformNone< OutT, InT >
 
struct  mlx::steel::TransformAdd< OutT, InT >
 
struct  mlx::steel::TransformAxpby< OutT, InT >
 
struct  mlx::steel::AccumHelper< T >
 
struct  mlx::steel::BlockSwizzle
 
- - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::steel
 
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h_source.html b/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h_source.html deleted file mode 100644 index 13d88e7f..00000000 --- a/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h_source.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/transforms.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
transforms.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#pragma once
-
4
- -
6
-
8// Transforms and Epilogues
-
10
-
11namespace mlx {
-
12namespace steel {
-
13
-
14template <typename OutT, typename InT>
-
- -
-
16 static METAL_FUNC OutT apply(InT x) {
-
17 return static_cast<OutT>(x);
-
18 }
-
-
19
-
-
20 static METAL_FUNC OutT apply(InT x, OutT) {
-
21 return static_cast<OutT>(x);
-
22 }
-
-
23};
-
-
24
-
25template <typename OutT, typename InT>
-
- -
27 TransformAdd(const float, const float) {}
-
28
-
-
29 static METAL_FUNC OutT apply(InT x) {
-
30 return static_cast<OutT>(x);
-
31 }
-
-
32
-
-
33 static METAL_FUNC OutT apply(InT x, OutT c) {
-
34 return static_cast<OutT>(x) + c;
-
35 }
-
-
36};
-
-
37
-
38template <typename OutT, typename InT>
-
- -
40 const float alpha;
-
41 const float beta;
-
42
-
-
43 TransformAxpby(const float alpha_, const float beta_)
-
44 : alpha(alpha_), beta(beta_) {}
-
-
45
-
-
46 static METAL_FUNC OutT apply(InT x) {
-
47 return static_cast<OutT>(x);
-
48 }
-
-
49
-
-
50 METAL_FUNC OutT apply(InT x, OutT c) const {
-
51 return static_cast<OutT>(x * alpha + (beta * c));
-
52 }
-
-
53};
-
-
54
-
55template <typename T>
-
- -
57 typedef float accum_type;
-
58};
-
-
59
-
- -
61 static METAL_FUNC int2
-
-
62 swizzle(uint3 tid [[threadgroup_position_in_grid]], const int swizzle_log) {
-
63 const int tid_x = (tid.x) >> swizzle_log;
-
64 const int tid_y =
-
65 ((tid.y) << swizzle_log) + ((tid.x) & ((1 << swizzle_log) - 1));
-
66 return int2(tid_x, tid_y);
-
67 }
-
-
68};
-
-
69
-
70} // namespace steel
-
71} // namespace mlx
- -
Definition allocator.h:7
-
Definition transforms.h:56
-
float accum_type
Definition transforms.h:57
-
Definition transforms.h:60
-
static METAL_FUNC int2 swizzle(uint3 tid, const int swizzle_log)
Definition transforms.h:62
-
Definition transforms.h:26
-
static METAL_FUNC OutT apply(InT x, OutT c)
Definition transforms.h:33
-
TransformAdd(const float, const float)
Definition transforms.h:27
-
static METAL_FUNC OutT apply(InT x)
Definition transforms.h:29
-
Definition transforms.h:39
-
static METAL_FUNC OutT apply(InT x)
Definition transforms.h:46
-
const float beta
Definition transforms.h:41
-
METAL_FUNC OutT apply(InT x, OutT c) const
Definition transforms.h:50
-
const float alpha
Definition transforms.h:40
-
TransformAxpby(const float alpha_, const float beta_)
Definition transforms.h:43
-
Definition transforms.h:15
-
static METAL_FUNC OutT apply(InT x)
Definition transforms.h:16
-
static METAL_FUNC OutT apply(InT x, OutT)
Definition transforms.h:20
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h.html b/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h.html deleted file mode 100644 index 2c9b6e7a..00000000 --- a/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/utils.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
utils.h File Reference
-
-
-
#include <metal_stdlib>
-
-

Go to the source code of this file.

- - - - - - -

-Functions

METAL_FUNC ulong2 elem_to_loc_broadcast (uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
 
METAL_FUNC ulong3 elem_to_loc_broadcast (uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim)
 
-

Function Documentation

- -

◆ elem_to_loc_broadcast() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC ulong3 elem_to_loc_broadcast (uint elem,
constant const int * shape,
constant const size_t * a_strides,
constant const size_t * b_strides,
constant const size_t * c_strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc_broadcast() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC ulong2 elem_to_loc_broadcast (uint elem,
constant const int * shape,
constant const size_t * a_strides,
constant const size_t * b_strides,
int ndim )
-
- -
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h_source.html b/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h_source.html deleted file mode 100644 index c03062f7..00000000 --- a/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/utils.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
utils.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_stdlib>
-
6
-
-
7METAL_FUNC ulong2 elem_to_loc_broadcast(
-
8 uint elem,
-
9 constant const int* shape,
-
10 constant const size_t* a_strides,
-
11 constant const size_t* b_strides,
-
12 int ndim) {
-
13 ulong loc_a{0};
-
14 ulong loc_b{0};
-
15 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
-
16 int pos_in_dim = (elem % shape[i]);
-
17 elem /= shape[i];
-
18 loc_a += pos_in_dim * a_strides[i];
-
19 loc_b += pos_in_dim * b_strides[i];
-
20 }
-
21 return ulong2(loc_a, loc_b);
-
22}
-
-
23
-
-
24METAL_FUNC ulong3 elem_to_loc_broadcast(
-
25 uint elem,
-
26 constant const int* shape,
-
27 constant const size_t* a_strides,
-
28 constant const size_t* b_strides,
-
29 constant const size_t* c_strides,
-
30 int ndim) {
-
31 ulong loc_a{0};
-
32 ulong loc_b{0};
-
33 ulong loc_c{0};
-
34 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
-
35 int pos_in_dim = (elem % shape[i]);
-
36 elem /= shape[i];
-
37 loc_a += pos_in_dim * a_strides[i];
-
38 loc_b += pos_in_dim * b_strides[i];
-
39 loc_c += pos_in_dim * c_strides[i];
-
40 }
-
41 return ulong3(loc_a, loc_b, loc_c);
-
42}
-
-
METAL_FUNC ulong2 elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
Definition utils.h:7
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2utils_8h.html b/docs/build/html/backend_2metal_2kernels_2utils_8h.html deleted file mode 100644 index 5425dc41..00000000 --- a/docs/build/html/backend_2metal_2kernels_2utils_8h.html +++ /dev/null @@ -1,998 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/utils.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
utils.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  Limits< U >
 
struct  Limits< uint8_t >
 
struct  Limits< uint16_t >
 
struct  Limits< uint32_t >
 
struct  Limits< uint64_t >
 
struct  Limits< int8_t >
 
struct  Limits< int16_t >
 
struct  Limits< int32_t >
 
struct  Limits< int64_t >
 
struct  Limits< half >
 
struct  Limits< float >
 
struct  Limits< bfloat16_t >
 
struct  Limits< bool >
 
struct  Limits< complex64_t >
 
struct  looped_elem_to_loc< dim, offset_t >
 
struct  looped_elem_to_loc< 1, offset_t >
 
struct  looped_elem_to_loc< 0, offset_t >
 
- - - - - - - -

-Macros

#define instantiate_default_limit(type)
 
#define instantiate_float_limit(type)
 
#define MLX_MTL_PRAGMA_UNROLL   _Pragma("clang loop unroll(full)")
 
- - - -

-Typedefs

typedef half float16_t
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename stride_t >
METAL_FUNC stride_t elem_to_loc (uint elem, device const int *shape, device const stride_t *strides, int ndim)
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc (uint elem, constant const int *shape, constant const stride_t *strides, int ndim)
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc (stride_t elem, device const int *shape, device const stride_t *strides, int ndim)
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc (stride_t elem, constant const int *shape, constant const stride_t *strides, int ndim)
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc (uint3 elem, constant const int *shape, constant const stride_t *strides, int ndim)
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc_1 (uint elem, constant const stride_t &stride)
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc_2 (uint2 elem, constant const stride_t strides[2])
 
template<typename stride_t >
METAL_FUNC stride_t elem_to_loc_3 (uint3 elem, constant const stride_t strides[3])
 
template<int NDIM>
METAL_FUNC size_t elem_to_loc_nd (uint elem, device const int *shape, device const size_t *strides)
 
template<int NDIM>
METAL_FUNC size_t elem_to_loc_nd (uint3 elem, constant const int shape[NDIM], constant const size_t strides[NDIM])
 
template<int NDIM>
METAL_FUNC int64_t elem_to_loc_nd (uint elem, constant const int shape[NDIM], constant const int64_t strides[NDIM])
 
template<int NDIM>
METAL_FUNC int64_t elem_to_loc_nd (uint3 elem, constant const int shape[NDIM], constant const int64_t strides[NDIM])
 
METAL_FUNC uint2 elem_to_loc_2_nd (uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
 
METAL_FUNC uint3 elem_to_loc_3_nd (uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim)
 
template<int NDIM>
METAL_FUNC uint2 elem_to_loc_2_nd (uint3 elem, constant const int shape[NDIM], constant const size_t a_strides[NDIM], constant const size_t b_strides[NDIM])
 
template<int NDIM>
METAL_FUNC uint3 elem_to_loc_3_nd (uint3 elem, constant const int shape[NDIM], constant const size_t a_strides[NDIM], constant const size_t b_strides[NDIM], constant const size_t c_strides[NDIM])
 
template<typename T , typename U >
ceildiv (T N, U M)
 Compute ceil((float)N/(float)M)
 
float log1p (float x)
 
bfloat16_t log1p (bfloat16_t x)
 
uint64_t simd_shuffle_down (uint64_t data, uint16_t delta)
 
int64_t simd_shuffle_down (int64_t data, uint16_t delta)
 
bool simd_shuffle_down (bool data, uint16_t delta)
 
complex64_t simd_shuffle_down (complex64_t data, uint16_t delta)
 
-

Macro Definition Documentation

- -

◆ instantiate_default_limit

- -
-
- - - - - - - -
#define instantiate_default_limit( type)
-
-Value:
template <> \
-
struct Limits<type> { \
-
static constexpr constant type max = metal::numeric_limits<type>::max(); \
-
static constexpr constant type min = metal::numeric_limits<type>::min(); \
-
static constexpr constant type finite_max = \
-
metal::numeric_limits<type>::max(); \
-
static constexpr constant type finite_min = \
-
metal::numeric_limits<type>::min(); \
-
};
-
Definition utils.h:17
-
static const constant U max
Definition utils.h:18
-
static const constant U finite_max
Definition utils.h:20
-
static const constant U min
Definition utils.h:19
-
static const constant U finite_min
Definition utils.h:21
-
-
-
- -

◆ instantiate_float_limit

- -
-
- - - - - - - -
#define instantiate_float_limit( type)
-
-Value:
template <> \
-
struct Limits<type> { \
-
static constexpr constant type max = \
-
metal::numeric_limits<type>::infinity(); \
-
static constexpr constant type min = \
-
-metal::numeric_limits<type>::infinity(); \
-
static constexpr constant type finite_max = \
-
metal::numeric_limits<type>::max(); \
-
static constexpr constant type finite_min = \
-
-metal::numeric_limits<type>::max(); \
-
};
-
-
-
- -

◆ MLX_MTL_PRAGMA_UNROLL

- -
-
- - - - -
#define MLX_MTL_PRAGMA_UNROLL   _Pragma("clang loop unroll(full)")
-
- -
-
-

Typedef Documentation

- -

◆ float16_t

- -
-
- - - - -
typedef half float16_t
-
- -
-
-

Function Documentation

- -

◆ ceildiv()

- -
-
-
-template<typename T , typename U >
- - - - - -
- - - - - - - - - - - -
T ceildiv (T N,
U M )
-
-inline
-
- -

Compute ceil((float)N/(float)M)

- -
-
- -

◆ elem_to_loc() [1/5]

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc (stride_t elem,
constant const int * shape,
constant const stride_t * strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc() [2/5]

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc (stride_t elem,
device const int * shape,
device const stride_t * strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc() [3/5]

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc (uint elem,
constant const int * shape,
constant const stride_t * strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc() [4/5]

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc (uint elem,
device const int * shape,
device const stride_t * strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc() [5/5]

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc (uint3 elem,
constant const int * shape,
constant const stride_t * strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc_1()

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc_1 (uint elem,
constant const stride_t & stride )
-
- -
-
- -

◆ elem_to_loc_2()

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc_2 (uint2 elem,
constant const stride_t strides[2] )
-
- -
-
- -

◆ elem_to_loc_2_nd() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC uint2 elem_to_loc_2_nd (uint3 elem,
constant const int * shape,
constant const size_t * a_strides,
constant const size_t * b_strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc_2_nd() [2/2]

- -
-
-
-template<int NDIM>
- - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC uint2 elem_to_loc_2_nd (uint3 elem,
constant const int shape[NDIM],
constant const size_t a_strides[NDIM],
constant const size_t b_strides[NDIM] )
-
- -
-
- -

◆ elem_to_loc_3()

- -
-
-
-template<typename stride_t >
- - - - - - - - - - - -
METAL_FUNC stride_t elem_to_loc_3 (uint3 elem,
constant const stride_t strides[3] )
-
- -
-
- -

◆ elem_to_loc_3_nd() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC uint3 elem_to_loc_3_nd (uint3 elem,
constant const int * shape,
constant const size_t * a_strides,
constant const size_t * b_strides,
constant const size_t * c_strides,
int ndim )
-
- -
-
- -

◆ elem_to_loc_3_nd() [2/2]

- -
-
-
-template<int NDIM>
- - - - - - - - - - - - - - - - - - - - - - - - - - -
METAL_FUNC uint3 elem_to_loc_3_nd (uint3 elem,
constant const int shape[NDIM],
constant const size_t a_strides[NDIM],
constant const size_t b_strides[NDIM],
constant const size_t c_strides[NDIM] )
-
- -
-
- -

◆ elem_to_loc_nd() [1/4]

- -
-
-
-template<int NDIM>
- - - - - - - - - - - - - - - - -
METAL_FUNC int64_t elem_to_loc_nd (uint elem,
constant const int shape[NDIM],
constant const int64_t strides[NDIM] )
-
- -
-
- -

◆ elem_to_loc_nd() [2/4]

- -
-
-
-template<int NDIM>
- - - - - - - - - - - - - - - - -
METAL_FUNC size_t elem_to_loc_nd (uint elem,
device const int * shape,
device const size_t * strides )
-
- -
-
- -

◆ elem_to_loc_nd() [3/4]

- -
-
-
-template<int NDIM>
- - - - - - - - - - - - - - - - -
METAL_FUNC int64_t elem_to_loc_nd (uint3 elem,
constant const int shape[NDIM],
constant const int64_t strides[NDIM] )
-
- -
-
- -

◆ elem_to_loc_nd() [4/4]

- -
-
-
-template<int NDIM>
- - - - - - - - - - - - - - - - -
METAL_FUNC size_t elem_to_loc_nd (uint3 elem,
constant const int shape[NDIM],
constant const size_t strides[NDIM] )
-
- -
-
- -

◆ log1p() [1/2]

- -
-
- - - - - -
- - - - - - - -
bfloat16_t log1p (bfloat16_t x)
-
-inline
-
- -
-
- -

◆ log1p() [2/2]

- -
-
- - - - - -
- - - - - - - -
float log1p (float x)
-
-inline
-
- -
-
- -

◆ simd_shuffle_down() [1/4]

- -
-
- - - - - -
- - - - - - - - - - - -
bool simd_shuffle_down (bool data,
uint16_t delta )
-
-inline
-
- -
-
- -

◆ simd_shuffle_down() [2/4]

- -
-
- - - - - -
- - - - - - - - - - - -
complex64_t simd_shuffle_down (complex64_t data,
uint16_t delta )
-
-inline
-
- -
-
- -

◆ simd_shuffle_down() [3/4]

- -
-
- - - - - -
- - - - - - - - - - - -
int64_t simd_shuffle_down (int64_t data,
uint16_t delta )
-
-inline
-
- -
-
- -

◆ simd_shuffle_down() [4/4]

- -
-
- - - - - -
- - - - - - - - - - - -
uint64_t simd_shuffle_down (uint64_t data,
uint16_t delta )
-
-inline
-
- -
-
-
- - - - diff --git a/docs/build/html/backend_2metal_2kernels_2utils_8h_source.html b/docs/build/html/backend_2metal_2kernels_2utils_8h_source.html deleted file mode 100644 index aa5b764f..00000000 --- a/docs/build/html/backend_2metal_2kernels_2utils_8h_source.html +++ /dev/null @@ -1,654 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/utils.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
utils.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_math>
- - - -
9
-
10typedef half float16_t;
-
11
-
13// Type limits utils
-
15
-
16template <typename U>
-
-
17struct Limits {
-
18 static const constant U max = metal::numeric_limits<U>::max();
-
19 static const constant U min = metal::numeric_limits<U>::min();
-
20 static const constant U finite_max = metal::numeric_limits<U>::max();
-
21 static const constant U finite_min = metal::numeric_limits<U>::min();
-
22};
-
-
23
-
-
24#define instantiate_default_limit(type) \
-
25 template <> \
-
26 struct Limits<type> { \
-
27 static constexpr constant type max = metal::numeric_limits<type>::max(); \
-
28 static constexpr constant type min = metal::numeric_limits<type>::min(); \
-
29 static constexpr constant type finite_max = \
-
30 metal::numeric_limits<type>::max(); \
-
31 static constexpr constant type finite_min = \
-
32 metal::numeric_limits<type>::min(); \
-
33 };
-
-
34
- - - - - - - - -
43
-
-
44#define instantiate_float_limit(type) \
-
45 template <> \
-
46 struct Limits<type> { \
-
47 static constexpr constant type max = \
-
48 metal::numeric_limits<type>::infinity(); \
-
49 static constexpr constant type min = \
-
50 -metal::numeric_limits<type>::infinity(); \
-
51 static constexpr constant type finite_max = \
-
52 metal::numeric_limits<type>::max(); \
-
53 static constexpr constant type finite_min = \
-
54 -metal::numeric_limits<type>::max(); \
-
55 };
-
-
56
- - - -
60
-
61template <>
-
-
62struct Limits<bool> {
-
63 static constexpr constant bool max = true;
-
64 static constexpr constant bool min = false;
-
65};
-
-
66
-
67template <>
-
- -
69 static constexpr constant complex64_t max = complex64_t(
-
70 metal::numeric_limits<float>::infinity(),
-
71 metal::numeric_limits<float>::infinity());
-
72 static constexpr constant complex64_t min = complex64_t(
-
73 -metal::numeric_limits<float>::infinity(),
-
74 -metal::numeric_limits<float>::infinity());
-
75};
-
-
76
-
78// Indexing utils
-
80
-
81#define MLX_MTL_PRAGMA_UNROLL _Pragma("clang loop unroll(full)")
-
82
-
84// Single Array with generic dims
-
85
-
86template <typename stride_t>
-
-
87METAL_FUNC stride_t elem_to_loc(
-
88 uint elem,
-
89 device const int* shape,
-
90 device const stride_t* strides,
-
91 int ndim) {
-
92 stride_t loc = 0;
-
93 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
-
94 loc += (elem % shape[i]) * strides[i];
-
95 elem /= shape[i];
-
96 }
-
97 return loc;
-
98}
-
-
99
-
100template <typename stride_t>
-
-
101METAL_FUNC stride_t elem_to_loc(
-
102 uint elem,
-
103 constant const int* shape,
-
104 constant const stride_t* strides,
-
105 int ndim) {
-
106 stride_t loc = 0;
-
107 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
-
108 loc += (elem % shape[i]) * strides[i];
-
109 elem /= shape[i];
-
110 }
-
111 return loc;
-
112}
-
-
113
-
114template <typename stride_t>
-
-
115METAL_FUNC stride_t elem_to_loc(
-
116 stride_t elem,
-
117 device const int* shape,
-
118 device const stride_t* strides,
-
119 int ndim) {
-
120 stride_t loc = 0;
-
121 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
-
122 loc += (elem % shape[i]) * strides[i];
-
123 elem /= shape[i];
-
124 }
-
125 return loc;
-
126}
-
-
127
-
128template <typename stride_t>
-
-
129METAL_FUNC stride_t elem_to_loc(
-
130 stride_t elem,
-
131 constant const int* shape,
-
132 constant const stride_t* strides,
-
133 int ndim) {
-
134 stride_t loc = 0;
-
135 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
-
136 loc += (elem % shape[i]) * strides[i];
-
137 elem /= shape[i];
-
138 }
-
139 return loc;
-
140}
-
-
141
-
142// Non templated version to handle arbitrary dims
-
143template <typename stride_t>
-
-
144METAL_FUNC stride_t elem_to_loc(
-
145 uint3 elem,
-
146 constant const int* shape,
-
147 constant const stride_t* strides,
-
148 int ndim) {
-
149 stride_t loc = elem.x * strides[ndim - 1] + elem.y * strides[ndim - 2];
-
150 for (int d = ndim - 3; d >= 0; --d) {
-
151 loc += (elem.z % shape[d]) * strides[d];
-
152 elem.z /= shape[d];
-
153 }
-
154 return loc;
-
155}
-
-
156
-
158// Single Array with fixed N dims
-
159
-
160template <typename stride_t>
-
-
161METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t& stride) {
-
162 return elem * stride;
-
163}
-
-
164
-
165template <typename stride_t>
-
166METAL_FUNC stride_t
-
-
167elem_to_loc_2(uint2 elem, constant const stride_t strides[2]) {
-
168 return elem.x * strides[1] + elem.y * strides[0];
-
169}
-
-
170
-
171template <typename stride_t>
-
172METAL_FUNC stride_t
-
-
173elem_to_loc_3(uint3 elem, constant const stride_t strides[3]) {
-
174 return elem.x * strides[2] + elem.y * strides[1] + elem.z * strides[0];
-
175}
-
-
176
-
177template <int NDIM>
-
-
178METAL_FUNC size_t elem_to_loc_nd(
-
179 uint elem,
-
180 device const int* shape,
-
181 device const size_t* strides) {
-
182 size_t loc = (elem % shape[NDIM - 1]) * strides[NDIM - 1];
-
183
- -
185 for (int d = NDIM - 2; d >= 0; --d) {
-
186 elem /= shape[d + 1];
-
187 loc += (elem % shape[d]) * strides[d];
-
188 }
-
189
-
190 return loc;
-
191}
-
-
192
-
193template <int NDIM>
-
-
194METAL_FUNC size_t elem_to_loc_nd(
-
195 uint3 elem,
-
196 constant const int shape[NDIM],
-
197 constant const size_t strides[NDIM]) {
-
198 size_t loc = elem.x * strides[NDIM - 1] + elem.y * strides[NDIM - 2];
-
199 for (int d = NDIM - 3; d >= 0; --d) {
-
200 loc += (elem.z % shape[d]) * strides[d];
-
201 elem.z /= shape[d];
-
202 }
-
203 return loc;
-
204}
-
-
205
-
206template <int NDIM>
-
-
207METAL_FUNC int64_t elem_to_loc_nd(
-
208 uint elem,
-
209 constant const int shape[NDIM],
-
210 constant const int64_t strides[NDIM]) {
-
211 int64_t loc = (elem % shape[NDIM - 1]) * strides[NDIM - 1];
-
212
- -
214 for (int d = NDIM - 2; d >= 0; --d) {
-
215 elem /= shape[d + 1];
-
216 loc += (elem % shape[d]) * strides[d];
-
217 }
-
218
-
219 return loc;
-
220}
-
-
221
-
222template <int NDIM>
-
-
223METAL_FUNC int64_t elem_to_loc_nd(
-
224 uint3 elem,
-
225 constant const int shape[NDIM],
-
226 constant const int64_t strides[NDIM]) {
-
227 int64_t loc = elem.x * strides[NDIM - 1] + elem.y * strides[NDIM - 2];
-
228 for (int d = NDIM - 3; d >= 0; --d) {
-
229 loc += (elem.z % shape[d]) * strides[d];
-
230 elem.z /= shape[d];
-
231 }
-
232 return loc;
-
233}
-
-
234
-
236// Multiple Arrays with generic dims
-
237
-
-
238METAL_FUNC uint2 elem_to_loc_2_nd(
-
239 uint3 elem,
-
240 constant const int* shape,
-
241 constant const size_t* a_strides,
-
242 constant const size_t* b_strides,
-
243 int ndim) {
-
244 uint2 loc = {
-
245 static_cast<uint>(
-
246 elem.x * a_strides[ndim - 1] + elem.y * a_strides[ndim - 2]),
-
247 static_cast<uint>(
-
248 elem.x * b_strides[ndim - 1] + elem.y * b_strides[ndim - 2])};
-
249 for (int d = ndim - 3; d >= 0; --d) {
-
250 uint l = elem.z % shape[d];
-
251 loc.x += l * a_strides[d];
-
252 loc.y += l * b_strides[d];
-
253 elem.z /= shape[d];
-
254 }
-
255 return loc;
-
256}
-
-
257
-
-
258METAL_FUNC uint3 elem_to_loc_3_nd(
-
259 uint3 elem,
-
260 constant const int* shape,
-
261 constant const size_t* a_strides,
-
262 constant const size_t* b_strides,
-
263 constant const size_t* c_strides,
-
264 int ndim) {
-
265 uint3 loc = {
-
266 static_cast<uint>(
-
267 elem.x * a_strides[ndim - 1] + elem.y * a_strides[ndim - 2]),
-
268 static_cast<uint>(
-
269 elem.x * b_strides[ndim - 1] + elem.y * b_strides[ndim - 2]),
-
270 static_cast<uint>(
-
271 elem.x * c_strides[ndim - 1] + elem.y * c_strides[ndim - 2])};
-
272 for (int d = ndim - 3; d >= 0; --d) {
-
273 uint l = elem.z % shape[d];
-
274 loc.x += l * a_strides[d];
-
275 loc.y += l * b_strides[d];
-
276 loc.z += l * c_strides[d];
-
277 elem.z /= shape[d];
-
278 }
-
279 return loc;
-
280}
-
-
281
-
283// Multiple Arrays with fixed N dims
-
284
-
285template <int NDIM>
-
-
286METAL_FUNC uint2 elem_to_loc_2_nd(
-
287 uint3 elem,
-
288 constant const int shape[NDIM],
-
289 constant const size_t a_strides[NDIM],
-
290 constant const size_t b_strides[NDIM]) {
-
291 uint2 loc = {
-
292 static_cast<uint>(
-
293 elem.x * a_strides[NDIM - 1] + elem.y * a_strides[NDIM - 2]),
-
294 static_cast<uint>(
-
295 elem.x * b_strides[NDIM - 1] + elem.y * b_strides[NDIM - 2])};
-
296 for (int d = NDIM - 3; d >= 0; --d) {
-
297 uint l = elem.z % shape[d];
-
298 loc.x += l * a_strides[d];
-
299 loc.y += l * b_strides[d];
-
300 elem.z /= shape[d];
-
301 }
-
302 return loc;
-
303}
-
-
304
-
305template <int NDIM>
-
-
306METAL_FUNC uint3 elem_to_loc_3_nd(
-
307 uint3 elem,
-
308 constant const int shape[NDIM],
-
309 constant const size_t a_strides[NDIM],
-
310 constant const size_t b_strides[NDIM],
-
311 constant const size_t c_strides[NDIM]) {
-
312 uint3 loc = {
-
313 static_cast<uint>(
-
314 elem.x * a_strides[NDIM - 1] + elem.y * a_strides[NDIM - 2]),
-
315 static_cast<uint>(
-
316 elem.x * b_strides[NDIM - 1] + elem.y * b_strides[NDIM - 2]),
-
317 static_cast<uint>(
-
318 elem.x * c_strides[NDIM - 1] + elem.y * c_strides[NDIM - 2])};
-
319 for (int d = NDIM - 3; d >= 0; --d) {
-
320 uint l = elem.z % shape[d];
-
321 loc.x += l * a_strides[d];
-
322 loc.y += l * b_strides[d];
-
323 loc.z += l * c_strides[d];
-
324 elem.z /= shape[d];
-
325 }
-
326 return loc;
-
327}
-
-
328
-
330// Elem to loc in a loop utils
-
332
-
333template <int dim, typename offset_t = size_t>
-
- - -
336 offset_t offset{0};
-
337 int index{0};
-
338
-
-
339 void next(const constant int* shape, const constant size_t* strides) {
-
340 index++;
-
341 offset += strides[dim - 1];
-
342
-
343 if (index >= shape[dim - 1]) {
-
344 index = 0;
-
345 inner_looper.next(shape, strides);
-
346 offset = inner_looper.offset;
-
347 }
-
348 }
-
-
349
-
-
350 void next(int n, const constant int* shape, const constant size_t* strides) {
-
351 index += n;
-
352 offset += n * strides[dim - 1];
-
353
-
354 if (index >= shape[dim - 1]) {
-
355 int extra = index - shape[dim - 1];
-
356 index = 0;
-
357 inner_looper.next(shape, strides);
-
358 offset = inner_looper.offset;
-
359 if (extra > 0) {
-
360 next(extra, shape, strides);
-
361 }
-
362 }
-
363 }
-
-
364
-
365 offset_t
-
-
366 location(offset_t, const constant int*, const constant size_t*, int) {
-
367 return offset;
-
368 }
-
-
369};
-
-
370
-
371template <typename offset_t>
-
-
372struct looped_elem_to_loc<1, offset_t> {
-
373 offset_t offset{0};
-
374
-
-
375 void next(const constant int*, const constant size_t* strides) {
-
376 offset += strides[0];
-
377 }
-
-
378
-
-
379 void next(int n, const constant int*, const constant size_t* strides) {
-
380 offset += n * strides[0];
-
381 }
-
-
382
-
383 offset_t
-
-
384 location(offset_t, const constant int*, const constant size_t*, int) {
-
385 return offset;
-
386 }
-
-
387};
-
-
388
-
389template <typename offset_t>
-
-
390struct looped_elem_to_loc<0, offset_t> {
-
391 void next(const constant int*, const constant size_t*) {}
-
392 void next(int, const constant int*, const constant size_t*) {}
-
393
-
-
394 offset_t location(
-
395 offset_t idx,
-
396 const constant int* shape,
-
397 const constant size_t* strides,
-
398 int ndim) {
-
399 return elem_to_loc(idx, shape, strides, ndim);
-
400 }
-
-
401};
-
-
402
-
404// Calculation utils
-
406
-
408template <typename T, typename U>
-
-
409inline T ceildiv(T N, U M) {
-
410 return (N + M - 1) / M;
-
411}
-
-
412
-
413// https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#1202
-
-
414inline float log1p(float x) {
-
415 float xp1 = 1.0f + x;
-
416 if (xp1 == Limits<float>::max) {
-
417 return Limits<float>::max;
-
418 }
-
419 if (xp1 == 1.0f) {
-
420 return x;
-
421 }
-
422
-
423 return x * (metal::log(xp1) / (xp1 - 1.0f));
-
424}
-
-
425
-
- -
427 float xp1 = 1.0f + static_cast<float>(x);
-
428 if (xp1 == Limits<float>::max) {
- -
430 }
-
431 if (xp1 == 1.0f) {
-
432 return x;
-
433 }
-
434
-
435 return bfloat16_t(x * (metal::log(xp1) / (xp1 - 1.0f)));
-
436}
-
-
437
-
439// SIMD shuffle ops
-
441
-
-
442inline uint64_t simd_shuffle_down(uint64_t data, uint16_t delta) {
-
443 return as_type<uint64_t>(
-
444 metal::simd_shuffle_down(as_type<uint2>(data), delta));
-
445}
-
-
446
-
-
447inline int64_t simd_shuffle_down(int64_t data, uint16_t delta) {
-
448 return as_type<int64_t>(
-
449 metal::simd_shuffle_down(as_type<uint2>(data), delta));
-
450}
-
-
451
-
-
452inline bool simd_shuffle_down(bool data, uint16_t delta) {
-
453 return simd_shuffle_down(static_cast<uint32_t>(data), delta);
-
454}
-
-
455
-
-
456inline complex64_t simd_shuffle_down(complex64_t data, uint16_t delta) {
-
457 return complex64_t(
-
458 simd_shuffle_down(data.real, delta), simd_shuffle_down(data.imag, delta));
-
459}
-
-
BufferHolder * next
Definition allocator.h:37
- -
struct _MLX_BFloat16 bfloat16_t
Definition bf16.h:257
- -
#define MLX_MTL_PRAGMA_UNROLL
Definition utils.h:81
-
METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t &stride)
Definition utils.h:161
-
#define instantiate_float_limit(type)
Definition utils.h:44
-
float log1p(float x)
Definition utils.h:414
-
METAL_FUNC stride_t elem_to_loc_3(uint3 elem, constant const stride_t strides[3])
Definition utils.h:173
-
METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
Definition utils.h:87
-
METAL_FUNC uint2 elem_to_loc_2_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
Definition utils.h:238
-
METAL_FUNC uint3 elem_to_loc_3_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim)
Definition utils.h:258
-
T ceildiv(T N, U M)
Compute ceil((float)N/(float)M)
Definition utils.h:409
-
METAL_FUNC size_t elem_to_loc_nd(uint elem, device const int *shape, device const size_t *strides)
Definition utils.h:178
-
#define instantiate_default_limit(type)
Definition utils.h:24
-
half float16_t
Definition utils.h:10
-
METAL_FUNC stride_t elem_to_loc_2(uint2 elem, constant const stride_t strides[2])
Definition utils.h:167
- -
METAL_FUNC bfloat16_t log(bfloat16_t x)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t simd_shuffle_down(bfloat16_t data, ushort delta)
Definition bf16_math.h:391
-
Definition bf16.h:54
-
Definition utils.h:17
-
static const constant U max
Definition utils.h:18
-
static const constant U finite_max
Definition utils.h:20
-
static const constant U min
Definition utils.h:19
-
static const constant U finite_min
Definition utils.h:21
-
Definition complex.h:20
-
float imag
Definition complex.h:22
-
float real
Definition complex.h:21
-
void next(int, const constant int *, const constant size_t *)
Definition utils.h:392
-
offset_t location(offset_t idx, const constant int *shape, const constant size_t *strides, int ndim)
Definition utils.h:394
-
void next(const constant int *, const constant size_t *)
Definition utils.h:391
-
offset_t location(offset_t, const constant int *, const constant size_t *, int)
Definition utils.h:384
-
void next(const constant int *, const constant size_t *strides)
Definition utils.h:375
-
void next(int n, const constant int *, const constant size_t *strides)
Definition utils.h:379
-
Definition utils.h:334
-
void next(const constant int *shape, const constant size_t *strides)
Definition utils.h:339
-
offset_t offset
Definition utils.h:336
-
int index
Definition utils.h:337
-
looped_elem_to_loc< dim - 1, offset_t > inner_looper
Definition utils.h:335
-
offset_t location(offset_t, const constant int *, const constant size_t *, int)
Definition utils.h:366
-
void next(int n, const constant int *shape, const constant size_t *strides)
Definition utils.h:350
-
- - - - diff --git a/docs/build/html/backend_2metal_2utils_8h.html b/docs/build/html/backend_2metal_2utils_8h.html deleted file mode 100644 index b01d6d0d..00000000 --- a/docs/build/html/backend_2metal_2utils_8h.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/utils.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
utils.h File Reference
-
-
-
#include "mlx/array.h"
-#include "mlx/backend/metal/device.h"
-#include "mlx/primitives.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
void mlx::core::set_vector_bytes (CommandEncoder &enc, const std::vector< T > &vec, size_t nelems, int idx)
 
template<typename T >
void mlx::core::set_vector_bytes (CommandEncoder &enc, const std::vector< T > &vec, int idx)
 
std::string mlx::core::type_to_name (const array &a)
 
MTL::Size mlx::core::get_block_dims (int dim0, int dim1, int dim2)
 
MTL::Size mlx::core::get_2d_grid_dims (const std::vector< int > &shape, const std::vector< size_t > &strides)
 
NS::String * mlx::core::make_string (std::ostringstream &os)
 
void mlx::core::debug_set_stream_queue_label (MTL::CommandQueue *queue, int index)
 
void mlx::core::debug_set_primitive_buffer_label (MTL::CommandBuffer *command_buffer, Primitive &primitive)
 
std::string mlx::core::get_primitive_string (Primitive *primitive)
 
-
- - - - diff --git a/docs/build/html/backend_2metal_2utils_8h_source.html b/docs/build/html/backend_2metal_2utils_8h_source.html deleted file mode 100644 index a914fc59..00000000 --- a/docs/build/html/backend_2metal_2utils_8h_source.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/utils.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
utils.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/array.h"
- -
7#include "mlx/primitives.h"
-
8
-
9namespace mlx::core {
-
10
-
11using metal::CommandEncoder;
-
12
-
13template <typename T>
-
-
14inline void set_vector_bytes(
-
15 CommandEncoder& enc,
-
16 const std::vector<T>& vec,
-
17 size_t nelems,
-
18 int idx) {
-
19 enc->setBytes(vec.data(), nelems * sizeof(T), idx);
-
20}
-
-
21
-
22template <typename T>
-
23inline void
-
-
24set_vector_bytes(CommandEncoder& enc, const std::vector<T>& vec, int idx) {
-
25 return set_vector_bytes(enc, vec, vec.size(), idx);
-
26}
-
-
27
-
28std::string type_to_name(const array& a);
-
29
-
30// Compute the thread block dimensions which fit the given
-
31// input dimensions.
-
32// - The thread block dimensions will be powers of two
-
33// - The thread block size will be less than 1024
-
34MTL::Size get_block_dims(int dim0, int dim1, int dim2);
-
35
-
36// Computes a 2D grid where each element is < UINT_MAX
-
37// Assumes:
-
38// - overall size (product of non-broadcasted dimensions) is < UINT_MAX^2
-
39// - shape and strides correspond to a contiguous (no holes) but
-
40// possibly broadcasted array
- -
42 const std::vector<int>& shape,
-
43 const std::vector<size_t>& strides);
-
44
-
-
45inline NS::String* make_string(std::ostringstream& os) {
-
46 std::string string = os.str();
-
47 return NS::String::string(string.c_str(), NS::UTF8StringEncoding);
-
48}
-
-
49
-
-
50inline void debug_set_stream_queue_label(MTL::CommandQueue* queue, int index) {
-
51#ifdef MLX_METAL_DEBUG
-
52 std::ostringstream label;
-
53 label << "Stream " << index;
-
54 queue->setLabel(make_string(label));
-
55#endif
-
56}
-
-
57
-
- -
59 MTL::CommandBuffer* command_buffer,
-
60 Primitive& primitive) {
-
61#ifdef MLX_METAL_DEBUG
-
62 std::ostringstream label;
-
63 if (auto cbuf_label = command_buffer->label(); cbuf_label) {
-
64 label << cbuf_label->utf8String();
-
65 }
-
66 primitive.print(label);
-
67 command_buffer->setLabel(make_string(label));
-
68#endif
-
69}
-
-
70
-
71std::string get_primitive_string(Primitive* primitive);
-
72
-
73} // namespace mlx::core
- - -
Definition primitives.h:48
-
virtual void print(std::ostream &os)=0
Print the primitive.
-
Definition array.h:20
-
Definition allocator.h:7
-
void debug_set_primitive_buffer_label(MTL::CommandBuffer *command_buffer, Primitive &primitive)
Definition utils.h:58
-
void set_vector_bytes(CommandEncoder &enc, const std::vector< T > &vec, size_t nelems, int idx)
Definition utils.h:14
-
void debug_set_stream_queue_label(MTL::CommandQueue *queue, int index)
Definition utils.h:50
-
MTL::Size get_block_dims(int dim0, int dim1, int dim2)
-
MTL::Size get_2d_grid_dims(const std::vector< int > &shape, const std::vector< size_t > &strides)
-
std::string get_primitive_string(Primitive *primitive)
-
NS::String * make_string(std::ostringstream &os)
Definition utils.h:45
-
std::string type_to_name(const array &a)
- -
Definition device.h:40
-
- - - - diff --git a/docs/build/html/bc_s.png b/docs/build/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/docs/build/html/bc_sd.png b/docs/build/html/bc_sd.png deleted file mode 100644 index 31ca888dc71049713b35c351933a8d0f36180bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ diff --git a/docs/build/html/bf16__math_8h.html b/docs/build/html/bf16__math_8h.html deleted file mode 100644 index 78e4d59e..00000000 --- a/docs/build/html/bf16__math_8h.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/bf16_math.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
bf16_math.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - -

-Namespaces

namespace  metal
 
namespace  metal::fast
 
namespace  metal::precise
 
- - - - - - - - - - - -

-Macros

#define instantiate_metal_math_funcs(itype, otype, ctype, mfast)
 
#define instantiate_metal_simd_comm_funcs( itype, otype, ctype, itype_to_ctype, ctype_to_otype)
 
#define instantiate_metal_simd_reduction_funcs(itype, otype, ctype)
 
#define bfloat16_to_uint16(x)   x.bits_
 
#define uint16_to_bfloat16(x)   _MLX_BFloat16(x, _MLX_BFloat16::bits_to_bfloat())
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

METAL_FUNC bfloat16_t metal::abs (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::acos (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::acosh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::asin (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::asinh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::atan (bfloat16_t y_over_x)
 
METAL_FUNC bfloat16_t metal::atan2 (bfloat16_t y, bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::atanh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::ceil (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::cos (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::cosh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::cospi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::divide (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::exp (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::exp10 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::exp2 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fabs (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fdim (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::floor (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fma (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fmax (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fmax3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fmedian3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fmin (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fmin3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fmod (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fract (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::frexp (bfloat16_t x, thread int &exp)
 
METAL_FUNC bfloat16_t metal::ldexp (bfloat16_t x, int k)
 
METAL_FUNC bfloat16_t metal::log (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::log10 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::log2 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::max (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::max3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::median3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::min (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::min3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::nextafter (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::pow (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::powr (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::rint (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::round (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::rsqrt (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::sin (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::sinh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::sinpi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::sqrt (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::tan (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::tanh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::tanpi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::trunc (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::abs (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::acos (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::acosh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::asin (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::asinh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::atan (bfloat16_t y_over_x)
 
METAL_FUNC bfloat16_t metal::fast::atan2 (bfloat16_t y, bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::atanh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::ceil (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::cos (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::cosh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::cospi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::divide (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::exp (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::exp10 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::exp2 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::fabs (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::fdim (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::floor (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::fma (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::fmax (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::fmax3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::fmedian3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::fmin (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::fmin3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::fmod (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::fract (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::frexp (bfloat16_t x, thread int &exp)
 
METAL_FUNC bfloat16_t metal::fast::ldexp (bfloat16_t x, int k)
 
METAL_FUNC bfloat16_t metal::fast::log (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::log10 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::log2 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::max (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::max3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::median3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::min (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::min3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::fast::nextafter (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::pow (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::powr (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::fast::rint (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::round (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::rsqrt (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::sin (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::sinh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::sinpi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::sqrt (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::tan (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::tanh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::tanpi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::fast::trunc (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::abs (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::acos (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::acosh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::asin (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::asinh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::atan (bfloat16_t y_over_x)
 
METAL_FUNC bfloat16_t metal::precise::atan2 (bfloat16_t y, bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::atanh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::ceil (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::cos (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::cosh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::cospi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::divide (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::exp (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::exp10 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::exp2 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::fabs (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::fdim (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::floor (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::fma (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::fmax (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::fmax3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::fmedian3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::fmin (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::fmin3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::fmod (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::fract (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::frexp (bfloat16_t x, thread int &exp)
 
METAL_FUNC bfloat16_t metal::precise::ldexp (bfloat16_t x, int k)
 
METAL_FUNC bfloat16_t metal::precise::log (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::log10 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::log2 (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::max (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::max3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::median3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::min (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::min3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
 
METAL_FUNC bfloat16_t metal::precise::nextafter (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::pow (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::powr (bfloat16_t x, bfloat16_t y)
 
METAL_FUNC bfloat16_t metal::precise::rint (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::round (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::rsqrt (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::sin (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::sinh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::sinpi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::sqrt (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::tan (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::tanh (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::tanpi (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::precise::trunc (bfloat16_t x)
 
METAL_FUNC bfloat16_t metal::simd_broadcast (bfloat16_t data, ushort broadcast_lane_id)
 
METAL_FUNC bfloat16_t metal::simd_shuffle (bfloat16_t data, ushort simd_lane_id)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_down (bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_down (bfloat16_t data, bfloat16_t filling_data, ushort delta)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_up (bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_up (bfloat16_t data, bfloat16_t filling_data, ushort delta)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_down (bfloat16_t data, ushort delta)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_rotate_down (bfloat16_t data, ushort delta)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_rotate_up (bfloat16_t data, ushort delta)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_up (bfloat16_t data, ushort delta)
 
METAL_FUNC bfloat16_t metal::simd_shuffle_xor (bfloat16_t data, ushort mask)
 
METAL_FUNC bfloat16_t metal::simd_max (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_min (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_prefix_exclusive_product (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_prefix_exclusive_sum (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_prefix_inclusive_product (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_prefix_inclusive_sum (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_product (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_sum (bfloat16_t data)
 
METAL_FUNC bfloat16_t metal::simd_xor (bfloat16_t data)
 
-

Macro Definition Documentation

- -

◆ bfloat16_to_uint16

- -
-
- - - - - - - -
#define bfloat16_to_uint16( x)   x.bits_
-
- -
-
- -

◆ instantiate_metal_math_funcs

- -
-
- - - - - - - - - - - - - - - - - - - - - -
#define instantiate_metal_math_funcs( itype,
otype,
ctype,
mfast )
-
- -
-
- -

◆ instantiate_metal_simd_comm_funcs

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
#define instantiate_metal_simd_comm_funcs( itype,
otype,
ctype,
itype_to_ctype,
ctype_to_otype )
-
- -
-
- -

◆ instantiate_metal_simd_reduction_funcs

- -
-
- - - - - - - - - - - - - - - - -
#define instantiate_metal_simd_reduction_funcs( itype,
otype,
ctype )
-
- -
-
- -

◆ uint16_to_bfloat16

- -
-
- - - - - - - -
#define uint16_to_bfloat16( x)   _MLX_BFloat16(x, _MLX_BFloat16::bits_to_bfloat())
-
- -
-
-
- - - - diff --git a/docs/build/html/bf16__math_8h_source.html b/docs/build/html/bf16__math_8h_source.html deleted file mode 100644 index d57ad35f..00000000 --- a/docs/build/html/bf16__math_8h_source.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/bf16_math.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
bf16_math.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
- -
6
-
8// Metal math for bfloat16
-
10
-
11/*
-
12
-
13Following the Metal Shading Language Specification (Metal 3.1)
-
14
-
15"bfloat is an extended itypeing point type that only allows implicit conversion
-
16 to a type of greater itypeing point rank. While bfloat can be implicitly
-
17 converted to itype, it cannot be implicitly converted to half, and neither
-
18 itype nor half can be implicitly converted to bfloat."
-
19
-
20Further, as far as I can tell, the stdlib math/simd functions are not defined
-
21for bfloat and calling with an argument of type bfloat will result in that
-
22argument getting implicitly converted to itype which then returns an output
-
23that is (likely) a itype which cannot be implicitly converted into a bfloat
-
24
-
25This leads to situations where
-
26bfloat a = 5.0bf;
-
27bfloat b = metal::abs(a); // this will throw an error since abs return itype
-
28bfloat c = static_cast<bfloat>(metal::abs(a)); // this is fine
-
29
-
30For the moment, I will be adding overloaded instantiations of the math
-
31functions to accordingly automatically handle the casting
-
32
-
33*/
-
34
-
-
35#define instantiate_metal_math_funcs(itype, otype, ctype, mfast) \
-
36 \
-
37 METAL_FUNC otype abs(itype x) { \
-
38 return static_cast<otype>(__metal_fabs(static_cast<ctype>(x), mfast)); \
-
39 } \
-
40 METAL_FUNC otype acos(itype x) { \
-
41 return static_cast<otype>(__metal_acos(static_cast<ctype>(x), mfast)); \
-
42 } \
-
43 METAL_FUNC otype acosh(itype x) { \
-
44 return static_cast<otype>(__metal_acosh(static_cast<ctype>(x), mfast)); \
-
45 } \
-
46 METAL_FUNC otype asin(itype x) { \
-
47 return static_cast<otype>(__metal_asin(static_cast<ctype>(x), mfast)); \
-
48 } \
-
49 METAL_FUNC otype asinh(itype x) { \
-
50 return static_cast<otype>(__metal_asinh(static_cast<ctype>(x), mfast)); \
-
51 } \
-
52 METAL_FUNC otype atan(itype y_over_x) { \
-
53 return static_cast<otype>( \
-
54 __metal_atan(static_cast<ctype>(y_over_x), mfast)); \
-
55 } \
-
56 METAL_FUNC otype atan2(itype y, itype x) { \
-
57 return static_cast<otype>( \
-
58 __metal_atan2(static_cast<ctype>(y), static_cast<ctype>(x), mfast)); \
-
59 } \
-
60 METAL_FUNC otype atanh(itype x) { \
-
61 return static_cast<otype>(__metal_atanh(static_cast<ctype>(x), mfast)); \
-
62 } \
-
63 METAL_FUNC otype ceil(itype x) { \
-
64 return static_cast<otype>(__metal_ceil(static_cast<ctype>(x), mfast)); \
-
65 } \
-
66 METAL_FUNC otype cos(itype x) { \
-
67 return static_cast<otype>(__metal_cos(static_cast<ctype>(x), mfast)); \
-
68 } \
-
69 METAL_FUNC otype cosh(itype x) { \
-
70 return static_cast<otype>(__metal_cosh(static_cast<ctype>(x), mfast)); \
-
71 } \
-
72 METAL_FUNC otype cospi(itype x) { \
-
73 return static_cast<otype>(__metal_cospi(static_cast<ctype>(x), mfast)); \
-
74 } \
-
75 METAL_FUNC otype divide(itype x, itype y) { \
-
76 return static_cast<otype>( \
-
77 __metal_divide(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
78 } \
-
79 METAL_FUNC otype exp(itype x) { \
-
80 return static_cast<otype>(__metal_exp(static_cast<ctype>(x), mfast)); \
-
81 } \
-
82 METAL_FUNC otype exp10(itype x) { \
-
83 return static_cast<otype>(__metal_exp10(static_cast<ctype>(x), mfast)); \
-
84 } \
-
85 METAL_FUNC otype exp2(itype x) { \
-
86 return static_cast<otype>(__metal_exp2(static_cast<ctype>(x), mfast)); \
-
87 } \
-
88 METAL_FUNC otype fabs(itype x) { \
-
89 return static_cast<otype>(__metal_fabs(static_cast<ctype>(x), mfast)); \
-
90 } \
-
91 METAL_FUNC otype fdim(itype x, itype y) { \
-
92 ctype t = static_cast<ctype>(x - y); \
-
93 return static_cast<otype>(select(t, ctype(0), t < ctype(0) || x == y)); \
-
94 } \
-
95 METAL_FUNC otype floor(itype x) { \
-
96 return static_cast<otype>(__metal_floor(static_cast<ctype>(x), mfast)); \
-
97 } \
-
98 METAL_FUNC otype fma(itype x, itype y, itype z) { \
-
99 return static_cast<otype>(__metal_fma( \
-
100 static_cast<ctype>(x), static_cast<ctype>(y), static_cast<ctype>(z))); \
-
101 } \
-
102 METAL_FUNC otype fmax(itype x, itype y) { \
-
103 return static_cast<otype>( \
-
104 __metal_fmax(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
105 } \
-
106 METAL_FUNC otype fmax3(itype x, itype y, itype z) { \
-
107 return static_cast<otype>(__metal_fmax3( \
-
108 static_cast<ctype>(x), \
-
109 static_cast<ctype>(y), \
-
110 static_cast<ctype>(z), \
-
111 mfast)); \
-
112 } \
-
113 METAL_FUNC otype fmedian3(itype x, itype y, itype z) { \
-
114 return static_cast<otype>(__metal_fmedian3( \
-
115 static_cast<ctype>(x), \
-
116 static_cast<ctype>(y), \
-
117 static_cast<ctype>(z), \
-
118 mfast)); \
-
119 } \
-
120 METAL_FUNC otype fmin(itype x, itype y) { \
-
121 return static_cast<otype>( \
-
122 __metal_fmin(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
123 } \
-
124 METAL_FUNC otype fmin3(itype x, itype y, itype z) { \
-
125 return static_cast<otype>(__metal_fmin3( \
-
126 static_cast<ctype>(x), \
-
127 static_cast<ctype>(y), \
-
128 static_cast<ctype>(z), \
-
129 mfast)); \
-
130 } \
-
131 METAL_FUNC otype fmod(itype x, itype y) { \
-
132 return static_cast<otype>( \
-
133 __metal_fmod(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
134 } \
-
135 METAL_FUNC otype fract(itype x) { \
-
136 return static_cast<otype>(__metal_fract(static_cast<ctype>(x), mfast)); \
-
137 } \
-
138 METAL_FUNC otype frexp(itype x, thread int& exp) { \
-
139 return static_cast<otype>(__metal_frexp(static_cast<ctype>(x), &exp)); \
-
140 } \
-
141 METAL_FUNC otype ldexp(itype x, int k) { \
-
142 return static_cast<otype>(__metal_ldexp(static_cast<ctype>(x), k, mfast)); \
-
143 } \
-
144 METAL_FUNC otype log(itype x) { \
-
145 return static_cast<otype>(__metal_log(static_cast<ctype>(x), mfast)); \
-
146 } \
-
147 METAL_FUNC otype log10(itype x) { \
-
148 return static_cast<otype>(__metal_log10(static_cast<ctype>(x), mfast)); \
-
149 } \
-
150 METAL_FUNC otype log2(itype x) { \
-
151 return static_cast<otype>(__metal_log2(static_cast<ctype>(x), mfast)); \
-
152 } \
-
153 METAL_FUNC otype max(itype x, itype y) { \
-
154 return static_cast<otype>( \
-
155 __metal_fmax(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
156 } \
-
157 METAL_FUNC otype max3(itype x, itype y, itype z) { \
-
158 return static_cast<otype>(__metal_fmax3( \
-
159 static_cast<ctype>(x), \
-
160 static_cast<ctype>(y), \
-
161 static_cast<ctype>(z), \
-
162 mfast)); \
-
163 } \
-
164 METAL_FUNC otype median3(itype x, itype y, itype z) { \
-
165 return static_cast<otype>(__metal_fmedian3( \
-
166 static_cast<ctype>(x), \
-
167 static_cast<ctype>(y), \
-
168 static_cast<ctype>(z), \
-
169 mfast)); \
-
170 } \
-
171 METAL_FUNC otype min(itype x, itype y) { \
-
172 return static_cast<otype>( \
-
173 __metal_fmin(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
174 } \
-
175 METAL_FUNC otype min3(itype x, itype y, itype z) { \
-
176 return static_cast<otype>(__metal_fmin3( \
-
177 static_cast<ctype>(x), \
-
178 static_cast<ctype>(y), \
-
179 static_cast<ctype>(z), \
-
180 mfast)); \
-
181 } \
-
182 METAL_FUNC otype nextafter(itype x, itype y) { \
-
183 return static_cast<otype>( \
-
184 __metal_nextafter(static_cast<ctype>(x), static_cast<ctype>(y))); \
-
185 } \
-
186 METAL_FUNC otype pow(itype x, itype y) { \
-
187 return static_cast<otype>( \
-
188 __metal_pow(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
189 } \
-
190 METAL_FUNC otype powr(itype x, itype y) { \
-
191 return static_cast<otype>( \
-
192 __metal_powr(static_cast<ctype>(x), static_cast<ctype>(y), mfast)); \
-
193 } \
-
194 METAL_FUNC otype rint(itype x) { \
-
195 return static_cast<otype>(__metal_rint(static_cast<ctype>(x), mfast)); \
-
196 } \
-
197 METAL_FUNC otype round(itype x) { \
-
198 return static_cast<otype>(__metal_round(static_cast<ctype>(x), mfast)); \
-
199 } \
-
200 METAL_FUNC otype rsqrt(itype x) { \
-
201 return static_cast<otype>(__metal_rsqrt(static_cast<ctype>(x), mfast)); \
-
202 } \
-
203 METAL_FUNC otype sin(itype x) { \
-
204 return static_cast<otype>(__metal_sin(static_cast<ctype>(x), mfast)); \
-
205 } \
-
206 METAL_FUNC otype sinh(itype x) { \
-
207 return static_cast<otype>(__metal_sinh(static_cast<ctype>(x), mfast)); \
-
208 } \
-
209 METAL_FUNC otype sinpi(itype x) { \
-
210 return static_cast<otype>(__metal_sinpi(static_cast<ctype>(x), mfast)); \
-
211 } \
-
212 METAL_FUNC otype sqrt(itype x) { \
-
213 return static_cast<otype>(__metal_sqrt(static_cast<ctype>(x), mfast)); \
-
214 } \
-
215 METAL_FUNC otype tan(itype x) { \
-
216 return static_cast<otype>(__metal_tan(static_cast<ctype>(x), mfast)); \
-
217 } \
-
218 METAL_FUNC otype tanh(itype x) { \
-
219 return static_cast<otype>(__metal_tanh(static_cast<ctype>(x), mfast)); \
-
220 } \
-
221 METAL_FUNC otype tanpi(itype x) { \
-
222 return static_cast<otype>(__metal_tanpi(static_cast<ctype>(x), mfast)); \
-
223 } \
-
224 METAL_FUNC otype trunc(itype x) { \
-
225 return static_cast<otype>(__metal_trunc(static_cast<ctype>(x), mfast)); \
-
226 }
-
-
227
-
228namespace metal {
-
229
- - - -
233 float,
-
234 __METAL_MAYBE_FAST_MATH__);
-
235
-
-
236namespace fast {
-
237
- - - -
241 float,
-
242 __METAL_FAST_MATH__);
-
243
-
244} // namespace fast
-
-
245
-
-
246namespace precise {
-
247
- - - -
251 float,
-
252 __METAL_PRECISE_MATH__);
-
253
-
254} // namespace precise
-
-
255
-
256} // namespace metal
-
257
-
259// Metal simd for bfloat16
-
261
-
262#define instantiate_metal_simd_comm_funcs( \
-
263 itype, otype, ctype, itype_to_ctype, ctype_to_otype) \
-
264 \
-
265 METAL_FUNC otype simd_broadcast(itype data, ushort broadcast_lane_id) { \
-
266 return ctype_to_otype( \
-
267 __metal_simd_broadcast(itype_to_ctype(data), broadcast_lane_id)); \
-
268 } \
-
269 \
-
270 METAL_FUNC otype simd_shuffle(itype data, ushort simd_lane_id) { \
-
271 return ctype_to_otype( \
-
272 __metal_simd_shuffle(itype_to_ctype(data), simd_lane_id)); \
-
273 } \
-
274 \
-
275 METAL_FUNC otype simd_shuffle_and_fill_down( \
-
276 itype data, itype filling_data, ushort delta, ushort modulo) { \
-
277 return ctype_to_otype(__metal_simd_shuffle_and_fill_down( \
-
278 itype_to_ctype(data), itype_to_ctype(filling_data), delta, modulo)); \
-
279 } \
-
280 \
-
281 METAL_FUNC otype simd_shuffle_and_fill_down( \
-
282 itype data, itype filling_data, ushort delta) { \
-
283 return ctype_to_otype(__metal_simd_shuffle_and_fill_down( \
-
284 itype_to_ctype(data), \
-
285 itype_to_ctype(filling_data), \
-
286 delta, \
-
287 __metal_get_simdgroup_size(ushort()))); \
-
288 } \
-
289 \
-
290 METAL_FUNC otype simd_shuffle_and_fill_up( \
-
291 itype data, itype filling_data, ushort delta, ushort modulo) { \
-
292 return ctype_to_otype(__metal_simd_shuffle_and_fill_up( \
-
293 itype_to_ctype(data), itype_to_ctype(filling_data), delta, modulo)); \
-
294 } \
-
295 \
-
296 METAL_FUNC otype simd_shuffle_and_fill_up( \
-
297 itype data, itype filling_data, ushort delta) { \
-
298 return ctype_to_otype(__metal_simd_shuffle_and_fill_up( \
-
299 itype_to_ctype(data), \
-
300 itype_to_ctype(filling_data), \
-
301 delta, \
-
302 __metal_get_simdgroup_size(ushort()))); \
-
303 } \
-
304 \
-
305 METAL_FUNC otype simd_shuffle_down(itype data, ushort delta) { \
-
306 return ctype_to_otype( \
-
307 __metal_simd_shuffle_down(itype_to_ctype(data), delta)); \
-
308 } \
-
309 \
-
310 METAL_FUNC otype simd_shuffle_rotate_down(itype data, ushort delta) { \
-
311 return ctype_to_otype( \
-
312 __metal_simd_shuffle_rotate_down(itype_to_ctype(data), delta)); \
-
313 } \
-
314 \
-
315 METAL_FUNC otype simd_shuffle_rotate_up(itype data, ushort delta) { \
-
316 return ctype_to_otype( \
-
317 __metal_simd_shuffle_rotate_up(itype_to_ctype(data), delta)); \
-
318 } \
-
319 \
-
320 METAL_FUNC otype simd_shuffle_up(itype data, ushort delta) { \
-
321 return ctype_to_otype( \
-
322 __metal_simd_shuffle_up(itype_to_ctype(data), delta)); \
-
323 } \
-
324 \
-
325 METAL_FUNC otype simd_shuffle_xor(itype data, ushort mask) { \
-
326 return ctype_to_otype( \
-
327 __metal_simd_shuffle_xor(itype_to_ctype(data), mask)); \
-
328 }
-
329
-
-
330#define instantiate_metal_simd_reduction_funcs(itype, otype, ctype) \
-
331 \
-
332 METAL_FUNC otype simd_max(itype data) { \
-
333 return static_cast<otype>(__metal_simd_max(static_cast<ctype>(data))); \
-
334 } \
-
335 \
-
336 METAL_FUNC otype simd_min(itype data) { \
-
337 return static_cast<otype>(__metal_simd_min(static_cast<ctype>(data))); \
-
338 } \
-
339 \
-
340 METAL_FUNC otype simd_prefix_exclusive_product(itype data) { \
-
341 return static_cast<otype>( \
-
342 __metal_simd_prefix_exclusive_product(static_cast<ctype>(data))); \
-
343 } \
-
344 \
-
345 METAL_FUNC otype simd_prefix_exclusive_sum(itype data) { \
-
346 return static_cast<otype>( \
-
347 __metal_simd_prefix_exclusive_sum(static_cast<ctype>(data))); \
-
348 } \
-
349 \
-
350 METAL_FUNC otype simd_prefix_inclusive_product(itype data) { \
-
351 return static_cast<otype>( \
-
352 __metal_simd_prefix_inclusive_product(static_cast<ctype>(data))); \
-
353 } \
-
354 \
-
355 METAL_FUNC otype simd_prefix_inclusive_sum(itype data) { \
-
356 return static_cast<otype>( \
-
357 __metal_simd_prefix_inclusive_sum(static_cast<ctype>(data))); \
-
358 } \
-
359 \
-
360 METAL_FUNC otype simd_product(itype data) { \
-
361 return static_cast<otype>(__metal_simd_product(static_cast<ctype>(data))); \
-
362 } \
-
363 \
-
364 METAL_FUNC otype simd_sum(itype data) { \
-
365 return static_cast<otype>(__metal_simd_sum(static_cast<ctype>(data))); \
-
366 } \
-
367 \
-
368 METAL_FUNC otype simd_xor(itype data) { \
-
369 return static_cast<otype>(__metal_simd_xor(static_cast<ctype>(data))); \
-
370 }
-
-
371
-
372#if (MLX_METAL_VERSION >= 310) || (__METAL_VERSION__ >= 310)
-
373
-
374#define bfloat16_to_uint16(x) as_type<uint16_t>(x)
-
375#define uint16_to_bfloat16(x) as_type<bfloat16_t>(x)
-
376
-
377#else
-
378
-
379#define bfloat16_to_uint16(x) x.bits_
-
380#define uint16_to_bfloat16(x) _MLX_BFloat16(x, _MLX_BFloat16::bits_to_bfloat())
-
381
-
382#endif
-
383
-
384namespace metal {
-
385
- - - -
389 uint16_t,
- - - -
393
-
394} // namespace metal
- -
#define uint16_to_bfloat16(x)
Definition bf16_math.h:380
-
#define instantiate_metal_simd_reduction_funcs(itype, otype, ctype)
Definition bf16_math.h:330
-
#define bfloat16_to_uint16(x)
Definition bf16_math.h:379
-
#define instantiate_metal_math_funcs(itype, otype, ctype, mfast)
Definition bf16_math.h:35
-
#define instantiate_metal_simd_comm_funcs( itype, otype, ctype, itype_to_ctype, ctype_to_otype)
Definition bf16_math.h:262
-
Definition bf16.h:265
-
Definition bf16.h:54
-
- - - - diff --git a/docs/build/html/binary__ops_8h.html b/docs/build/html/binary__ops_8h.html deleted file mode 100644 index 114d0405..00000000 --- a/docs/build/html/binary__ops_8h.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/binary_ops.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
binary_ops.h File Reference
-
-
-
#include <metal_integer>
-#include <metal_math>
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Classes

struct  Add
 
struct  FloorDivide
 
struct  Divide
 
struct  Remainder
 
struct  Equal
 
struct  NaNEqual
 
struct  Greater
 
struct  GreaterEqual
 
struct  Less
 
struct  LessEqual
 
struct  LogAddExp
 
struct  Maximum
 
struct  Minimum
 
struct  Multiply
 
struct  NotEqual
 
struct  Power
 
struct  Subtract
 
struct  LogicalAnd
 
struct  LogicalOr
 
struct  BitwiseAnd
 
struct  BitwiseOr
 
struct  BitwiseXor
 
struct  LeftShift
 
struct  RightShift
 
struct  ArcTan2
 
struct  DivMod
 
-
- - - - diff --git a/docs/build/html/binary__ops_8h_source.html b/docs/build/html/binary__ops_8h_source.html deleted file mode 100644 index 474c3aab..00000000 --- a/docs/build/html/binary__ops_8h_source.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/binary_ops.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
binary_ops.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <metal_integer>
-
6#include <metal_math>
-
7
-
-
8struct Add {
-
9 template <typename T>
-
-
10 T operator()(T x, T y) {
-
11 return x + y;
-
12 }
-
-
13};
-
-
14
-
- -
16 template <typename T>
-
-
17 T operator()(T x, T y) {
-
18 return x / y;
-
19 }
-
-
20 template <>
-
-
21 float operator()(float x, float y) {
-
22 return trunc(x / y);
-
23 }
-
-
24 template <>
-
-
25 half operator()(half x, half y) {
-
26 return trunc(x / y);
-
27 }
-
-
28 template <>
-
- -
30 return trunc(x / y);
-
31 }
-
-
32};
-
-
33
-
-
34struct Divide {
-
35 template <typename T>
-
-
36 T operator()(T x, T y) {
-
37 return x / y;
-
38 }
-
-
39};
-
-
40
-
-
41struct Remainder {
-
42 template <typename T>
-
43 metal::enable_if_t<metal::is_integral_v<T> & !metal::is_signed_v<T>, T>
-
-
44 operator()(T x, T y) {
-
45 return x % y;
-
46 }
-
-
47 template <typename T>
-
48 metal::enable_if_t<metal::is_integral_v<T> & metal::is_signed_v<T>, T>
-
-
49 operator()(T x, T y) {
-
50 auto r = x % y;
-
51 if (r != 0 && (r < 0 != y < 0)) {
-
52 r += y;
-
53 }
-
54 return r;
-
55 }
-
-
56 template <typename T>
-
-
57 metal::enable_if_t<!metal::is_integral_v<T>, T> operator()(T x, T y) {
-
58 T r = fmod(x, y);
-
59 if (r != 0 && (r < 0 != y < 0)) {
-
60 r += y;
-
61 }
-
62 return r;
-
63 }
-
-
64 template <>
-
- -
66 return x % y;
-
67 }
-
-
68};
-
-
69
-
-
70struct Equal {
-
71 template <typename T>
-
-
72 bool operator()(T x, T y) {
-
73 return x == y;
-
74 }
-
-
75};
-
-
76
-
-
77struct NaNEqual {
-
78 template <typename T>
-
-
79 bool operator()(T x, T y) {
-
80 return x == y || (metal::isnan(x) && metal::isnan(y));
-
81 }
-
-
82 template <>
-
- -
84 return x == y ||
- -
86 metal::isnan(y.imag)) ||
-
87 (x.real == y.real && metal::isnan(x.imag) && metal::isnan(y.imag)) ||
-
88 (metal::isnan(x.real) && metal::isnan(y.real) && x.imag == y.imag);
-
89 }
-
-
90};
-
-
91
-
-
92struct Greater {
-
93 template <typename T>
-
-
94 bool operator()(T x, T y) {
-
95 return x > y;
-
96 }
-
-
97};
-
-
98
-
- -
100 template <typename T>
-
-
101 bool operator()(T x, T y) {
-
102 return x >= y;
-
103 }
-
-
104};
-
-
105
-
-
106struct Less {
-
107 template <typename T>
-
-
108 bool operator()(T x, T y) {
-
109 return x < y;
-
110 }
-
-
111};
-
-
112
-
-
113struct LessEqual {
-
114 template <typename T>
-
-
115 bool operator()(T x, T y) {
-
116 return x <= y;
-
117 }
-
-
118};
-
-
119
-
-
120struct LogAddExp {
-
121 template <typename T>
-
-
122 T operator()(T x, T y) {
-
123 if (metal::isnan(x) || metal::isnan(y)) {
-
124 return metal::numeric_limits<T>::quiet_NaN();
-
125 }
-
126 constexpr T inf = metal::numeric_limits<T>::infinity();
-
127 T maxval = metal::max(x, y);
-
128 T minval = metal::min(x, y);
-
129 return (minval == -inf || maxval == inf)
-
130 ? maxval
-
131 : (maxval + log1p(metal::exp(minval - maxval)));
-
132 };
-
-
133};
-
-
134
-
-
135struct Maximum {
-
136 template <typename T>
-
-
137 metal::enable_if_t<metal::is_integral_v<T>, T> operator()(T x, T y) {
-
138 return metal::max(x, y);
-
139 }
-
-
140
-
141 template <typename T>
-
-
142 metal::enable_if_t<!metal::is_integral_v<T>, T> operator()(T x, T y) {
-
143 if (metal::isnan(x)) {
-
144 return x;
-
145 }
-
146 return x > y ? x : y;
-
147 }
-
-
148
-
149 template <>
-
- -
151 if (metal::isnan(x.real) || metal::isnan(x.imag)) {
-
152 return x;
-
153 }
-
154 return x > y ? x : y;
-
155 }
-
-
156};
-
-
157
-
-
158struct Minimum {
-
159 template <typename T>
-
-
160 metal::enable_if_t<metal::is_integral_v<T>, T> operator()(T x, T y) {
-
161 return metal::min(x, y);
-
162 }
-
-
163
-
164 template <typename T>
-
-
165 metal::enable_if_t<!metal::is_integral_v<T>, T> operator()(T x, T y) {
-
166 if (metal::isnan(x)) {
-
167 return x;
-
168 }
-
169 return x < y ? x : y;
-
170 }
-
-
171
-
172 template <>
-
- -
174 if (metal::isnan(x.real) || metal::isnan(x.imag)) {
-
175 return x;
-
176 }
-
177 return x < y ? x : y;
-
178 }
-
-
179};
-
-
180
-
-
181struct Multiply {
-
182 template <typename T>
-
-
183 T operator()(T x, T y) {
-
184 return x * y;
-
185 }
-
-
186};
-
-
187
-
-
188struct NotEqual {
-
189 template <typename T>
-
-
190 bool operator()(T x, T y) {
-
191 return x != y;
-
192 }
-
-
193 template <>
-
- -
195 return x.real != y.real || x.imag != y.imag;
-
196 }
-
-
197};
-
-
198
-
-
199struct Power {
-
200 template <typename T>
-
-
201 metal::enable_if_t<!metal::is_integral_v<T>, T> operator()(T base, T exp) {
-
202 return metal::pow(base, exp);
-
203 }
-
-
204
-
205 template <typename T>
-
-
206 metal::enable_if_t<metal::is_integral_v<T>, T> operator()(T base, T exp) {
-
207 T res = 1;
-
208 while (exp) {
-
209 if (exp & 1) {
-
210 res *= base;
-
211 }
-
212 exp >>= 1;
-
213 base *= base;
-
214 }
-
215 return res;
-
216 }
-
-
217
-
218 template <>
-
- -
220 auto x_theta = metal::atan(x.imag / x.real);
-
221 auto x_ln_r = 0.5 * metal::log(x.real * x.real + x.imag * x.imag);
-
222 auto mag = metal::exp(y.real * x_ln_r - y.imag * x_theta);
-
223 auto phase = y.imag * x_ln_r + y.real * x_theta;
-
224 return {mag * metal::cos(phase), mag * metal::sin(phase)};
-
225 }
-
-
226};
-
-
227
-
-
228struct Subtract {
-
229 template <typename T>
-
-
230 T operator()(T x, T y) {
-
231 return x - y;
-
232 }
-
-
233};
-
-
234
-
- -
236 template <typename T>
-
-
237 T operator()(T x, T y) {
-
238 return x && y;
-
239 };
-
-
240};
-
-
241
-
-
242struct LogicalOr {
-
243 template <typename T>
-
-
244 T operator()(T x, T y) {
-
245 return x || y;
-
246 };
-
-
247};
-
-
248
-
- -
250 template <typename T>
-
-
251 T operator()(T x, T y) {
-
252 return x & y;
-
253 };
-
-
254};
-
-
255
-
-
256struct BitwiseOr {
-
257 template <typename T>
-
-
258 T operator()(T x, T y) {
-
259 return x | y;
-
260 };
-
-
261};
-
-
262
-
- -
264 template <typename T>
-
-
265 T operator()(T x, T y) {
-
266 return x ^ y;
-
267 };
-
-
268};
-
-
269
-
-
270struct LeftShift {
-
271 template <typename T>
-
-
272 T operator()(T x, T y) {
-
273 return x << y;
-
274 };
-
-
275};
-
-
276
-
- -
278 template <typename T>
-
-
279 T operator()(T x, T y) {
-
280 return x >> y;
-
281 };
-
-
282};
-
-
283
-
-
284struct ArcTan2 {
-
285 template <typename T>
-
-
286 T operator()(T y, T x) {
-
287 return metal::precise::atan2(y, x);
-
288 }
-
-
289};
-
-
290
-
-
291struct DivMod {
-
292 template <typename T>
-
-
293 metal::array<T, 2> operator()(T x, T y) {
-
294 return {FloorDivide{}(x, y), Remainder{}(x, y)};
-
295 };
-
-
296};
-
-
float log1p(float x)
Definition utils.h:414
-
METAL_FUNC bfloat16_t atan2(bfloat16_t y, bfloat16_t x)
Definition bf16_math.h:252
-
METAL_FUNC bfloat16_t cos(bfloat16_t x)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t log(bfloat16_t x)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t sin(bfloat16_t x)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t atan(bfloat16_t y_over_x)
Definition bf16_math.h:234
-
METAL_FUNC bool isnan(_MLX_BFloat16 x)
Definition bf16.h:307
-
METAL_FUNC bfloat16_t max(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t exp(bfloat16_t x)
Definition bf16_math.h:234
-
METAL_FUNC bfloat16_t pow(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
-
Definition bf16.h:54
-
Definition binary_ops.h:8
-
T operator()(T x, T y)
Definition binary_ops.h:10
-
Definition binary_ops.h:284
-
T operator()(T y, T x)
Definition binary_ops.h:286
-
Definition binary_ops.h:249
-
T operator()(T x, T y)
Definition binary_ops.h:251
-
Definition binary_ops.h:256
-
T operator()(T x, T y)
Definition binary_ops.h:258
-
Definition binary_ops.h:263
-
T operator()(T x, T y)
Definition binary_ops.h:265
-
Definition binary_ops.h:291
-
metal::array< T, 2 > operator()(T x, T y)
Definition binary_ops.h:293
-
Definition binary_ops.h:34
-
T operator()(T x, T y)
Definition binary_ops.h:36
-
Definition binary_ops.h:70
-
bool operator()(T x, T y)
Definition binary_ops.h:72
-
Definition binary_ops.h:15
-
T operator()(T x, T y)
Definition binary_ops.h:17
-
bfloat16_t operator()(bfloat16_t x, bfloat16_t y)
Definition binary_ops.h:29
-
half operator()(half x, half y)
Definition binary_ops.h:25
-
float operator()(float x, float y)
Definition binary_ops.h:21
-
Definition binary_ops.h:99
-
bool operator()(T x, T y)
Definition binary_ops.h:101
-
Definition binary_ops.h:92
-
bool operator()(T x, T y)
Definition binary_ops.h:94
-
Definition binary_ops.h:270
-
T operator()(T x, T y)
Definition binary_ops.h:272
-
Definition binary_ops.h:113
-
bool operator()(T x, T y)
Definition binary_ops.h:115
-
Definition binary_ops.h:106
-
bool operator()(T x, T y)
Definition binary_ops.h:108
-
Definition binary_ops.h:120
-
T operator()(T x, T y)
Definition binary_ops.h:122
-
Definition binary_ops.h:235
-
T operator()(T x, T y)
Definition binary_ops.h:237
-
Definition binary_ops.h:242
-
T operator()(T x, T y)
Definition binary_ops.h:244
-
Definition binary_ops.h:135
-
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:142
-
metal::enable_if_t< metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:137
-
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:150
-
Definition binary_ops.h:158
-
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:165
-
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:173
-
metal::enable_if_t< metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:160
-
Definition binary_ops.h:181
-
T operator()(T x, T y)
Definition binary_ops.h:183
-
Definition binary_ops.h:77
-
bool operator()(T x, T y)
Definition binary_ops.h:79
-
bool operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:83
-
Definition binary_ops.h:188
-
bool operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:194
-
bool operator()(T x, T y)
Definition binary_ops.h:190
-
Definition binary_ops.h:199
-
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:219
-
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T base, T exp)
Definition binary_ops.h:201
-
metal::enable_if_t< metal::is_integral_v< T >, T > operator()(T base, T exp)
Definition binary_ops.h:206
-
Definition binary_ops.h:41
-
metal::enable_if_t< metal::is_integral_v< T > &metal::is_signed_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:49
-
metal::enable_if_t<!metal::is_integral_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:57
-
metal::enable_if_t< metal::is_integral_v< T > &!metal::is_signed_v< T >, T > operator()(T x, T y)
Definition binary_ops.h:44
-
complex64_t operator()(complex64_t x, complex64_t y)
Definition binary_ops.h:65
-
Definition binary_ops.h:277
-
T operator()(T x, T y)
Definition binary_ops.h:279
-
Definition binary_ops.h:228
-
T operator()(T x, T y)
Definition binary_ops.h:230
-
Definition complex.h:20
-
float imag
Definition complex.h:22
-
float real
Definition complex.h:21
-
- - - - diff --git a/docs/build/html/class_thread_pool-members.html b/docs/build/html/class_thread_pool-members.html deleted file mode 100644 index 5836fff8..00000000 --- a/docs/build/html/class_thread_pool-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
-
ThreadPool Member List
-
-
- -

This is the complete list of members for ThreadPool, including all inherited members.

- - - - -
enqueue(F &&f, Args &&... args) -> std::future< typename std::invoke_result_t< F, Args... > >ThreadPool
ThreadPool(size_t)ThreadPoolinline
~ThreadPool()ThreadPoolinline
- - - - diff --git a/docs/build/html/class_thread_pool.html b/docs/build/html/class_thread_pool.html deleted file mode 100644 index 6e1439bc..00000000 --- a/docs/build/html/class_thread_pool.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -MLX: ThreadPool Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
- -
ThreadPool Class Reference
-
-
- -

#include <threadpool.h>

- - - - - - - - - -

-Public Member Functions

 ThreadPool (size_t)
 
template<class F , class... Args>
auto enqueue (F &&f, Args &&... args) -> std::future< typename std::invoke_result_t< F, Args... > >
 
 ~ThreadPool ()
 
-

Constructor & Destructor Documentation

- -

◆ ThreadPool()

- -
-
- - - - - -
- - - - - - - -
ThreadPool::ThreadPool (size_t threads)
-
-inline
-
- -
-
- -

◆ ~ThreadPool()

- -
-
- - - - - -
- - - - - - - -
ThreadPool::~ThreadPool ()
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ enqueue()

- -
-
-
-template<class F , class... Args>
- - - - - - - - - - - -
auto ThreadPool::enqueue (F && f,
Args &&... args ) -> std::future<typename std::invoke_result_t<F, Args...>>
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classes.html b/docs/build/html/classes.html deleted file mode 100644 index 56c89181..00000000 --- a/docs/build/html/classes.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -MLX: Class Index - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - -
- -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- -
-
Class Index
-
-
-
A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | Q | R | S | T | U | V | W | _
-
-
-
A
-
Abs
Abs (mlx::core)
Abs (mlx::core::detail)
AccumHelper (mlx::steel)
Add
Add (mlx::core)
Add (mlx::core::detail)
add_vec (pocketfft::detail)
add_vec< cmplx< T > > (pocketfft::detail)
AddMM (mlx::core)
AffineQuantize (mlx::core::fast)
aligned_allocator (pocketfft::detail::threading)
AllGather (mlx::core::distributed)
Allocator (mlx::core::allocator)
AllReduce (mlx::core::distributed)
And
Arange (mlx::core)
ArcCos
ArcCos (mlx::core)
ArcCos (mlx::core::detail)
ArcCosh
ArcCosh (mlx::core)
ArcCosh (mlx::core::detail)
ArcSin
ArcSin (mlx::core)
ArcSin (mlx::core::detail)
ArcSinh
ArcSinh (mlx::core)
ArcSinh (mlx::core::detail)
ArcTan
ArcTan (mlx::core)
ArcTan (mlx::core::detail)
ArcTan2
ArcTan2 (mlx::core)
ArcTan2 (mlx::core::detail)
ArcTanh
ArcTanh (mlx::core)
ArcTanh (mlx::core::detail)
ArgPartition (mlx::core)
ArgReduce (mlx::core)
ArgSort (mlx::core)
arr (pocketfft::detail)
arr_info (pocketfft::detail)
array (mlx::core)
array::ArrayIterator (mlx::core)
AsStrided (mlx::core)
AsType (mlx::core)
-
-
B
-
_MLX_BFloat16::bits_to_bfloat_struct
BitwiseAnd
BitwiseAnd (mlx::core::detail)
BitwiseBinary (mlx::core)
BitwiseOr
BitwiseOr (mlx::core::detail)
BitwiseXor
BitwiseXor (mlx::core::detail)
BlockLoader (mlx::steel)
BlockMaskedMM (mlx::core)
BlockMergeSort
BlockMMA (mlx::steel)
BlockSwizzle (mlx::steel)
bool4_or_uint
Broadcast (mlx::core)
Buffer (mlx::core::allocator)
-
-
C
-
Ceil
Ceil (mlx::core)
Ceil (mlx::core::detail)
cfftp (pocketfft::detail)
ChannelHelper (mlx::steel)
ChannelHelper< 1 > (mlx::steel)
ChannelHelper< 2 > (mlx::steel)
ChannelHelper< 3 > (mlx::steel)
ChannelHelper< 4 > (mlx::steel)
Cholesky (mlx::core)
cmplx (pocketfft::detail)
cndarr (pocketfft::detail)
CommandEncoder (mlx::core::metal)
CommonAllocator (mlx::core::allocator)
Compiled (mlx::core)
complex128_t (mlx::core)
complex64_t
complex64_t (mlx::core)
Concatenate (mlx::core)
concurrent_queue (pocketfft::detail::threading)
CommandEncoder::ConcurrentContext (mlx::core::metal)
Conjugate
Conjugate (mlx::core)
Conjugate (mlx::core::detail)
Conv2DGeneralBaseInfo (mlx::steel)
Conv2DGeneralJumpParams (mlx::steel)
Conv2DInputBlockLoaderGeneral (mlx::steel)
Conv2DInputBlockLoaderLargeFilter (mlx::steel)
Conv2DInputBlockLoaderSmallChannels (mlx::steel)
Conv2DInputBlockLoaderSmallFilter (mlx::steel)
Conv2DWeightBlockLoader (mlx::steel)
Conv2DWeightBlockLoaderGeneral (mlx::steel)
Conv2DWeightBlockLoaderSmallChannels (mlx::steel)
Convolution (mlx::core)
Copy (mlx::core)
Cos
Cos (mlx::core)
Cos (mlx::core::detail)
Cosh
Cosh (mlx::core)
Cosh (mlx::core::detail)
CumMax
CumMin
CumProd
CumProd< bool >
CumSum
Custom (mlx::core::fast)
CustomKernel (mlx::core::fast)
CustomKernelShapeInfo (mlx::core::fast)
CustomTransforms (mlx::core)
-
-
D
-
array::Data (mlx::core)
DefaultContiguousReduce (mlx::core)
DefaultStridedReduce (mlx::core)
Depends (mlx::core)
Device (mlx::core)
Device (mlx::core::metal)
DistPrimitive (mlx::core::distributed)
Divide
Divide (mlx::core::detail)
Divide (mlx::core)
DivMod
DivMod (mlx::core)
Dtype (mlx::core)
-
-
E
-
Equal
Equal (mlx::core::detail)
Equal (mlx::core)
Erf
Erf (mlx::core::detail)
Erf (mlx::core)
ErfInv
ErfInv (mlx::core::detail)
ErfInv (mlx::core)
Event (mlx::core)
ExecC2C (pocketfft::detail)
ExecDcst (pocketfft::detail)
ExecHartley (pocketfft::detail)
ExecR2R (pocketfft::detail)
Exp
Exp (mlx::core::detail)
Exp (mlx::core)
Expm1
Expm1 (mlx::core::detail)
Expm1 (mlx::core)
-
-
F
-
FFT (mlx::core)
fftblue (pocketfft::detail)
FileWriter (mlx::core::io)
array::Flags (mlx::core)
Floor
Floor (mlx::core::detail)
Floor (mlx::core)
FloorDivide
Full (mlx::core)
-
-
G
-
Gather (mlx::core)
GatherMM (mlx::core)
GatherQMM (mlx::core)
GEMMAddMMParams (mlx::steel)
GEMMKernel (mlx::steel)
GEMMParams (mlx::steel)
GEMMSpiltKParams (mlx::steel)
GEMVKernel
GEMVTKernel
Greater
Greater (mlx::core::detail)
Greater (mlx::core)
GreaterEqual
GreaterEqual (mlx::core::detail)
GreaterEqual (mlx::core)
Group (mlx::core::distributed)
-
-
H
-
Hadamard (mlx::core)
-
-
I
-
ImplicitGemmConv2DParams (mlx::steel)
Indices
IntOrFloat (mlx::core::detail)
InTracing (mlx::core::detail)
Inverse (mlx::core)
-
-
K
-
KernelMergeSort
KernelMultiBlockMergeSort
KeySequence (mlx::core::random)
-
-
L
-
latch (pocketfft::detail::threading)
LayerNorm (mlx::core::fast)
LayerNormVJP (mlx::core::fast)
LeftShift
LeftShift (mlx::core::detail)
Less
Less (mlx::core::detail)
Less (mlx::core)
LessEqual
LessEqual (mlx::core::detail)
LessEqual (mlx::core)
LessThan
Limits
Limits< bfloat16_t >
Limits< bool >
Limits< complex64_t >
Limits< float >
Limits< half >
Limits< int16_t >
Limits< int32_t >
Limits< int64_t >
Limits< int8_t >
Limits< uint16_t >
Limits< uint32_t >
Limits< uint64_t >
Limits< uint8_t >
Load (mlx::core)
Log
Log (mlx::core::detail)
Log (mlx::core)
Log10
Log10 (mlx::core::detail)
Log1p
Log1p (mlx::core::detail)
Log1p (mlx::core)
Log2
Log2 (mlx::core::detail)
LogAddExp
LogAddExp (mlx::core::detail)
LogAddExp (mlx::core)
LogicalAnd
LogicalAnd (mlx::core::detail)
LogicalAnd (mlx::core)
LogicalNot
LogicalNot (mlx::core::detail)
LogicalNot (mlx::core)
LogicalOr
LogicalOr (mlx::core::detail)
LogicalOr (mlx::core)
LoopAlignment (mlx::steel)
looped_elem_to_loc
looped_elem_to_loc< 0, offset_t >
looped_elem_to_loc< 1, offset_t >
-
-
M
-
Matmul (mlx::core)
Max
Maximum
Maximum (mlx::core::detail)
Maximum (mlx::core)
MetalAllocator (mlx::core::metal)
Min
Minimum
Minimum (mlx::core::detail)
Minimum (mlx::core)
mlx_atomic
mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >
MLXConvParams
MLXFastAttentionParams
MLXScaledDotProductAttentionParams
multi_iter (pocketfft::detail)
Multiply (mlx::core::detail)
Multiply (mlx::core)
Multiply
-
-
N
-
NaNEqual (mlx::core::detail)
NaNEqual
ndarr (pocketfft::detail)
Negative (mlx::core::detail)
Negative (mlx::core)
Negative
NodeNamer (mlx::core)
None
NotEqual (mlx::core::detail)
NotEqual (mlx::core)
NotEqual
NumberOfElements (mlx::core)
-
-
O
-
Or
-
-
P
-
Pad (mlx::core)
ParallelFileReader (mlx::core::io)
Partition (mlx::core)
pocketfft_c (pocketfft::detail)
pocketfft_r (pocketfft::detail)
Power (mlx::core::detail)
Power (mlx::core)
Power
Primitive (mlx::core)
PrintFormatter (mlx::core)
Prod
-
-
Q
-
QRF (mlx::core)
QuantizedBlockLoader
QuantizedMatmul (mlx::core)
-
-
R
-
RandomBits (mlx::core)
Reader (mlx::core::io)
BlockLoader::ReadVector (mlx::steel)
ReadWriter
Recv (mlx::core::distributed)
Reduce (mlx::core)
ReductionPlan (mlx::core)
Remainder (mlx::core::detail)
Remainder (mlx::core)
Remainder
Reshape (mlx::core)
RetainGraph (mlx::core::detail)
rev_iter (pocketfft::detail)
rfftp (pocketfft::detail)
RightShift (mlx::core::detail)
RightShift
RMSNorm (mlx::core::fast)
RMSNormVJP (mlx::core::fast)
RoPE (mlx::core::fast)
Round (mlx::core::detail)
Round (mlx::core)
Round
Rsqrt (mlx::core::detail)
Rsqrt
-
-
S
-
ScaledDotProductAttention (mlx::core::fast)
ScaleOp
Scan (mlx::core)
Scatter (mlx::core)
Scheduler (mlx::core::scheduler)
Select (mlx::core::detail)
Select (mlx::core)
Select
Send (mlx::core::distributed)
Sigmoid (mlx::core::detail)
Sigmoid (mlx::core)
Sigmoid
Sign (mlx::core::detail)
Sign (mlx::core)
Sign
simple_iter (pocketfft::detail)
Sin (mlx::core::detail)
Sin (mlx::core)
Sin
sincos_2pibyn (pocketfft::detail)
Sinh (mlx::core::detail)
Sinh (mlx::core)
Sinh
Slice (mlx::core)
SliceUpdate (mlx::core)
Softmax (mlx::core)
Sort (mlx::core)
Split (mlx::core)
Sqrt (mlx::core::detail)
Sqrt (mlx::core)
Sqrt
Square (mlx::core::detail)
Square (mlx::core)
Square
StopGradient (mlx::core)
Stream (mlx::core)
StreamContext (mlx::core)
StreamThread (mlx::core::scheduler)
Subtract (mlx::core::detail)
Subtract (mlx::core)
Subtract
Sum
SVD (mlx::core)
-
-
T
-
T_dcst23 (pocketfft::detail)
T_dcst4 (pocketfft::detail)
T_dct1 (pocketfft::detail)
T_dst1 (pocketfft::detail)
Tan (mlx::core::detail)
Tan (mlx::core)
Tan
Tanh (mlx::core::detail)
Tanh (mlx::core)
Tanh
thread_pool (pocketfft::detail::threading)
ThreadPool
ThreadSort
TransformAdd (mlx::steel)
TransformAxpby (mlx::steel)
TransformNone (mlx::steel)
Transpose (mlx::core)
TypeToDtype (mlx::core)
-
-
U
-
UnaryPrimitive (mlx::core)
Uniform (mlx::core)
util (pocketfft::detail)
-
-
V
-
View (mlx::core)
VLEN (pocketfft::detail)
VTYPE (pocketfft::detail)
-
-
W
-
Writer (mlx::core::io)
-
-
_
-
_MLX_BFloat16
_MLX_BFloat16 (mlx::core)
_MLX_Float16 (mlx::core)
_NoMask
_numeric_limits_impl< bfloat16_t > (metal)
-
-
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_abs-members.html b/docs/build/html/classmlx_1_1core_1_1_abs-members.html deleted file mode 100644 index c4d6a962..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_abs-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Abs Member List
-
-
- -

This is the complete list of members for mlx::core::Abs, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Abs(Stream stream)mlx::core::Absinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Absvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Absvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Absinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Absvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Absinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Absinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Absvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Absvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_abs.html b/docs/build/html/classmlx_1_1core_1_1_abs.html deleted file mode 100644 index a7874181..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_abs.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Abs Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Abs Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Abs:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Abs (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Abs()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Abs::Abs (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Abs::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Abs::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Abs::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Abs::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Abs::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Abs::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Abs::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Abs::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_abs.png b/docs/build/html/classmlx_1_1core_1_1_abs.png deleted file mode 100644 index ee6584fe99fc35e9877aa595ed31186df27fcc95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-4JzX3_Dj46+ec1O(LBNe) zzH{dH`bW{XZ!s;klG=UxY~RBr5eXJN3+hi=KL4oTeJP`5no1?7uIHym7rZ7tQNL@y zcVlp^=A!p& z_Q0U!S2msw?~m1r+EsXpW73sRI?<_9)TDzhP5hO!b(8)2tF}*Q zNA;Ula<8XHO)6>fUTyX1?M9T7nri-pGh$<9j{L>=VF#Q74 z2cam2I4AA{-WiM)oVpD93t1niZeiGiB>Ar)?3`skd*mcHxao_-CaKsLe_x(_>F?!k zyQ|ZcJWcHveqD0><^f-A+cVF-3=?8sJvJ=A9lpPGp46>6?=7}>eyy96`D#zC=Hqu! z#dlO>y=^zug!=3<`|>;V{VwCF$**&!*3QcD@N}P*GxzJ=b78yZYWpdAWnWGDuJqYIW`pkhacV3oVtHn8YwuWc?^RxF4$p8BM^Tw;7wddFVo4-HH^H-^p_oO{NtEU#9JIwe& zH;>`5;j(LQ&6ZrB5jFX0M_hB(QD2r1!i0hb8g4(CqcoSA$f+1_zR00#Y^=X9HSO8c z*tOrqH}+H%-+3C9DOuEeP3F(N&2v+Kb!y5NZ(n*Z%hqbv%)Lieo3{I=9S^d3=J`GR z_U*l?wb^OkM9R0FTKP>eTX$xp_x7W^r;BIYwRfF0JwNr@nKN-88pC$Jn4BZK{^7l% zi)vx+`)s4v-db1s^`_RknCEJFUoRy}mLK#rG5+o8bo$I0?~IuXS - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Add Member List
-
-
- -

This is the complete list of members for mlx::core::Add, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Add(Stream stream)mlx::core::Addinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Addvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Addvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Addinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Addvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Addinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Addinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Addvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Addvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_add.html b/docs/build/html/classmlx_1_1core_1_1_add.html deleted file mode 100644 index a5a7ad12..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_add.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Add Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Add Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Add:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Add (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Add()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Add::Add (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Add::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Add::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Add::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Add::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Add::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Add::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Add::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Add::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_add.png b/docs/build/html/classmlx_1_1core_1_1_add.png deleted file mode 100644 index 39bba292a843ebf0497a42bb6bc0289f5598f73a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 874 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+PJzX3_Dj46+eb~2JLBNe) z-qZN~|0CC@K9ZN2pQ_A@`hBF|%=jr?za+U&c}ex`Fy;j+xvzI(lbZu)I` zmpJ80X6c)v7dyR=PR^TS)TFX?PU`BOODWD?w}P*SY5%TWn>STHOE)!e?W7R1`C*k! ze4DoFzn0&s@{(bCSm>wR+_z>Q)7O5A@VGQDe9JZ7wf>K8y9T7nri-pGh$<9f{L>=VF#Q742cam2I4AA{ z-WiM)oVpD93t1niZeiGiB>Ar)?3`skd*mcHtz3%3+p_45C`Ggv3W?rY`D<+<_u{pQJS`7C#FTfymwpUW~oRRtfryXDyq z&s*E8QY}OFlvG}rAKqJfKV;q7&7tQqHz}&V&D>OKQoeTWx8ilzZe1&_1FbxU z$A-(Uy)|2MeMZ#es~vI8Sw}rtJ_r*E8fduvWRB8YY9gm%y!j%BuCcNH!ql{9PhHnu z-=7%0@k@-N-P)}CcmfqBgzp6WZ+PlfW7S6oMcs=`Wz3VLb^7+@J7R^sxeevG=Z8L9b z>Su?l-oF;MIxMSp+qN#{>z19_`+c$tS=QTjrlrNJZaH&iPs_BKGpAoLGX89|F3d}l b_qcsu>)e>BKaalz<_ZQ+S3j3^P6 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::AddMM Member List
-
-
- -

This is the complete list of members for mlx::core::AddMM, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
AddMM(Stream stream, float alpha, float beta)mlx::core::AddMMinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::AddMMvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::AddMMvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::AddMMvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::AddMMinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::AddMMvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::AddMMvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_add_m_m.html b/docs/build/html/classmlx_1_1core_1_1_add_m_m.html deleted file mode 100644 index 16d98170..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_add_m_m.html +++ /dev/null @@ -1,404 +0,0 @@ - - - - - - - -MLX: mlx::core::AddMM Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::AddMM Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::AddMM:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 AddMM (Stream stream, float alpha, float beta)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ AddMM()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::AddMM::AddMM (Stream stream,
float alpha,
float beta )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::AddMM::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::AddMM::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::AddMM::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::AddMM::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::AddMM::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::AddMM::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_add_m_m.png b/docs/build/html/classmlx_1_1core_1_1_add_m_m.png deleted file mode 100644 index 5e054780b6598dd29eb1019067f39135616a7ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU7o-U3d6^w7^zV3Uiz{A$g zzw*;>`;VT*iW4TRi{2XBcTIHh1(q{MW_;7Pd~PF`;wja8VUmjeLRHT=nJCXmf0q1S zZeIRM-*-~o1Li3HXFHr@vzNZT`^-Sp*I$MGTzV}^?5vJw>F3O= z>MxX{pKtmX=siiVAk$Q}e$Cp;YX8=R%5!^KeeMandEuMNv^w>*o>@_!yY%O}c>XeV z@}9J(WtvJQr>^HGqjh2DEcw|F?B2oHb9_eB_S+NUlCylnl&g4GiK+`8@XuhZ;M8T% zUEbqm9u7O{ru7nnW>MKQ!VaUbwTNIvDycsl2E#RSz%6PW3i*{YtOjQQ&=)bHBw zeGy!rIqAwL-nHz?>(s>7Zkc(0Zq}h+t8S;tZQEZfX=7{A7rp51!)w)Fy)Hlaw6t$` z_SwS8C3$bp{0iIp;@1NEbvv)euAFx}ZM9tSiMA;v&nB#0y>aQbzV)B;)&}!#mk!jH zy|3W;d|U1hx$Ub%=l6H#lxD5os@?jdC2ac>?`*Gqo9`_4t?^xLCuW~Hl{eQv;^q7E z{MLKYe-|vXj`9_=XNzAg@dtkF>PKf>CK{aZabtoauId zUHP&0*sa-mxA$(#PP_I{IVy90P^RwP-%DT3nps-0z?6NzeQfy6=~0hzr>CB^IZbJhFnsiTu3oxgkTtcid9 zZ{?*uHP%^EH?7!}mL@wVs#SR^{7j9lKTm$tq5uE@ diff --git a/docs/build/html/classmlx_1_1core_1_1_arange-members.html b/docs/build/html/classmlx_1_1core_1_1_arange-members.html deleted file mode 100644 index 3d8271ae..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arange-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Arange Member List
-
-
- -

This is the complete list of members for mlx::core::Arange, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Arange(Stream stream, double start, double stop, double step)mlx::core::Arangeinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Arangevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Arangevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Arangevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Arangeinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arange.html b/docs/build/html/classmlx_1_1core_1_1_arange.html deleted file mode 100644 index 936235fe..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arange.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - -MLX: mlx::core::Arange Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Arange Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Arange:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Arange (Stream stream, double start, double stop, double step)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Arange()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::Arange::Arange (Stream stream,
double start,
double stop,
double step )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Arange::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Arange::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Arange::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Arange::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arange.png b/docs/build/html/classmlx_1_1core_1_1_arange.png deleted file mode 100644 index b5f5fd908820b268b6341df21e452a303bedbbab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU-o-U3d6^w7^zPG_njp7fpP6*%XcBiqh9{YD_-ukQ{-{o%){4ytvPsoqUF(9>0H|Jw<0IKDqB?Q zyLidmYtPo@-wj_Wb@Oa+`h+F(HfLRp+?D0w8GUQ-)zfwH+2zyavvhASnyI=n&u;B6 z7TJ*O-D~BuJTEcotxY@qy*hhyNB`DW$%>xQ^Db&}-_g{q!$PTrID^sJs*eC{yg2R%K8$A-(UJvCZ#eMZ#es~vI8Sw}rtJ_tuK#5r*v z@XlbY;M8T%UEbqm9u7O{ru7nnW>AtZnDZz(!gX>($di4@G_oUM~oe$G7X|9r{o zbp78~_M3WU{cOADdF0}eMN{8BD_%Zp!=6`vjoR1d$2To+w0k!#*LVA!)$>hQr|XyA z3(Y<^dr59~`nBz=+Vz-!7oOdFSN&@7?X0VYv8GFw=*DjCOFDh;Rs8e2QL}CD=(()D zvfpviwzvBpWZ#Qj`>RGKBs)ESYgwwY-NLQApL%C+`*ZH`IkAtXYkx)9Tml8ihD-6s zcZr=9sh zYz)J(WS_OCQ$5xjZdF??xR>o}*JO?d>R7`AGq66%XDpp^sba#JGr%Nr=FFa!X)|Yv z&%gHhm3_@k{>-KFRdch>o?QRLNWB285 znN?xDnQi;ENgvll%`G$Evvss^G-&?chuD`ecLwIi5w@|0kXU?475v94*M5dm>f^&}InjWt& Qz-+_d>FVdQ&MBb@07Wm)i~s-t diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_cos-members.html b/docs/build/html/classmlx_1_1core_1_1_arc_cos-members.html deleted file mode 100644 index 233f3300..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_cos-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcCos Member List
-
-
- -

This is the complete list of members for mlx::core::ArcCos, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcCos(Stream stream)mlx::core::ArcCosinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcCosvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcCosvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcCosinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcCosvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcCosinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcCosinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcCosvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcCosvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_cos.html b/docs/build/html/classmlx_1_1core_1_1_arc_cos.html deleted file mode 100644 index b465b208..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_cos.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcCos Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcCos Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcCos:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcCos (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcCos()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcCos::ArcCos (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcCos::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcCos::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcCos::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcCos::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcCos::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcCos::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcCos::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcCos::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_cos.png b/docs/build/html/classmlx_1_1core_1_1_arc_cos.png deleted file mode 100644 index 2daeb8d48a2150ddda1796400d1dd81551bf6b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUXo-U3d6^w7^=Jr2U;9+ZL zU-{|(|D)5>q?uZlRz`TsM0K-K~lG z%4>D<+Qv2Wvpg?x>aAV&AnPaR+HT2o?(VQ# zXRfzr9efG$fpVvoCs+$XnN9u*pl%QGslV;w`X_+>2=JX3j#-ATus=8aV!m(>ycHNeQIk7;S4-V$Kb>W~Sy*rDv=y_Xj8;c~ z-Foc)Zm;*-N=VGY)^eG!Kgn}`AdzKov7U=XodxlAK=KuDVFa~B822WQ%mvv4FO#pv+!N&jq diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_cosh-members.html b/docs/build/html/classmlx_1_1core_1_1_arc_cosh-members.html deleted file mode 100644 index 29d5b972..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_cosh-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcCosh Member List
-
-
- -

This is the complete list of members for mlx::core::ArcCosh, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcCosh(Stream stream)mlx::core::ArcCoshinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcCoshvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcCoshvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcCoshinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcCoshvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcCoshinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcCoshinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcCoshvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcCoshvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_cosh.html b/docs/build/html/classmlx_1_1core_1_1_arc_cosh.html deleted file mode 100644 index 54a74572..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_cosh.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcCosh Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcCosh Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcCosh:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcCosh (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcCosh()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcCosh::ArcCosh (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcCosh::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcCosh::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcCosh::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcCosh::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcCosh::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcCosh::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcCosh::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcCosh::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_cosh.png b/docs/build/html/classmlx_1_1core_1_1_arc_cosh.png deleted file mode 100644 index 2242caeb7f52244dab16af18cfd137121009a01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT?o-U3d6^w7^=Jr2U;9+ZL zU-{|(|D)HJaWXmu<*(m;`elq^)~Rk|iOs*K&MBV9ze(k+TZZSP=@%xc=<}^r@vOV_ z*f^@XzRt|E>Y#Z>?3%)MtLt93?@ephdNQl$ZT8G<&(r7sk%)A9Q~2)kss6I5OLoO( z*dEfzym0GA>Gd+Nt0xTnWF03}t=kmp{&JI|s%&QV>gj(g*CtM#pS3pi;+jbz=JUg9 zoBcMG>b#yFHL0Y@d$s1zecSlje?+a`CpM|%iFVXehugCw=CNn`23?+|yRTGO_2qRA zUC&QKQInpiZc#aTdQX()a~oNP`H$EPYTU_cxNzH zaOyJXFJyh7x`km+i&(?-3rrt`q8Q?kB>y*towGd89yuvZ8EC3EC=3>dO;WKx{pGaj z%a4+-`|a&#t8D$#a_wl(=2lnj+-Ikqw4~y|6i~_(@uttlZjVPk!Heb+s?*>&k6gzY4A` zTJY9a=X`0@>Rs{HyHelFEt+}ry - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcSin Member List
-
-
- -

This is the complete list of members for mlx::core::ArcSin, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcSin(Stream stream)mlx::core::ArcSininlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcSinvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcSinvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcSininlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcSinvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcSininlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcSininlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcSinvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcSinvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_sin.html b/docs/build/html/classmlx_1_1core_1_1_arc_sin.html deleted file mode 100644 index 8f35ffa7..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_sin.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcSin Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcSin Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcSin:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcSin (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcSin()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcSin::ArcSin (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcSin::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcSin::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcSin::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcSin::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcSin::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcSin::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcSin::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcSin::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_sin.png b/docs/build/html/classmlx_1_1core_1_1_arc_sin.png deleted file mode 100644 index 644ab73d9f61e878574c75e7c990b56da38092c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU%o-U3d6^w7^zRr8CAi&nn zuX*cx{iDeiW^6r^eWz@ZDb;pc7IW=zRp$Rm#pgadPFr%5L)Y_@P}HO+M;A_2IqARa zZ_l^5-`~|d{eLuFYqotC@H{Hh`u3%jPU}wIkUPD}*8caS+h>H5`io=3>N3kcSKVe_ z8!e&A8zsG4?$*8_Q{$ds_X$hpx!+v1xa8)9Nqt+kUOoM9&$SJw{I_1)lu_onYPSFC zeU9okt)_hq*7dYHxb*6jn)vAU{vR=`_lZp^c_O;@ljH5#5x<(ZsIAOAD|mlb=cF&$ zEz?vgIiaphjaxgXcphJae<93=#yRs|l>=&{=P~F0?r$ww` z`UR#BLQxEHPTU8)GZ-s4bs6-LB<&YWMf3mD6+r)=-}L9Es6OmfKmYx{5A)u>^W)z#ONA$I zkxK0x@&9c9F4)iCzINZLuluh4|GYkGQr+AOlT`FSXFZ+sxrCvni~B&$nU$qGeO{U_ zzjigtZN2B#M`}zz&;kNyDE(nvJ0)lq|D>5Wb6Td&oH_l1k@4q8SE}yTZg^aFc+SRs zOQ-flPh(79a6HQU!*9;p3%(amKfdYBz4u#It<0_Bys2YmoL#wS>l^>H<6*Yb%HKGr zmh@iGi4I@8I4#Y2Uh3+)tNV)Hsv5t}O#k)poefaTZuwTRFL8I7*V-)v^8Q4X-t*sd zHM2Z;_A~dbvnIXIUL9_omD~PnQrOQ0Z+&(CTCEMeo8N!_%Cwm`*9%0YrNud&K6A!9 lW9H1tnc> - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcSinh Member List
-
-
- -

This is the complete list of members for mlx::core::ArcSinh, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcSinh(Stream stream)mlx::core::ArcSinhinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcSinhvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcSinhvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcSinhinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcSinhvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcSinhinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcSinhinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcSinhvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcSinhvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_sinh.html b/docs/build/html/classmlx_1_1core_1_1_arc_sinh.html deleted file mode 100644 index 3c5272e3..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_sinh.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcSinh Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcSinh Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcSinh:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcSinh (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcSinh()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcSinh::ArcSinh (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcSinh::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcSinh::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcSinh::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcSinh::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcSinh::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcSinh::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcSinh::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcSinh::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_sinh.png b/docs/build/html/classmlx_1_1core_1_1_arc_sinh.png deleted file mode 100644 index 728cb98d33b26311eb475e6419bdc830d42310fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GTyo-U3d6^w7^zRr8CAi&nn zuX*cx{iDeiW^6robEj;PDb;o>+qtGaHS_dWge z7piViIeB_dl;v|9S%&wI*bL;0v+m{vSDjs1x_#Eg?4Y$fIvMJmxDR+|FjjEtGUzX4 zeW1F9VNZ)#!}JSGAB3V9;*cck9kid%dETt!xmghCcd*HU+Mbi&p*G*ZuqL zXRB=e({k--&*oNF?c8Uly|*UZef2G3+1uUvlixG{-IKn>_Rg*F`j>V){{$VsyLH+Q zPpfTZsdqzbOJpU^Xa8!8Uv+)k%~j7!ZcdogS8~&8c68S2`{#CVYZFgSzc%I1gW~Y^AG5-0b@yG;V!w57!>4`ya?G4gpE={5F>_|+$Bf$e znhlQ%_s*JldWHN&uj8uT?w5bBx+e5z=V7xK#rL0X^r_xg9(DDC*`Ah|>RF~~VOzD= zrY0I$Z+o?o<^FE3_fiXIZaWv1zOFefja_eZX#J}Ik&|btZcW^``>wxrMp|k0fdh_ z{<$+}{uNu8n)Xa}%b7EKTBgmM2@HiGuS~0djHcV?XnfiG<}fhBFnGH9xvX - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcTan Member List
-
-
- -

This is the complete list of members for mlx::core::ArcTan, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcTan(Stream stream)mlx::core::ArcTaninlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcTanvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcTanvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcTaninlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcTanvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcTaninlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcTaninlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcTanvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcTanvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tan.html b/docs/build/html/classmlx_1_1core_1_1_arc_tan.html deleted file mode 100644 index 52bf5308..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_tan.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcTan Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcTan Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcTan:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcTan (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcTan()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcTan::ArcTan (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcTan::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcTan::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcTan::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcTan::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcTan::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcTan::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcTan::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcTan::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tan.png b/docs/build/html/classmlx_1_1core_1_1_arc_tan.png deleted file mode 100644 index 61bf8d991ceab8d3da11e185d62fa8119883f9aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU%o-U3d6^w7^zRr8CAi&nn zuX*cx{iDYg`xuU$Q}c@I+a(&D%>4S}rY-d+EuVi>@V=DMGEJqDQ`hs;qYGY>o~Ylg zugYHjZ?Wek;e88AHy)FH6{EfOzFB$K1aG5jr)_f2pSSyIXViYaLdk)u>a8qEuJr*scA< zGB@RQ#5Mn|Dlb{4hlPI1&6PF#xHGI$N9E-S?Wo&r*VGGNmtUH-WL4<=AJ;smEQwd% zqH@wZ!*kN~3zJmzA7?$C^SOYbrc3%jMbFC8-MlYNmt9LSU37gxRG|>#pBAx(=@*zj z2t_f(IdLEG&S0$I)Me0L$ofEa3&S2H$$t%D=Pdi#BPY4ROzk`+DEXnCSG?b1s8|;Zn-$oOfZ-Z=cshy$(41)oqH`TXB__ zH?HyCe_Xcp)aSxUYyEPsmPIS>TX0qP=h{%!`;~XEs_k1ID%YJ34v?JJ?;oG#dw(FP z)7ZH9gX-EV(Vv{Ac(1kmQCm}a+N|{Fo3BRxtBp2hg*u;p|1(c&$EH2kW{InBPS)1@ z%>B*%_GMM4!p;9?h3aqqt`hxp^|wxM{h5*8wn6rK)?aIkH+S`ChJM|1w{(k~^ZZL% zlj|m}b^C1)lKUuq%c@EF*{@Y}-(L8>WgG8W|D?hL-?oUA-k*2GeNXw;GiU1BFBlnr s7K%zsi*q`C=FI6GQJPClWd1YU37^xvZR(>Pz^uaH>FVdQ&MBb@09$FjhyVZp diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tan2-members.html b/docs/build/html/classmlx_1_1core_1_1_arc_tan2-members.html deleted file mode 100644 index 0fc8af25..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_tan2-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcTan2 Member List
-
-
- -

This is the complete list of members for mlx::core::ArcTan2, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcTan2(Stream stream)mlx::core::ArcTan2inlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcTan2virtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcTan2virtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcTan2inlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcTan2virtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcTan2inlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcTan2inlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcTan2virtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcTan2virtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tan2.html b/docs/build/html/classmlx_1_1core_1_1_arc_tan2.html deleted file mode 100644 index 2e293234..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_tan2.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcTan2 Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcTan2 Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcTan2:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcTan2 (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcTan2()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcTan2::ArcTan2 (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcTan2::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcTan2::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcTan2::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcTan2::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcTan2::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcTan2::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcTan2::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcTan2::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tan2.png b/docs/build/html/classmlx_1_1core_1_1_arc_tan2.png deleted file mode 100644 index ff2449809de9c29a3400c3f1f7091052e7e901da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 913 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUNo-U3d6^w7^zRr8CAi&nn zuX*cx{iDZLW^6r^eWz@bDb-$fFy`7}rjzkS=PK<^Ofr#PsOlN#jM;^ZtUb34PXAwuarhzAbFkglMC0{iQc1&QJajeqQQP$7UXF{J?i$xj5Nee{WjlJ}O@OE6U^2%dWgK zx}Kkeq9#32-J){x^qwfo=Qgqo^B=Jp$QNhb%?qwNyK-y9*%ziO!|u2+*e_&#pt^-& zPm5T?^b1TMgrXSYoVX8oXE0W9>N4mfN!l-%T72%a1$VSe46w1^v^BVUh-_04%Ggt z?Qv=68|k_uvRPNZKURuv-hB1e)aD;e*FKz>eo5x%!Pj!RkE)}-Zmn1rYPMx>;?lY= z<<>PRyLVq^UaQ90JX^z4{`t}O2jqW!ti1gydh5OIzv}B&0Yi!t7*a;-!_HayvmaQ# zgYnGqIZ@khPl+qe(hW1N@?9lrE_lEnGc2$M)KmV9rBg1|OgM8UO?k_iGkaR5&73*? zdDQys`Dr=ZPoJ4(l<~`Lt;wvSizT9eg0gw*=I`v&IK0jDo&4(!X*YL=UEcaPe*Uz+ z+CQ(OUO!1G)4O{7SJUE^Tk-@~wQJc|A8(#pF=6em(Bli%PCK(^`R&=ucCOp9E-g*n zZqd~_&p(-5*i}AvdQ#f82bZ)w_n!+}Ui&J`?BfpuW9f$%vxM%=U)#OqOYHsSprGlz z%4!`KHuv{GwR?~6>c4y{9{%UYjG2|3y2i%(3scjcse;_D6Q#M-MD{;JiRv8T77yEP Qz|6zo>FVdQ&MBb@0Lo~`?EnA( diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tanh-members.html b/docs/build/html/classmlx_1_1core_1_1_arc_tanh-members.html deleted file mode 100644 index 64caf5fc..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_tanh-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArcTanh Member List
-
-
- -

This is the complete list of members for mlx::core::ArcTanh, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArcTanh(Stream stream)mlx::core::ArcTanhinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcTanhvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArcTanhvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArcTanhinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ArcTanhvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArcTanhinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArcTanhinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ArcTanhvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArcTanhvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tanh.html b/docs/build/html/classmlx_1_1core_1_1_arc_tanh.html deleted file mode 100644 index 9b55347c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arc_tanh.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ArcTanh Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArcTanh Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArcTanh:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArcTanh (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArcTanh()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ArcTanh::ArcTanh (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcTanh::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArcTanh::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArcTanh::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcTanh::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArcTanh::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArcTanh::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ArcTanh::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArcTanh::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arc_tanh.png b/docs/build/html/classmlx_1_1core_1_1_arc_tanh.png deleted file mode 100644 index 59f4ba4f4fc80b3ffcab15b8c7002012d6b8c63c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GTyo-U3d6^w7^zRr8CAi&nn zuX*cx{iDYg`xuU$Q}c@I+a(&DtoJ&x@teNoa~ru7PpRGulT`E5d?Qou(y|gs9cqzwDmE_tphrj)K)BN7HxWo3GNlx|3bWg3*t=DXO zCRr`*i#1!jJLF5r<0*nFE1zmbr%q9m4!Sh)SI*W=_Uo_OK3yJldgF>TPpxkM)q5P( zZ(7N{ULG~6q{(}=)u*>Nt#Td}ul*F|acN@smTkOi^B;x1Ut;PRx^mi&Yra#K#4B%6 zIq99@IcYk`rH`|o&iP!xP}3!SprU7G>2BVarpvCSm@c}$AgWN9@lT6b!}JSGAB3V9 z;+(h-cxNzHaOyJXFJyh7x`km6lH|XJuydCE?2(h);HEDQo1|j@`NL_;m;Wwz+g+7+ zos?DQ^g8Lt%_F|rYo8S_ov}fu6chwk^P89VmEBRkC6||}z2AiQUfii2yRXTZdmaxu zuQR)=Ur+XLVQBPs@27XHqMyzH2ZLI4dh+(oSM{D>j%qiK$#+?KWu1cO@lAO@{mhk<{TI-J*ug!ISExqmP_kU^a-*e2%cP$Q8 zU05uv`ttFfALbw0|NY#P`!#g!_qG4#*I%9V<#o$6l}gEQ?dNmanI8n-VK|oTv-Wnb z$9lu9YO4kJvR&<(&GA4TH6UskhGITRZ1pT-8@oz0L2^rLtQ8?AsT9sfmf__-7ZsyFL3y$M<#9X5M@c mccyp7%$cBISURQcu{^WL9M;_u7u|pvhQZU-&t;ucLK6Vpv$(AQ diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_partition-members.html b/docs/build/html/classmlx_1_1core_1_1_arg_partition-members.html deleted file mode 100644 index b3ae98b7..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arg_partition-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArgPartition Member List
-
-
- -

This is the complete list of members for mlx::core::ArgPartition, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgPartition(Stream stream, int kth, int axis)mlx::core::ArgPartitioninlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArgPartitionvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArgPartitionvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArgPartitionvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArgPartitioninlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArgPartitioninlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArgPartitionvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_partition.html b/docs/build/html/classmlx_1_1core_1_1_arg_partition.html deleted file mode 100644 index ecdce666..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arg_partition.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - -MLX: mlx::core::ArgPartition Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArgPartition Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArgPartition:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArgPartition (Stream stream, int kth, int axis)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArgPartition()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::ArgPartition::ArgPartition (Stream stream,
int kth,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArgPartition::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArgPartition::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArgPartition::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArgPartition::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArgPartition::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArgPartition::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_partition.png b/docs/build/html/classmlx_1_1core_1_1_arg_partition.png deleted file mode 100644 index 8dcfb003d24a60c695b8e610cc069a2949a22060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GW1o-U3d6^w7^zRhbk;Bn2* zTXO3C|0B&JLeHBYm2Ej|;%~|HDUq*l^FP-f!*lFPp6A-KCoU1auH>oBw$@=%*`Z(N zQM>Qlm-d|Zfo&~&_L+r!TMzxqed*SEXVS*_OIs$*H>#BNRP>sY8dbL%w{l{ljBKMyv|OsUd*&ubwr^LqUOiP8mmTr6Jt{gfWVOeuw9A*&UnoS^ zM$XTg_=Hhy?W!lYZ@n`67~?I^J?TxQn|6LitJTdp-rx^r(1yK(k%Z`6j`S9PA3PhEe0^0b5Xd%3kOw|{+^J?-RA$K$$D znt2Mp!`5GkeYN!Vfr_}R<~5V!qSL+4gG0jPrq!(3*{lD~S-o|a)H-t~?XB?wC-%LS zj(fzn^~+C-6W11O%i0~&;h(|lZMS{Z6ZZAhTRPWgzDzD$Hr0HKUEL0Y%)x>S9T7B(xSpD8P`-^fLA@t=;xzlF_!itb&;<-M>s& zr+c^d!&>poP}aHgUwxl`@bs2d2Oj6}YE>?{TK?Z@wbsvV+oHDmd5fR1-twvKntI^e z#gimrzn@iGb?AipRu_xQLV`Qn;*Zw$UwiP|)#c3|&FH`VeH|Th_kRo4Rr+Kb - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArgReduce Member List
-
-
- -

This is the complete list of members for mlx::core::ArgReduce, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgMax enum valuemlx::core::ArgReduce
ArgMin enum valuemlx::core::ArgReduce
ArgReduce(Stream stream, ReduceType reduce_type, int axis)mlx::core::ArgReduceinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArgReducevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArgReducevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArgReducevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArgReducevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArgReduceinlinevirtual
ReduceType enum namemlx::core::ArgReduce
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArgReducevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_reduce.html b/docs/build/html/classmlx_1_1core_1_1_arg_reduce.html deleted file mode 100644 index 1600965a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arg_reduce.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - -MLX: mlx::core::ArgReduce Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArgReduce Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArgReduce:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  ReduceType { ArgMin -, ArgMax - }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArgReduce (Stream stream, ReduceType reduce_type, int axis)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ ReduceType

- -
-
- - - -
Enumerator
ArgMin 
ArgMax 
- -
-
-

Constructor & Destructor Documentation

- -

◆ ArgReduce()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::ArgReduce::ArgReduce (Stream stream,
ReduceType reduce_type,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArgReduce::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArgReduce::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArgReduce::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArgReduce::output_shapes (const std::vector< array > & inputs)
-
-overridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArgReduce::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArgReduce::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_reduce.png b/docs/build/html/classmlx_1_1core_1_1_arg_reduce.png deleted file mode 100644 index ac897a69d7edec8e1e8739c3ee6c241cd955b53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWro-U3d6^w7^=Jr2U;9+ZL zU-{|(|D)HJaWXmu<*(m;`sJRaD^tYN4Jv+5ol`uIf0N2tw+zoo(=SX?(dS#M;#qg; zasHNX|Ni7m`qGqtVOPXszS4D5x9!#C4?STjdHc9g?)md}KMgmv+<1Iv`BeS4TAro5 zFI2SzURtnqvToILE3<b^^<&R$lR?yZgc_IzvG_CF!nd&SNI)ql>s zDq1pW?c=R=D^)$!cWjxZegFR2!;1T^tvc;AsjtR$wM<5I=hMmw*Hlc`-h322Rl{>X z+=UBOJ>#BTJ!Sd)CBqL9^M;=@f?t=-zLf2^cK6kuxXD?rs!TsPbs6**vOZAV!my`B ztYP{ErVm0<3~^4}2fQ;FE084rut!-ww~(Uvm7u#;?CW zZ>p?(s=h@pZH}%^RHkvf+$z@BVcYvtZ|(bS^waLb`D(Y@hu7AAo&9d|>FHMQ)@?oF zduiiV?bqvGEq#5UBJQ$zP4M1rXTxllpKhB{vgGu&n|F$~|9V>!^}3+_cJqpS zJ*V8%_CnSqgB32GzbxYa$p3J*x66;NU489$*#C3>TUGvAQ8$D%mzv0{7;nDGp=)fc zzc4lJ*;A+2ulF4n^$wjGc{L`{e&y6Y?`eJ8zWc6K{js>X)>|_E``%ie%d|1n r=f8F4&3wVAv@~Ec^3q)T@&~iT?OBsH9FJcG%ufuSu6{1-oD!M - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ArgSort Member List
-
-
- -

This is the complete list of members for mlx::core::ArgSort, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgSort(Stream stream, int axis)mlx::core::ArgSortinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArgSortvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ArgSortvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ArgSortvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ArgSortinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ArgSortinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ArgSortvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_sort.html b/docs/build/html/classmlx_1_1core_1_1_arg_sort.html deleted file mode 100644 index 510709ed..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_arg_sort.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - -MLX: mlx::core::ArgSort Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ArgSort Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ArgSort:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ArgSort (Stream stream, int axis)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ArgSort()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::ArgSort::ArgSort (Stream stream,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArgSort::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ArgSort::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ArgSort::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ArgSort::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ArgSort::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ArgSort::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_arg_sort.png b/docs/build/html/classmlx_1_1core_1_1_arg_sort.png deleted file mode 100644 index 523bf16a1f393ec78f0cd6f3df8783e4a793ab99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUlo-U3d6^w7^zMk}0i-&D? z|EekX{&)I6+Gv>YCa`FdPV{Qcsy77_Z#${fpR|1bQ^EUEPRlfvN={wRPmeBmO?skk z`_C=={darcNp%mIqr|iCEIhaM(zm?RzM@6G$I2p?z5RJp-QI1QK=qv8TRts}Rb81U z9@TH)CAGz@?C#dLL8eAM!R`~5%v+svHE>ssho}3kTdz|0uQy%uDR}KxomruiUOl_K z%Kw7rw!YNAtEZ{VeQ+tuYv1~{ht>YA3zg^gwEEN&cJsnFm1(~nqb6V3@=P?|s&mqp z;~YTO2}MnMqPj)pwao;`9>nljK-?+njL(-((LQn5e% z<+SO`kLF!<`~PQ7y7Gy4ZMS4PcX!yWGt*~h9sITGcIwP+`)g;`$iI00*X8!%wY6U- zzngrz-Rj-Ctw($>ZQQE;dflsquMbqjT{f=?+Pm#+nC)}3i-?;rlu-`AfV`+nNYn+^IYuOCHUK9h6e{-5C7v~RIar_Y=LCLGPB dCbIt-S9s0-$L+{}2bhHzJYD@<);T3K0RRE?)z1I` diff --git a/docs/build/html/classmlx_1_1core_1_1_as_strided-members.html b/docs/build/html/classmlx_1_1core_1_1_as_strided-members.html deleted file mode 100644 index 63e99012..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_as_strided-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::AsStrided Member List
-
-
- -

This is the complete list of members for mlx::core::AsStrided, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
AsStrided(Stream stream, std::vector< int > shape, std::vector< size_t > strides, size_t offset)mlx::core::AsStridedinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::AsStridedvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::AsStridedvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::AsStridedvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::AsStridedvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::AsStridedinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::AsStridedvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_as_strided.html b/docs/build/html/classmlx_1_1core_1_1_as_strided.html deleted file mode 100644 index d9002ed4..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_as_strided.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - -MLX: mlx::core::AsStrided Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::AsStrided Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::AsStrided:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 AsStrided (Stream stream, std::vector< int > shape, std::vector< size_t > strides, size_t offset)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ AsStrided()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::AsStrided::AsStrided (Stream stream,
std::vector< int > shape,
std::vector< size_t > strides,
size_t offset )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::AsStrided::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::AsStrided::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::AsStrided::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::AsStrided::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::AsStrided::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::AsStrided::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_as_strided.png b/docs/build/html/classmlx_1_1core_1_1_as_strided.png deleted file mode 100644 index 7224d5d45d763d83f5d9719c6855149d687d13b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT)o-U3d6^w7^KAf~#OMq>5 z|Eeo{{tL$^i!d6_eDdT?(QBWszBPQw%!i-pTRyjuPw|}9dts7_{z6sHIGHHVNq?67 zPB$rgX+KM4?*sh|Tgk_MrE8~t+qrhG*3)egzf*awuRZ73XCE0XQ#ozJCwFVFpu6)j z?q1f&ym0Hz*R{3NSE(PiDP{9~RkYR*fA@BMPYdo`}jF0yFEmHX_ z1#+E}_oO{7(^M*FhHF2cvz+-s^c{w0$$o2Z=X$NT+$y$OaLe#-uBsgroeG*0G7L-7xVxvaf% zUcvMEw)`Ix%U6WX@9(}UbtNo2oa-a++QgI7uTA;$p!B@iN8`1>BKBO;lD;)>!zKH9 z<<>Q8%F36qN1avT0R~F#T=W0z|1R{OKOR;e`nq`a|MUJ^RsLFmLh9MoQSQ_;uOrOWA&Fk7l{8_uTqOh3N-oSYQvRKg>~@OHJfej5pup&^0#JUznQq>}l(@ z-{;PD{GPe$UG8GIf5&r_vT3$jgB?_a-`dHP&-?X_QC zxuNcP1w!8YMofDzj$()dD$Kb<3GEz+^LX=Jd*~L0*|w|CpKNW*aYS TeZ3W!ffzhp{an^LB{Ts5 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::AsType Member List
-
-
- -

This is the complete list of members for mlx::core::AsType, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
AsType(Stream stream, Dtype dtype)mlx::core::AsTypeinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::AsTypevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::AsTypevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::AsTypevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::AsTypevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::AsTypeinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::AsTypeinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::AsTypevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::AsTypevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_as_type.html b/docs/build/html/classmlx_1_1core_1_1_as_type.html deleted file mode 100644 index 00bb61d5..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_as_type.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - -MLX: mlx::core::AsType Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::AsType Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::AsType:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 AsType (Stream stream, Dtype dtype)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ AsType()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::AsType::AsType (Stream stream,
Dtype dtype )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::AsType::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::AsType::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::AsType::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::AsType::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::AsType::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::AsType::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::AsType::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::AsType::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_as_type.png b/docs/build/html/classmlx_1_1core_1_1_as_type.png deleted file mode 100644 index 4b919c285526347e6d43cb082353c9bcdff54692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVQo-U3d6^w7^KFoWqz~ja* zAN2Hl{iEAyoQzIJ+h18Nd)>MC(h&>wV{7V9T0Z}&;C(5lWtvJQr>^IxM;E*%JyEy) z=a&8c^Ljfz;8 z{ueyA_T~OvJ56QogG*Ua``)iTtX8)^RG!<@>QhhH%?saDru|&7#xu+9bC>>H7tdd& zPTrIDz+7pxKJ1*OKl_2*I~dO#pA)tH_LR8dth;N|zRU{I_ETz@e}Um4)7We-?wQYIy`m6rC*r)54-iysX zIeW?DjPPsISGBJ*KUR2l>%+;fw&reqHDjGr(4~p%qS7}m-Tv!(<@Rd}+i&--nEK1y z<5FRc^uFh^Sy!JwUJ})OFYB$BvfV<{oS#Osrpep9%My;iysH0bc~q+NZQ-zIzyId7 zf6ppUuUc?bB(Xq9_2pZepY|V|?d|lV|E{?9I;{Tr@~BC5b1zI%(f^$Fbk64zhCSWV z2Wrl&EZyz<(scQ?yIF4QJ-0qmVfukHNYKLT4||m6QWJR<oa_vhQj7Spdcwp{B@{W@uVWKNpdgP?5B ziD&v2|B8^?9IqAreL>i2USnhFg4ngc0;}&>d8b_~-c!8hn)=pR>-6sL@?EpKqLyb* z)a|;Mkkyyp-O9?|QB{2Q%rT3tv!=bTULCIO%Fw! zqM0|XGyk8SF>~%G$F<9f($d6h{8r!dG~Vp}@00)5nK#opK_2*=wRFm*l0VG4*XEe9 Tf9Kl_%s~vEu6{1-oD!M<4;agi diff --git a/docs/build/html/classmlx_1_1core_1_1_bitwise_binary-members.html b/docs/build/html/classmlx_1_1core_1_1_bitwise_binary-members.html deleted file mode 100644 index c97cd346..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_bitwise_binary-members.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::BitwiseBinary Member List
-
-
- -

This is the complete list of members for mlx::core::BitwiseBinary, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
And enum valuemlx::core::BitwiseBinary
BitwiseBinary(Stream stream, Op op)mlx::core::BitwiseBinaryinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::BitwiseBinaryvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::BitwiseBinaryvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::BitwiseBinaryvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::BitwiseBinaryvirtual
LeftShift enum valuemlx::core::BitwiseBinary
Op enum namemlx::core::BitwiseBinary
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
Or enum valuemlx::core::BitwiseBinary
output_shapes(const std::vector< array > &inputs) overridemlx::core::BitwiseBinaryinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::BitwiseBinaryvirtual
RightShift enum valuemlx::core::BitwiseBinary
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::BitwiseBinaryvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::BitwiseBinaryvirtual
Xor enum valuemlx::core::BitwiseBinary
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_bitwise_binary.html b/docs/build/html/classmlx_1_1core_1_1_bitwise_binary.html deleted file mode 100644 index de3256cf..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_bitwise_binary.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - -MLX: mlx::core::BitwiseBinary Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::BitwiseBinary Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::BitwiseBinary:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  Op {
-  And -, Or -, Xor -, LeftShift -,
-  RightShift -
- }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 BitwiseBinary (Stream stream, Op op)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ Op

- -
-
- - - - - - -
Enumerator
And 
Or 
Xor 
LeftShift 
RightShift 
- -
-
-

Constructor & Destructor Documentation

- -

◆ BitwiseBinary()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::BitwiseBinary::BitwiseBinary (Stream stream,
Op op )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::BitwiseBinary::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::BitwiseBinary::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::BitwiseBinary::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::BitwiseBinary::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::BitwiseBinary::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::BitwiseBinary::print (std::ostream & os)
-
-overridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::BitwiseBinary::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::BitwiseBinary::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_bitwise_binary.png b/docs/build/html/classmlx_1_1core_1_1_bitwise_binary.png deleted file mode 100644 index 0e74367fc64baff8773ceeb39e1af8c7c8b01490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUBo-U3d6^w7^zU_Ohz{ASV zzVg#=`;We#8Oe_ZlZIk{diO68?0 z)P>V4w-%kNv|@M=dxs&x?%9=Hcb9#c6`Z|s*2V0gwHBQW57f6X9PrLyY?yw5i9vrM zD?^+UH^ZJ5F@_3GU4{=rQ49}MkrmWCXrl$e^f>K_OXi#YDe~P_?{;(gPcx58pE%cc zcWiET)s}ts+C}$9{MR2*hhN>E{@|&b^!C)%FTZ8~^7JnF>HK_cRQ5fWZ->`inSRCj zyYyp=;@lr9d#{CgA2+$GAY45wYwpo$_p;)j-;IjpzukMm>#elPCi&xS*Y`N<*4p{4 zGJT<&9WM2eb8X`3>4{NwA9k$vt?~7i?{<$$b$-jK{kdxY&4*EMpZV}_@eyQGpQv*G z+~ohv_Fo=<-gLD;Yj57y>bg~)pI*0!c~;E~2YPBbGsC^3ybRBh{np;j^;&PaRcy87 zUbU-TlQ|gb@CFHbn0;d366BR>H^IdvO?iup%bu2L9UapbUYoq^^~IahUQW#w6ID|x zIvKs?)vVQ1wR~Kj2(6vk_dQl!>*%*>PqTS%KYLbrx;Ls{w>>W6@U;_ai`Oo`7`1q^ zhy9i7vo^+Am94Y!&n|u4ul=m;oW+`H=Prjht9YJYuzga8oav6tgOk_%U%u6T(M=c6 zq+`=k`L`vi_I|Q^tqbI(Ze`nB`X>2h(A*W*jc$Hx+jqrC*WM$^yfC0`-H-QIw4xKw z_u9qyUfz;rwd4KT->jFLg#S&SAAEY-Yn`aD$L4=Sx;tv7Ul0=fXtX}eOVjtb{TYp! V{aa^=9R+4822WQ%mvv4FO#pZu!9xH5 diff --git a/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m-members.html b/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m-members.html deleted file mode 100644 index a2891b77..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::BlockMaskedMM Member List
-
-
- -

This is the complete list of members for mlx::core::BlockMaskedMM, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
BlockMaskedMM(Stream stream, int block_size)mlx::core::BlockMaskedMMinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::BlockMaskedMMvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::BlockMaskedMMvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::BlockMaskedMMvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::BlockMaskedMMinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::BlockMaskedMMvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.html b/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.html deleted file mode 100644 index f447b19b..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - -MLX: mlx::core::BlockMaskedMM Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::BlockMaskedMM Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::BlockMaskedMM:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 BlockMaskedMM (Stream stream, int block_size)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ BlockMaskedMM()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::BlockMaskedMM::BlockMaskedMM (Stream stream,
int block_size )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::BlockMaskedMM::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::BlockMaskedMM::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::BlockMaskedMM::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::BlockMaskedMM::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::BlockMaskedMM::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.png b/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.png deleted file mode 100644 index 8e5e7a8a40ca12f5d3e6d44b574fc1deea89beea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 zcmeAS@N?(olHy`uVBq!ia0vp^OM$q9gBeI}JboKUGDrvbgt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcF&db&7H?n-Zba|%S+OyN{ze?bk-}oi}$(+w`9o0_G7M`Z^(m7(%68`JD!k%&J zd;fiX)_4B1>m>1?wx^pd^Ox;Pn0ZZqzT6cq@0HhXi-fHXZ;sDjCSrPCBJAIW%^sT$ z?|iDQEo?nK){B2_^s0L$pI`8(>^$BY^=gUl+7m}~zr}2OSD$w?cSh{#r#v$wRc=1i z^}ajXdh4CC6Dw6c=Y8l~`f}d4n7pz-cY?|#Jl}n0KE3Jpw&SOZm%r#Vnf^1WUrzm` zy}FL)rS=Ufp7Mt#snk~Vq@J_9FUwGn#?Wy4Gso$~il%4EI_@XgGwcoOh8p|=|Kd;2Dc)y$LZz}8WITuWq%VorjV3-RUH0Ly<;$<@r`OiZ z)1UO_v+L>Rj?G7-PH(BZ{$;^4{nm*5;E1)poO1D73X8YR%9FgT-FxsU|LpSPMNw)K zZ=Y7XYv%{B1(Huk<$gDJR};oyRx# zJ1_w5`RQ6ezjSJv^Pe_V&nP|}-|r=1_P0LHk9@_a9J#(26g1_hi)-)8wC@r>yWaKq zr7KVN9QV95*Sx;k^U^2Y)BURZ6Myb}QeHMk#a;;(Xl@|?Su;F1!@#ipx!|)2T-+= zl3kAO{VnsNHkjwiMYQ{eOR|UL7{4t(t(KpinWsL@blc1@oy)tfd|7bm%u=oGma(xe z(X%d8`sjzpm8ZpQm0=FQtg=YIbarqEdvd1p^Yx+s%`bZ$`(&yXCVJ*d(E6)ayi`t3 z`xdh*`s78ubpJ!|$}1!ElHT@x*9}#i{(hyl&didjxm){nN{!!K*;KA4?H#OCnlVdu zyLA2COC|o*dgj*q>h)$R8-{H>U4Coii!?yEmu$&bJdL`@X%Ob>Pd7ol84T vP|oyp^>bP0l+XkKxcbb4 diff --git a/docs/build/html/classmlx_1_1core_1_1_broadcast-members.html b/docs/build/html/classmlx_1_1core_1_1_broadcast-members.html deleted file mode 100644 index 0f8b3cce..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_broadcast-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Broadcast Member List
-
-
- -

This is the complete list of members for mlx::core::Broadcast, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Broadcast(Stream stream, const std::vector< int > &shape)mlx::core::Broadcastinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Broadcastvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Broadcastvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Broadcastvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Broadcastvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Broadcastinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Broadcastvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Broadcastvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_broadcast.html b/docs/build/html/classmlx_1_1core_1_1_broadcast.html deleted file mode 100644 index 4b455d2c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_broadcast.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -MLX: mlx::core::Broadcast Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Broadcast Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Broadcast:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Broadcast (Stream stream, const std::vector< int > &shape)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Broadcast()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Broadcast::Broadcast (Stream stream,
const std::vector< int > & shape )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Broadcast::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Broadcast::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Broadcast::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Broadcast::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Broadcast::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Broadcast::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Broadcast::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_broadcast.png b/docs/build/html/classmlx_1_1core_1_1_broadcast.png deleted file mode 100644 index 080f3c4554799abdfe0d910acad98ef3142ea320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU7o-U3d6^w7^zMk}0i-&D? z|EekX{&)62)=qe%ar2GNayQMYHw6=KJNf*ZRDABS zYsNj3tk(9$mgVja=_z?UMNnnsQ@!ZaDQeO|muBwT7Iky}^;cm(mtKn!yQ<}x`Z;r| z`U|D#=bP$Qs(Om=*s^L;e)j7vo$I%rN>=ntzjyJL`4+p*-?i#%Jy%72?UJAC;`uAR zWtvJQC)AaxF>B`(%keeje`Jv8H{2@MuekTvm04@tzDR{=`zbZdzrgfCD2gG@iTi+e z24e-ME`$C;)(5Iv81}S?HB3iHp4Pu`%JTU~1@B84Fw={!c};qfKCf=Knyvlb7nlED zQd#*-eM??ijP9MSm(uL+i*R2HzpM9o%j37-PhNJg&hIR1iT-^`-FNbL{nR_o*?qH@ z6t51S7JJnBdgH%6tJeQsQj|M)ZIRz(Ud@+2lh>}^S)IFe{pZ}Z!MxX{1GTp1PgqiX z+w4!r?Ws+u^W@e0SAE@i_5btbQIq~zE>!i5J9ZW5wTBEp#P}ON zN(8_DC~+ym-UWYAE_|?z!@fJ0rrP!?UW!X{z)@$0)uGg%;^`5j6WBx|GMl` zP1~6>zhZd4?%Kb)bpJE|t(S^lZLZ&^DYow94Pfvn+5di0l(Jt(IX7MOLF+Ygq2Un-ZtJ@rjK->+v?&_Q_t~FWFN=>w<2j&DnA-^t8P3 z=C)c4=w(!cl2yaZabtobk?>IkR%+mLRW8i+{{k9kV&-7S#6wGYx~MtDnm{r-UW| Dxv{?# diff --git a/docs/build/html/classmlx_1_1core_1_1_ceil-members.html b/docs/build/html/classmlx_1_1core_1_1_ceil-members.html deleted file mode 100644 index 2cce4f65..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_ceil-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Ceil Member List
-
-
- -

This is the complete list of members for mlx::core::Ceil, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Ceil(Stream stream)mlx::core::Ceilinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Ceilvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Ceilvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Ceilinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Ceilvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Ceilinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Ceilinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Ceilvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Ceilvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_ceil.html b/docs/build/html/classmlx_1_1core_1_1_ceil.html deleted file mode 100644 index 4d11251f..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_ceil.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Ceil Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Ceil Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Ceil:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Ceil (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Ceil()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Ceil::Ceil (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Ceil::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Ceil::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Ceil::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Ceil::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Ceil::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Ceil::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Ceil::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Ceil::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_ceil.png b/docs/build/html/classmlx_1_1core_1_1_ceil.png deleted file mode 100644 index 7894fb3ecc936689693918209af7312a1447a1cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-KJzX3_Dj46+eckt3frqV~ zf90p&_8&br?POTEGJ0!l-!;+2myTEnCzt)7RDABSt60m5zXsKIq}{%0_Q7N?AyG=;*(F}@BXT(ONwGL z&Sp-zB3b(G)1__RN9X3vGip}Z8WXzu%%u=#FRS41VcNfI*XB*Xe>Lj%qA1msGInb} zvD{sGZRc9~EYC}_F;StXx9=^zb>w)|(~T3B7@yC0D;+ieNbNn%>`AKv_dfDg51drj zdts7_{z6sHI4AE(dwNz+Ek1Xc@q=C-!(+o`*WQ{fxjrLm^3{&G=B%ThEFXlU7~-6` z4|r!VR&eSv=r3e_pt^-&Pm5T?^b1TMgby~LMm6GAw&*!u= zKZw13dZ7+iXtlQ^9AZt0Uu?_bxNz30xGtyAV-%KConOwi$-+xrgiXNKzD z|8~tYxBK4@H8J;f#X|n+dABe1&v7x{oG%1(fp^BtnIIo7oznJLUSDSwZtrvvi> NgQu&X%Q~loCID-}tP}tM diff --git a/docs/build/html/classmlx_1_1core_1_1_cholesky-members.html b/docs/build/html/classmlx_1_1core_1_1_cholesky-members.html deleted file mode 100644 index d95a1a5d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_cholesky-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Cholesky Member List
-
-
- -

This is the complete list of members for mlx::core::Cholesky, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Cholesky(Stream stream, bool upper)mlx::core::Choleskyinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Choleskyvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Choleskyvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Choleskyinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Choleskyvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_cholesky.html b/docs/build/html/classmlx_1_1core_1_1_cholesky.html deleted file mode 100644 index ece661cf..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_cholesky.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - -MLX: mlx::core::Cholesky Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Cholesky Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Cholesky:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Cholesky (Stream stream, bool upper)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Cholesky()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Cholesky::Cholesky (Stream stream,
bool upper )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Cholesky::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Cholesky::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Cholesky::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Cholesky::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_cholesky.png b/docs/build/html/classmlx_1_1core_1_1_cholesky.png deleted file mode 100644 index f0f57d4b8bb439f6c553edaf191c18964559e36d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT?o-U3d6^w7^KAiMQfya$s z-q`Qn|IYli)0mb@mB*w$Pix;C#{JMl<=6B%#q;<#shoAo@SHUL!Xy=azO^czb(g;8 zZz-j>xWS06WC zGwqqgwzxO8e#_jT(sYUCeF~no{hLDFUv5%VmCejvJ^k;VYa34aZ+(|~am}O<{`p~d z9o27IP5TuGgx>D4JU@zL$hHS0pRx2niix~`VVxZU}*YQi-Y)5VoX z>}e5en0|rjgHRMhoD=r}?+nHYB*{PQQI^kb@yrhhALeW^>fS^qO9Kl=Uv|KA^fZoCTLT9@~=yl$21%hxT_R4QkNYd@c}ocTd)48yZz zzqO}Rz1CZ96r<1bJoJd8DOn7K}1 zvhK1UcDZl%U3&lQ`(;x(($d(^Z4Py}PEnp2=|6vM@LHjd-2Axr$F ztaE8|)&}PCZVEkm&-?P3HOCi%QwjT4E8hOB)$i1eH;e5Lv%IiP_;uRtd!_C+?~brf z{rWZkr{z|^@Bda^`+2SY>+)M?-h6JEHgo3m%B?_eSp8%Cc5e2npZQ&&jKkpR>gTe~ HDWM4fy=K7t diff --git a/docs/build/html/classmlx_1_1core_1_1_compiled-members.html b/docs/build/html/classmlx_1_1core_1_1_compiled-members.html deleted file mode 100644 index bf0ad037..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_compiled-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Compiled Member List
-
-
- -

This is the complete list of members for mlx::core::Compiled, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
Compiled(Stream stream, std::vector< array > inputs, std::vector< array > outputs, std::vector< array > tape, std::unordered_set< uintptr_t > constant_ids)mlx::core::Compiledexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::Compiledvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::Compiledvirtual
is_equivalent(const Primitive &other) const overridemlx::core::Compiledvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Compiledvirtual
lib_name() constmlx::core::Compiledinline
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Compiledvirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Compiledvirtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Compiledvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Compiledvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_compiled.html b/docs/build/html/classmlx_1_1core_1_1_compiled.html deleted file mode 100644 index 78b508b6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_compiled.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - - -MLX: mlx::core::Compiled Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Compiled Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Compiled:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Compiled (Stream stream, std::vector< array > inputs, std::vector< array > outputs, std::vector< array > tape, std::unordered_set< uintptr_t > constant_ids)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::string lib_name () const
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Compiled()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::Compiled::Compiled (Stream stream,
std::vector< array > inputs,
std::vector< array > outputs,
std::vector< array > tape,
std::unordered_set< uintptr_t > constant_ids )
-
-explicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Compiled::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Compiled::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Compiled::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Compiled::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ lib_name()

- -
-
- - - - - -
- - - - - - - -
std::string mlx::core::Compiled::lib_name () const
-
-inline
-
- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Compiled::output_shapes (const std::vector< array > & inputs)
-
-overridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Compiled::print (std::ostream & os)
-
-overridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Compiled::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Compiled::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_compiled.png b/docs/build/html/classmlx_1_1core_1_1_compiled.png deleted file mode 100644 index 4f12eb20e1be08551a228728beea4ff60e4b1282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmeAS@N?(olHy`uVBq!ia0vp^6+j%o!3-pyx;pL#QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=E8GJzX3_Dj46+?d@w(;AvUz zylLk5`bWiqTmI~*sxIGfGI2)7jcjTQ)JnriANM8G=@ATV0tUF#V5B^YA8F`KK#_o?x9^Z19{vf#ct+H`=uyy9eQu$z^@@L~~=p@)^RL)Un-V3TK1z3&E<(u?ek`}a;39;{_kB!`&8@u zGE3JdPm<3JD}R%`s?R5A<(|hy)>psX`F5YR+WIcbdd=_$pIB5Q7yjzgw?4Ny`oWo) zr?TN6L}D9#KRrGsYyI0S=Ix)|^`Wb?=SHuawj}s`)iOMp)He6?s|g7Id?Urdr& W$?>H>(xQQ}$>8bg=d#Wzp$PzV007DW diff --git a/docs/build/html/classmlx_1_1core_1_1_concatenate-members.html b/docs/build/html/classmlx_1_1core_1_1_concatenate-members.html deleted file mode 100644 index 9847df5c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_concatenate-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Concatenate Member List
-
-
- -

This is the complete list of members for mlx::core::Concatenate, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Concatenate(Stream stream, int axis)mlx::core::Concatenateinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Concatenatevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Concatenatevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Concatenatevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Concatenatevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Concatenateinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Concatenatevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Concatenatevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_concatenate.html b/docs/build/html/classmlx_1_1core_1_1_concatenate.html deleted file mode 100644 index b96f54f6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_concatenate.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -MLX: mlx::core::Concatenate Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Concatenate Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Concatenate:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Concatenate (Stream stream, int axis)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Concatenate()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Concatenate::Concatenate (Stream stream,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Concatenate::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Concatenate::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Concatenate::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Concatenate::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Concatenate::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Concatenate::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Concatenate::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_concatenate.png b/docs/build/html/classmlx_1_1core_1_1_concatenate.png deleted file mode 100644 index 3404621456d96f7206bcf97da9f0f3e1ca5feacc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GV&o-U3d6^w7^=Jr2U;9+ZL zU-{|(|D)5F_#TRm+WzWoVbuB=+^moNcw+WXDn9qwaoUob9J-#LgrX)rIl6GF%1QsI z|8CjS|Lyg>#Qm@7+GNvrA=jfa>$k5BUQ#2HT%VJeUVH9AX_|N8v&chz{9m;^Q>zzk zT^4w0!PT9o7uHVinwdDys99yJ&FZk3OINl{xe`2oZP>TxTicfZ33^?qvnq7bsb`n9 z@-Mh<{gwPT$a|7rL1w7?KHKQKYWuEft#4KNx@U1|PDZV8|Gx!mJXb}1?UKLi;`uAR zWtvJQC)Aaxack!k&*N*zFJzw4Z@D#ZyXM|!SEAOWeVG-aou||={{qtop(utpC+-8@ z8H^R2x(xaYSs$owVc63m)-W9*d0PL%Da+?S6}&Iyz)ZiCt?Kz{bE|#qI)21ros@K4@Xl@P!Xz(;ID5UyTvaMsJ!kE=(tT^M&V5*=?6ve8@1!f+ zYY(5_ zGe7<17OB+EHUH25XQBN3{j{35E5GEpcKwVmF#`RDduOAPB) zZq@ZjtJRi^zEu3;PM%urWVGUPMW#(%GFmcyUz3;y}tF7^FOE8 za#iMhhx_Wg(#GDre{V`(y-Dew>Mv1`S#-8YaeoAdwy^2<6WDd zRQSBl|7*tXH+8>%y)3e+t2uM#p8A$EXZEyAn>lm(1ta6nn=+P8xm5CpG4J3kyH8d= R!ob|a;OXk;vd$@?2>{QQ($4?@ diff --git a/docs/build/html/classmlx_1_1core_1_1_conjugate-members.html b/docs/build/html/classmlx_1_1core_1_1_conjugate-members.html deleted file mode 100644 index 3439e670..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_conjugate-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Conjugate Member List
-
-
- -

This is the complete list of members for mlx::core::Conjugate, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Conjugate(Stream stream)mlx::core::Conjugateinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Conjugatevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Conjugatevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Conjugateinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Conjugateinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Conjugateinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Conjugatevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_conjugate.html b/docs/build/html/classmlx_1_1core_1_1_conjugate.html deleted file mode 100644 index f7f0de1c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_conjugate.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - -MLX: mlx::core::Conjugate Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Conjugate Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Conjugate:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Conjugate (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Conjugate()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Conjugate::Conjugate (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Conjugate::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Conjugate::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Conjugate::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Conjugate::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Conjugate::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Conjugate::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_conjugate.png b/docs/build/html/classmlx_1_1core_1_1_conjugate.png deleted file mode 100644 index 08be44bd1fb347166935e0ebe48e2c691c15f1e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUVo-U3d6^w7^zV3Uiz{A$g zzw*;>`;VTNVj3n~Te~YZ?6|g@C&!G=gSYoTne(|~f@-FTllP=OEz?vg3o}$bKTUqN z|K6RK|L&>0bviAx2Ubmx~je}v~$vz zY>?|Xbv-``MNN8=8nbpzu^eB6e<8C(zv0%r?TUMkU75AU?Tb{1wwB-l{|v?oPF)85 zg{%)$w=nE!5o?%!f$4)#6hoX7_W^H&5~5n{AT^H zy14vz_2eb9@-u8D3QY^Id(Hk?6zmgWU%Ff8aNqj-?Ed<<3cqK#@7TINCR1vU{gguf zwW@iO&aIsnSti=OPXE{ARr}s~J-uTU{d5L67}TP}lfQ4iT6b>wR=@Ne_d0@B{%um3 zdwbhM_dDytBIU(zzM8Z4R-S!_enx5kpL?s6??=A7sJ3r;=(MB8YipffbKQR5|NShV z{LQ?qU5i6i7X|}Er7-S~{Ewyb^S7_93wd3;djIEOUC;e~8J?4-7j7*&S82guca%55 z=Gc{8ciX;51!r%Px|kiXc7+RrJ)xk1h1-7z?WI$WHK(MRNi9rGd#1YO%$Yql*Qz2b z^^}Y^cdgdoUsNBKE%|=lmsMf2($D-o?Q2+n_GnpTo9Ii;chl}=9{9V7ZT9c$r_DA` zzw5nLHO|O-ds^?J?AjZDrH*zSmlYkQQtkk z+rD}CD0ppI{uv$9Ip?nluibV3%$lb&!%Cmr&bM2cySV!F`=39L+|=?~7u@N3_N{+u zexb-LuRYUWYER8b`{wvcH0E_}`0K3mXU=HtTM(*OurWO?O|<^g@>^%#gmdT`8|y#L gS~}%Y!5`-3e`kFOIJL?Qn3)(nUHx3vIVCg!05urS_W%F@ diff --git a/docs/build/html/classmlx_1_1core_1_1_convolution-members.html b/docs/build/html/classmlx_1_1core_1_1_convolution-members.html deleted file mode 100644 index c0969055..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_convolution-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Convolution Member List
-
-
- -

This is the complete list of members for mlx::core::Convolution, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Convolution(Stream stream, const std::vector< int > &kernel_strides, const std::vector< int > &padding, const std::vector< int > &kernel_dilation, const std::vector< int > &input_dilation, const int groups=1, const bool flip=false)mlx::core::Convolutioninlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Convolutionvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Convolutionvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Convolutionvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Convolutioninlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Convolutionvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_convolution.html b/docs/build/html/classmlx_1_1core_1_1_convolution.html deleted file mode 100644 index ac64adff..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_convolution.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - -MLX: mlx::core::Convolution Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Convolution Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Convolution:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Convolution (Stream stream, const std::vector< int > &kernel_strides, const std::vector< int > &padding, const std::vector< int > &kernel_dilation, const std::vector< int > &input_dilation, const int groups=1, const bool flip=false)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Convolution()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::Convolution::Convolution (Stream stream,
const std::vector< int > & kernel_strides,
const std::vector< int > & padding,
const std::vector< int > & kernel_dilation,
const std::vector< int > & input_dilation,
const int groups = 1,
const bool flip = false )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Convolution::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Convolution::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Convolution::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Convolution::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Convolution::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_convolution.png b/docs/build/html/classmlx_1_1core_1_1_convolution.png deleted file mode 100644 index 853ab7ab4adc387b35aedf2bb0fa2701addada34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU-o-U3d6^w7^KAf~#OMq>5 z|Eeo{{tL$^i!fe1^X}xkhu3C`>=lwZR@U$)zUW+~-HAyi(hF5RK z`STg?F4dcQRvqTgxO=8>`L1hTzjv>ltMxRj=kKOA*{_yO^UJS^xX)8vQBO2YSz`S5-mBF5`0O30^|x-zy?AC)i23}m z+9thKrT4DoZ&i88G(Bwd)8BhbqmF!!`nqw#665%bTHLqh9l0bw#njU`JMLq&df=pg zQZN^`OjD_x8Ls_&&T{4l!8Q!flKs{mPxe}Gxm9enj4k ztoEPyw!ZpY7`XP}y{xyV-2OCOD>yy2#qv+ie|`>~>| zd>MO`uOJ&RQ0&f$*E83@oPU1%+PaX}zr+5|ufIC!%XLm&&re3{!_HayvmaPq!EomI zoT&ceQ{sxVbi<6Rd{>F83m)*t8XlN|^;G_Xm*&!+3NvS(b<3DJvyxNS*jRshRQ$Hu zdGf}arTcz+zc>4l9F_fNwrB6OnKxDUhTV!!c^mS1d(@lhrfanPuSUC1Z@8YC{D0g1 z>ZSQf`CG5eNGZ#^ntHaF=c@On{=Q|sYO))@UtP6)&Z>!L)+}Fp&GX2@(zvVk7gw48 zY`wNk+-}v?^}REf_IG|`nrQcrs+kL9N`?LOxsjRvFN%eb9y$_RIdw;dm z9lpY9hx?f`XZkw8ow_hJ?OAHv+9^S^`u;O`B+NP``}?gOFxxPAy85}Sb4q9e065IR AzyJUM diff --git a/docs/build/html/classmlx_1_1core_1_1_copy-members.html b/docs/build/html/classmlx_1_1core_1_1_copy-members.html deleted file mode 100644 index 3cb46c81..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_copy-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Copy Member List
-
-
- -

This is the complete list of members for mlx::core::Copy, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Copy(Stream stream)mlx::core::Copyinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Copyvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Copyvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Copyinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Copyvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Copyinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Copyinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Copyvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Copyvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_copy.html b/docs/build/html/classmlx_1_1core_1_1_copy.html deleted file mode 100644 index f233d09c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_copy.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Copy Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Copy Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Copy:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Copy (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Copy()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Copy::Copy (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Copy::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Copy::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Copy::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Copy::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Copy::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Copy::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Copy::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Copy::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_copy.png b/docs/build/html/classmlx_1_1core_1_1_copy.png deleted file mode 100644 index 2f4f36d04325b9a6ebae742f7adc17e52b2dfca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWdo-U3d6^w7^zCQQLiicHQ zTjpoLRM4}0ZhUIR($cvrA0LP>I#+3PVv>o}LRHT=C+|snEVfKi`RRGx z|NYIEf6P=~GRj}r^|{CT>dvsJ`?+?SL3&3c_=|7E&A0tgmF~Ck`OHJx^uGpAI#uZY zdX}5#+`#90`fFE*+)ixuos)vf`iLjcS)$C%z~o z>%M~L@r`;v=51dc`mTR+R%zAhZMUU9a<0ugoxeEi=ed&aVjoS{7Dd}!x+S*dUgGVa zb^9Y9?!9$(-n)!Y*B5VGJgcnz|FPA*JpVj(b${00ys!6vuAa7JzA#lo$V+qSM}?U) zd)+c-&ICq)v9bR74BNj<*L73VzS+#bGV5{t=c0_I*{`y%)CBo#xsqgiCegLBYxB=n zA_dkKF}6{~`%=nejwa44-oK^h=AX2uTKCSp5eeVw)$eRNY39}|S6BV5Ul?lkbLX|k zb=5(uW2KF~d5_=A3jh5!D)h8`TK3gzFLrIWTfS8{W3O-4za{5bpL(fU6d zU!FPh>yN`}k3#(e(E|8LdVGy7aX&Xf$-UOJ`ivAog5xnetnXMpk$gQu&X%Q~lo FCIFzmxAp)4 diff --git a/docs/build/html/classmlx_1_1core_1_1_cos-members.html b/docs/build/html/classmlx_1_1core_1_1_cos-members.html deleted file mode 100644 index f07b0309..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_cos-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - - -
-
mlx::core::Cos Member List
-
-
- -

This is the complete list of members for mlx::core::Cos, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Cos(Stream stream)mlx::core::Cosinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Cosvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Cosvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Cosinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Cosvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Cosinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Cosinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Cosvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Cosvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_cos.html b/docs/build/html/classmlx_1_1core_1_1_cos.html deleted file mode 100644 index 1d2e6907..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_cos.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Cos Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Cos Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Cos:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Cos (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Cos()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Cos::Cos (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Cos::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Cos::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Cos::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Cos::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Cos::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Cos::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Cos::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Cos::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_cos.png b/docs/build/html/classmlx_1_1core_1_1_cos.png deleted file mode 100644 index 4724c19a70821cc52ec8dfdb5cc6b7a30befd5a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-)JY5_^Dj46+eK={g0*@QN zyz$&U|ApgUhq1cMF3Xy3J)1Ax%k)Sx$L{)*md`&bcwfqBnWj?7sq6Xa(FLzbPt@<) z@7;R&PrAn?VZ94hk&pdK*G!#OK3m=Ol)K@y^_DrS&x_UUH(q|@lTYI7{;H`LruW%JCkTpc!Z>B_b#Tb93D8}{vY)LlLMD^*)uw|WIx)9JN?VMsc{!J>qaMP>Ts(98t`*7Lx<-eDy z^Pkx}Ps-Z2uvDmUOTksI?w>ZAVm5K5KW81@wmrUixpeLw|82T=A4mOMqFM1b@Y&rh z&-QrU>aR+zTv_qrv77z6UDs-Zc5Yi2CV4r;+3VKjkk=YzZ`Xb+wOhOO^}{M6AixpwZw`c9%Dj0v^)wVxYtERoTd6y%6|FTy9QRB6x&aZ{Ho!kEV zEMNZBymKY)tF@e-t9V^HUimTq!SsJW_vDtYy!Jcn|M~q{p1(?+yeIAHSv|G*++oHK znt2S54VPVeYqsS2jHt<1JK~zNj(W0u5XKrFn1S_^IZAV>iJXe@=8GJ<#>V;!Q`4S3 z4P84u{!!hUGiTx+XRWpTSE|1}Y}fLA?&l^ya_o=Ni7$=_oR_qXW!6mFqpMAA3j)2< zo@(rS)}A+A&OU7avq>{=3ckylDz`gJ#W;KA>d+svXWBkyTD$3F^jiP?MUktHXKwwr zckA7q8N#cl}P?&Hvjt~%*yV*FbTXU^ - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Cosh Member List
-
-
- -

This is the complete list of members for mlx::core::Cosh, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Cosh(Stream stream)mlx::core::Coshinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Coshvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Coshvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Coshinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Coshvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Coshinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Coshinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Coshvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Coshvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_cosh.html b/docs/build/html/classmlx_1_1core_1_1_cosh.html deleted file mode 100644 index 385f8d6d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_cosh.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Cosh Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Cosh Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Cosh:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Cosh (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Cosh()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Cosh::Cosh (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Cosh::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Cosh::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Cosh::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Cosh::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Cosh::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Cosh::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Cosh::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Cosh::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_cosh.png b/docs/build/html/classmlx_1_1core_1_1_cosh.png deleted file mode 100644 index 69fffddab9dd68ef284091892a88bda3d72302eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GW7o-U3d6^w7^KAiMQfya$s z-q`Qn|IYQ-rZFweE4lLY+_8r}H`>0KwA|hQWX|WB396Z9PTrIDv`kZ}EX+{#{4_al z{>59b|JbR#WVc)JHKEt~>dvrR_i|^3XkJgsiTAz{H{bS0S-R)O=R4b`%D>g}{93V~ z)O+!ggBiuwr*Dg0^^WKB6-kwq&jYu<(up-)vP3yI|Ldmv*QLsSuDo_j>?~0Ihs>+$ zFP20d-}W!idy-#4rm61z@7EHA>#wcqZ&i`4bX%R1Q7v@3Cg7Ti>EgKO-f<;-yH=W~`bKZuQCc$Vz9_H?S(ddscr!i=kYSBa_%9`Mg#tl-pT&|k>#e^$uRr*-_}uPn-O9-&GH*})3i^8C>oJRU zJI!i>_HJ7nCVM&5*~{uu=xd#AU&8)dy}xGlrC_(<)}a4vo>qOihrjP}Ui+(NPDu8J z=(Vw#N7T2p>BhTV{?vTj_STW>TV5r9oE&!Z!nc;GKkN42ez^D6-I;P3rmhlmTs*6+ z{r~a)xnw_o`dYhHUw2*o|9O4Xq`J8mCaLIu&I0A0{`y0=> V?i_Oq#DRH)!PC{xWt~$(6992>z`_6k diff --git a/docs/build/html/classmlx_1_1core_1_1_custom_transforms-members.html b/docs/build/html/classmlx_1_1core_1_1_custom_transforms-members.html deleted file mode 100644 index 270c0251..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_custom_transforms-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::CustomTransforms Member List
-
-
- -

This is the complete list of members for mlx::core::CustomTransforms, including all inherited members.

- - - - - - - - - - - - - - - - - - -
CustomTransforms(Stream stream, int num_outputs, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> vjp, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> jvp, std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> vmap)mlx::core::CustomTransformsinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::CustomTransformsvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::CustomTransformsvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::CustomTransformsvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::CustomTransformsinlinevirtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::CustomTransformsvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::CustomTransformsvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_custom_transforms.html b/docs/build/html/classmlx_1_1core_1_1_custom_transforms.html deleted file mode 100644 index ebcdad04..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_custom_transforms.html +++ /dev/null @@ -1,407 +0,0 @@ - - - - - - - -MLX: mlx::core::CustomTransforms Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::CustomTransforms Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::CustomTransforms:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 CustomTransforms (Stream stream, int num_outputs, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> vjp, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> jvp, std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> vmap)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ CustomTransforms()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::CustomTransforms::CustomTransforms (Stream stream,
int num_outputs,
std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> vjp,
std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> jvp,
std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> vmap )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::CustomTransforms::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::CustomTransforms::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::CustomTransforms::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::CustomTransforms::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::CustomTransforms::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::CustomTransforms::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_custom_transforms.png b/docs/build/html/classmlx_1_1core_1_1_custom_transforms.png deleted file mode 100644 index 6f3448af1698ec7c2b7bde2de411cb55f5cba8f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmeAS@N?(olHy`uVBq!ia0vp^Yk)X_gBeI}-k;Y2q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#Nt;JY5_^Dj46+&FyP8;Bh(L z9CG%r|DIN-eG5xMy?dX8-g8nclsop!d|GN`8Y8#oImZ)|mar>&Pm-%q%T}qBkN)qL zJ^%T7$4TEmPTd>vdE?92Nb64<=88za?X>2*y=Bg6o65bLTTc|uyL_p?O4PG&r}}QT z<%I^XWKVk^uhx6V^LUD&$ET**Gj)^AXDavFmY&_#|3Q1x;dxe5?{cq>a-EcHH%)i< z50%Ze!h5Hxp8Q^;6>S<3y*XBL&vf0{6IAqnF3-{G{FOc79Q*nMC$d8L{~cY===qNc zVF%u>7ywFgS?X%gAGR{ z!v}>F#ske0SQ+>U37k2T#;E35EU;mV(J)54g z{pa?k825b}^CxXB{Z_Sau1NOx5}EegsEI8$?;p(gFl*|gXaAq>wJqBME06K)NjL0+X5KdwoV0SW z=kfn3r~M?S9gMyi-coilqAY}M($&XCo1dHBzV5Go`$||mTj-S2Mk}P&ti9>?V@7RI zvv~@;sr8Eg**Cuky;|>Rb^h$EDy#jM7d`erm2iKBR&&wx)kYJR#H**Mo@|~lRfXRv kY?93k-)m=bg#Izi)$KcZ>{W&iFc~p;y85}Sb4q9e0B5%|k^lez diff --git a/docs/build/html/classmlx_1_1core_1_1_depends-members.html b/docs/build/html/classmlx_1_1core_1_1_depends-members.html deleted file mode 100644 index 8cb2e554..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_depends-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Depends Member List
-
-
- -

This is the complete list of members for mlx::core::Depends, including all inherited members.

- - - - - - - - - - - - - - - - - - -
Depends(Stream stream)mlx::core::Dependsinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::Dependsvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::Dependsvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Dependsinlinevirtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotan, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Dependsvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_depends.html b/docs/build/html/classmlx_1_1core_1_1_depends.html deleted file mode 100644 index 45bef7a8..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_depends.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -MLX: mlx::core::Depends Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Depends Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Depends:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Depends (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotan, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Depends()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Depends::Depends (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Depends::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Depends::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Depends::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Depends::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_depends.png b/docs/build/html/classmlx_1_1core_1_1_depends.png deleted file mode 100644 index 8c1a6319a8271ffeaf01b756e6339b70e85d5ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^Wk4Lj!3-pS_Y`sfDd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5CG9y|bwo1P6@0+iz{3GxeO0P?}WoN4wI1_s9Uo-U3d6^w7^^7g$};AuJD z9P;y@dL5^4^V#!iyLAIz1{!h&%;ukM$>7A1xJSUFXp7i173Ytrcsef+9}s&#jwzK6$lXR#JcZ=E%}Dr3s5~T{4?~qiyNAhdNXD=U#l0 zy=LoO({DLD%0F4I-{R_F9>W=`KKY4(u8wEfwL_Cq($5}l6F5}Bcp&~OL&L{e&9yem z3Z5sJzv6kP@}~aTlUCM-dr=V#FV+AV=ddz%C<{*f*tB9*-?c-lR+U}5o={)e`@%c) zs`kzW-#3;Qzlyl|{d?t{87mggxUSwd^Vhu1GbGBlGYHQQbN6WM6_qnq(^L4}y zhxyYU{x$NC@}OtiOL}%{Sk0&6V@_9oy3-+Lu?GU5i^2nEP{^-G&%dVUrE# zf_~Pn_BGpm^Y*gI`uDFzYzopr0NBh9mjD0& diff --git a/docs/build/html/classmlx_1_1core_1_1_div_mod-members.html b/docs/build/html/classmlx_1_1core_1_1_div_mod-members.html deleted file mode 100644 index bd2f7731..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_div_mod-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::DivMod Member List
-
-
- -

This is the complete list of members for mlx::core::DivMod, including all inherited members.

- - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
DivMod(Stream stream)mlx::core::DivModinlineexplicit
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::DivModvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::DivModvirtual
is_equivalent(const Primitive &other) const overridemlx::core::DivModinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::DivModvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::DivModinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::DivModinlinevirtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::DivModvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::DivModvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_div_mod.html b/docs/build/html/classmlx_1_1core_1_1_div_mod.html deleted file mode 100644 index d4455f3e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_div_mod.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::DivMod Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::DivMod Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::DivMod:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 DivMod (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ DivMod()

- -
-
- - - - - -
- - - - - - - -
mlx::core::DivMod::DivMod (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::DivMod::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::DivMod::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::DivMod::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::DivMod::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::DivMod::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::DivMod::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::DivMod::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::DivMod::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_div_mod.png b/docs/build/html/classmlx_1_1core_1_1_div_mod.png deleted file mode 100644 index 11583cfa1c44bbfd64b891036eb337407e399283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0004_ zNkle^^81qci+rc~bC6`K-$P&coP{!|)O#%x=ddPHe~a0c+h#nUEFrcylbJ2N*9M)9 zC=5pH>9^|pxsx!CkI-i7ZFZTE!lT-n?yvG`XxKZa(6wOBD}?&4JIVCeESJ!*k!&=L zw6E#md9R_q*{-1W)NS|LJa`fzo6#f?bT3JcQbI|xn-WTr-EK)LDIi7k8^dEI^LII$k5()s_lu!WZri21OHzgDRx+$Rm&`k*ifNn}C09;5! zWV9fvs$-Q0#Gtf7$vGil>S7&V`TYUl=gnusA-z%uhyYp(9c$+nmn$K+J;;n!> zp2r*1ykqFJUBRO2hx;v&wykw>u(iuO(>PP_c_@&m>RzXrM$nVz{XVqz&K_zwBfbH( zS3A!%tm$u{O(X4V8a}V>G^@92>e@8uUYplo%}G#-7u~C>Iz|aqRqdvPs;YL=T~HB` a!TJIyfM8qPkUH}K0000 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Divide Member List
-
-
- -

This is the complete list of members for mlx::core::Divide, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
Divide(Stream stream)mlx::core::Divideinlineexplicit
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Dividevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Dividevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Divideinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Dividevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Divideinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Divideinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Dividevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Dividevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_divide.html b/docs/build/html/classmlx_1_1core_1_1_divide.html deleted file mode 100644 index be3840b2..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_divide.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Divide Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Divide Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Divide:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Divide (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Divide()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Divide::Divide (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Divide::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Divide::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Divide::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Divide::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Divide::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Divide::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Divide::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Divide::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_divide.png b/docs/build/html/classmlx_1_1core_1_1_divide.png deleted file mode 100644 index f3946b16d3cb369fc9a6e0c8ad4f458ae0854192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUXo-U3d6^w7^zRmlrz~jcx zAN2J1{zvBb8(Ws-UCrAwOZ}Xe@Z&iWoByglpYyv}$8)b>)TAe>TU1VVJ8OGRns4%N z%Qe2wl^&Ob_bn*hd~EKkDDAcH&3wD2cpF~p*UVXeUe4y;%%C@wZ5!Tt@AV3@%-eFz z#4D@Es=PAu?$Sqo#{M%MC-vP4U45o#Mcb5;W$)H5esezCboZa2?9A@0sY{A}Y&j)d z61cWF+WzXKCEPJlp{M1mUvKF=zx7nIqGx*C#am`u>^g7n3B0Bfy144-cE3d`f29_x zdd4|xc2ioyO|#Z+c5lE?7#N-V(;~KTiI62?X|kvHJRgq`WA*gEn*GR zFED)&ieiX!;y&P=!C1km%b>rI^?@ov@)P@(qH{a#PfWTZ4Ksbt)=4TqXCBJGzU1Tb zskJlCJ5S20b9$}zDC^;}sbQZpgLER|O8?F{^lkh7rgrJ$J1lR{%i9@dm&tK&-;~Po zwVL^p&Ml6MjMI|abtmI^==E9tTGy{#)k@~OI$_c|nN_8tyT4xhSZcSn^wq;EWv``= zrBzrRil-F8hqXZHK= z{MLKIe-|v1jtUi&QV*PDcdomhx&Foc^S8s|uU6fE_5WwMuIGNg49`i^>$U>DX3b!C zlzD;uuPaqHyS}^%&ff6q;_BeF7M%=rIKu=j!0H{emrnWBoRW4;dSPnXGu16;&g|K- zHEzrNzTmxiGj|Hr`o1nY>%QgEj5MB^YOa^IN@V*U+fW&2Qxj*cKi~eDN$QfBH#?U{ zInN8#ojG;!4~gV1@6*$Z-#pp3-pDxn^PZ^GcWH}dcCNhkF!jutTQx!1Z$B-*c8Q@i zOfoaA?2+i&-28Q`ufAEkdD_gIy80QRy7h0?K2ysJzZQT0#o9+FO#L32#m|qsdsD@} zMCk09y2cAe#-D|v($eCbPM - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Equal Member List
-
-
- -

This is the complete list of members for mlx::core::Equal, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
Equal(Stream stream, bool equal_nan=false)mlx::core::Equalinlineexplicit
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Equalvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Equalvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Equalinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Equalvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Equalinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Equalinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Equalvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Equalvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_equal.html b/docs/build/html/classmlx_1_1core_1_1_equal.html deleted file mode 100644 index 0ed4a512..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_equal.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - -MLX: mlx::core::Equal Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Equal Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Equal:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Equal (Stream stream, bool equal_nan=false)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Equal()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Equal::Equal (Stream stream,
bool equal_nan = false )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Equal::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Equal::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Equal::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Equal::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Equal::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Equal::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Equal::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Equal::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_equal.png b/docs/build/html/classmlx_1_1core_1_1_equal.png deleted file mode 100644 index 7c77a8836e38f9537adaf24606d4538ed3e10cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU1o-U3d6^w7^#_~Nf;9*mb zS9$V#e#OEs$33GBIBu-Drm=Y1wZi3n%Z zcV7Sed%_a+8pqcM=M=0eUb|_}?UF}9=Z;431>Xppulu7c-D~61oo#F5Z$(b}Q?a1b zd-0;?i_gAIpB7qF&iDBT&!j7#S47!)hx4w?@V_0s_s#pQe7paIWao9KO;fQ?imGFu z8*E`O@ce=GKJ=d}A`leRn;U0dpSd+v^T@>8~YoXv>)xOT3FXMOLL zNlP?Vs(J>3T-vibG<)q~#t)i$437<$U3+S@r)J+Rp)n!5eTGOpDL3?XZ}= zBWvo>8mmI#XW_BHAo%tz`@>f^`SSDImd;-PQ$4o%y1w1}Wu{McFV$@^{;T@^!p~!c zF~x5`c-G}b>&jmab=JCdIrOzo+1s`MO6}Heef_XZaZk{HHrHGIsRy_3X^*O_pA+(W z!S<-#TLt4USmpdIHPNmAu*1Fk$2?$|oZoVdHMjgm)xNv$!zxynZC}p6WtNi68yC-C z7W)6#{=GQ=Ja_f_tiAbP-~S2qz7(&%RYmjEj;O8ItYjGGKVmYFOU{bbbFS)LS-Mr~ zVs^mVJDm)LIKu=j!2UOeX)f(yKYAv|BEpbwuPN=i2OZu4`xfe8{(5qCE4T(d)a<%O?Xh zbcUR+ezPj@%$nsd*RH*AyGK6zr&{^dEb)(@qwF4gZY|q;HKR6FaQ3wK)!ExSYV)_= zO;0O3XC3vrX`A)M_nUvOo3mdp==2iHi8F6X?*BQp{-@;1)HJcD_y4apGyW|KVyDKe e4f2xgv-c{QGlQv#-wl{i7(8A5T-G@yGywo^{j~f5 diff --git a/docs/build/html/classmlx_1_1core_1_1_erf-members.html b/docs/build/html/classmlx_1_1core_1_1_erf-members.html deleted file mode 100644 index 89681697..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_erf-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Erf Member List
-
-
- -

This is the complete list of members for mlx::core::Erf, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
Erf(Stream stream)mlx::core::Erfinlineexplicit
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Erfvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Erfvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Erfinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Erfvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Erfinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Erfinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Erfvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Erfvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_erf.html b/docs/build/html/classmlx_1_1core_1_1_erf.html deleted file mode 100644 index 07e13bab..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_erf.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Erf Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Erf Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Erf:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Erf (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Erf()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Erf::Erf (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Erf::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Erf::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Erf::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Erf::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Erf::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Erf::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Erf::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Erf::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_erf.png b/docs/build/html/classmlx_1_1core_1_1_erf.png deleted file mode 100644 index d21c1648a4e4c8f7a9b66bd2dd232bd7351a90a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B*!JY5_^Dj46+eK={g0*@QN zyz$&U|ApgUN3pohF3Xy3J)1Ax%k)Sx$L{)*md`&bcwfqBnWj?7sq6Xa(FLzbPt@<) z@7;R&PrAn?VZ94hk&pdK*G!drZ|1*hinpO$eDRH_`KCYW()~6*n|bI|f7#R}RdX`# zUe;J?eCy8FrN{L`%Xd}2;+eGN>6)n0X}+dQme}Uz=cevofA#Gr=e0|9XN69B_3-j4 z{|k;=zvcc7@t(w2kZG#B|LxklYIfIG^|z|Lt#n%XYPEGRFh;Eev~F#2Thw zVEP~w#SrJjeZV_|v4T^VL4P6Z1673NC-yBx=PGSZOfrF+{$}eWm7g;Y`(I!3d-?R* zS^s%FvwpT+^E`6#(4whw&pt1S+OX%<<7~d@`}JKQO;q;v!*AWLc-=Pl zxKw9jR&)0D)m7(@J8rewd-c{-w;IRQw?Czt=-#iqb5m{K@=*Ei^r%$l+rnYbUjIGI zxBlwAIWPOdf?LjcPFd3b`O*CY`hP!H-hLId_WRm@^Xsop`tq8(Ar$15Y2%TWwpcJK zEiKOJ^qDiKUq|U5`!BQR>-3p7i`QMR%3d3-eYf~t@^jCxElb7v*ITa9IwfT;e(ubf z#`xFsu1zX+`)d0BQdQ>9z;ExnvaZVQ&QdYHed$|R@zpbLdc3#HQd_TnJFVdQ&MBb@0Lg}~zW@LL diff --git a/docs/build/html/classmlx_1_1core_1_1_erf_inv-members.html b/docs/build/html/classmlx_1_1core_1_1_erf_inv-members.html deleted file mode 100644 index 1b4e58ec..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_erf_inv-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::ErfInv Member List
-
-
- -

This is the complete list of members for mlx::core::ErfInv, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
ErfInv(Stream stream)mlx::core::ErfInvinlineexplicit
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::ErfInvvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::ErfInvvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::ErfInvinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::ErfInvvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::ErfInvinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::ErfInvinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::ErfInvvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::ErfInvvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_erf_inv.html b/docs/build/html/classmlx_1_1core_1_1_erf_inv.html deleted file mode 100644 index 92b8c6bf..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_erf_inv.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::ErfInv Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::ErfInv Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::ErfInv:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ErfInv (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ErfInv()

- -
-
- - - - - -
- - - - - - - -
mlx::core::ErfInv::ErfInv (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ErfInv::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::ErfInv::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::ErfInv::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ErfInv::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::ErfInv::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::ErfInv::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::ErfInv::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::ErfInv::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_erf_inv.png b/docs/build/html/classmlx_1_1core_1_1_erf_inv.png deleted file mode 100644 index 2ed64aaf6fd6957d8b3f8aa8ecdc8419a58274fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-aJzX3_Dj46+eckt3frqV~ zf90p&_8&7ZPhn8(jo!LjX05i{PRaD7GwetK@d zpYiVNA3K$oE&3U@Gavhvu9+%#f7_f8&Fe`veBL+0=Ij3Wmg2eb>CU#P-DT63RM}kI zwKVWj!j_${qx(Zw&ExreMN(zu^T@5QbYe}HEV0ea|GLS3z3H1z&TF^o&WfD$>fz;8 z4OkL@+WhY<#QYP6wg_`Fq6MUc~1JH^U(kKlH2)H z{#Mn=PrC9+ILcqCPfcv?7lU}eRh+Mv+W~{%+gH^ezZUfGPQQI=?e|yavCXGl=ayfN z`lOa=e{1H~wXc@GZZ3=|&i}EjDldAi)w0!XQ?@K$eJwEO<=TJ6c5Ao3epsfMwe%nN zq%HFOtoJ|hZGH8(Fkr1?{?@Xkg7Fumw$(`bp5~AHo+Ehw@~Z7eXNE;yC~Kek`EBL) zL%`^>wY`wlWpJZ&(wD-xKhi&(|JU5x_G{I(-(mmH@6Yo5RSJs7GpnZ-pS#TXK~s<6 zv*GeV&4+vm1*aZmbO_iDlIL}>GYX1-SMwo z|Nd^fwJvVq;rp>7?DCV^_^V58bGJ<2GHa`3 zc=na(_-k2Fb>ElO3C_=$`~H;qmQzjJtT)bC|M2+UubjHZo9C- - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Event Member List
-
-
- -

This is the complete list of members for mlx::core::Event, including all inherited members.

- - - - - - - - - - -
Event()=defaultmlx::core::Event
Event(const Stream &steam)mlx::core::Event
raw_event() constmlx::core::Eventinline
set_value(uint64_t v)mlx::core::Eventinline
signal()mlx::core::Event
stream() constmlx::core::Eventinline
valid() constmlx::core::Eventinline
value() constmlx::core::Eventinline
wait()mlx::core::Event
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_event.html b/docs/build/html/classmlx_1_1core_1_1_event.html deleted file mode 100644 index 9155db7f..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_event.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - -MLX: mlx::core::Event Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Event Class Reference
-
-
- -

#include <event.h>

- - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Event ()=default
 
 Event (const Stream &steam)
 
void wait ()
 
void signal ()
 
bool valid () const
 
uint64_t value () const
 
void set_value (uint64_t v)
 
const Streamstream () const
 
const std::shared_ptr< void > & raw_event () const
 
-

Constructor & Destructor Documentation

- -

◆ Event() [1/2]

- -
-
- - - - - -
- - - - - - - -
mlx::core::Event::Event ()
-
-default
-
- -
-
- -

◆ Event() [2/2]

- -
-
- - - - - - - -
mlx::core::Event::Event (const Stream & steam)
-
- -
-
-

Member Function Documentation

- -

◆ raw_event()

- -
-
- - - - - -
- - - - - - - -
const std::shared_ptr< void > & mlx::core::Event::raw_event () const
-
-inline
-
- -
-
- -

◆ set_value()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Event::set_value (uint64_t v)
-
-inline
-
- -
-
- -

◆ signal()

- -
-
- - - - - - - -
void mlx::core::Event::signal ()
-
- -
-
- -

◆ stream()

- -
-
- - - - - -
- - - - - - - -
const Stream & mlx::core::Event::stream () const
-
-inline
-
- -
-
- -

◆ valid()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Event::valid () const
-
-inline
-
- -
-
- -

◆ value()

- -
-
- - - - - -
- - - - - - - -
uint64_t mlx::core::Event::value () const
-
-inline
-
- -
-
- -

◆ wait()

- -
-
- - - - - - - -
void mlx::core::Event::wait ()
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_exp-members.html b/docs/build/html/classmlx_1_1core_1_1_exp-members.html deleted file mode 100644 index ff9c8691..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_exp-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Exp Member List
-
-
- -

This is the complete list of members for mlx::core::Exp, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Expvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Expvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Exp(Stream stream)mlx::core::Expinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::Expinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Expvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Expinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Expinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Expvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Expvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_exp.html b/docs/build/html/classmlx_1_1core_1_1_exp.html deleted file mode 100644 index 7a5acdfd..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_exp.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Exp Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Exp Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Exp:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Exp (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Exp()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Exp::Exp (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Exp::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Exp::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Exp::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Exp::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Exp::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Exp::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Exp::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Exp::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_exp.png b/docs/build/html/classmlx_1_1core_1_1_exp.png deleted file mode 100644 index 5072482beda1fdef29a6eb7ae79e18a80c2ce713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-)JY5_^Dj46+eK={cf&km> z{#94@{1={Y*tKAWPf=n2>bW9&g<2QNww;YHI#+3PVv>o}LRHT=C+|snEVfKi`RV!H zKmXm8dK1s8gRD{h&vrP^&0hNT?lV8pBF|%0Guv~2-ekK!|BT``i_056EuE{nGS7d@ zyTmD1GIQVjy0**v>g2pRR!u5zE2pisI;AHabZO$YZQnN8ufMwXQ}EiQIMJj)d zL9T0=rc%kN>-ouOUD!EGe)a>~cQE!GpAohF_Jp|PEZ;EYD&AG1>VgOSGZ-s4bs6** zvOZAV!my`BtYP{ErVm0<3~^4}2fPuIPsKBy&iPz1K{e9^X1ZmTs^=$T{(39*yY_ou z1pmLNvhu0=mU%rEvm>@#%Cak8#d&)5y6KfSzI{vm@Fl_ionS8a_B*S?XR%G!FTLZN z-8Xwla(4Q)?Wf*E?p>UuVRcEm@+xJ7;dM?$)jKbMv!hvv%C=h|2uW z=4rL9^zil_v1@!JpcC|36nwTT<_r;W=q~;Z|VOS}^Q8 z%9~(w?8>gYZC|8Q{8gr%$_}~ zzdrM}>6<$9W_8Tk)Ul?XAVLdu?-bZU61q{*`I%t`pk(S8sha*W%>0g->Sdnj2Ri{2k?c z@_qK}4V}3s<0GQ4PJBJ*$ffx1ntPX4`z@Mz^Zw&_tu1X=jf_7FMx~|2Ih{Up=Jb-O eL0*SHvdc2hO - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Expm1 Member List
-
-
- -

This is the complete list of members for mlx::core::Expm1, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Expm1virtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Expm1virtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Expm1(Stream stream)mlx::core::Expm1inlineexplicit
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Expm1virtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Expm1inlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Expm1inlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Expm1virtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Expm1virtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_expm1.html b/docs/build/html/classmlx_1_1core_1_1_expm1.html deleted file mode 100644 index 7254a12a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_expm1.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - -MLX: mlx::core::Expm1 Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Expm1 Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Expm1:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Expm1 (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Expm1()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Expm1::Expm1 (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Expm1::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Expm1::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Expm1::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Expm1::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Expm1::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Expm1::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Expm1::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_expm1.png b/docs/build/html/classmlx_1_1core_1_1_expm1.png deleted file mode 100644 index da566929f85f62750ede4d52a3cd0d93330543f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 883 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;FJY5_^Dj46+eK_fr0*@QN zys_WC|DE}3bz7%pm0V4Ie(a&o#?}I=Nxa=@mwqzHR*}!7L}9T&f1=n=9m2a z^33mV^yDS%H4d-O$&{}sUb|)A?K>--^iD?Tf8L;LfBV7f$(BdN(xt-oZP~1H^=;oZ z)1FCIYkOnwN0qOvy3`x&K4FRN_f4VhH&dOxtS()<7WeIU)Lkw6t5K&G%~V~PXSenj z%iNUL5!d*)s=Q>G9v1xR_bscON6Bk{MR;7An7-vy+cx!$U#v5IgD%esuX(BBb!k1! zh29ySlcpDLEjm|e!Eo;=Yl6+OE4yOazDNaUZ<4y09kAA-lcCOu`+#=_V+E%!gZ@I+ z2dY~b_OysKOuxYNK`4qL4oUKVW7s*%e)h;oZpuKvgH2u>Hc7?)^M~EVm%d)^w)>jz zJ1J`4!qW63H;*iu8uoc-ux~_M>E1Jkw{6#NUe5lzaC=7dj;C>ZFPZG9S@}3Gs`!qI zY_#>}eWAL$Y+m$dzbg%2^?cjSRmb0KQdE__nff{>XXVy+mU$6sF6e^hzxriE`gwg0~Tnb*EO z=l!`7_tlRagAT_?2n`)7w%7f)O3 zeDeMFKYycqchu&}nr+nmnG&|0KVvFyu7A?Y^;d24U;b0s=Y9Ijo98zBT|ln+`MCaS oT3WoymNRGe^sJs5FVdQ&MBb@0R70a)Bpeg diff --git a/docs/build/html/classmlx_1_1core_1_1_f_f_t-members.html b/docs/build/html/classmlx_1_1core_1_1_f_f_t-members.html deleted file mode 100644 index 1b6c9e55..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_f_f_t-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::FFT Member List
-
-
- -

This is the complete list of members for mlx::core::FFT, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::FFTvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::FFTvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
FFT(Stream stream, const std::vector< size_t > &axes, bool inverse, bool real)mlx::core::FFTinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::FFTvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::FFTvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::FFTinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::FFTvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::FFTvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_f_f_t.html b/docs/build/html/classmlx_1_1core_1_1_f_f_t.html deleted file mode 100644 index de279f0e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_f_f_t.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::FFT Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::FFT Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::FFT:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 FFT (Stream stream, const std::vector< size_t > &axes, bool inverse, bool real)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ FFT()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::FFT::FFT (Stream stream,
const std::vector< size_t > & axes,
bool inverse,
bool real )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::FFT::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::FFT::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::FFT::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::FFT::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::FFT::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::FFT::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::FFT::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_f_f_t.png b/docs/build/html/classmlx_1_1core_1_1_f_f_t.png deleted file mode 100644 index aa05d735a5e91509583bd17df54ff4448f9e0141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-SJY5_^Dj46+O+5cffya%X zzw_n)|3}NuolHoM>h;UJC*{{BUD6)(MceYZja-VSRPTjJD*6jmJ>z7eJSY8G@_M;> z`K$Z0RBRt|NAW+~;VhfI^!Kf2exgO5$Nn1eM}OYTx6f{-^P0kCiBG+)y@T$`WyBuV zSb6!@jjwBe>xKI7DtyH;Y0J~VZLc(D=XiKl-@0|{)V%dq*M4$dyHsaZ6F0b;x z;JEEu>faFWNqhyFrmFkbuDz>fcYRfVtIFF-*VQ>0)k5C;Ctp)BT^so*T0L-5om+ic7fD{q_E~!}%VoXe)<-H#KR9(6^cS)|P~F0?r$ww` z`UR#BLQxEHPTU8)GZ-t7B>yn3ol`8wze%MRZhG}v70Pz-@Pxj8uo&Gs?MG<<0evc)9+(x%Hm3>f&YAQNBV} zz)-O}*S)_{{qN5`xnD!qeqZ}<{{Ae_UzVVFq+SS336kQUH1lRg%e0v@r(ZBK{`_gt zweIX4b5|9``pukqQ+VH+t+Su;Jh(hdtg73heAR=~x86^$jF{S&pB-y{U{YyR>CV2D zdAjlYX05%I{C!eNTJ*JBtJc|HS=IgPNKR;V@szcnz4mQc_GJ6kt+$VC-g>HSoBGBt z{+gA>n}a!Zjg9perlvhp-E!v4o}SfHgS-xZ - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Floor Member List
-
-
- -

This is the complete list of members for mlx::core::Floor, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Floorvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Floorvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Floor(Stream stream)mlx::core::Floorinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::Floorinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Floorvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Floorinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Floorinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Floorvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Floorvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_floor.html b/docs/build/html/classmlx_1_1core_1_1_floor.html deleted file mode 100644 index 60f7e423..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_floor.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Floor Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Floor Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Floor:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Floor (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Floor()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Floor::Floor (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Floor::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Floor::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Floor::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Floor::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Floor::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Floor::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Floor::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Floor::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_floor.png b/docs/build/html/classmlx_1_1core_1_1_floor.png deleted file mode 100644 index 2b602e649d0743547bceab9a20478cbbb48a191f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+fJzX3_Dj46+eK={g0*@QN zyz$&U|AphXiaK8Owa%SxJ)1B6R944vfo=6CEuVi>@V=DMGEJqDQ`hs;qYGY>o~WOl zfA3aio&2OP%<>m@MLhN^T{rbwd9+&SDR;wb>s51BpBJ;a9~qQWxopEH_uXDWwt8Eh znRvbGF)Odlyu0+3pSk~B$4TE}LRX*Lw7P9d$&$Bg_rCeQbysZNs;?Q{X;YU}{n+wK zxFl$8a`gWds-EgQw#=G#|NFH>;reT<`dd|GE8SM-WK;{C-V=OH#dLAy(dmARRQ^gW zRP~H=@}9H@AMnm#tl-pT&|k>umdS?O*A=wWTi}mMLc~{VT2V z(&8HL{ZD0EUwtkNTI-j;wQQ;2{0pzP)kylDE|)9c+POaS>hVYFYd0-?%c=eO?Z3SC z?OE^7mAJ3gbb7Ahb?J8Hr}_ue>uTb*{aSJDb=d#&{##Z4T7g39*ws^(&mS^Wh?_Tj zln8!ZCVeT}XYI)>m-UWYAE_|?zzhrQ0riJ*?UW!X{z)@$0#nG$nbR*A8GruNb8WJI zfqjs_{_h>vvQO`c%Jj2w*PZ;z&|7!gdet{}_8Fy4XV3V3%-?t1*2hEF-g+F+o03+&?cS^GnKNTQrLAp0Sto42HdKDi - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Full Member List
-
-
- -

This is the complete list of members for mlx::core::Full, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Fullvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Fullvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Full(Stream stream)mlx::core::Fullinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::Fullinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Fullvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Fullinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Fullvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Fullvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_full.html b/docs/build/html/classmlx_1_1core_1_1_full.html deleted file mode 100644 index 7ad00b10..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_full.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - - - - -MLX: mlx::core::Full Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Full Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Full:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Full (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Full()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Full::Full (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Full::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Full::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Full::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Full::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Full::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Full::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Full::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_full.png b/docs/build/html/classmlx_1_1core_1_1_full.png deleted file mode 100644 index 51e2557809e41495c77b03b62b452248d0b92381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 852 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;7JzX3_Dj46+eK_fr0*@QN zys_WC|DE}3r!g&+D!=md+_8r~k!c@rY2nYXjd<)=x^C*W@@VzYQ`LssPD^dOp3cATUS#l_%4r)ux$pK0vX#q- zy{wUGaO=+3@Y{N!ydtV}+B&JAOB1(kue$j@n|Jr0kk|Lb&T4sn{g8Q8 z{l$`~RQJ`MxXD>ZJy|{oM=``XaUbx` zV65QOWzb*9`apFH!=4tghUpiWJ_sQse=@ z=KVI6tu@ZC9go~Rv}mf?=h7hE9s6IEMIQdPUH{>+xyD)sINaQR$g1MJ!Z|StZysH1G@!Cxb-*Rey{#&>G zaP`*R#Bjsr-ET=-QCi&%^$o_us1W*9sI$&#s=beEyQ5LR`Gz z=ZxUjMKdpD`>j2i<+k2)>mwDWA9#ZWN%9Zl+9^S^_$ST0nbR_D=FI6AjEp~jT6L{k zztB4DYgT-dfA-8s(|c>DZtHoy#H()oQDD&A`ZVRWF3_3N*z>YZu93U?RO+%+P1Nd- z79q+rBhTN9F3z~>`|oJh)t&yUzHYsD%l-1F+I(5FjZyzaLB90V`Mht<)kZ_(YNtOx yX3VVQ)HOENUznQqOm)kdGkbKRG?$vl{%5#yYVH*6l@CC - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Gather Member List
-
-
- -

This is the complete list of members for mlx::core::Gather, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Gathervirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Gathervirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Gather(Stream stream, const std::vector< int > &axes, const std::vector< int > &slice_sizes)mlx::core::Gatherinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::Gathervirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Gathervirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Gatherinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Gathervirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Gathervirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_gather.html b/docs/build/html/classmlx_1_1core_1_1_gather.html deleted file mode 100644 index 09cb2f1d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_gather.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - - -MLX: mlx::core::Gather Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Gather Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Gather:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Gather (Stream stream, const std::vector< int > &axes, const std::vector< int > &slice_sizes)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Gather()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::Gather::Gather (Stream stream,
const std::vector< int > & axes,
const std::vector< int > & slice_sizes )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Gather::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Gather::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Gather::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Gather::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Gather::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Gather::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Gather::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_gather.png b/docs/build/html/classmlx_1_1core_1_1_gather.png deleted file mode 100644 index 7840ba3e82ac51e0cf4e3a1471222031e98cc0e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU1o-U3d6^w7^<`zFz;9;BI zKC|cFe|@{-AGs6eXjm?P`fSQ3(}PZN+!^~P6`y)tzBc_jBKgXiiUBGu<+0{du{X{l?30eD+DaJ-uq$l1;W3 zcP$SLT7Grs>4l|JyR7fpq_TNtRferK@($+JeCe@wd(_SO*I&K+6udSyI%KoT)U(S& z=Pj6=CAdBQsCcGETW!q?@eW-VD2y8g#S&nZjd zmA9yz^v>{{H2uOP75&FqPv?9tV2C-&n_zS7%C5U@U!;PwH%VR04p?i^$x!FSeZV_| zv4T^VL4P6Z1Jx}Ids@UAre9$CAQZ(Aha~yGG3=aWKYQdPH@NAG!zQWN7yr0y`SRb( z)cL>q)jUn@7k*WFl=EoW)UeMxgMA|6O81^g{CzwB;N@PkcN25{xA#o-pVhQoKlNU0 z_PNu6;M{e$>{d*8SDnI_76iJ^pCwwQUQ&a^C*+ z`)^w7_bl`DU5i6S7ZwYtzAU=;NBW2J{~Eh(zgAs)9`^s-{w&X5rB2?H_VlctT72#> zV}Yo7!$*nW*JaX|vVGQ`%yL=pxb=|=(+`3{0}Z!7>`|IaP2^OJHv^N1v9bQb)U;=KWu6uZ&kT*;w^?axRQd7RWWjFb>z19-^|~h>e-Lfo5b - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::GatherMM Member List
-
-
- -

This is the complete list of members for mlx::core::GatherMM, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::GatherMMvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::GatherMMvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
GatherMM(Stream stream)mlx::core::GatherMMinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::GatherMMinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::GatherMMinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::GatherMMvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_gather_m_m.html b/docs/build/html/classmlx_1_1core_1_1_gather_m_m.html deleted file mode 100644 index 670b2e62..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_gather_m_m.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - -MLX: mlx::core::GatherMM Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::GatherMM Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::GatherMM:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 GatherMM (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ GatherMM()

- -
-
- - - - - -
- - - - - - - -
mlx::core::GatherMM::GatherMM (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::GatherMM::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::GatherMM::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::GatherMM::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::GatherMM::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::GatherMM::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_gather_m_m.png b/docs/build/html/classmlx_1_1core_1_1_gather_m_m.png deleted file mode 100644 index 5bcc0fa4eb83fee54b75f653b323a45cdeea51d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GW5o-U3d6^w7^UhMm<#lzOF zAN2Hl{iDmvcnw>&;Lw8UgEBEcztqC!K&i5o7U#O-7%#>t$(&oSfczs<0@}%e$re1Q&CHnnR@?uq2_gI z{=}$BBC1{oj&F7t^MYnSwDH#stcwIuMWF;=6c`k4-v1vZEbtIdi}xc?6r4nZ_j&Y z`0RcO?>hUMd$HMPqn9LSr~gv?e(88~VT`d^&E)yF!%iOu2SdqKtM0YwtK-jY-^!Q1 z<1WYgE9)0{9N(7vV_x}+r|*w@Ze>efy>&JFN8Ys$C$3*>`KkH3?d>DyxBS^!u{6|t z%ihGT`|aPCRje;7U(O!oE68RZIBDOx+4aozFXx{>9%jGl>&~nHpT}=i`D+RC#6-F!mZw6^^~Az%}Hry(koNb#8kJQ zIkU*-YSrx@W$m+GHuKz`P+isYYt=QW{r*-LclF=h7jykgjdbQz-G{ddcgkF;%wSyr=d>p9)DwG;yzgIdp&93g6=6zZqAIjJqdArKJT1oj#*;YERVC eDMqsY8ShljnshpWeFiWOF?hQAxvX - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::GatherQMM Member List
-
-
- -

This is the complete list of members for mlx::core::GatherQMM, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::GatherQMMvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::GatherQMMvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
GatherQMM(Stream stream, int group_size, int bits, bool transpose)mlx::core::GatherQMMinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::GatherQMMvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::GatherQMMvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::GatherQMMinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::GatherQMMvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::GatherQMMvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.html b/docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.html deleted file mode 100644 index 3c2326c8..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::GatherQMM Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::GatherQMM Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::GatherQMM:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 GatherQMM (Stream stream, int group_size, int bits, bool transpose)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ GatherQMM()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::GatherQMM::GatherQMM (Stream stream,
int group_size,
int bits,
bool transpose )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::GatherQMM::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::GatherQMM::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::GatherQMM::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::GatherQMM::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::GatherQMM::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::GatherQMM::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::GatherQMM::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.png b/docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.png deleted file mode 100644 index 4f70f3e7fc8ab3f0b8ad23e0c677b9e6f65cd054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 922 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVwo-U3d6^w7^<`zFz;9;A7 z+*tDO|M;5DllDDe-x7C*bNQ}oTEA~y>+{~3d+guFHre0BEcR~KMBL|9NBmtnSM}s} z@u+?iEvYSL+v~T?pCm2$?4zX0%I8<}e(K!K^KebSwfpMnfBUX|m=>RvdwtPNp!ylp z)-UM3YZd=mf2+#NrU_xiPk-+&wK}qXYfYrbrJ3bhUNvr;8u7b1S2yVLEY-S@&PiXc zd+2(0O@g}e)Sf7y!!I*_h`qz`EZJ}E?Od<*mRsM28CUtPnmUz3Kz%F2q9tMuQ?4*| zOp0O%4B}Ss%3^f!)NRmM$ts|Vko+W{p?iAM8TM|Kvu;_QK~t_wTB4D@R>`yQ+K1`I zrygfd`FpS4%romJ?^4{I zw|l>E>oeU;JGUDDRsMb{H$mpQjr6{g=X1+XA1~RhC_49L*=wzB_tw@~-d|g~>+oC0 zilud|u2$Rs9_ZiWtQ#*czT0$1^xD|H9r+o&>uYk)PL<#D?y6$lvZtpXX|JtXklT9o zpW(f^A2!~O_2u6(%U2>~kxH#~{y*M7OY80AqyMhB_B`zWx&2w5zg{nyrs6s?JUen) zsujb&Zs`LxXI7T(_I+u({My|txAmS|HwiI5A|`l1VfT-DZIIVY{;rufbCyh-89C*O zk#Tp?(y!azEUuaL@-R>J6}uOYX8m}7DJ!mQW$5B|)fwk^Ll8*aXIG4s3oZSh&Vr^{!5ZMCtQSZ3{S zzHa^_t-?9R>q7ar=&rtX|N2iIyYQBG8}8QSCFW<%oO#v(NVt0H8gJHEnVKe+8VB-G apMB4YnU7DH^Hc(J5re0zpUXO@geCyFYs^vr diff --git a/docs/build/html/classmlx_1_1core_1_1_greater-members.html b/docs/build/html/classmlx_1_1core_1_1_greater-members.html deleted file mode 100644 index a88fdac8..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_greater-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Greater Member List
-
-
- -

This is the complete list of members for mlx::core::Greater, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Greatervirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Greatervirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Greater(Stream stream)mlx::core::Greaterinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::Greaterinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Greatervirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Greaterinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Greaterinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Greatervirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Greatervirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_greater.html b/docs/build/html/classmlx_1_1core_1_1_greater.html deleted file mode 100644 index 4e738bd6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_greater.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Greater Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Greater Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Greater:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Greater (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Greater()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Greater::Greater (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Greater::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Greater::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Greater::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Greater::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Greater::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Greater::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Greater::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Greater::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_greater.png b/docs/build/html/classmlx_1_1core_1_1_greater.png deleted file mode 100644 index ed485df38fc62e9ab723449fd9db6bac6392be4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVYo-U3d6^w7^zU^CVz~h>q zx8&8n|HAqK9Ou}t$d;yUlIky-<{(pCFzIdllR2Mj6ed5(X%X|R;?$k=<lg3z{(sZs6YKp2rN+nSzKYV8y}zy0=hR+_wCz^?Tcjw252JE>HEp z;JWo!?%$wp75#$D(CB@4qwgy1ySC|glS=iyi(1@K^N(DTpJF;ObhX__Z}o{P^}QFA zJoOj4PKtBtR@r-I_0-~Xml+x6KVoF~Y`FZ|W5cD_=R|d1?TMS5b<~rE!G0ktL!1*g z!=4r~h6+wyh7Uqf3=dSdFdXpCU~HIvfr&vMS;0@{D9h(I@+VX*rC}C)iRx7OoAYpc z@ugqpr}llB->Z^c=k!|bQC8ALulAqU428e>+v-K%`1w_}LNep=yqo7rejEQ@rn=+K zjXle+O*5ZZyE^@r`?ICL4_K_LGOL+9H#+?EF_Wtb!qu~~VvkPSd$sP|@~yjUWAs}> zv-T@YthE;VbH@70rst0rMK$jYy*;(}N87c6)6>Ipe;$1OPV8fL)VGK|mq3BC;gbFF z*`ju<@6LJI7#7-c&{O4P|L14_8|}Y5{+zlx|LU(@SO0$w_MNofFJt18>6KfH&Q)45 zJP5X7NU(c$rOIa6ms!Et8)se24q9u`$?!lOSBPK@vU&&YrBj|UdrnGI-lB5SJHvC5 z`1EVHpS_Npv_vj_RsO|WkB(2aTQK#S%Igo;3^l(;$xPQhGv)ZVa|_=V{R`gY6?A;< zHKUIK-ji~lZ8|o?{kQMQ3ohoLRWgs%Zp~S=PRcXrwB?4Q=FYv-RAN79>h3-{e{R`} z%F1<#h0~S@#_8@h6Th0Z<+qn@SX$kke%b<{P***PKY~|+8 zd*=d7{U@;<>F-ym2BosC2i7L>&rx#5P^1A$y|Nrti!rG^&TLN - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::GreaterEqual Member List
-
-
- -

This is the complete list of members for mlx::core::GreaterEqual, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::GreaterEqualvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::GreaterEqualvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
GreaterEqual(Stream stream)mlx::core::GreaterEqualinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::GreaterEqualinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::GreaterEqualvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::GreaterEqualinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::GreaterEqualinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::GreaterEqualvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::GreaterEqualvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_greater_equal.html b/docs/build/html/classmlx_1_1core_1_1_greater_equal.html deleted file mode 100644 index 16aec8e6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_greater_equal.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::GreaterEqual Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::GreaterEqual Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::GreaterEqual:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 GreaterEqual (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ GreaterEqual()

- -
-
- - - - - -
- - - - - - - -
mlx::core::GreaterEqual::GreaterEqual (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::GreaterEqual::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::GreaterEqual::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::GreaterEqual::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::GreaterEqual::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::GreaterEqual::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::GreaterEqual::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::GreaterEqual::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::GreaterEqual::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_greater_equal.png b/docs/build/html/classmlx_1_1core_1_1_greater_equal.png deleted file mode 100644 index 3b6862e595a2eaaf7272cbf9f62d73d8e0bfd547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GURo-U3d6^w7^-p+fYz~gEz zo%!Vd|3{N2u$<9-JkvOL<*Tl%F$U+De13OHB**Z(Op4*XuH>n`&UI24PgJAI+m^rS zCS|+rr9AB(a&O5yHY51#)n@B9iin&qwCDR05!Lfz)8tSp`(SIrF8kN#xpn zYvyN7e8Mt0Ec8=uZt3hFG2ZgrlipOiYUgLv3Vr^Y5Xl_5HLELsuFIr9hB4hLYj=ow zMiuH#+Ola~SdXC|J3~zuJHwjev!eQsPm0UV$_>-5(p~jbU6A3;4l#y^LS2RpkD?e7 zj&5Z*(3Q>DAbOpNL3n^Ev=1$sMjX6^8ujAFP zY>)a?;}e!05WO{4?}+%8Hr4sjp`V)1-_3ng9rY{1=JF}&sQDXe;(yJS)mwdc&dbKI ztsKphJtoONKf1s1{+IL5b64wMt-Al}`=8ZnC*_ZC^|*9uSCrwg9Wo3bH02mJ$Yp2Q z%6V6~MRQm;@P8_cr6_hqfty5J>I=a=xWlhi4xUjqY z{T&|upMP1TD=FE&`kKBa=ubt!YE>np#ATx2=KZz2yJAOi({m6oq}Uz)1-^!mk> zLG%1OMGUUqV$$ELuxR$KH-@jS{+wWJaCfYUD13 zSHo^j*7~x4YsphN^W5-%b#)7u1!ap~O^>q5*%Z}Vwm-;s-pXmU!mB6cXRi)Ey?V98 zm9V*=bRL&)`P6nzJ@9%^-KqG{i!XUz7XEx6Hf`6Z)xp0u*FVkQ_a;h7Nwhnwv%{xA nS5QzJbP0l+XkKR(`(x diff --git a/docs/build/html/classmlx_1_1core_1_1_hadamard-members.html b/docs/build/html/classmlx_1_1core_1_1_hadamard-members.html deleted file mode 100644 index fe6c7591..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_hadamard-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Hadamard Member List
-
-
- -

This is the complete list of members for mlx::core::Hadamard, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Hadamardvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Hadamardvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Hadamard(Stream stream, float scale)mlx::core::Hadamardinlineexplicit
is_equivalent(const Primitive &other) const overridemlx::core::Hadamardvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Hadamardvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Hadamardinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Hadamardinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Hadamardvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Hadamardvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_hadamard.html b/docs/build/html/classmlx_1_1core_1_1_hadamard.html deleted file mode 100644 index 192e9d34..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_hadamard.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - -MLX: mlx::core::Hadamard Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Hadamard Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Hadamard:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Hadamard (Stream stream, float scale)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Hadamard()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Hadamard::Hadamard (Stream stream,
float scale )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Hadamard::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Hadamard::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Hadamard::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Hadamard::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Hadamard::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Hadamard::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Hadamard::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Hadamard::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_hadamard.png b/docs/build/html/classmlx_1_1core_1_1_hadamard.png deleted file mode 100644 index 47eb4633c3dbc6a0f448869b555f738ee35f8b2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUdo-U3d6^w7^=Jr1_;9*nu zS9$XPfA@NkTUMD2hu^(@R^ldkQT+H^E54eg*P@;`Yk6*-7&S>mb*qY|m&0n0pgBc< zd!FeX->&GX|ARZq|5;10?KQ32yVtVoJ>4sD`?^%wmFFD$?nMU6R8HIQcgbAUll|&Z z*G;sfdd#-(-?DbnZsRkLjXi?SZ_fIu6KlF;k#TPR*G=~8P2YTKkNUnXBhB-Z^0KGp z7n-x?-u|_8nu@K$lB-*4?nf_oty%kYd#lRaO84ye3uWr>jyG=-TPb-~yKalH>dWgM zx}IH=psqZ%Cu-|8D_Ms7M_Ci>o?Y1$v+T>P;OvdFE@lUwn?L-w3KRr;{>tsS^Wt&d&AyWF+5bGfKh!L=fTJGbRVTh)kW{QbW428-NfG?3-?Dq zTzu>9Jh=>0SBW<+p1;cO{o(zy(0+dZ+JCFAJrDbTE`F=ZU#pd>o`KJRQJ`MxXD>h{a89CqXq=dQ2NQg#Y;2QP9rT1m_*Xj0)tMU(K%JT z)_iLI!?#Nux*SjJUlO`*;`P_B8)t9-v)~6XlFRO7zHNM$bN<%Z{%qZa(UX#%wg29A zY=`%4n$DUt6w)>Q{Ve^+nEIQU9s1;{HgkSBW?TU zG{L*;YW|m>KJzBrL)Un-#>&(*G1aYS&MZ2!I@C+^@<;am=vi;gYX3F>vkZf$tDnm{ Hr-UW|bZ5yK diff --git a/docs/build/html/classmlx_1_1core_1_1_inverse-members.html b/docs/build/html/classmlx_1_1core_1_1_inverse-members.html deleted file mode 100644 index 60cb63ce..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_inverse-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Inverse Member List
-
-
- -

This is the complete list of members for mlx::core::Inverse, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &output) overridemlx::core::Inversevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &output) overridemlx::core::Inversevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
Inverse(Stream stream, bool tri, bool upper)mlx::core::Inverseinlineexplicit
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Inverseinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Inversevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_inverse.html b/docs/build/html/classmlx_1_1core_1_1_inverse.html deleted file mode 100644 index 67853695..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_inverse.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - -MLX: mlx::core::Inverse Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Inverse Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Inverse:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Inverse (Stream stream, bool tri, bool upper)
 
void eval_cpu (const std::vector< array > &inputs, array &output) override
 
void eval_gpu (const std::vector< array > &inputs, array &output) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Inverse()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::Inverse::Inverse (Stream stream,
bool tri,
bool upper )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Inverse::eval_cpu (const std::vector< array > & inputs,
array & output )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Inverse::eval_gpu (const std::vector< array > & inputs,
array & output )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Inverse::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Inverse::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_inverse.png b/docs/build/html/classmlx_1_1core_1_1_inverse.png deleted file mode 100644 index c59ec21c0952e25cd20892230ab773cbd6e43350..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;FJzX3_Dj46+y<60*AmGL? zZ#=X1zxq0) zbe-xJm6P5Xo|C56Z7n*t)0*MlQQigizpm`MyX(uV;Oq^rF0KwcNxes^+UA%M>gA20gpGW!WB2 zt8G;&m8)lz)LrOX{mwL9>-e?Rp~v2YIeS@cie9_<#@21$)_=}h>&$yyI#BEFeFe|s z+j4$P+rBb%UjO8)Sy#exw~IXzjygLjK05SM@5^;&A5GVOim!>Ho2VvBJz!^$E*`qXV;!Q`4RuUH)~+ zukZK2=w~f0Z2I`~ismxux`npAD@7vuwv*y@ZQ~%PfQM(J5 zUQ2w?9Q^R=DzASj*-@*v{?)9A&lP1~StxY<-^L}+gH|c+uM|3armp>hk@07tsI;^= ir_*Q7c<%=}S2q6W-8p&9o(-UU#o+1c=d#Wzp$P!vbGG^b diff --git a/docs/build/html/classmlx_1_1core_1_1_less-members.html b/docs/build/html/classmlx_1_1core_1_1_less-members.html deleted file mode 100644 index e3f74812..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_less-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Less Member List
-
-
- -

This is the complete list of members for mlx::core::Less, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Lessvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Lessvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Lessinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Lessvirtual
Less(Stream stream)mlx::core::Lessinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Lessinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Lessinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Lessvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Lessvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_less.html b/docs/build/html/classmlx_1_1core_1_1_less.html deleted file mode 100644 index 076e7bfb..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_less.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Less Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Less Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Less:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Less (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Less()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Less::Less (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Less::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Less::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Less::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Less::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Less::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Less::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Less::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Less::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_less.png b/docs/build/html/classmlx_1_1core_1_1_less.png deleted file mode 100644 index 5fde4667de943f1ce94b7377e7b1d10bf4c4687d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-~JY5_^Dj46+eb{$ML4d8j z|Hzx)_8+g_3d-2H&dpYDdz)ouWJ1Hy-`?je``IHWxhZc^Iq99@IZ3=dY?6xo%U>_Q z&V99A$&>#_!!=L&?*ZSpUfQ*7XAtksoMXRC+jDE}v7y;(4ohTl80r-FGKU>f5q&>-4|-!pu*<&(h7j_+?Uv`24Wi z=67$d8LpMj^1LJ)6XkpAeevspj{dE$vK2ku=Uvodzjg0O(EFV1NwY5Ld|WzP!*jnI z(0S7@Oj6NbsOlMa?CL4Y=MNbw#KjvvN(8?ylDw4dv-V_`%X-JHkJOlcaOyJXFJyh7 zx`km+i&(?-3rrt`q8Q?wxDR+|FjgQ*{$XA_r&x}ElS(h#boaF?o^{VYT($!SLa*J` zeAh`)`xcf86|PUd=(YN1%t|XA@7Vp%HspR)t;o7@{I1*Ww&;6TjeQS3T_{(6dDd~? zOB=V?z7D^-#M{|^UFG$;E8pFI7bd&;Hm~N(6M5U;9i4XPmj3g*QSCB${ENbFtyl0o zzDe$fSzh?+ee&gHt0zaVjrBaDzGatYyw~JUb6=k0`)IoMSCq{qP{l=0%cH8CT z9vv@Qy{l;M?1)$16_$JZ@3 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::LessEqual Member List
-
-
- -

This is the complete list of members for mlx::core::LessEqual, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::LessEqualvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::LessEqualvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::LessEqualinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::LessEqualvirtual
LessEqual(Stream stream)mlx::core::LessEqualinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::LessEqualinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::LessEqualinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::LessEqualvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::LessEqualvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_less_equal.html b/docs/build/html/classmlx_1_1core_1_1_less_equal.html deleted file mode 100644 index ea0474c7..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_less_equal.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::LessEqual Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::LessEqual Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::LessEqual:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LessEqual (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LessEqual()

- -
-
- - - - - -
- - - - - - - -
mlx::core::LessEqual::LessEqual (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LessEqual::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LessEqual::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::LessEqual::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LessEqual::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::LessEqual::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::LessEqual::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LessEqual::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::LessEqual::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_less_equal.png b/docs/build/html/classmlx_1_1core_1_1_less_equal.png deleted file mode 100644 index 861844408310aba3ff8e8f7c874c0ab2c3ded067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVgo-U3d6^w7^J}g>nz{7TZ ze!5ZBe|0;j12+K2ug-Ok#cljfKF zf4O$d2Z{aUwNNhrxxAp`I^jk`&&BqzVl}^x7h?o{JgYoQb@mg z)OQoFS3PFswb`~yvzERy-D z!(8Z{;W=q~;nt#al@<(kM|l%$j$PSxx9y8maP}sti`fBdU$`*XFJyh7x`km+i&(?- z3rrt`q8Q?wxDR+|FjjEtGUy{o{&&zu^Z)5UkpC_JyqpCLgVgz;Fo@c>@T ztAEx6>PEzs{+)4n+jjkfmyg)Jo0#jp{m$z7Calx-OYiw+pPRkpaYp#H?W@}Lg#Ye% z7Wdur>#efwuV&oM^YC;p+g&Oaot6FHYW_8=D+Sd8TQB|Nom3+8x-q|UcT{QpoHt?1 zw?*v^>d?<9_1@RB?1^=Mby>&z%&WPDOGEj#yxmZ=_w0MWira5v{mZw^@_kXVNTqg; z_G$fpVvoCs+)UZl8XN0tfzB67ckUxNgt@_Sy{T9_oeBwYbmCS zt}lqX*vU|bJv=Z2>wjaImu4^f$ul`7PN&bD@y?hzv$AsC*F~Qye=Od6=1kw0yn64` zXWp=E58Ks#@BMl4tB0QUUhlVDbF1a+s+OtuL)%ne`dF8*G+i5WbyB45s{Wsix7R*B zZIwRl)DqxY9)MjHE-t^Q{5#?5H6?cATow?F+J6n$GTXQTb1(CMG7_TPCeleBv4 z%2|=ddRt$Ws_(vfdENS3&Ud!_dn7P>(*5h#o+{3}9u_@4EsfW2ZP9{U^=o&(yg2pr z3*X!b*__aCOZCsLk=*|w{NCpS7o=i - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Load Member List
-
-
- -

This is the complete list of members for mlx::core::Load, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Loadvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Loadvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
Load(Stream stream, std::shared_ptr< io::Reader > reader, size_t offset, bool swap_endianness=false)mlx::core::Loadinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Loadinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_load.html b/docs/build/html/classmlx_1_1core_1_1_load.html deleted file mode 100644 index f37a2c78..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_load.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - - - -MLX: mlx::core::Load Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Load Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Load:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Load (Stream stream, std::shared_ptr< io::Reader > reader, size_t offset, bool swap_endianness=false)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Load()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::Load::Load (Stream stream,
std::shared_ptr< io::Reader > reader,
size_t offset,
bool swap_endianness = false )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Load::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Load::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Load::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_load.png b/docs/build/html/classmlx_1_1core_1_1_load.png deleted file mode 100644 index cb43b85d486bc02ea789d571682796299adfc197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-4JzX3_Dj46+eZ6kAf`FU2 zyr=Q||3}={iaX>i_uXx7ozA1Zi0AR6YyVWA&pF<#t>E)M(pnp|UgQ1#PzLX!h9z-}o2seNxCY_NZbh z)l#pyyKA$(=i&Sv-CaH_r0c$Nf8S0$44|r!VR&eSv=r3e_ zpt^-&Pm5T?^b1TMgrXSYkR<;%hMlwQXOEoZrVR8u*yPP&lT_@ze;l^U+*fsT`LDem zL1+ClY&&+m+L68VY|Tm$*=q~)wyVC8_$y~)x~1@Yj{B~!u|Jn;R@7^JmW%Sfr!v?3 z?&g}%nv&cX$3x%mir4ymZFA@`lg)~%b2HOkYn9!Pep_I-w)EEFuTE3E-f~PT(YxIw zU%5N#>CYWA)}Fh!>g~7QA5CH9r{6EV^=a;T+o&Vox137;=#w3P;aAJsuZ#CaK1|*= z+xYIqRcZ^1g;ZZY-t$BHhjYDMespc<>)O@(KZomj?)Rf^2zhDtvY$MYW8!rB%o*>D znKLUZJzpOcjA^q!|G9nZr8((*z=Uz_<@cp~bQ8ZMs^&-HbL*i>tQfFy5SPx7IX1{H^!p@-2N^cg|VM{Wk67*)!`Z z16SYr^!8rWo{sx>qK{5|J?F^YeYJJ9R)^jN$^W}+Wc*ta?h;O2V`KftSxcu}D)_@Z Ych_8PB@qu6V4h&`boFyt=akR{01ghOZvX%Q diff --git a/docs/build/html/classmlx_1_1core_1_1_log-members.html b/docs/build/html/classmlx_1_1core_1_1_log-members.html deleted file mode 100644 index b66e45b9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_log-members.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Log Member List
-
-
- -

This is the complete list of members for mlx::core::Log, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Base enum namemlx::core::Log
device()mlx::core::Primitiveinline
e enum valuemlx::core::Log
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Logvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Logvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Loginlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Logvirtual
Log(Stream stream, Base base)mlx::core::Loginlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Loginlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Loginlinevirtual
stream()mlx::core::Primitiveinline
ten enum valuemlx::core::Log
two enum valuemlx::core::Log
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Logvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Logvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_log.html b/docs/build/html/classmlx_1_1core_1_1_log.html deleted file mode 100644 index 0728bb81..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_log.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - - - - -MLX: mlx::core::Log Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Log Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Log:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  Base { two -, ten -, e - }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Log (Stream stream, Base base)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ Base

- -
-
- - - - -
enum mlx::core::Log::Base
-
- - - - -
Enumerator
two 
ten 
- -
-
-

Constructor & Destructor Documentation

- -

◆ Log()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Log::Log (Stream stream,
Base base )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Log::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Log::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Log::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Log::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Log::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Log::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Log::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Log::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_log.png b/docs/build/html/classmlx_1_1core_1_1_log.png deleted file mode 100644 index cc9ba7d8505ae19adcd566c6d03b83559df66dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+fJzX3_Dj46+eLHEh0*@O% zzwz8V|3&v_{be|6_V$L}?>wtH6TLdzIo`$>o!e=DV$v1qg{q!$PTrIDSZtZ3^3(J2 za?|n`_h+lvK4gyKf3_odZuZircbEB1EQ;%SYSfzhdNXUka&VXKd4X+pE7Lu-ZZoen z?42aF_FU|}sIrw3na?zhJuc02Umcoub8Xv{k|pcb?tSxp>#WeaRi@KjO}&F|)sqF%RC4Nie!8?i?3`se`+?9q48Iopuf4t2d%fLOw$*Zbt*&-W=6ImKg<(&NSi|%S zOdo`z7~-6`4|r!VR&eSv=r3e_po)+szdwW{mzHqxtj=23(D$Unw=1=NdJ1_E{mYfy; zmdC5A&#F%?etlIdxoowfs_f0R*CO9UMgP9OGwOA~;jeB}yndT|T-vBBz3*vm*3{>Z zQ?^QN4ZXd#^+!|K<|o&~rq(^J*pyY^Fr&1F!4Bxcu3-+%jI+pXQkcQ33GTUaQh z`m!kQ5AUB#^UvQ7lfPPZ|JChtgXJs2vrlYap}KjK=ybznJ51{%kG*>vwf5BG4N@o1d^0(= zTG4oOu-yXFx;lsK+p{lUwYvCkNm%Ho-?yrEb;_?^`{;zJ-=kacI?wXwTXv?UUB9sK z+S9G6X=RL0_1Dh4srmn8{MMN_#W{41jrIR#0o_*qhncN?Zg1;LNo` - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Log1p Member List
-
-
- -

This is the complete list of members for mlx::core::Log1p, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Log1pvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Log1pvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Log1pvirtual
Log1p(Stream stream)mlx::core::Log1pinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Log1pinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Log1pinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Log1pvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Log1pvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_log1p.html b/docs/build/html/classmlx_1_1core_1_1_log1p.html deleted file mode 100644 index 0eeaf6c9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_log1p.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - -MLX: mlx::core::Log1p Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Log1p Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Log1p:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Log1p (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Log1p()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Log1p::Log1p (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Log1p::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Log1p::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Log1p::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Log1p::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Log1p::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Log1p::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Log1p::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_log1p.png b/docs/build/html/classmlx_1_1core_1_1_log1p.png deleted file mode 100644 index fc2853680b27706d0125a21079bf0595a721d1e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;FJzX3_Dj46+eLZQlf&km> z{#94@{1=vgtksk>XUQa;^HGp{PkuQe)Nv9nRNKUdSxbZ@4vYyW-wsS7xno`yv&h?Wfc*{{qtop(utp zC+-8@8H^R2x(xaYSs$owVc63m)-W9*d0PI$Da+>{6}&HHz)UZ?;x*|>I$!+_^}F_a z-vs|%?h$m_e2bjRoKl^rOw;+=q3usYub-CLwzrmZp47KO`Y_sh1unsGPB!_&QNbE#PLw`>1O@2xGparmv%6|djs z9+x(*;okT3ZPwN2k5jf;Rj=NvE&Y*m?Yn9EOK*Of`%q5zQFheVjXN%Bao?J^A?W_C za_v25zrFJ*-!jYd#T*yUDr^6LY;`ZsKTloVpS3sd>;FHY-j~)3Q#FLVG?#uDqCZ0%pM-~((Zt5%DRxly3T8+Tdt8RT|0Hds^1~| zFYUfEt5{`o@=CqW7Pl8aP0RhQIrZALytHeNtF~qJAI?!RzI{1U-}mY3?x^qQ^)s#( z*BeEv-zopr0GOt*YXATM diff --git a/docs/build/html/classmlx_1_1core_1_1_log_add_exp-members.html b/docs/build/html/classmlx_1_1core_1_1_log_add_exp-members.html deleted file mode 100644 index 3c05b01b..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_log_add_exp-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::LogAddExp Member List
-
-
- -

This is the complete list of members for mlx::core::LogAddExp, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogAddExpvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogAddExpvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::LogAddExpinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::LogAddExpvirtual
LogAddExp(Stream stream)mlx::core::LogAddExpinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::LogAddExpinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::LogAddExpinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::LogAddExpvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::LogAddExpvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_log_add_exp.html b/docs/build/html/classmlx_1_1core_1_1_log_add_exp.html deleted file mode 100644 index 1cc6326e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_log_add_exp.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::LogAddExp Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::LogAddExp Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::LogAddExp:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LogAddExp (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LogAddExp()

- -
-
- - - - - -
- - - - - - - -
mlx::core::LogAddExp::LogAddExp (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogAddExp::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogAddExp::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::LogAddExp::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogAddExp::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::LogAddExp::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::LogAddExp::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogAddExp::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::LogAddExp::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_log_add_exp.png b/docs/build/html/classmlx_1_1core_1_1_log_add_exp.png deleted file mode 100644 index 28cb8ab01bfe36d2661453a2d8e022c8cb461383..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 943 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUxo-U3d6^w7^zFxQ5iib@- ze#xo#|Btj6adNV}T6g#A+{JITlr=2UJl=fMw|s6Rm*Oeadts7_{z6sHIGHHVNq?3+ zUv6G*72l?^_ksA9yk|RtW3!jOz58sk*3(@Qw-fnpUr*<+yEilVP35u;pO(&5T`6ZC zb>775RgYPDZRYKzul&sY=Q>X6yR$ZI?$ZrYL6>H3+t#<~{`FU3KbKyM5<9Eo`SnBQ zRoRk_QO`HktyJ|C-?3%ZB>QXEGKJ%_ujVRxrr*1$C4H+b$@0BU_M}-C_dM#i3Y_#$ z3gkK`?@4=Frm0j)hHF2c)6V=L*oNU)vd`M%$sX$sx2mlc+{<>g%a7%Qa1=wF6ZZk{ z48{shT?YMytPfPTFzjg&YnXn4>4OkL@+bS2qH~otCnlM|O`o%MlFHAShx4BU!(e(X zC=9mNIKNhVl$CVRYxd8YAm51iQtLB`zi&@}@bZ{p-pOstqt{>cpVf4Fy4Cx2rq6vZ zRc2&!WD2e!Ww+_0^2SSstG0e5*@EqqAQBu$q6(>T1Dm!L64*@=hv| zyWRG_a(7f|eaxD$<=dim2X*9UlzQ*$S@y)bfA{Sp^E0pJe)L+MlW{xoY0dun8xL!@ z^4s3Mm?gIGa_6Kkh4=pO{<$>&eE-_I(AUqy{?Ff^<@xJ1bwen~E7Qg!Ep4%2R9ae` z)9Ev3PH(+7d)NBQYtk<#W||pq)~<`zerv9!YrHwyFRFOn^R1>2=ap9Of4gDdSI^Zg zxtFI)zyAJo1GgUI^QqR^X9G{Zu~~I^PUikAc3FD^oVL$h&42aK)$qKq)!$x(wyADz zJNGvwO}6V{RCMpJ<6B-G+I!*Fy!%<9(Vv;usyWwh)!Q=r`FyVj8#?o|OjYYQTi34L zn=`tuCHTvzEG~0bE zuKu|+Yv$b#zCah-D{MJ)2AHB|&YbS4y>v?3WBc0svwWJbE!zOhS`419elF{r5}E+& C-_iyE diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_and-members.html b/docs/build/html/classmlx_1_1core_1_1_logical_and-members.html deleted file mode 100644 index b96dfe64..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_logical_and-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::LogicalAnd Member List
-
-
- -

This is the complete list of members for mlx::core::LogicalAnd, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogicalAndvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogicalAndvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::LogicalAndinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::LogicalAndvirtual
LogicalAnd(Stream stream)mlx::core::LogicalAndinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::LogicalAndinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::LogicalAndinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::LogicalAndvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::LogicalAndvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_and.html b/docs/build/html/classmlx_1_1core_1_1_logical_and.html deleted file mode 100644 index 1ea446da..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_logical_and.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::LogicalAnd Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::LogicalAnd Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::LogicalAnd:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LogicalAnd (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LogicalAnd()

- -
-
- - - - - -
- - - - - - - -
mlx::core::LogicalAnd::LogicalAnd (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogicalAnd::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogicalAnd::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::LogicalAnd::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogicalAnd::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::LogicalAnd::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::LogicalAnd::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogicalAnd::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::LogicalAnd::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_and.png b/docs/build/html/classmlx_1_1core_1_1_logical_and.png deleted file mode 100644 index 65d5f0bb4faeb52263141ede1bd0892ba0dcebdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GV=o-U3d6^w7^KAiMQfya$s z-q`Qn|IYl}Z0^=;FLv#IbH`%N#!CYJiWm1kne(|~f@-FTllP=OEz?vg3o}$bKTUqO z{@$&ZRg#mwwB%pd74g`wblp_B^JeiPn%B=(>^YnG``?>`->r+gY|o2qt6dT9sdc>d znr-hStHtMH{cQbK?znt5IBmibsD=@=DO7@$g(CX zm3{7;u;^?4TUB1NOb-kFbo^Ep-^ZO{H^nAh`P6l-Y(c4d-u1b;zCos|+-p_~tG>L> zq3iicC~DFZ)h#L~Pw$Abd~PGdF#i#ofn0Ld-8|>2-j$}2y)R5xgq0{Y%)h|&K`4qL z&WZbgcLrkxr!Is3Le>YWTNw7Vh&4<{NS>}=FtzyHW5;PrF2YP-dev*vlXSlQF~Bg0 z`vwYwkk7(V;)3bi=4-zg%-8Q?eZAQ3-m?vVUv7W!@|a=X$!*J{pP$N~)wG>I^>wfz_y;ZgS)QrP<9-g}GcdfebX1)GlG5=at)(*RlpqD>b zJhP5JKJa}{?AlHCer2nJqqp7->(I|A^{$f+Jz2i*-7A6nm$hy`nh6S!_T1~g{~qRi zzq|Iu%f7I!oOAuAEb0IJDE|Tf-=BMOzpjmXAN_ak{w&X5rJ%^{Sq=2sVa5-dc?^#Y zmtA{nw&ePZsL5A5;+nHu)tP?a3=^~f`@VT(7pA5?d+PMs^?qK3 z@lKyPKL2M-n;CgjW@;3#v9|ka)Ac+3*L83IeR;j-PqTL2>!Htdb4~}Z)84vlyV8|2 z-!5L9wRm!*b=P*w$97xmD(*zP<=@>_M5nx8$Dzj{-&`mNq;g^O&%w*!;Q-bXuZj%>d5Dr0Y0wCm|otBr5gE!Cdx zFFtq2S=rssTkq={Z`S|VdglJptJ)IA#_IRCML*SFJM(7tpS}CDj5ps`+H&R$D2Rf* c4u9ltdo*k7_gVVvz}&>(>FVdQ&MBb@0JL(_#Q*>R diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_not-members.html b/docs/build/html/classmlx_1_1core_1_1_logical_not-members.html deleted file mode 100644 index 1b749bde..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_logical_not-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::LogicalNot Member List
-
-
- -

This is the complete list of members for mlx::core::LogicalNot, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogicalNotvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogicalNotvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::LogicalNotinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::LogicalNotvirtual
LogicalNot(Stream stream)mlx::core::LogicalNotinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::LogicalNotinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::LogicalNotinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::LogicalNotvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::LogicalNotvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_not.html b/docs/build/html/classmlx_1_1core_1_1_logical_not.html deleted file mode 100644 index a4650332..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_logical_not.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::LogicalNot Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::LogicalNot Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::LogicalNot:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LogicalNot (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LogicalNot()

- -
-
- - - - - -
- - - - - - - -
mlx::core::LogicalNot::LogicalNot (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogicalNot::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogicalNot::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::LogicalNot::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogicalNot::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::LogicalNot::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::LogicalNot::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogicalNot::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::LogicalNot::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_not.png b/docs/build/html/classmlx_1_1core_1_1_logical_not.png deleted file mode 100644 index 51f652755cbd67a1549845fe366564f6d1c64051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVQo-U3d6^w7^zFzmpfQL;z zUggR6`bWB~QOkY16Cci5b4_D$Tg)BLM+f4w)|T3=m}DZgQq?ms$a~TvmMvW>M>Vhe z=f4ZtFX~x!NPLUmvleIB?5W3ZJ?rAGyx(&?S#I0A^Hx7@8Mj9~_BlLF|E-SazBw7O zhgYl!zI9{Y%R;Yp%cYOIPgtUxzWeFooHA#vTbG|*3;Xtb>#oSU6{Y^&Y135VlcN5y z$-cQ}w|0J(=OsqPwQ5hd@7!vANV>NaSsWED`| z%CKmOn8TDSOdXS=7y^U16}++-U63UIut#mZW+fNmDb))z`CF9hq(^5C`#+!ZdbxP* zs{36kTmQ6NJK3?gvpcME#(7cmhx@L8f?!>pq)lng@wlctdsjw$neiT+?g6-TcApwx~#E zyd3+!V{fy5{w~}QJ@-!5+i5N}j;m*X^3Dv}_j%W5=NkXh@!jcBryIAK=d4`+ceZd` zd3Et}>!`D8C3%ZfYUha8GuOX3|2%i~`mDYAU*G=;^}e)za?~V|)R?tV*|K~M{)LPZ z{f1lhrYr6}c4gKYw=Ys5+WATjb8v - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::LogicalOr Member List
-
-
- -

This is the complete list of members for mlx::core::LogicalOr, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogicalOrvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::LogicalOrvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::LogicalOrinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::LogicalOrvirtual
LogicalOr(Stream stream)mlx::core::LogicalOrinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::LogicalOrinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::LogicalOrinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::LogicalOrvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::LogicalOrvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_or.html b/docs/build/html/classmlx_1_1core_1_1_logical_or.html deleted file mode 100644 index 205a8832..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_logical_or.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::LogicalOr Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::LogicalOr Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::LogicalOr:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LogicalOr (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LogicalOr()

- -
-
- - - - - -
- - - - - - - -
mlx::core::LogicalOr::LogicalOr (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogicalOr::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::LogicalOr::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::LogicalOr::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogicalOr::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::LogicalOr::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::LogicalOr::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::LogicalOr::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::LogicalOr::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_logical_or.png b/docs/build/html/classmlx_1_1core_1_1_logical_or.png deleted file mode 100644 index 79dcbcb6f02248a88ec94f481a4bd7b3eafc9650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GW5o-U3d6^w7^zV2IXz{92< zzvR^W|3}z0rn4}W?#?w|{W#QZ>4O=ak8}P{Dn9quaoUo59J-#LgrX)rIl6GF%1M8z z|53&5uYXTi!d~O>I;qe4>dvsJYi6+`n$MGTxQTp!FwN2hfC#TIbYF2r>b5+>P)No$SmmYVct8c!~Hr@RvBs;G=3#k6bmQ%td zL2Hwv?XOH)A{-MHdis6!>kXa#TTdk`db-cM7-hc2uJd*2;x(SD+_oN>?zc$guhc?S z&p0RVNqbtRsZ_oU*M2@{H}iwoI}E=T`>(yd)_c9(R<_l0d#$c^P3Cx@zJ*~=i&(?- z3rrt`q8Q?wxDR+|FjjEtGUzX4eV~ev{3M_8bWU;o1l5)1Fq18_R6Rc#x5l6Id>pU+ zyP#HnQpjiCwcQ%f^UsYP=>WY_t7RZL*&EB_iPIUO{o|~c0URIk{UyFQmEBg1-J<+c(9RBJy#p}1I z%1euBy!StuZ9Vn5Flen?{?)QeP1G{%H zesP~4wLN-zTx}L_m~B<*Dp7U81O8aU12eFm+F$U}T>4L8=FG2d88c^Aa_Slz>+^4! zSCZEzpXX~UJ!wP)N>X=$R#S7OheS>qY4-D~`A^Xs3Vg{Jpwu8H_sw6$$*<*CZg zdqX!Q7A!J7qNh1I(z2`HaM_Nn^|$ZtG|U&jA!4yI>}BB!H>1tAz0cXZwMw_nO$+Ot zpFMT&Z;#h$OU6`?o}?XZ>Xli8ym#&+pNs zqMN_fx12e1?{N1``<11)EYs4i*KCQJzF$8rZTX+G^RtXM-&X+2@A - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Matmul Member List
-
-
- -

This is the complete list of members for mlx::core::Matmul, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Matmulvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Matmulvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Matmulinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
Matmul(Stream stream)mlx::core::Matmulinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Matmulinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Matmulvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Matmulvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_matmul.html b/docs/build/html/classmlx_1_1core_1_1_matmul.html deleted file mode 100644 index 490ff158..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_matmul.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - -MLX: mlx::core::Matmul Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Matmul Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Matmul:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Matmul (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Matmul()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Matmul::Matmul (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Matmul::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Matmul::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Matmul::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Matmul::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Matmul::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Matmul::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_matmul.png b/docs/build/html/classmlx_1_1core_1_1_matmul.png deleted file mode 100644 index eddf94c6689334b6ca0636a6709feb8af328d0ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 885 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT+o-U3d6^w7^KAiMQfya$s z-q`Qn|IYkq-PUPYC0C!GJN7W=rrDBqhF{a?6wC2%Qt5Te@SHUL!Xy=azO^czb(j9U z?4A4Tx|%2dkA`b=4c~=4kII~T`_jswdtDpjrfpbj7yaQ+is#0sGY_4zf2-kHx_hzd z^1z_wTX(*WeytVizpL^U&!jESxi*`4L#>3(bP*6Dxug_TdApLKVetFc$m-I}Pc zoK`EZ6-L`%nY2VWChF|8`|sBtRZh9W!Ih>ExA4;YVy^NxaO>*o-7}PqZs0xxDR+| zFjjEtGUzX4eW1F9VNZ)#!}JSGAA}H+KbfN}pWDc#cuK)d?~C%B^hf7m`SB$`FQ2yi zy54tE)V_tK>W^{~E_$v0d1)ovon^a#L6G}RwW4Z6|L(Ngm+rp1nm?=Qw0-G4-|UmK zmn3JqU)#QF`aQWXk7rfiHNTpCJL{?;I2g*VT6ODIXWP#$&zAjGuv=j3r8+iGt8JwR zx9^Ev`>SS7$m-48qjql+oPXg}-p@<3bnjQ*-RoN8yV_2yf6J++ZR%^jY=6F6^xmqy z)|X}1F5{RxS;I5``N{VO^#A_Ylk+uj?e(?)=FiXa{8dWb5Yk*~BBx@!`67p|v9bQb z)U;< zUzioN_U5F>yR*towoeOt7Ib(0q`v{HKU(N`8f~_Xo_bwq_EP8H^RE5LJT^6Pds3a- zYQK`8wPkniJyeFIipNUtk|#x8zPD!UTAyNInpo-1nd|Sj_4C;?RY&^!XU?2{!N~Zt qP*hr4oYUzuXHGAf8sv5OBfoR(?0+Hrs@H%Sgu&C*&t;ucLK6U3NwshQ diff --git a/docs/build/html/classmlx_1_1core_1_1_maximum-members.html b/docs/build/html/classmlx_1_1core_1_1_maximum-members.html deleted file mode 100644 index d185625c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_maximum-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Maximum Member List
-
-
- -

This is the complete list of members for mlx::core::Maximum, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Maximumvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Maximumvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Maximuminlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Maximumvirtual
Maximum(Stream stream)mlx::core::Maximuminlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Maximuminlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Maximuminlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Maximumvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Maximumvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_maximum.html b/docs/build/html/classmlx_1_1core_1_1_maximum.html deleted file mode 100644 index a2374f87..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_maximum.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Maximum Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Maximum Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Maximum:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Maximum (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Maximum()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Maximum::Maximum (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Maximum::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Maximum::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Maximum::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Maximum::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Maximum::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Maximum::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Maximum::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Maximum::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_maximum.png b/docs/build/html/classmlx_1_1core_1_1_maximum.png deleted file mode 100644 index d888f70916cb45d503beaa60665bcbe9b4d8d205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GTyo-U3d6^w7^KI~g;z{92< zzvR^W|3}o}N>$ImAn!?wShjSj9M$}O z{^FgNf3iI;aqn|{eR590s^Ybq_S~*{6lB-6QRdl(wRX`T{+^qYblSLeZTzjsNq;I9 zmHIDU)O_*Tx9QVDi^};v|KOQ)<@1^-JMVDbl^OoGqxZf!pDkPVbLF+gy0d`lJ2HRD zmISS>joyD{(h^~(DBsiH_il|oay_ap+T+r^@-5d`bITu9)dgHrGF@DGw7+bT%3rt( zmrPS}l?-2fEvlXQfmR;FW5Z?F-kL4BJ|k-K)sDF4tfzh~9h0LN0)w~}ys{WwJarp1 zR`sM9g8z6{e0!2+5z!QCqKB$%S}I^#a|Y0Sbd}QLd97oq6d0e9G_V8ox{a znX0UOs=j5O%N*aBt*4Ug=I`L_50B+5zVYo__J@+i{l8CbTUs6S*?(5kb$z?{%S@l^ zUaH$-{8#n+h2y=CcRaiGaPpr!+oJ52t!@k1vV8Tm$Tzp5|Gth{yY=jm4Rc5fBDf59r}XQ_#9{f8at-9KhdyDzpL93VHU_T7CSR!yMFrz!^%XZ)*3jR2Z%f>v z-aNBqSzCVz72;@vuBph$?}~% zt@7xZezof2%*wFj4ZPDg{me_dRv4%I{^6>PvQ^u(^i|6?ch8g$%aKk?lMT8)hl{qCpz?N)|azyI-4Jljou+6PRHbJYD@<);T3K0RS1%zPbPa diff --git a/docs/build/html/classmlx_1_1core_1_1_minimum-members.html b/docs/build/html/classmlx_1_1core_1_1_minimum-members.html deleted file mode 100644 index 34236c40..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_minimum-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Minimum Member List
-
-
- -

This is the complete list of members for mlx::core::Minimum, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Minimumvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Minimumvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Minimuminlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Minimumvirtual
Minimum(Stream stream)mlx::core::Minimuminlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Minimuminlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Minimuminlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Minimumvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Minimumvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_minimum.html b/docs/build/html/classmlx_1_1core_1_1_minimum.html deleted file mode 100644 index 3407dff4..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_minimum.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Minimum Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Minimum Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Minimum:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Minimum (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Minimum()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Minimum::Minimum (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Minimum::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Minimum::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Minimum::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Minimum::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Minimum::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Minimum::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Minimum::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Minimum::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_minimum.png b/docs/build/html/classmlx_1_1core_1_1_minimum.png deleted file mode 100644 index 46ca64b2d779f71310a4c06ab7a53f43090b24aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWdo-U3d6^w7^zU}*@AmGN& z-#PR5{zu!xynkktnyfoLdv4q0OJZ%zJin&TDW1o_N#(3thUcW|7bdCb^Q~3!th@Bp z>ecQm`L2`ZePE8_|Fy$;ZuZjLyzHf1mGM1qx0&6(o}ORxcT?Mq$2wq}=mT^{v)OGcIFs&4<) zc8=<+O_zNQ*7dYHxb*6hn)%U()$FdX>Tgx)-LojvY>RE@(z*?6JhQxvk8bx{r1Dp4 zp{i$`llP=OEz?vgXNGG(pR=6#L2wMivt+-ur&GPwTW%FwExA|iYS(0r2kKiG_OysK zOuxYNK`4qL&WZbgcLrkxr!Is3Le>YW2+2?ETZ+zA+MSqWA`LUWC(3iupEYOYzj0sq zzN6B+^ljw+Rcw3fE%L7Kv6fl+?)JK{yUU_^H8Yn)uid;&b^EWEHBs3o9+oL*Ev;ko zlsdibVf7v7wZCfSthwfxx3x@FF#dv-&(EM)Q|u+)T~yn*JXF3rJu21tws6?1-{14v zzh8ZK?n`6XW)61sz)5!Jy7xE6|N2~c`<46Fd)t52|68T{@;axk=O?4}VdpIU*$*t= z!EomIoT%xir^FR!>4q6s`K}UG7d+sPH9Rl_>nVT6(kYi}CY(8wro83M8DQYgoH_k@ zlzvwJ+3COUeSW&KKJN9ke|5&j)$PG+x123s8&Y<<->WuycBs(QYf;ypN9T55x0^ka zcTV`eA?f;&?0IL;u*t0nduzDF(`fU&+NtGh^)4OMHs0LWpAox$ z+5MG=-M7B_r@s2?x8Gf1lRwqw_0GQ0n{%@5ljqt^3*UO`e06&gv)bM>Esgo(^W?N= ns&Lm`Ff#tU3FPXMKg_>NXZLNL%5(sjPZ&I1{an^LB{Ts5fF-&+ diff --git a/docs/build/html/classmlx_1_1core_1_1_multiply-members.html b/docs/build/html/classmlx_1_1core_1_1_multiply-members.html deleted file mode 100644 index 9754017c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_multiply-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Multiply Member List
-
-
- -

This is the complete list of members for mlx::core::Multiply, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Multiplyvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Multiplyvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Multiplyinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Multiplyvirtual
Multiply(Stream stream)mlx::core::Multiplyinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Multiplyinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Multiplyinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Multiplyvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Multiplyvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_multiply.html b/docs/build/html/classmlx_1_1core_1_1_multiply.html deleted file mode 100644 index 85362801..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_multiply.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Multiply Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Multiply Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Multiply:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Multiply (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Multiply()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Multiply::Multiply (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Multiply::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Multiply::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Multiply::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Multiply::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Multiply::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Multiply::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Multiply::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Multiply::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_multiply.png b/docs/build/html/classmlx_1_1core_1_1_multiply.png deleted file mode 100644 index 518065cfbc82a3186a616f79145caccbddf2a3ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT?o-U3d6^w7^KI~hqAmGL? z?`i!0|B>raq5)ej``%71UjA@NMEgUI=D*(OEc@9bC%GwaQ90?I;WK`)QtvEj07Z_SompAj|rYDZji)=^KE55iFlaZcO^ zyfYXpICUBH7qUK3-NLY^MXX`^1*Q)|2+5!PTZ+zA+MJkVA_X&9X6q!CpED2ZA7Ao& z`SjXX_On#B);PabdX)2E+0?MlJA-*6LeuJy~^S{ALiZ^2dFpKDE3@6UXfC0xHORK7bM93VNbr~lq9 ztG9Zu^<~+$X@XY3P`P)m`~3m^zd!%nc(pjne)})$`m2+^yl$DMQYjg({d`V4^Mlws z49Ajv*51zbSZ}yhZMEQDwyRx}IUcBE4G+w~`XryRbjqcQ31`j#lgODfds?Q=oGCv2 zTKBW;3Q4oCa%X3MP>$;V@pN^@-U%PPwAa3T<~KE`YWdTu#A@S%$xHzol=kTU056U`d{X;QWLA| zX=%25qDrStzM6I1_Hq>WwKH!zf+4BIeB(#Yw53q+hW@pyU;Br&s5^} ztM2 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Negative Member List
-
-
- -

This is the complete list of members for mlx::core::Negative, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Negativevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Negativevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Negativeinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Negativevirtual
Negative(Stream stream)mlx::core::Negativeinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Negativeinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Negativeinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Negativevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Negativevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_negative.html b/docs/build/html/classmlx_1_1core_1_1_negative.html deleted file mode 100644 index 8d4d4cdb..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_negative.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Negative Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Negative Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Negative:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Negative (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Negative()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Negative::Negative (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Negative::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Negative::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Negative::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Negative::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Negative::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Negative::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Negative::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Negative::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_negative.png b/docs/build/html/classmlx_1_1core_1_1_negative.png deleted file mode 100644 index f7a0d33a0efb549f57aef90f5e4447729e2f42d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 929 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUVo-U3d6^w7^KHRj*ipMQ{ z|2d1w|LXfXm^4Lte($oiEq+v@=_DnVxvGBU)@vUZcwNd^GEK$RQ`fUg=z`WHk>z*d z_wKy>G1=o1cb((wBtMI*JHsO9<=Pc!&OaJq_iV#jyXX&pPt8d>ZQQyx{#N9qKRYh$ zS{@jfzGdg%m8nzjOwE&OmOOz7$Ko1xBHR+qkAi~IIF>aL#s)v9f-#@>_U4R!Z7 z`>iU?c|AR9Qi+qt>dc?D`Lbdkw@$k+HmT%^?AlVt+jDowm7j`Ql4jEXWAR)K&-$J# zla^?#RP_uD@}9J)XLV@y+QW<=H1il98!o%{)@;f38Bvq3cEmMjJ@sShm>k6r7{smM zmBr}dsoS8jl2t%;E5o8CVh&TTFm+5qNd9EslC`$fX2m2EDVWJJTf0<_&OEIDe9G_D z(`&8jcs#Rywq0{Qa`Q;&YMp1F8)tv0x$-ob@AkYp-g$a&9?RX_R&u`hpI`8YUq_$c z-STXYt5sjwGW(}_zxG_{&pucB{>k%gS3eo<&hl_|FS}~h9b29K-(vnXt1kt+1>!RQ zvjCN+9^AesR(HR>->R!G*IvuZJz~CPm+t<)WlycQ?~Xb$Kl5kqN3ZPI3uWzVkKg`! zmn;A3y|*v>!h&1Q`Au2U|M^+|gX#Zj>T$E?07xgBlPxL+O1Bb$Bu@^(!E!VjJqdArKJVN zW$#`2m&1Ox$z1-YzxP~|sb83y_H9z|+D$e$YaR&s*=zkv=Bt*;|177|czgTr+q1UK zO;5|4lkLknP3GvCezVQ?ru}9~(=3meSe`jk787#%`G>0!_TNgLnTqdUTU!6~_32Z) zjLyc-J(Dwe+sv0L2s?iW6L#_s6v?LSJ_iuU_b?LsKv^4cUTkEf;rNygn jJ#z+>h`clpf0RGoG}~Wnbx}MpGckC&`njxgN@xNA5{=7r diff --git a/docs/build/html/classmlx_1_1core_1_1_not_equal-members.html b/docs/build/html/classmlx_1_1core_1_1_not_equal-members.html deleted file mode 100644 index 93f8795d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_not_equal-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::NotEqual Member List
-
-
- -

This is the complete list of members for mlx::core::NotEqual, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::NotEqualvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::NotEqualvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::NotEqualinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::NotEqualvirtual
NotEqual(Stream stream)mlx::core::NotEqualinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::NotEqualinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::NotEqualinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::NotEqualvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::NotEqualvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_not_equal.html b/docs/build/html/classmlx_1_1core_1_1_not_equal.html deleted file mode 100644 index c394128d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_not_equal.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::NotEqual Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::NotEqual Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::NotEqual:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 NotEqual (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ NotEqual()

- -
-
- - - - - -
- - - - - - - -
mlx::core::NotEqual::NotEqual (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::NotEqual::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::NotEqual::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::NotEqual::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::NotEqual::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::NotEqual::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::NotEqual::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::NotEqual::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::NotEqual::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_not_equal.png b/docs/build/html/classmlx_1_1core_1_1_not_equal.png deleted file mode 100644 index 2067d9710fa43a18393232e768dc93f6d029c187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWjo-U3d6^w7^KI~g<#lxl^ zzvR^W|3{_=ad>j9-M#$w#Q zapyJLo=I$rdt>8om9N}o+!O3RVadGoo2wR=+?+7!+?K6ZPuIm~M?9S#6&+~;RDXDR zX!!-#ZRb+|26<1?E66ley?^~$rf_`r)m%l-^m`Yzq;HiaS;{Xl^*oyq_tAZ>hG%{6 zg-I&<3spViKrTJAdTQ~x%Zwj1^B6uGF2DBHZ0YqmQQcR2;wERgsx$rI)Me0L$ofEa z3&Wlkv4-gvm_7(aF~m7>AMnm#tU!|d!yIM#+(tgda~9n6b5Wj?{;at?f1T&|^BTX3 z{z*)_@`-n?y74+Ov9()fuUEg?^fvVSVXL^E!wZWuR3p+eq4EW>%+;fw&reoWf^O>WQlR?wsp^@-Fg-O{BqQCsXX&VVXy8h zcs}2l|3k2RMd z$=`feRkh%%O5%miNnZ-@{o(y{$$q|k^xsw2&aeGv|9_S0%k{!hlb)o;t({XmkFUYM zkaAl4cxf*EsW5ZqS+|UtGb=fDjg9r! zZ@qV=&c|L%H@*L!k+F4g>CeYeum6OdKJ%ujeCs8-0^60>^7Z%0Z!6jITJFyJd;dec zf8Tzet;<-pH6^V7)dscaJGS(dxlLVr^;6C5Gi#oEZp-RV3;yPOJ|Q+Z+WlR>!v2+^ z;U$&d45Htv{aYBe_m5I^?>6_>=gl{2{@k~XZMMaV9ox3ux}BD0o1Zb2H`jV&-l|V? zR$YC!cJte!iMR5@W3$q({`j_j&*#jArkkhDoY{QA$oR8RR9ae`*xD&Uv- - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::NumberOfElements Member List
-
-
- -

This is the complete list of members for mlx::core::NumberOfElements, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::NumberOfElementsvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::NumberOfElementsvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::NumberOfElementsvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
NumberOfElements(Stream stream, std::vector< int > axes, bool inverted, Dtype dtype)mlx::core::NumberOfElementsinlineexplicit
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::NumberOfElementsinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::NumberOfElementsinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::NumberOfElementsvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_number_of_elements.html b/docs/build/html/classmlx_1_1core_1_1_number_of_elements.html deleted file mode 100644 index 018531ce..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_number_of_elements.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - -MLX: mlx::core::NumberOfElements Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::NumberOfElements Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::NumberOfElements:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 NumberOfElements (Stream stream, std::vector< int > axes, bool inverted, Dtype dtype)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ NumberOfElements()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::NumberOfElements::NumberOfElements (Stream stream,
std::vector< int > axes,
bool inverted,
Dtype dtype )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::NumberOfElements::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::NumberOfElements::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::NumberOfElements::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::NumberOfElements::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::NumberOfElements::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::NumberOfElements::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_number_of_elements.png b/docs/build/html/classmlx_1_1core_1_1_number_of_elements.png deleted file mode 100644 index 2364d3242ef674772f7577d13debc63a620692ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmeAS@N?(olHy`uVBq!ia0vp^8-TcjgBeH`I80mvq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NtdJY5_^Dj46+eSPk=0uRe{ z*RDVR{A(_mG|Zh4y?>XL$2tj9@nkmkAH8#mWkJfo{#E=ghZ%A6j`Od1pZLT2`HU?}*iz+;w{+gSOZdN9^6W*W**i?nCPt zXWYmv3;DaErugf!+3x8ICxi3CBc9(6nc#CL`TB=4ssED;%IC{+t?xebMd_rnoxru- zzZV?(-CL^ZGpW2nFURa|8SndPN49RbH$$cJ;PFGHl{bPH#g*H+D)|~u{{KnSangTw zMW0FYS`0j^gbt~^JlS!`^0|!w!-GRC49bSHKA7;P+06Rz#(LVvf89$7#?_XFgK_Z5SSi+&a$7y$g|IxWAYMpkX11p>XY`I7pl9ZzPE1go6lc&Pkh2@ zFK*Yl!!#n^V(LvjajmOS^FD2F+1hpW!Ox>+@8+&u8a@Bz#Agqxl0V0B>np1j-Ous+ z>+y1p{;$Gkk>x6Pr!UEL7rnOETvSE)dyZC(NHj297VQ_l_g3k5lM| z=YFW_ycy2npbi>UO*@>G~Kh6XNPv%bTnCb0z|9;)I_x_sc-&)O{ z`?}wl^86w&jN+d^oar}7wod(z?EU+k^(Vhi_ij@8?+5eI8LEewmu4@^q>d97EgL#I z)D?A<9-WN)@sQ=-!?}KUZPw@Ri_^Kje)nlc-vjqsr~jCJ$aGsl_JMsLY#vWKuC>Ng zv)=ng)Usa-zM58Ulf50VYm@f}p^)F(ej7!}ZsgR@pL}B9%KhbSzgBR(Ixy?_m-Vu_ zR@JLzbGWYV42_U}#kI|-WZ!a?Oy5Z}(pr4iZC$nW((~H0R{uSA>qEY?AWZb zuJv}1@$A^QiPnGb&bwQ_=J|&--uFhcQm@#ny12M0w79z1a3%^0`a4Cq9GNWG8tj#+ b@Q*P)Wb?{5itP=+tjOT$>gTe~DWM4f - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Pad Member List
-
-
- -

This is the complete list of members for mlx::core::Pad, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Padvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Padvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Padvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Padvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Pad(Stream stream, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size)mlx::core::Padinlineexplicit
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Padinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Padvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Padvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_pad.html b/docs/build/html/classmlx_1_1core_1_1_pad.html deleted file mode 100644 index 97fa8657..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_pad.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::Pad Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Pad Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Pad:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Pad (Stream stream, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Pad()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::Pad::Pad (Stream stream,
const std::vector< int > & axes,
const std::vector< int > & low_pad_size,
const std::vector< int > & high_pad_size )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Pad::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Pad::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Pad::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Pad::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Pad::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Pad::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Pad::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_pad.png b/docs/build/html/classmlx_1_1core_1_1_pad.png deleted file mode 100644 index 13b64cbff9539015259689bb35502cdb3ba44dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 874 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+PJzX3_Dj46+eckuUfQL;z zUggR6`bWXLww&!v64+oFwYZ04?PEXL^zZtX&u!#WJZJS@n53e=P}MU|CdzZtpCzx; zx0KEN&*NEjfPIVKwH?8CuY29zy>_zF)3p+}uS=C(dCsx#USzOL<+Kfd-S>J0S^8~R zmpR2mqV(OTOWVAU&P|+W)U2{~PUz}0mqMJqUahQNJ@xOtYa33#&$@eSQIzUR8N0Qg zSnjS2yMK*;tIA70y|t^J-oE$B?Bm9;N*$Gz&n4H^I=`O0<2-w+Z;6KfH&Q)45+&jveVE63Gu9#(CW(8+&oOLlfXstyjL!A@%0q+dP z3Qk=H{e`R#RJSnfX%TCfeu3$OP!vNPl4QMu_VYQpki=Wav-8)+^rS0?UV%;8o7wDD8Z@)iy>L&et@>`Gc-C=f_ocHRdRPwJi z&7bruaJ`PcDF5EO630WYxA|*bzjjqCc~+K(r>*bScSqmty}Iw*?ybAz)|oE~$-1xL z`S*s|pA*(sw9X%&o5fqTdfRR3kDO~0PrqNB_4DB4b7mh+*M5qyxpd2Xi(TUHKRfQf z`4IT_nGgS#RZ2X5i&XZ`RsYXc_j3OE(_!*gtM0z~|1(_IbH5*TLul!gXU!>TX3`5& z)1IkrIdf)@&FZgDyw@y0b*Ag#sSlZJ>&{wly<~dZv}mr#&itb{fPu5fuKI)A_qesH zcb82&b1JYVHo41tyL@TP?&WD|w(qj0%K4g}ne??}Z|IBJGv|I{T)XMC_Wtu(xz)u% zYuD|ceb&s_`e`LJNo?%?9g;8Vo>w6By)ydR?as>go+ie>)!=SvnKpAKFf{~uWm^4X Z-12>HmaDA(T41hV@O1TaS?83{1OUy`u-E_q diff --git a/docs/build/html/classmlx_1_1core_1_1_partition-members.html b/docs/build/html/classmlx_1_1core_1_1_partition-members.html deleted file mode 100644 index 101ee7dc..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_partition-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Partition Member List
-
-
- -

This is the complete list of members for mlx::core::Partition, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Partitionvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Partitionvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Partitionvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Partitionvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Partitioninlinevirtual
Partition(Stream stream, int kth, int axis)mlx::core::Partitioninlineexplicit
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Partitioninlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Partitionvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Partitionvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_partition.html b/docs/build/html/classmlx_1_1core_1_1_partition.html deleted file mode 100644 index 018687d2..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_partition.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - - -MLX: mlx::core::Partition Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Partition Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Partition:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Partition (Stream stream, int kth, int axis)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Partition()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::Partition::Partition (Stream stream,
int kth,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Partition::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Partition::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Partition::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Partition::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Partition::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Partition::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Partition::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Partition::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_partition.png b/docs/build/html/classmlx_1_1core_1_1_partition.png deleted file mode 100644 index 4259b6ba026b79860e910b79b230a581b9e7ee5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GW7o-U3d6^w7^zV3Uiz{A$g zzw*;>`;VEMc^e&qwrA~@S*z`~Q!+j2!@KyRbCq@{CYeYtRP~H=@}9KEV#_3zpPt+A zXT1CRC*9)`v)zJHqvLa5MQE?Rzim#4=KG@&{N6Xh=Ij3Wmg2eb>CU#P-DT63RL#k_ zdr2eH;MSe5YfGoDQa@}{%I0~iIBc!e>2*>;LH@h9f7^8by41T*&TD^f%SiKF)$YIg z-Gb(ZtD<=37XExkS`Dtxu%UbU-Tek>n^qZs0xxDR+|FjjEt zGUzX4eW1F9VNZ)#!}JSGAA}H+KbfN}pWDc%c+P^GUbR-mvu@gl%a$*{NvH0g_n*fz z>u1|F&m$L)ESehj`RS5b1^=&n-O!R7AK$c||68H`&21&$tG~`(ckt<=bGtKjD<@y+ zFH5UkUG?(sL5p=e&1-^fx33M8-MqSO%9YKluLb7ZjQ)MTa(meJ_S>y1rhbc`u%vDc z_r9mHSy%rS2CO}JFYE0ow;HGH9ZyeZZ2R+|G`;)BtgyRc{aa2oZIcZCOXRIl}xTi1mdSNX0Ioy+k+9cy@C2G%F`EkRzHb{=VIn+2oN(&C&>pE=X*{@U~7 z(#dDm$X$PJbmolQN6xhe=gjx6UnIPCOWoa~Al1F%$+kL)p|xHg#0spV`L6!Gy>;fz z3C3$vlZ;-wmqtv=-+rz174xp2>E2aQYpu?&lS(^TwQFyvt<5hTz^Hb4Ddy*m0xe)d$>T$a^~ntbhEru9ctUE|I7mA0HYv!`X+ o%$d_K7#V*yS|8@6>3iJ%!SmVsi{ckD0rLohr>mdKI;Vst05o;I;{X5v diff --git a/docs/build/html/classmlx_1_1core_1_1_power-members.html b/docs/build/html/classmlx_1_1core_1_1_power-members.html deleted file mode 100644 index 6bb8d650..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_power-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Power Member List
-
-
- -

This is the complete list of members for mlx::core::Power, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Powervirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Powervirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Powerinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Powervirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Powerinlinevirtual
Power(Stream stream)mlx::core::Powerinlineexplicit
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Powerinlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Powervirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Powervirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_power.html b/docs/build/html/classmlx_1_1core_1_1_power.html deleted file mode 100644 index 7f1bd4ba..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_power.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Power Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Power Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Power:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Power (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Power()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Power::Power (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Power::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Power::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Power::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Power::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Power::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Power::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Power::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Power::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_power.png b/docs/build/html/classmlx_1_1core_1_1_power.png deleted file mode 100644 index 7ae727a295912364d435a4d757bfc1ebac0c8d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 900 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWto-U3d6^w7^zU^CVz~h>q zx8&8n|HAr9RW0O2g0~t+_NEtK5s@h_nDaLN$(+wM3X`AYw1|0Daq3R`^5}w>%1iaT z|J|~u|4g3ngfsp^)y89UUqxu=zTf8Ob1L0%Tfb?}`tx!%`!_GU@mVMFsrTNlC9?Wk z-eu0PkSNWo&b+N!oIc}tn!?Fx;a4|B&dQq5XI@-*QQ5@toFF|@bV`0 z7Ym|lqvvN$e8Q-=cGc6{_g^f8JG_sXe2kw0otv*quzW0KX zr~X3MNpViyDtphYo?3kFG9$zMM{EqA4VPbgYqs?IoT%=rJ#mw>j(V~%*e_&dh;!m* z*wZ4$P{FCo@Ifew;eqNFh6COij1AK-Ffr&OEBMJAW%=Aj{)CF9G|Yl8QJpG(*F4m} zzU23Pjo(J~Jd@V^W^CxlMj&CeJ&1!|s|v@O+^?aWyIt8@W|7&#b(*sV>-i zlI*j`a>;tO`>*6*IpZf+9i{vFVu-WXtCdx&OW!i7u6#Z@YTN1Up3759R9`k|N8P@+ zXGK`KQ`fb}@ujho_;xG^-CA=y`mWlwLa(5971@GVP?!jv-lO|k?t<=wC59g#D|^N{ tc~9EYGEJqDQ`hs;ri`UiE|vUYp160;?rBM1yn*?J!PC{xWt~$(699*qtVsX> diff --git a/docs/build/html/classmlx_1_1core_1_1_primitive-members.html b/docs/build/html/classmlx_1_1core_1_1_primitive-members.html deleted file mode 100644 index 0e781c80..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_primitive-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Primitive Member List
-
-
- -

This is the complete list of members for mlx::core::Primitive, including all inherited members.

- - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0mlx::core::Primitivepure virtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0mlx::core::Primitivepure virtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_primitive.html b/docs/build/html/classmlx_1_1core_1_1_primitive.html deleted file mode 100644 index d101ce2b..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_primitive.html +++ /dev/null @@ -1,633 +0,0 @@ - - - - - - - -MLX: mlx::core::Primitive Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Primitive Class Referenceabstract
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Primitive:
-
-
- - -mlx::core::Compiled -mlx::core::CustomTransforms -mlx::core::Depends -mlx::core::DivMod -mlx::core::QRF -mlx::core::SVD -mlx::core::Split -mlx::core::UnaryPrimitive -mlx::core::distributed::DistPrimitive -mlx::core::fast::Custom -mlx::core::fast::CustomKernel - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs)=0
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
virtual void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs)=0
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Primitive() [1/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::Primitive::Primitive (Stream stream)
-
-inlineexplicit
-
- -
-
- -

◆ ~Primitive()

- -
-
- - - - - -
- - - - - - - -
virtual mlx::core::Primitive::~Primitive ()
-
-virtualdefault
-
- -
-
- -

◆ Primitive() [2/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::Primitive::Primitive (const Primitive & other)
-
-delete
-
- -
-
- -

◆ Primitive() [3/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::Primitive::Primitive (Primitive && other)
-
-delete
-
- -
-
-

Member Function Documentation

- -

◆ device()

- -
-
- - - - - -
- - - - - - - -
const Device & mlx::core::Primitive::device ()
-
-inline
-
- -

The device the primitive will run on.

- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::Primitive::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-pure virtual
-
-
- -

◆ eval_gpu()

- - - -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
virtual bool mlx::core::Primitive::is_equivalent (const Primitive & other) const
-
-inlinevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented in mlx::core::fast::ScaledDotProductAttention, mlx::core::Abs, mlx::core::Add, mlx::core::AddMM, mlx::core::Arange, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::ArgPartition, mlx::core::ArgReduce, mlx::core::ArgSort, mlx::core::AsType, mlx::core::AsStrided, mlx::core::BitwiseBinary, mlx::core::BlockMaskedMM, mlx::core::GatherMM, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Compiled, mlx::core::Concatenate, mlx::core::Conjugate, mlx::core::Convolution, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::Divide, mlx::core::DivMod, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Log, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Matmul, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::NumberOfElements, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::RandomBits, mlx::core::Reshape, mlx::core::Reduce, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Split, mlx::core::Square, mlx::core::Sqrt, mlx::core::StopGradient, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, mlx::core::Uniform, mlx::core::View, and mlx::core::Transpose.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
virtual std::vector< array > mlx::core::Primitive::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-virtual
-
- -

The Jacobian-vector product.

- -

Reimplemented in mlx::core::distributed::AllReduce, mlx::core::distributed::AllGather, mlx::core::fast::Custom, mlx::core::Abs, mlx::core::Add, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::AsType, mlx::core::AsStrided, mlx::core::BitwiseBinary, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Compiled, mlx::core::Concatenate, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::CustomTransforms, mlx::core::Divide, mlx::core::DivMod, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Log, mlx::core::Log1p, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::Reshape, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Split, mlx::core::Square, mlx::core::Sqrt, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, and mlx::core::Transpose.

- -
-
- -

◆ operator=() [1/2]

- -
-
- - - - - -
- - - - - - - -
Primitive & mlx::core::Primitive::operator= (const Primitive & other)
-
-delete
-
- -
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - -
Primitive & mlx::core::Primitive::operator= (Primitive && other)
-
-delete
-
- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
virtual std::vector< std::vector< int > > mlx::core::Primitive::output_shapes (const std::vector< array > & inputs)
-
-virtual
-
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
virtual void mlx::core::Primitive::print (std::ostream & os)
-
-pure virtual
-
- -

Print the primitive.

- -

Implemented in mlx::core::distributed::AllReduce, mlx::core::Abs, mlx::core::Add, mlx::core::AddMM, mlx::core::Arange, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::ArgPartition, mlx::core::ArgReduce, mlx::core::ArgSort, mlx::core::AsType, mlx::core::AsStrided, mlx::core::BitwiseBinary, mlx::core::BlockMaskedMM, mlx::core::GatherMM, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Compiled, mlx::core::Concatenate, mlx::core::Conjugate, mlx::core::Convolution, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::CustomTransforms, mlx::core::Depends, mlx::core::Divide, mlx::core::DivMod, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Load, mlx::core::Log, mlx::core::Log1p, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Matmul, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::NumberOfElements, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::RandomBits, mlx::core::Reshape, mlx::core::Reduce, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Split, mlx::core::Square, mlx::core::Sqrt, mlx::core::StopGradient, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, mlx::core::Uniform, mlx::core::View, mlx::core::Transpose, mlx::core::QRF, mlx::core::SVD, mlx::core::Inverse, and mlx::core::Cholesky.

- -
-
- -

◆ stream()

- -
-
- - - - - -
- - - - - - - -
const Stream & mlx::core::Primitive::stream ()
-
-inline
-
- -

The stream the primitive will run on.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
virtual std::vector< array > mlx::core::Primitive::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-virtual
-
- -

The vector-Jacobian product.

- -

Reimplemented in mlx::core::Depends, mlx::core::distributed::AllReduce, mlx::core::distributed::AllGather, mlx::core::fast::Custom, mlx::core::fast::RMSNorm, mlx::core::fast::LayerNorm, mlx::core::fast::RoPE, mlx::core::Abs, mlx::core::Add, mlx::core::AddMM, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::AsType, mlx::core::AsStrided, mlx::core::BitwiseBinary, mlx::core::BlockMaskedMM, mlx::core::GatherMM, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Compiled, mlx::core::Concatenate, mlx::core::Convolution, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::CustomTransforms, mlx::core::Divide, mlx::core::DivMod, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Log, mlx::core::Log1p, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Matmul, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::Reshape, mlx::core::Reduce, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Split, mlx::core::Square, mlx::core::Sqrt, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, and mlx::core::Transpose.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Primitive::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-virtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented in mlx::core::distributed::AllReduce, mlx::core::distributed::AllGather, mlx::core::distributed::Send, mlx::core::fast::Custom, mlx::core::Abs, mlx::core::Add, mlx::core::AddMM, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::ArgPartition, mlx::core::ArgReduce, mlx::core::ArgSort, mlx::core::AsType, mlx::core::BitwiseBinary, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Compiled, mlx::core::Concatenate, mlx::core::Conjugate, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::CustomTransforms, mlx::core::Divide, mlx::core::DivMod, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Log, mlx::core::Log1p, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Matmul, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::NumberOfElements, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::RandomBits, mlx::core::Reshape, mlx::core::Reduce, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Split, mlx::core::Square, mlx::core::Sqrt, mlx::core::StopGradient, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, mlx::core::Uniform, mlx::core::View, mlx::core::Transpose, mlx::core::SVD, mlx::core::Inverse, and mlx::core::Cholesky.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_primitive.png b/docs/build/html/classmlx_1_1core_1_1_primitive.png deleted file mode 100644 index 26776809c067fc57048afe0d631f1b6840d62bbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4997 zcmdT|X;f2Z8V)L;vNNE zQ4HLG8wLT1m7PFB3`<)`0u$DRkN}k}T%yJh5+s=$?TnpH&zV2dp6UIQZ@K55?|Yy3 zeV*sdg@ZV(&1%QhFc{2c-`?H+FqjztgDuNgxg1(4{v1Pwel{N5ALwf|8lmCTtS0Hw zBPQBy3(+CJYf7O|Kn9R+Zzi~Zq!XfjPIl&?G z<{91_nJ3;0A!eR%xCn=qC&0G%*_}};iP{jeG4sSiylH>rc$-d9fV|G(HQ0Q=qRPS;JOX6rDM;=6X8<9by@96<+{^a47ka( z<%-V6wxYW`OYT7*mp!9by<=tD63e}aN_EcXV$s?^#gqD=69$+Qa#58>kX-<{%NSrf zZN8OoH6f(r+UJ-={)4GtV4`8WHUEh}Z>WQQtzJ5*`!-%Kr=OI$IoFy$4?0q#u;#l3 zx}f=P*1lFkH|t$J=TO%CgVmDMpo$#-=)|)&eX=sAZKH>~9LQOvm(A29NhlV;Hs4dV7G?1&|T$sM`SpE(Bpg z^sd1*<(Ol{>Zn=~@dK7UDK>w7y9Wcu9M@Y2Q)~R$houA|6Gc!(_W6C+)e}21=V#Dd zmrmc>L$LgV2$5k)-AD)-i!D~gsSW5i+kGoPN@e?5c@W#DH{N=Lqr?-yRkMg`)bmyqO- zXw;s$0~n6FleV6=lF7~yp31275*(Eohdb(&5dx$xePl4@5m+(JQ5&VIIc-s17k3+e z;moH?Zvx7_NsY3CIw=~Lb(d63+G(GsWf0-=A&UCyllt%l9^mg|PVZq>N*NyF zw};l&stGnMMj__%D&cZq{#y>af_gE5&DUS10>-ppub05BCp3rLla+Od05G+_E%^Rb z>8Th}zH^iSz4H$Z)QRYf_9~?JuA-J9%EYWUH!y$c6cBOf4f|W~80F^WM%zvrEUbPX?m&6+L zPCG#4aTx$JFFa zBf9P-{#fhdQ)&u0UFHV|G-u*YXEI_#gh0s{-@PwrwJ;l)k&&5jBg_??a6A-MiQp0XMWvU#r6TnueV`mgaR$td7&eq!G%`^s) z$PTecRUFSu0$QPEr=EYXJVh4K9uGK-zo-ZLa~3z99FE0{(BeLx&Q?fS*mDCXy-#81 zEu>EwP9)5IH4HccDv0U6a<}^nE=)_Dm>vCM0`XM>1svV)e5H$fHo=pD>(CqkB5G2- z6UfCL#;vw3B&yw{;d^{(;!NWk1kZ;HeEfh_8ZnQDl&Iz0q8 z>2IN7NKG?c962kn_6n;m@&Hj-O{WRdAfluPzyEeg;Y_~g%E?4eMxK&Ml+;Y~x`M|J z*i|@3!PrY{gy`?e=_i=ka8I7u!j0m#e}($Mwa$(%M8+k(ZC>Qn|2X`BtbjS|;W&3g8$P+Q!q6I71Z9Wwy!H^rOE%kDz9-+I8GU=mPQMt zhr==3o#@1D8gt`HSHb z&QA^dOwrx~keZHN#f8PYULqN!W`NW9>c2Rt6T&t^(|YDNj2LTcOx*fMS1wZ5+B}>LuuIjC8|E z>IfLC2Io2?c+X;Q>d}#)Bo_BV!X_E6P8$D0vP;k{=MMVBk)pNvlBmPTc`O0v= zTZh$jq($EJr*a^qKIVq6gRJe8d$fs{FzB+)%Ja8F9#$P723nE7UX>TwT)Fc%0N6SR zuqcKrz0xsR^0}9mA>uY&!xo%ZTE!*Hmfp3%CP^a~Fr!CDqd6O~MxM|2JzN!o)JQs5 z>DB22&Vz<5nRS2qDRCFX1U-(O*u7x}GTQF?7Q8bbbDmoaQDO zr^brxy(R@hO2AUJ!kKt?b8KjX?=6A^**XoW*0Hee^jV>6(%0ayA$5vhEHiF{8cYpu zN@c5G4qT#XSmTNLzpJ+q#~=K8ums!`pE_NxnkEn#D1eff__DWz`DIC5AyKme1TK^K zCaLq90d8gEtg8SZPaTQ6LXJJwbx9|pRl!{d9k%^Tlb%V3iO1U`kk7}*P+{|H2>Mjo zErB+M6q{uT0>qHsRr-XS$U+duY5yT+vu9~4Hmwrx2}%}k(ejqAUY z)hU^HvlmzPRCjW+X{ce)X=%^dQ#Oj0B2!~S5<~=j-L}2nseavlI~}EljV$0C$NPxN sbnXS4w?iHh|Nf7 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::QRF Member List
-
-
- -

This is the complete list of members for mlx::core::QRF, including all inherited members.

- - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::QRFvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::QRFvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::QRFinlinevirtual
QRF(Stream stream)mlx::core::QRFinlineexplicit
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_q_r_f.html b/docs/build/html/classmlx_1_1core_1_1_q_r_f.html deleted file mode 100644 index f65f45b1..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_q_r_f.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -MLX: mlx::core::QRF Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::QRF Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::QRF:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 QRF (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ QRF()

- -
-
- - - - - -
- - - - - - - -
mlx::core::QRF::QRF (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::QRF::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::QRF::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::QRF::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_q_r_f.png b/docs/build/html/classmlx_1_1core_1_1_q_r_f.png deleted file mode 100644 index 29056e86a6af766743e90c1c5ee33e33ffd857c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^B|sd&!3-q-S1vRKQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=E8uJzX3_Dj46+W$asRz~gdU zc;&3$^M43OHSs3ioTj$sOK@rncVGOQGmI00y!N)bOsX|qpmNivo+V4=XLaPitKa-S z7EesMQu>0wy3b2=h3@lN%-bJcJ@IMAJqy#`@+gQOlBwbzn`#tceU$>fRx5o zzm%X0+k)$tPZB8=eYLu6+v7@=ouzDFjjdjkyk30zF|XULdoTHF&hCxQkSs09@ANMI u`96KFS5PqT3Ki4KAgk}Pni{`eQ~x$2aas_w<8@%1F?hQAxvX - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::QuantizedMatmul Member List
-
-
- -

This is the complete list of members for mlx::core::QuantizedMatmul, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::QuantizedMatmulvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::QuantizedMatmulvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::QuantizedMatmulvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::QuantizedMatmulvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::QuantizedMatmulinlinevirtual
QuantizedMatmul(Stream stream, int group_size, int bits, bool transpose)mlx::core::QuantizedMatmulinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::QuantizedMatmulvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::QuantizedMatmulvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_quantized_matmul.html b/docs/build/html/classmlx_1_1core_1_1_quantized_matmul.html deleted file mode 100644 index dcd29579..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_quantized_matmul.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::QuantizedMatmul Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::QuantizedMatmul Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::QuantizedMatmul:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 QuantizedMatmul (Stream stream, int group_size, int bits, bool transpose)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ QuantizedMatmul()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::QuantizedMatmul::QuantizedMatmul (Stream stream,
int group_size,
int bits,
bool transpose )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::QuantizedMatmul::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::QuantizedMatmul::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::QuantizedMatmul::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::QuantizedMatmul::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::QuantizedMatmul::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::QuantizedMatmul::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::QuantizedMatmul::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_quantized_matmul.png b/docs/build/html/classmlx_1_1core_1_1_quantized_matmul.png deleted file mode 100644 index 6b7d0c3461c419ee15f44d7df60a7ff9e16ef71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmeAS@N?(olHy`uVBq!ia0vp^OM$q9gBeI}JboKUGDrvbgt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcGjdAc};R4~4s`@e6C0*|Zy z^ps2A>mQw;e}k!S*X6laYwi{-;%4n@J$L_v<@4LkK9kJVbv!S%Z&2}+KNqbw$;Mym ze^qh&_ni};c-Ec&baqa+_uLIWuc!O#XSJ(_zE0-4y=gmZzw%|F+g8pIKaZbNI>~o@ z+T&F|Z%lSieHYaq(pz%Ne^3p97ob>|6Ws(>>2BC12zCH-V2;em-we z_539;P35I?#H1zs{Tt6%KHtsEaBdI7gKsv6K7FlfdZw(yev&=I?yymo48tA{Z-x(w zI*bR}H?T0s9};4y!7uPH{`8#UeYPi5DvJ+IQmN(ep7bU0y3xcZmCHVCFTV8SdUS2Y zd}+^bKNmfn-Ld#=*6A&E*S{=!rr#MMAADolY#|$-D}|r4ZWnpazn96O_y0y|xz6%j zp_^vAC%g;dJMCb9?n`O;rQ-X~g8Wy4f+J+-oo?OloBr*J-XkaFl>slk57C0CHL*L@40(+@!gIL z*)JyRJ$dqDDRs|sy?@^(EqN+EP2Rii@TcOF@8?)}*13QJE75b39nUn&=QZUF2WE;h z+?nSdu`ka5LQTt4g`W&((<9t^nH$6tIT`F)R2hB-I61eIXm=1Y}Q<>B2FE_ zvU^`NEDf2DF3Qf_QnhoEO45y!sf$C->hqTtDXq+$AN8tgquJ|%_4RX?yPv94`}$m` zH1XY&O?vab9kHJFw*0D>I4}gSeBWevl|3t1)pJ|g*IQDaN~PARJLk5oEDSw*+i~6Z zl(`$?b_JcEE495m<6oe`^mWOaN=4C!f?STYZx9jusHo%WQd7~B>ZN&iZoNL=3a_tE RjgNt{sHdx+%Q~loCIA&l&Po6P diff --git a/docs/build/html/classmlx_1_1core_1_1_random_bits-members.html b/docs/build/html/classmlx_1_1core_1_1_random_bits-members.html deleted file mode 100644 index fbd98bb2..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_random_bits-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::RandomBits Member List
-
-
- -

This is the complete list of members for mlx::core::RandomBits, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::RandomBitsvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::RandomBitsvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::RandomBitsvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::RandomBitsinlinevirtual
RandomBits(Stream stream, const std::vector< int > &shape, int width)mlx::core::RandomBitsinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::RandomBitsvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_random_bits.html b/docs/build/html/classmlx_1_1core_1_1_random_bits.html deleted file mode 100644 index 08a208df..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_random_bits.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - -MLX: mlx::core::RandomBits Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::RandomBits Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::RandomBits:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 RandomBits (Stream stream, const std::vector< int > &shape, int width)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ RandomBits()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::RandomBits::RandomBits (Stream stream,
const std::vector< int > & shape,
int width )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::RandomBits::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::RandomBits::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::RandomBits::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::RandomBits::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::RandomBits::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_random_bits.png b/docs/build/html/classmlx_1_1core_1_1_random_bits.png deleted file mode 100644 index 59b478af106299b15f4fc209fce70504a5768320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GW5o-U3d6^w7^zRmlrz~jcx zAN2J1{zvA%pBWpMK2ug-Ok#cljfKF z|MJc6dcUHl{|~mc-L~%no=0WYZvVN6W2Z{;-&xb&{=6xE|NR-oZx)v~y>;K~9b~Du zGE0U#ein45%KJqj7lXRTa7n8cWr|3l6lq*5kuLXX4zI9h<-KwoqT(<(%*F>eV z&rMma`+9lQq>?7@)mlH3b4}ZS#H`NY_ROku&9=UXW$NTT zX-~^El}b)s&re3{!p>RpvmaQ#gR$rMjHvCmC&VRZ`GzT1@vah`%ke;c3&Wlkv4-gv zm_7(aF~m7>AMnm#tl-pT&|k>I$At!3V%TY>L&mUp%5ng4pdYUjJjr}ma^J7wCQo-=pt-K^I?tma?K%GzPq z5%ls0n`hSXst46~)`i`aSHJn{N?7i8(MQ}-cPHI<3;i_rc&zNB>ZsIco6EQOw!GW$ zwrYR9#Y5ZM?epGcgnGUxS)@`sNBlqAzYF&Bx3Aq7`nq=Y|L5^rRsLFmJag>oDa+>% z8GeYEH++-`eqAPgDcfi5$t;)kj$0QAGyWkactBzIuOZA!vzPtknH&?R(`U|jXUv>g zX?eXWu>768@#eO3Z+2BYN;!Xgi{JMzTfS8;4~vRV+^4Zk_hiKWXQ{4r+m2?-U3>cV ziBz@k)tbe=#j8!(ebU})G@rY;ZRJ;ku9JV=Om`kN^ZshExwd3eXqC*S#A$1mu3Y;} zw@*Lddf59Z`xk|V{j4+VFWz}=)x0NGE}KL8Pv@9!Eq#`Ja#f)HgQ?DIy#7T*pH-Zf z`E}I?@2#O*VwMYc|I?ap;;;AidRfx)Z8dW<(!Tv}nKpCg^b1DDpM|2*(trWurMdLs a4|dzqSq3|FZ=V9@AqG!ZKbLh*2~7aXhR6p1 diff --git a/docs/build/html/classmlx_1_1core_1_1_reduce-members.html b/docs/build/html/classmlx_1_1core_1_1_reduce-members.html deleted file mode 100644 index 0d81bee6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_reduce-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Reduce Member List
-
-
- -

This is the complete list of members for mlx::core::Reduce, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
And enum valuemlx::core::Reduce
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Reducevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Reducevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Reducevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
Max enum valuemlx::core::Reduce
Min enum valuemlx::core::Reduce
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
Or enum valuemlx::core::Reduce
output_shapes(const std::vector< array > &inputs) overridemlx::core::Reducevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Reduceinlinevirtual
Prod enum valuemlx::core::Reduce
Reduce(Stream stream, ReduceType reduce_type, const std::vector< int > &axes)mlx::core::Reduceinlineexplicit
ReduceType enum namemlx::core::Reduce
stream()mlx::core::Primitiveinline
Sum enum valuemlx::core::Reduce
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Reducevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Reducevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_reduce.html b/docs/build/html/classmlx_1_1core_1_1_reduce.html deleted file mode 100644 index 40838cb8..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_reduce.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - - -MLX: mlx::core::Reduce Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Reduce Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Reduce:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  ReduceType {
-  And -, Or -, Sum -, Prod -,
-  Min -, Max -
- }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Reduce (Stream stream, ReduceType reduce_type, const std::vector< int > &axes)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ ReduceType

- -
-
- - - - - - - -
Enumerator
And 
Or 
Sum 
Prod 
Min 
Max 
- -
-
-

Constructor & Destructor Documentation

- -

◆ Reduce()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::Reduce::Reduce (Stream stream,
ReduceType reduce_type,
const std::vector< int > & axes )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Reduce::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Reduce::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Reduce::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Reduce::output_shapes (const std::vector< array > & inputs)
-
-overridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Reduce::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Reduce::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Reduce::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_reduce.png b/docs/build/html/classmlx_1_1core_1_1_reduce.png deleted file mode 100644 index 3c46700dbf54fb2d8ebfbe8738d00178b38a3c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU%o-U3d6^w7^=Jqc(;9*nu zUvldIe{uO#?kBvjzU|s=Id^r>tfpkP<2V0$owGd89yuvZd5g+P?+njL;_YFRRP0~= zlUy77EZ%w2ybrul;@Njrp4)oqTi)v>9zQjXecRe5`_;1Pefc#J_j#&0{{z=g3hCos zTP>x^>o#}yo-J>K3e#sSKcnEO8-7)5v&q#7ld4|b%Sx?}%f9h+c~t+l6=9xQ?f$E6 z9M!MBy8UbAG?lpzF0G2%_jYZb@citl$DJls#a+B*zQwNdcTK=GmC(giN4NVeQu!;j zP}MWe$$QeCmT4-LGsCr?&som=Aovc$vt+-uw{yMLTW%FwExA|iYS(0r2kKiG_OysK zOuxYNK`4qL&WZbgcLrkxr!Is3Le>YW2+2?K8BgbYu9={kX$CX-<PhC`YCnYgTMQY z-Y?wx%s0sX)zqg;A1&;ce!Sz=tq-10Z|#ao^$F(HT)BMZwa7R3qTjx*iCX>oVU@Di z(r>(zuJq>~?%(6Q_EXKAkn9W5TkqcM(9htFu9FWv%`aEJwex-E)Z>q4UfZ|uE9dR! z$N#3a_h*@>S1kw?O)L;neffCL5AzT0|9L-*>i2l`Lg|c{krb-C*{OvM+DBdt?0KF+S+~g3|mZ= z?#pdGC)db)Ek5PlFJBrX8>DAuEL{-0_R`{&ZIPSit=itEbT-L&GvoYATD$k`w7B-F z|EP78`=QHOrF%nIs(RbD6eGQAZHr_0_KJ%?~)chm0aocNZh5Fa; ux9Lnv+wTH*;KJ0jXQ^>(rv%OFvu~81!@5YVf*qJu7(8A5T-G@yGywqcmb0e- diff --git a/docs/build/html/classmlx_1_1core_1_1_remainder-members.html b/docs/build/html/classmlx_1_1core_1_1_remainder-members.html deleted file mode 100644 index e2fefec6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_remainder-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Remainder Member List
-
-
- -

This is the complete list of members for mlx::core::Remainder, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Remaindervirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Remaindervirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Remainderinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Remaindervirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Remainderinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Remainderinlinevirtual
Remainder(Stream stream)mlx::core::Remainderinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Remaindervirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Remaindervirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_remainder.html b/docs/build/html/classmlx_1_1core_1_1_remainder.html deleted file mode 100644 index f0fc852c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_remainder.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Remainder Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Remainder Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Remainder:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Remainder (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Remainder()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Remainder::Remainder (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Remainder::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Remainder::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Remainder::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Remainder::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Remainder::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Remainder::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Remainder::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Remainder::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_remainder.png b/docs/build/html/classmlx_1_1core_1_1_remainder.png deleted file mode 100644 index 898cd6373753c3bfca950f19c754d686cb8c04dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT)o-U3d6^w7^KAf~!fyY&U z`b@uj|2yrsa&azLHaBm2zM1u$K*2|fEpOwW%=uiSF!@PNir|zULk1lwryi{LX zzj){AzndpM;k92-YIt1sRgAW5_U*io6Sk7aQ>DW`2eYrw-zH#s&S;IzjYyT!-4~(` z8x&s1$+=tlW>S@L&tl~XDW^lXl}u5SPD$!tyEg3G@2JCC_E&G6K6FNDwNQT9^U}Df;$jT7s z#Lcj$MU0_>QB5 zzs$S#-LaSUjM}%b)bLSG(nYWKpJj{H-gw*U-QKY4mr+IK#lC8{)epbf{au<`PftcH+o9wdnL@@7%4Ye{Km2KU}7~C1`h( z%eS{TK1h|XSbF}r=Qg&jsc*d$_bo8h`FY9bB)?tx*3S2tFOv(GhniiPx1lKhzPWYG z=DTxVHcsmN+7tGT!BSK!+3YyZukpEc=EsZ+Pg-ZQJG7N5J!$T0sA zBg1FI<<}k?F1V zYu(3g3knHJCdbDf|F`0rc5&Qwuh(<7R__iJ{FWj!J$J?_f5|^@bP`W}zO}V{Md9)E zysg`AdM?R-wW)StnP}^+m4{@MU)@lf(DB0T+_Y~Qn-nK4IesPVy;WR<_=Do8U8iRI z$u72=U2-k8qa&|8s&w!2o3FA~`%X9+S8TcRpR{i9r{+7ieRHy2d!4>At)t`U@=)`` zb6l!V{F=Pt`O8P|{T6j}DAv`uxa?^G%1*x^B=}JX#} diff --git a/docs/build/html/classmlx_1_1core_1_1_reshape-members.html b/docs/build/html/classmlx_1_1core_1_1_reshape-members.html deleted file mode 100644 index 77ec832e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_reshape-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Reshape Member List
-
-
- -

This is the complete list of members for mlx::core::Reshape, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Reshapevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Reshapevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Reshapevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Reshapevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Reshapeinlinevirtual
Reshape(Stream stream, const std::vector< int > &shape)mlx::core::Reshapeinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Reshapevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Reshapevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_reshape.html b/docs/build/html/classmlx_1_1core_1_1_reshape.html deleted file mode 100644 index c495d9df..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_reshape.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -MLX: mlx::core::Reshape Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Reshape Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Reshape:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Reshape (Stream stream, const std::vector< int > &shape)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Reshape()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Reshape::Reshape (Stream stream,
const std::vector< int > & shape )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Reshape::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Reshape::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Reshape::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Reshape::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Reshape::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Reshape::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Reshape::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_reshape.png b/docs/build/html/classmlx_1_1core_1_1_reshape.png deleted file mode 100644 index 1c30abb02f8afafc67a857ffd76cf9025c6a10e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVYo-U3d6^w7^UhI3Uz~ibf zzVg%m`j5*@6wM|aS$jz`>~Un@Bmrl>V>$5?i_d*-^qI6-FiPd6>K2bn-Okz*m(2h2 zN4humU3{;K{*R_>Cndgz9FNM3j@}sSZ{xKtITt+ZiYQAVhk0W zx(pwLq8J{iZecj!ox#{J{Q?t%{z6uUIAjH%*tZm&tF)WoS!4#Yb~iZs)d^m|MOF#B zp3I)S - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Round Member List
-
-
- -

This is the complete list of members for mlx::core::Round, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Roundvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Roundvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Roundinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Roundvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Roundinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Roundinlinevirtual
Round(Stream stream)mlx::core::Roundinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Roundvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Roundvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_round.html b/docs/build/html/classmlx_1_1core_1_1_round.html deleted file mode 100644 index 61f17205..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_round.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Round Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Round Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Round:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Round (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Round()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Round::Round (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Round::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Round::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Round::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Round::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Round::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Round::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Round::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Round::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_round.png b/docs/build/html/classmlx_1_1core_1_1_round.png deleted file mode 100644 index b24499cb7318ebbba97ad65dbc2da147727e43fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 881 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+vJY5_^Dj46+eckuUfQL;z zUggR6`bWWD`kqw>H?*F;D3$7xAzS{+Vt4&X%jf?Tyo2&vrm0kN>Uw^9bir%V6ZO0H z)!FSolRYj8+bt;FbZqXc2<@})&HTEi1RFkEZZ zZBWnSx$0-zHP0g#54mceefD@sgu&ide@xrf=I>|WH@~&ReVggslC?FL1or&V_`EJE z`JPIy``%4^LTpNQZIlm>yx@)(-6zmmT8uXjZ z^HyKw;p=;LM?L*%vErIv{?#&X<$Vjb-u`rYMO5AM!t~ic=7m-2%*)i3j+(zAb>F@G zvWm53#mmaKtWtV2$HjBk9P$5bbuZ_iza1ujwd($>|3AZZJ@@-%cutyLw-x9$Yld}? z*e=M|X5Gz;t@^ssG~(-vt1H9ixG>nG1_bU-*YoD-6D2Vr*>vpmM8M|1znxliNb}Ud_0wpPaVs{M4w_>E`R^Uzzp&*^;Q)_kQgO zyZR|NKi8~q@zpK&uST72yQaR;ro{F1`ogoEJ72t?HuL6p4qano{e`J%&s4XZIkV@> fYM@i^e&m1pVNOldgTe~DWM4f6qmMw diff --git a/docs/build/html/classmlx_1_1core_1_1_s_v_d-members.html b/docs/build/html/classmlx_1_1core_1_1_s_v_d-members.html deleted file mode 100644 index 03466434..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_s_v_d-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::SVD Member List
-
-
- -

This is the complete list of members for mlx::core::SVD, including all inherited members.

- - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::SVDvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::SVDvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::SVDinlinevirtual
stream()mlx::core::Primitiveinline
SVD(Stream stream)mlx::core::SVDinlineexplicit
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::SVDvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_s_v_d.html b/docs/build/html/classmlx_1_1core_1_1_s_v_d.html deleted file mode 100644 index 86fe0bf9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_s_v_d.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - -MLX: mlx::core::SVD Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::SVD Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::SVD:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 SVD (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ SVD()

- -
-
- - - - - -
- - - - - - - -
mlx::core::SVD::SVD (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::SVD::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::SVD::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::SVD::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::SVD::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_s_v_d.png b/docs/build/html/classmlx_1_1core_1_1_s_v_d.png deleted file mode 100644 index 428bbfa87a55b0f396c4a0078a822bf30cd49d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^B|sd&!3-q-S1vRKQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=E8uJzX3_Dj46+P0Vjo;AvU! z{^{Aj|N8T+8k;P>?`rfucF1>Gu6$J9eL*LV#jOsLl1&$?-1Mzy$x``Qd-K=jQ?cLX zcdK~+mHFj*E^;Ny){1qxkA=RuJxb<2z4z&ZucyP5u16laByXqfd|g3Gdi9wv>mU8O zGd)c|wjE4$w|xO|#XesO)~JnZcpRBgSy&3O9q>Yt9$1 zzcPH~d~ry|zn0}!{~hav3>W-`xft%602#hm8RAC9(z-KLdat&41)2Y~eX;v_Wbe#N z)9%j>R$X~1-)Z}YsZ$rIyG8|cbKX9-^zHM${=G9FOD6B`)H}IetwdA&pxV!;a@jrA zqWAB#ZR2{HGdbk++;WC52~%x;{=V>}`?DXv+b_*620^vUO@A;{o!@I}(z~l9|JL*O xc~a*8{Z&`CtA$M3mFc9qa`wEYSu=UBv4?~t9-sSFI2IUZ44$rjF6*2UngEb^_ALMa diff --git a/docs/build/html/classmlx_1_1core_1_1_scan-members.html b/docs/build/html/classmlx_1_1core_1_1_scan-members.html deleted file mode 100644 index 55a51b51..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_scan-members.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Scan Member List
-
-
- -

This is the complete list of members for mlx::core::Scan, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Scanvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Scanvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Scanvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Scanvirtual
Max enum valuemlx::core::Scan
Min enum valuemlx::core::Scan
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Scaninlinevirtual
Prod enum valuemlx::core::Scan
ReduceType enum namemlx::core::Scan
Scan(Stream stream, ReduceType reduce_type, int axis, bool reverse, bool inclusive)mlx::core::Scaninlineexplicit
stream()mlx::core::Primitiveinline
Sum enum valuemlx::core::Scan
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Scanvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Scanvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_scan.html b/docs/build/html/classmlx_1_1core_1_1_scan.html deleted file mode 100644 index 75ead8c5..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_scan.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - - - - -MLX: mlx::core::Scan Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Scan Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Scan:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  ReduceType { Max -, Min -, Sum -, Prod - }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Scan (Stream stream, ReduceType reduce_type, int axis, bool reverse, bool inclusive)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ ReduceType

- -
-
- - - - -
enum mlx::core::Scan::ReduceType
-
- - - - - -
Enumerator
Max 
Min 
Sum 
Prod 
- -
-
-

Constructor & Destructor Documentation

- -

◆ Scan()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::Scan::Scan (Stream stream,
ReduceType reduce_type,
int axis,
bool reverse,
bool inclusive )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Scan::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Scan::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Scan::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Scan::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Scan::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Scan::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Scan::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_scan.png b/docs/build/html/classmlx_1_1core_1_1_scan.png deleted file mode 100644 index 6926bd27e6b7ffb21fd93cf477c978b21d4846e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;FJzX3_Dj46+eVg}Lfya%X zKj`W2{g2FjKQp$JK-sh`9IqcJU4r3Y3^s=iA9>ns%9Sk_Up~T@8-o_w&z8*{S7)lDWp$5 z>br^8s~)TJpBZ6SiF(X+C2H}6Z+W!F+n7hPWvRVc*xr$ww``UR#B zLQxEHPTU8)GZ-s4bs6**vOZAV!mtNP@?S&PIm>?b$VqN+(-((LQn4@oaoO_azsslX z?%KDhT&;0_?Rn(p5nt`K&p!JaCPuyj1;N$)gO|I_-c8K)-)^J5--I=P|CGw|wU+sl z`WDZNw9~TNwdck0(DS?EwVq$Qs+Bw|%fr)sR@U63d3&$wJ--{(F1OBnQAk$!ge8w7 z%xliyzN&TpxaU@@y`i^rdw(>AZGXBwaBI!;;`3%7XN6Vj)Lpt|w#6>-_TPW|Za&<5 z>+H;T8KJH(=D2uPS?mAf{d38F{^>CJtGn{P{{ORj+LCy6U`Un63z$;7mSQQ3q_@+#l>B$DrNjG zoSIhF$e(rgq4-{zsF(A8%bDI6iI3{q824<$BD=pkG|w!2b#a!l>gLB9dY`X(jc(yt8M{6^6e4v2u~r$um)1qM`ggTe~DWM4f-?Fg> diff --git a/docs/build/html/classmlx_1_1core_1_1_scatter-members.html b/docs/build/html/classmlx_1_1core_1_1_scatter-members.html deleted file mode 100644 index 8a2c29aa..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_scatter-members.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Scatter Member List
-
-
- -

This is the complete list of members for mlx::core::Scatter, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Scattervirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Scattervirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Scattervirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Scattervirtual
Max enum valuemlx::core::Scatter
Min enum valuemlx::core::Scatter
None enum valuemlx::core::Scatter
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Scatterinlinevirtual
Prod enum valuemlx::core::Scatter
ReduceType enum namemlx::core::Scatter
Scatter(Stream stream, ReduceType reduce_type, const std::vector< int > &axes)mlx::core::Scatterinlineexplicit
stream()mlx::core::Primitiveinline
Sum enum valuemlx::core::Scatter
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Scattervirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Scattervirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_scatter.html b/docs/build/html/classmlx_1_1core_1_1_scatter.html deleted file mode 100644 index 232701b6..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_scatter.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - -MLX: mlx::core::Scatter Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Scatter Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Scatter:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  ReduceType {
-  Max -, Min -, Sum -, Prod -,
-  None -
- }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Scatter (Stream stream, ReduceType reduce_type, const std::vector< int > &axes)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ ReduceType

- -
-
- - - - - - -
Enumerator
Max 
Min 
Sum 
Prod 
None 
- -
-
-

Constructor & Destructor Documentation

- -

◆ Scatter()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::Scatter::Scatter (Stream stream,
ReduceType reduce_type,
const std::vector< int > & axes )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Scatter::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Scatter::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Scatter::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Scatter::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Scatter::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Scatter::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Scatter::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_scatter.png b/docs/build/html/classmlx_1_1core_1_1_scatter.png deleted file mode 100644 index bac72d5cb6bd37cdfaea676b634f7946db599a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GTyo-U3d6^w7^zV3Uiz{A$g zzw*;>`;VTNV;Ux0TYD+C@0#f1O`U~m$8!EpDn9qvaoUoL9J-#LgrX)rIl6GF%1QrS z^;Ox+etuiPH)bd8aXS=!_)oMy{y#wxYf6xE|2n#4q2@-_3-l0 zc?%|I$=?38behWC2bWew?R&fSu-d+BTK%mmvX$=Hw=eus$@}aVIXR^Fm8iW{=cF&$ zEz?vgIiaphjafUVSdOn@^$y0K<1?bR-<}YcoaGy)T*bReR9*0Ze+FX(r!Is3Le>YW zTNw7Vh&4>V!1O^ViXqO4`+zq>@+p7D(>b3jCa7kbIC)Rn1G2#~OV#s}al3u&C%69yo&nn`SjMVs8pX|Ud@*t!D~0)SiAk!^_@|#FC6~rHpT0$ zw8~41YrOYAmu)@uxiDz0U;fpyXyttiujc;D4bi<{d1tflAD`7WV(YhT<6Y~2!|eWh zbL&0fyDcxvu3g13cd~}(^v}=!ACUj`@#l?KtE1*e|FyTjI_b-6kUu2DwV%&vXMUiS z$MD#2*|oQ3ORmp|ntZh*t~u+dC(8$6jIh8SP(PWYG?$vlsTgktrVwLe{e`J%&yKGA zy6*R1gPAi!eZu!t?ptiyE`Kd%+0<(xpO>82C6fGi*5R&SC6DF)Pk7~;mS!85;hP=4 zH6^U?(QCQjn5gw@%x70WRWjbJw|-S=O-NvGN}BFb=}_^$sI;{7nB}D}J}sI$?QV6C z>IbE@n-cw3m1g|3TIW~P8+P?mZvNJ+rPng^XU?4aaox3T3%`2adG`CSR)U>HKXZt# zk@0Imd%Lu>IH%KR&Uk0coC!=UKnG6_^U~x!ZvSN895YGV+(=-CVeoYIb6Mw<&;$T$ C_q0#| diff --git a/docs/build/html/classmlx_1_1core_1_1_select-members.html b/docs/build/html/classmlx_1_1core_1_1_select-members.html deleted file mode 100644 index 3b6c6ecf..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_select-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Select Member List
-
-
- -

This is the complete list of members for mlx::core::Select, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Selectvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Selectvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Selectinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Selectvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Selectinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Selectinlinevirtual
Select(Stream stream)mlx::core::Selectinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Selectvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Selectvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_select.html b/docs/build/html/classmlx_1_1core_1_1_select.html deleted file mode 100644 index 40727d22..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_select.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Select Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Select Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Select:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Select (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Select()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Select::Select (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Select::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Select::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Select::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Select::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Select::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Select::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Select::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Select::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_select.png b/docs/build/html/classmlx_1_1core_1_1_select.png deleted file mode 100644 index 86b98868b90c6824ae0df2da65743272b576a954..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;FJzX3_Dj46+eb~3yfQL;z ze#xo#|BtY5aS(EP{q04Z-)pVKX$K9PALsm^RDABSa=B2L6;`(+8%Xt{`FU7KUZE`th*|7(y51+ zwfrx5Ztctc8{|F7uOKs2_x`tQiNf*OQ;$1M>f5t;Yi>rZ(DusZYdlxEeeIH;>*Dz< zy=9t8B`4ICsWEHk6wC27tlq)cb9_eB_S+NUlCylnl&g4GiK+`8@XuhZ;M8T%UE zbqm9u7O{ru7nnW>MKQ!VaUbwTNIn(Mcsl2E#RSz%6DRLUdq6f=W~q99+T3CvJNcQv z{%@20{GO|Ra;{YuOy@RVyJeRCDFdu7pU{2OFt^ioZ0J^F>@v`0*sCI z^VXKXeg61M%Gd6a`2{?U31kP8>TNn{I_0pL&50_s1av)T9 z=G4VMW+iudzn=OvE&XVG`0F1l7D=5v6V+vIb#Ygc@ZYG?>Gopx^}{xIZ#{Kue#q+! zpQ>Zt7S9d4`YAVmYu3_h<<+Y#isnv^klR)2ecnImCVyI*?#IW;Y0p%*oH+xGxS2Dj lUobNMY?Qfl%B6xojNu#Sbk(`8p9;($44$rjF6*2UngHxev^f9( diff --git a/docs/build/html/classmlx_1_1core_1_1_sigmoid-members.html b/docs/build/html/classmlx_1_1core_1_1_sigmoid-members.html deleted file mode 100644 index e598387d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sigmoid-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Sigmoid Member List
-
-
- -

This is the complete list of members for mlx::core::Sigmoid, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sigmoidvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sigmoidvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Sigmoidinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Sigmoidvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Sigmoidinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Sigmoidinlinevirtual
Sigmoid(Stream stream)mlx::core::Sigmoidinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Sigmoidvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Sigmoidvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sigmoid.html b/docs/build/html/classmlx_1_1core_1_1_sigmoid.html deleted file mode 100644 index 66b45144..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sigmoid.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Sigmoid Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Sigmoid Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Sigmoid:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Sigmoid (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Sigmoid()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Sigmoid::Sigmoid (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sigmoid::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sigmoid::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Sigmoid::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sigmoid::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Sigmoid::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Sigmoid::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sigmoid::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Sigmoid::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sigmoid.png b/docs/build/html/classmlx_1_1core_1_1_sigmoid.png deleted file mode 100644 index 31bcd54a18ee3d376419e36e2c1dbbb72cd30266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVoo-U3d6^w7^zV3Tvz{92< zukz%3{i9$neNU;bhYYi?N~OANFTLZLq+fs1^7%&v?@Jji(^M)sbv-{ly5KeGiF&O4 z-kq1f=6YOWwp&nYbbRisePL18&EiEgr=N}3|7=5T{kI3NCtDt!m(F$j-->ikt>c~7 zOnWC;Ej|}}FUo&q#ig^sX%m)A+k97Rv&n8nRoRu`z+nmz_XJ=_~wV* zbSy7>9dV6+tIA70y|t^J+`eTc^C)@kCS8@6Cyb+RH(r~&Ber~-spr)d(|!c0dtK@m zjGFXBb&JYL?+njL(+js2ovXB9xObE_!RFYNT`_H6q=K_INnOkiSo^|-!G0m@1Jx}I zds@UAre9$CAQZ(A=fr)$JA<);QNz#77)Z%lG9j7h1$N}`b5YUFFE2gTPJTFsc z1qy>VpfCtJYre%#>7DPLEtj(F;zfj~EnOF1d}H4)-HNIU$L?-=`*K?K)7i@&yzMu7 zzs~fz@1?>k#;2o?dQWHnyW>^dci*RXsz*(y_L^2M&4!R zm30c9$2ZFTn74g(=(po@@4mVcmb+c_k#N-AN%!4CKh3>9SN2hMRBE)%rCWSk-fehW zRex{Jhkdtw{mZwk@_kXVNM-L__5bX3FONS@UEQCxH}7k8-73|W$3gLEv@YzNB|rOt z-8&e1j?ajietJS&a+YtHaux3?(YYKC)QJflV9Q|>HO;5r8S|!lDbE`W{Gamt_rBhzZA7kIEI4UIl-;OW;;Viw`2T9*vuExd(ANL4 z;aVl@%$Z+*e#zU)o0azLf%*TC*)waWUobNM3=9h|P2S`7yk}?cU-r#@7BJT^c)I$z JtaD0e0swQ2z-j;h diff --git a/docs/build/html/classmlx_1_1core_1_1_sign-members.html b/docs/build/html/classmlx_1_1core_1_1_sign-members.html deleted file mode 100644 index 0bb89048..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sign-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Sign Member List
-
-
- -

This is the complete list of members for mlx::core::Sign, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Signvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Signvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Signinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Signvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Signinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Signinlinevirtual
Sign(Stream stream)mlx::core::Signinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Signvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Signvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sign.html b/docs/build/html/classmlx_1_1core_1_1_sign.html deleted file mode 100644 index bfa86de8..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sign.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Sign Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Sign Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Sign:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Sign (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Sign()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Sign::Sign (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sign::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sign::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Sign::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sign::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Sign::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Sign::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sign::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Sign::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sign.png b/docs/build/html/classmlx_1_1core_1_1_sign.png deleted file mode 100644 index 1489dbc9cae5c9fc8487cd6c2bbc13582559764e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVyo-U3d6^w7^J`{SS#pA{= zZ|ryPe`omWr4E_BeY@`LF0=^FQM7GYP=C_$`A-G!OF1pmR4O@jJwH9V;5F%q`dz!l zJFoxS>v>6d--1%3)v$uDi-})+9(X%@4qL%cnc}FhEFERD>&7St-n&*@y``t1; zCr!UFNkxC5s%PA@tEViVzhw9!BHr+GM)2#RnU}Kt)~>$V6E`{Qs3*$@;V6bUC+-8@ z8H^R2x(xaYSs$owVc63m)-e47(+44h!KMz+mA z=ehm7#;>jQ`ID}E;$Ayh&|SDYEb8oZKhuXBuYBFab2}`aEnfc1<98Rg74%nsoxQI4 z^mMCt%eEfzy|izu@$2ZT-tzp%9?z;iY<{))cFxu0T{#|})w^S9zU3^Ja?q)>CcU)Hi=vUorEh;s5UaS;m{^3xHht?5daM(w9G&>uct!tZPj;0?Z{0p00i_ I>zopr00K6<`~Uy| diff --git a/docs/build/html/classmlx_1_1core_1_1_sin-members.html b/docs/build/html/classmlx_1_1core_1_1_sin-members.html deleted file mode 100644 index 44d282d9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sin-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Sin Member List
-
-
- -

This is the complete list of members for mlx::core::Sin, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sinvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sinvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Sininlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Sinvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Sininlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Sininlinevirtual
Sin(Stream stream)mlx::core::Sininlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Sinvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Sinvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sin.html b/docs/build/html/classmlx_1_1core_1_1_sin.html deleted file mode 100644 index d4d021f3..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sin.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Sin Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Sin Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Sin:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Sin (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Sin()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Sin::Sin (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sin::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sin::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Sin::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sin::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Sin::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Sin::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sin::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Sin::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sin.png b/docs/build/html/classmlx_1_1core_1_1_sin.png deleted file mode 100644 index a532b6c8d31d753c5cce38bc268cc0c5dc6416ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-KJzX3_Dj46+ec1O(LBNe) zzH{dH`bW{(-V2vnnXW#4w(p_K5(8VF!|&pY&Q;o+m}DZgP}MWe$$Qcsi!GB>etLfQ z&wqQR-o&%&Ap4eiYYN+~u6w<{_smbU$n)4QQ~%qaHv8_gpXr=axGeLj`);qGyYn*c z9@bcS`PPlE7plCjPR^TS)ui&aa@ty}Q+m=tmnLr8_HEPs>#xFouDli`c2>)?^mFD_ z^A{@7$2ZljRP|Kfv1Qhz``52M6o}8hdfjPKU(7`<_FMOkTzbF6)YCV6+mCC$QoVy}**o zHRXq*x0RRgT6|SyVX?64%i}wLn1As8UvqEUuNBvRhy6dlKg;u1DJUL$R!=QHcbM@* z@EwL@$v$gu=X$I++^V)(a4*}{uGt(9)CmO*G~7P1Zwd0swDCwwTPzrrmKNu9`plWr zrE5=rUVi>*s{Hj?%j4|?w}ECp!=3-TJLrKtq7}?P`_z4<QU*L Qz`VfV>FVdQ&MBb@005o0xc~qF diff --git a/docs/build/html/classmlx_1_1core_1_1_sinh-members.html b/docs/build/html/classmlx_1_1core_1_1_sinh-members.html deleted file mode 100644 index 73748f4b..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sinh-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Sinh Member List
-
-
- -

This is the complete list of members for mlx::core::Sinh, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sinhvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sinhvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Sinhinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Sinhvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Sinhinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Sinhinlinevirtual
Sinh(Stream stream)mlx::core::Sinhinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Sinhvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Sinhvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sinh.html b/docs/build/html/classmlx_1_1core_1_1_sinh.html deleted file mode 100644 index dbef1519..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sinh.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Sinh Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Sinh Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Sinh:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Sinh (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Sinh()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Sinh::Sinh (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sinh::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sinh::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Sinh::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sinh::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Sinh::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Sinh::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sinh::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Sinh::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sinh.png b/docs/build/html/classmlx_1_1core_1_1_sinh.png deleted file mode 100644 index dcfa33426314ef66a6ffe30706d9f8c1bcb34e96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B*kJzX3_Dj46+ec1O(LBNe) zzH{dH`bVp`1})fPEmgYnrs13p)@AL9H~xB`vpmlpIVnwfi^@sw49`j8?O~Ht>|cJ9 zT)X$%d*4ZQ516CWv+peI+j=QE-+MXNPPNA$xBA@vwApuGua4q2i|d(B-FJHh-Syj& zmpH{FBlpd(i;t(QnwU7ps!8SRoYd8Qmr|X*Ze6|>rvJNkZQ@kjTv-40~F{8m3=h`XCg=5QijL@1XsB&hus+&&`4`ljF2KC(Td&^>S9p@18~R zzrU+_>fXO#HM4NbhK!}{KQFBmTN7PdqkDPV-RUQc<+a-&)pn){^ce`)weGFi8F^3FX_eH*x9y-g5Ol zsk?VyW?rkt**sgrGynO?{f+Uzo`2qS)qQK+_Fwh?LcK4o7Y6zzHE!*k;(2@x<%Nth z`YpHWP1oG}?8>gFvoB0nhTU;tu*VxLNRsvorUrR^b~G}c-Fv~v__I({T3Xz^%T;CE z+pVwad}jNx;+oOk$j@PGOSsGLm;GK=ZFK6o(c63ZD$}lJ-&>VvyqUQs%6m)7w*0Ht zKOK8}@$t!D3AH=;X3U)X@XWP;p`m7zW_}H^mU?^O%$uI=*=s}XBK`!f{UriS8QMS3 zXPc_tzaF;!Tj|=O1#f+I{^tH^-kO^BE!OGunKRxQGiO$E>KYsCf6iJu - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Slice Member List
-
-
- -

This is the complete list of members for mlx::core::Slice, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Slicevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Slicevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Slicevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Slicevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Sliceinlinevirtual
Slice(Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)mlx::core::Sliceinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Slicevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Slicevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_slice.html b/docs/build/html/classmlx_1_1core_1_1_slice.html deleted file mode 100644 index 6f6c6455..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_slice.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::Slice Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Slice Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Slice:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Slice (Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Slice()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::Slice::Slice (Stream stream,
const std::vector< int > & start_indices,
const std::vector< int > & end_indices,
const std::vector< int > & strides )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Slice::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Slice::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Slice::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Slice::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Slice::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Slice::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Slice::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_slice.png b/docs/build/html/classmlx_1_1core_1_1_slice.png deleted file mode 100644 index 965022c8191a02cbad431215834a7a7780b45ed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B;FJzX3_Dj46+eK={g0*@QN zyz$&U|AphTS2Hb=w$7byJ)1Ax%k+pd&+ht@md`&bcwfqBnWj?7sq6Xa(FLzbPt@<) z@7;R&kD=!vXq&KTuf3Az?FHdNG=Z6ZGh5a3lX3g}b)Mh-^?#ex^LVcM z*>=tI$i+jU+Pcp^FNyeY=hY|E_T1g^&C8{8?`5MHSyudF#G+ z)1DBUFO`es!((6Dt&E8dU)__rN>TM~=BiSW-QU7?&n?e>TeYK3aB0x)W|g zCwA?p8kvyQm!r4dz11PUWtZ;$zEw}H`>m@x*Jn;W{z!f8*Vb$5Idk*B&of diff --git a/docs/build/html/classmlx_1_1core_1_1_slice_update-members.html b/docs/build/html/classmlx_1_1core_1_1_slice_update-members.html deleted file mode 100644 index f4abb0cc..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_slice_update-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::SliceUpdate Member List
-
-
- -

This is the complete list of members for mlx::core::SliceUpdate, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::SliceUpdatevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::SliceUpdatevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::SliceUpdatevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::SliceUpdatevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::SliceUpdateinlinevirtual
SliceUpdate(Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)mlx::core::SliceUpdateinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::SliceUpdatevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::SliceUpdatevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_slice_update.html b/docs/build/html/classmlx_1_1core_1_1_slice_update.html deleted file mode 100644 index b2014c21..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_slice_update.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -MLX: mlx::core::SliceUpdate Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::SliceUpdate Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::SliceUpdate:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 SliceUpdate (Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ SliceUpdate()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::SliceUpdate::SliceUpdate (Stream stream,
const std::vector< int > & start_indices,
const std::vector< int > & end_indices,
const std::vector< int > & strides )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::SliceUpdate::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::SliceUpdate::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::SliceUpdate::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::SliceUpdate::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::SliceUpdate::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::SliceUpdate::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::SliceUpdate::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_slice_update.png b/docs/build/html/classmlx_1_1core_1_1_slice_update.png deleted file mode 100644 index 25254654e697a978d4225a1dc99bb0259c96b348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVQo-U3d6^w7^KAiMPfyb49 zx}^I1|3~82ZgW^DC42Yj?B2t7m3$8=s=SUbI#+2oQ8m+yb(%`0XvCx^Q<=3rC&j<~ zCHYhD^X&;s)PFHuW0o&pQM_i$+}yb#itkU}kXs#j(%*33zDVaO7Tq`hE&Vzvq@O+F zx`CHek6GE?Eq8;yrb#UCQ}A@RJrySVbONvD%JArD_Z#z%ONIT^ytY?IO5gMAhs3M0 zC6m_fTQfh&^HOI_gzriD?A5!EJdY@i_6S-ZzTq2pu65yj{!6o#q?x$atQJ;%d0hnP zxX=X8N#TvEo^fZprxu^P%=sXA7sHw5mK*h^Ywmn@Bx*(4lUX9#R)PoCA7J{RwSi#| zmkz^vChh~PadZDMgq^cIuf9p;?6L!sRMsaw_EG1n zR^IyZFDd8x8s73%wYPJwnziS6c<$x9X|?%o_Uno{{>i1Lcj8=nOKcn`{n{8?(P@2T z)$hkD(apEAUVd|`Va$&B^gF|=Zo}Qh-ZlKI^SaX`ez$Iu-FE);@58*)bL6Y48m_7& zUg(_krEu>L`w#7PHTRbN(z^CLJT)<-!M+moU!oFHVZp3obg_ zxi#SI2~*9m5~YUtM%D+R35*q@5e#vxVh!QAxqlhgObMFhuVTFUrbt9uS{&=NnKQ$e zN36dTcl-IXYnAJ`-)8+ZyZ1ae;`TM=?feN#b-!7y+>>|mhWzTAx%XV|@5z4Mv}di@ z>`%wfoO-b#?0(9%{#P51>3iSy+I_($@A!@T-`}N$_1Z=M4GT4!G*dQo?us%!v9GM# zMdAp60dM z_-=ENs`|CtyVnWld!M(yc;-!XRpRmkvqVpyIkWPBk@07(4QI~miP{k4m1*^t`Iz-A VO@F-`3cwu1;OXk;vd$@?2>=6_y-ffB diff --git a/docs/build/html/classmlx_1_1core_1_1_softmax-members.html b/docs/build/html/classmlx_1_1core_1_1_softmax-members.html deleted file mode 100644 index c3e37e9f..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_softmax-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Softmax Member List
-
-
- -

This is the complete list of members for mlx::core::Softmax, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Softmaxvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Softmaxvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Softmaxvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Softmaxvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Softmaxinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Softmaxinlinevirtual
Softmax(Stream stream, bool precise)mlx::core::Softmaxinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Softmaxvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Softmaxvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_softmax.html b/docs/build/html/classmlx_1_1core_1_1_softmax.html deleted file mode 100644 index 5a96e8cb..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_softmax.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - -MLX: mlx::core::Softmax Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Softmax Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Softmax:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Softmax (Stream stream, bool precise)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Softmax()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Softmax::Softmax (Stream stream,
bool precise )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Softmax::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Softmax::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Softmax::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Softmax::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Softmax::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Softmax::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Softmax::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Softmax::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_softmax.png b/docs/build/html/classmlx_1_1core_1_1_softmax.png deleted file mode 100644 index 643fb0d3d4f172977271cbb763d23f17e0f6a592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 894 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVio-U3d6^w7^<`zFz;9;BI zKC|cFfBk(oK5{3#(X!nB^x2fe?4;&B92aX;pU*kotmC;@Fly2h)h#L~yPdT?C(Sph ztty`XH+=FE{U2;=yDi@ZJdetZy?sa1N$+HY{^t$0_P-yzJSmgZ|5;{R?aFjdt=p~F zMBF^*h8@?-U%NZR=H)R>WsjiKq1#Sr_?j(QqFkE0b(8)2t7|_6uU)FMDss}PXP347 zFL-Y2OZ~fan#$YB`(%keeru3+dnJ|n9C_=LFREZeniU!+2`{gfK!Utszm6vYtd z#C^a!gRz2BmqC9a>jTv-40~F{8m1#8PuDM)T72%YI25==9Yxms6a*tS+Uz&Uq6S{kG`cHLEKHdj*#U z?QT+$y}j#U^__KLm3DrcuC82rD^L4~`IcR(`?s!oV!eL%tt02RoJ#&U6%-(xw}1Wq zoYww5$2@)4;!xFv#X_nt%kKS=|KV(JCm&tA`r7lb|L6R-s{FNDsOlMa?CL4Y=MNcn zbh96*=vn!-g6E~_vTK*KT-G~oeWb$l1810^1=t_+sQh7<{_5^ZQ~gh(Tk0-P>iKHKul*^wfA+sKYc5W^J^l6GE3+O& zZt~OCyFBC3wW@Ug%T=0-M3c{+>5EB!{bN;9@5wV!U81sEye6wHni+XCHp+Ku`KGA0 zs>u5bLYMtfiEf`{e{ol#@M@;q?A4*gnSWhR%5V7=yTb3$we{th`y*xNKFz6HlbZI; wyJgzUnbR*A8GjavN=pNJ-%E4p!ynB0duHFhm)iIdm{S-$UHx3vIVCg!09NU_-T(jq diff --git a/docs/build/html/classmlx_1_1core_1_1_sort-members.html b/docs/build/html/classmlx_1_1core_1_1_sort-members.html deleted file mode 100644 index 67dcaa64..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sort-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Sort Member List
-
-
- -

This is the complete list of members for mlx::core::Sort, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sortvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sortvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Sortvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Sortvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Sortinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Sortinlinevirtual
Sort(Stream stream, int axis)mlx::core::Sortinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Sortvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Sortvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sort.html b/docs/build/html/classmlx_1_1core_1_1_sort.html deleted file mode 100644 index 197d6fdc..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sort.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - -MLX: mlx::core::Sort Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Sort Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Sort:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Sort (Stream stream, int axis)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Sort()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Sort::Sort (Stream stream,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sort::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sort::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Sort::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sort::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Sort::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Sort::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sort::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Sort::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sort.png b/docs/build/html/classmlx_1_1core_1_1_sort.png deleted file mode 100644 index fa624d11082dcef9d7f30c9508a9e6a59d44ea82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B*kJzX3_Dj46+eK={g0*@QN zyz$&U|Ap_r3S)JdU6wQ5dNyCWm+6sYj@|VqEuVi>@V=DMGEJqDQ`hs;qYGY>o~ZlI zzjy2RpLCB)!gdQvHyxY%DneWLy_tX4l>Q{0_~IL3^K~nB885%_>CWM6@?W()pITg; zbxC8T@vA#em!?kdvc7AR%I2A6xjJm-(v@vfwk&_QHtgH)sJnXhSE{zSZuJVXtciNc zX|>|ozP0nSJTEcotzGr>_PtxVkBZlRitxBJFMP{2-nIUZtlm#C^}Mp+_9^tET2DQ*wH0@prU7G>2BVarpvC~&2m}qxb=|=(+^Hv2K|Ms z4^+1>>}e5en0|rjgHRMhoD=r}?+nHYB*{OFYv&Zp@o!S;g_~ZzR>iaK*@w%fnZLel zy8qnXc~aKCg{4A;TMDjvb^o-{6tjsd{W-g4Bp5GsQb)Q*& zdDdsOO#4?;pDum0uwVM`j#p9NJ)hp%6_x4}%&VE{AG~()jjh{nUEdj%ef{uPw<%t4 zrByQRr}5tZRJQfh=fZ%se)(6+vX%EOxSIR3G(`7)<(->q`<92wb*D$YZo8(QGdKVH zY}tFO?#_AH7Z%!b&U4C=)0H3dA58!Eb5HKqz_s7k{+nNab<&sDptzI_*M2^yo%w-Q z9>Zh9W!K)CExA4;s(iKJUbd@UlQ|x!6ABt=xP4;Z66BR>`T(aWK8kuz>^RLc2Jlj+}YpLc<5exsWE8qkY5ja0KW_?Xsny%kk&H1XYdmd$X zY3k{QPn+%9F!QG7y{xzLp&`mMBfUSmrJc+=bH;CHT=sU~R7?Biq3;emZY|UOUkOeU zS@Zvtt}S(bJ$c8u?Z0ymw5ne`^JaC+w3#!fUobNMECh1Uv8!I1OCSDV7u-L$aIKu~ Rb6}2O@O1TaS?83{1OWA;uay7* diff --git a/docs/build/html/classmlx_1_1core_1_1_split-members.html b/docs/build/html/classmlx_1_1core_1_1_split-members.html deleted file mode 100644 index 9c7cd09d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_split-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Split Member List
-
-
- -

This is the complete list of members for mlx::core::Split, including all inherited members.

- - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::Splitvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::Splitvirtual
is_equivalent(const Primitive &other) const overridemlx::core::Splitvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Splitvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Splitinlinevirtual
Split(Stream stream, const std::vector< int > &indices, int axis)mlx::core::Splitinlineexplicit
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Splitvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Splitvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_split.html b/docs/build/html/classmlx_1_1core_1_1_split.html deleted file mode 100644 index 2889694e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_split.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - - - - -MLX: mlx::core::Split Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Split Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Split:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Split (Stream stream, const std::vector< int > &indices, int axis)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Split()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::Split::Split (Stream stream,
const std::vector< int > & indices,
int axis )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Split::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Split::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Split::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Split::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Split::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Split::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Split::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_split.png b/docs/build/html/classmlx_1_1core_1_1_split.png deleted file mode 100644 index 5b7fd768bd10378cc696f15ae67363ff8e630223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^B|sd&!3-q-S1vRKQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=E93JY5_^Dj46+?d@w(;AvUz zylLk5`bWiqjau{G@mHMO`0~iQEj1#~83mj;_O?1qsx@7pa?_`tB}=6;_S>JURm*Gm zCVlxO^UM4E#W2pS*E^GfOmv#p^hZofKYjH4)E%z((zU$nPp#vr6}uS0c|USr)cf@j zE8hjbd!VkHZ8mwrvAuuH@5(*BePLBO-@?=E+PhX=xKzqM`Q6zfuC-E{t;UzW&3?D; zyG+!qw>-1f-P&#bbgH)DrB>+$kK!i1S<0w-GEFLAQqHp73lv)}L^6C>CdY6gy4*p& zUwTEkgL+#1E8PqAPwp|YHk3&PFk~zPGJxu_Ff1m{jLbi%vT{9J$fQ{>`JLizFI=9v zuA0wNZy#6h)1B$();ZmdKI;Vst E0I`_&mjD0& diff --git a/docs/build/html/classmlx_1_1core_1_1_sqrt-members.html b/docs/build/html/classmlx_1_1core_1_1_sqrt-members.html deleted file mode 100644 index 4a2e605c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sqrt-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Sqrt Member List
-
-
- -

This is the complete list of members for mlx::core::Sqrt, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sqrtvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Sqrtvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Sqrtvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Sqrtvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Sqrtinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Sqrtinlinevirtual
Sqrt(Stream stream, bool recip=false)mlx::core::Sqrtinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Sqrtvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Sqrtvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sqrt.html b/docs/build/html/classmlx_1_1core_1_1_sqrt.html deleted file mode 100644 index c178fcb3..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_sqrt.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - -MLX: mlx::core::Sqrt Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Sqrt Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Sqrt:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Sqrt (Stream stream, bool recip=false)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Sqrt()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Sqrt::Sqrt (Stream stream,
bool recip = false )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sqrt::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Sqrt::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Sqrt::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sqrt::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Sqrt::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Sqrt::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Sqrt::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Sqrt::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_sqrt.png b/docs/build/html/classmlx_1_1core_1_1_sqrt.png deleted file mode 100644 index f30bd2b340d1865b74d6e6fdcac5e73e736c2132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUno-U3d6^w7^zFxQ3fQL;z ze#xo#|BrCX=y7shS$k`9aO1YD^a%>%>t^oTU*2) z8?rk0_424mC5_&zvwjxmn|A+*S$#)r(v?qL*Y+*=>UZb7b*gWW>8kLWY;~_o@yc6N zPI_l}PMUsUl8XN0tfzB67ckUxu^*`DS^2es=cVbgYbmCSt}lq%D9re$MXX`^1*Q)| zQ4DcT+y}ff7%Mn+8T1#jK2Y7lum?%fq+;*=0#Hs!ljYillv?5WrMEEnZ{ zPi5=kd698ia=Y%mI39X^m%rBYYge_B{jN@!6ygvn2xAO9jh;P}YyT5lnmE?KBt}eL9h+O zv1FgM$CEwQ8*WuwEx4EMYS&zj2kNK+fisjo$!9E`a;aj%nKN$6Th5#TCXtylr-yHi ztL>}|pBZTwBe`$Q)|TtVb}Oeo%PD?R6!avnd!y{M4U6nt@A$WEt4d4bjazHEQ1x}s zBZK22)3<5AZsj%JoW5iARl8Ly+>ACGAC)%!m6o=>#&LDz@@=bttUU`u^^Ul1oi*+M zzObvGp5L=tEgI!|f9A})pSM9%MgQ;DNBy{G%>4TEX#CG`IgzO5teG<_IdzSV^%th5 iJxjghrMdLs59ZKabN!~@-6sIdA`G6celF{r5}E+9kG7}) diff --git a/docs/build/html/classmlx_1_1core_1_1_square-members.html b/docs/build/html/classmlx_1_1core_1_1_square-members.html deleted file mode 100644 index a447d33e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_square-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Square Member List
-
-
- -

This is the complete list of members for mlx::core::Square, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Squarevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Squarevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Squareinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Squarevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Squareinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Squareinlinevirtual
Square(Stream stream)mlx::core::Squareinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Squarevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Squarevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_square.html b/docs/build/html/classmlx_1_1core_1_1_square.html deleted file mode 100644 index 24c7cd1c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_square.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Square Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Square Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Square:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Square (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Square()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Square::Square (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Square::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Square::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Square::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Square::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Square::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Square::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Square::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Square::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_square.png b/docs/build/html/classmlx_1_1core_1_1_square.png deleted file mode 100644 index 06ae832b851a9a36af05257a13d4b81c8020b4da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVoo-U3d6^w7^KFnKfz~kn> z&tvNS|DF1&0zw>D-tN-7Tsn1e+JhO*kJr?nw0!GWk1lvkdZK>U ze(%=Hf3iI;G1ob~PU^M3x-%^5e(t;w&FM*N;)`#D&DZ@=m+rUm>C8i?Tgw%t#n(RlTj^ndQb2*71PC)N2mKOQu!;j zP}MWe$$QcskV_@QwV%&vXMPZShv8VV&)VC$9_tOas;w5>%XYPEGRFh;Eev~F#2Thw zVEP~w#SrJjeZV_|v4T^VL4P6Z1673NC;5!0b3Rv0P|Y-fnQWP*>iNmIJ${|%cYpog zCjX@-UHQbhw!33EAon=S1&%8ufRH=8ivs&+l$| zw#U<|uPn88Wz~zK#q!rP>N4zUc{nnW^rx$0*%7=z3&%8PBRqrdO`D+Y}Uw^b)>pb23_x`pyZnGmz z|3sY*Ubm_= - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::StopGradient Member List
-
-
- -

This is the complete list of members for mlx::core::StopGradient, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::StopGradientvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::StopGradientvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::StopGradientinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::StopGradientinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::StopGradientinlinevirtual
StopGradient(Stream stream)mlx::core::StopGradientinlineexplicit
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::StopGradientvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_stop_gradient.html b/docs/build/html/classmlx_1_1core_1_1_stop_gradient.html deleted file mode 100644 index 2913a73b..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_stop_gradient.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - -MLX: mlx::core::StopGradient Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::StopGradient Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::StopGradient:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 StopGradient (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ StopGradient()

- -
-
- - - - - -
- - - - - - - -
mlx::core::StopGradient::StopGradient (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::StopGradient::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::StopGradient::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::StopGradient::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::StopGradient::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::StopGradient::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::StopGradient::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_stop_gradient.png b/docs/build/html/classmlx_1_1core_1_1_stop_gradient.png deleted file mode 100644 index 082cc974a4636d84354974c7330b916159b316d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 934 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GVMo-U3d6^w7^KHT(5fv079 z>axk->mNmDFXX%+wO8)xna;yeT#7Xb9^?$|)7qeY>=iZRU;B&%(HWSFTB%Hb3cYW@6aHD`(r6YQIp4 zs*SQgqI6Pt=LVls+jm}#eUz*dE2eVuwd9(rh1-O(>jkd4%u4I~5u`fl$#szkm6xFj z6PJWHx=xBa+dZ}T++|LNdrMgvo?V_3aoR}r`kV;ut35H3lU!Aq8sZyS8RA&Q7%D^~ z7#@TsFgAqa6}T#Y;FRU_pDjL+Hfe>JYX4%z>F{VbLJ>p&iOb`JrO!+IuehCN(53?H;MFdSHoSKt+Y!qO?1YMg`wXZkj(Dm@BK=hGS88Qc0w4_7_VjhOv2W4V>G(lXmyR}z*!s(!6;`0oi|P_5K>vp09ek+q!j z<2Kh#ubr}ybM?_%Jd-@`UwQm)3Exz~J-vM=>mpl(ua;SaZ=P*$ z>ZivmT;>`*_41B;?X_qBEAKlCckQ_yS^p#aU;SLRX&oKm`(Le(a(S|vOGi);7*bxE dOJ9EBcS)YPleJR&ATUQUc)I$ztaD0e0swe`zn}mB diff --git a/docs/build/html/classmlx_1_1core_1_1_subtract-members.html b/docs/build/html/classmlx_1_1core_1_1_subtract-members.html deleted file mode 100644 index b6f16151..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_subtract-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Subtract Member List
-
-
- -

This is the complete list of members for mlx::core::Subtract, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Subtractvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Subtractvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Subtractinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Subtractvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Subtractinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Subtractinlinevirtual
stream()mlx::core::Primitiveinline
Subtract(Stream stream)mlx::core::Subtractinlineexplicit
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Subtractvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Subtractvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_subtract.html b/docs/build/html/classmlx_1_1core_1_1_subtract.html deleted file mode 100644 index d41645a1..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_subtract.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Subtract Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Subtract Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Subtract:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Subtract (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Subtract()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Subtract::Subtract (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Subtract::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Subtract::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Subtract::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Subtract::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Subtract::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Subtract::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Subtract::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Subtract::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_subtract.png b/docs/build/html/classmlx_1_1core_1_1_subtract.png deleted file mode 100644 index 9a227b3b310114e9007a93c332bf6a8201ca50a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GUdo-U3d6^w7^KI~g<#lxl^ zzvR^W|3|h5aB#A``c_a@TpE*lMMTEf;@rFVqH~otCnlLlEmZZ4bMl_F$70JQm7kuM zmv8@OS+3SxuBLO(dv`{2o6Y$RpBBfeu9Opx z3YJnWb(_6=-3-#`pr;hFRM%6uEl+OzI9h@-KwoyTsM0K+15mT z<+NIPZR6VeS)P|T_0}$X`h9QdjU(TqzHXebM0tM3RNh?wq?zTXW-UoGS^wjz=aeP! z%3D-UdS`e}ntoxDivHuQr*l3RFx)xHoM3b8N|jC97pdUanWl@bFNi7>V*Jx0)-e47 z(+8m_hBzng1Kt^o6`Z;Z`U_bfsBU4{gCzNnaqXO9IsQ#5y>2j*-Pfvk);;@h+BEam zmreH1*DHGJ+Ak~>EZnvsW9ikJc_G}>!ejS8+wk_S_lM8N?A}ey_1+${dj1z4J^NRC zW?!3Q?s@#;x;6Tt{IPjo9?#0Yt9~{6cGgwH-B})YG($kMDXIeQ#Y@t)1Vht1s7HTW9i!J?ic>{l%F-&plpe_R)InuZTUDwWM#&+hBD6 z-TShN)!*Lvly8}(RN}Wt}bvv&E_j=1Kmqn<1ugb4)=G~9l&Zwd0swDCwwTPzrrmKNu9`plVb z=hwmSUnK{ZF$ym@{Pr+_1B$GFa7GZ^y(u+ zRjv0HhhG1^B&vPd`|Pc|zo$p}p8h_6^X0g(cU7x*Z%s>Mx4Q@mk|V$%(HGx7IpS6= zpKkky?#UTx-?Ce#&73*?f|2oOA&`TQUG>sj`tS$8+1J@S_$6QL2WA-tPgg&ebxsLQ E0JKQK7XSbN diff --git a/docs/build/html/classmlx_1_1core_1_1_tan-members.html b/docs/build/html/classmlx_1_1core_1_1_tan-members.html deleted file mode 100644 index 92188e86..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_tan-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Tan Member List
-
-
- -

This is the complete list of members for mlx::core::Tan, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Tanvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Tanvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Taninlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Tanvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Taninlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Taninlinevirtual
stream()mlx::core::Primitiveinline
Tan(Stream stream)mlx::core::Taninlineexplicit
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Tanvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Tanvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_tan.html b/docs/build/html/classmlx_1_1core_1_1_tan.html deleted file mode 100644 index b8be2732..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_tan.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Tan Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Tan Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Tan:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Tan (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Tan()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Tan::Tan (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Tan::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Tan::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Tan::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Tan::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Tan::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Tan::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Tan::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Tan::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_tan.png b/docs/build/html/classmlx_1_1core_1_1_tan.png deleted file mode 100644 index 613c47aec160ab22a445a9fd7be7f45f490b37d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-)JY5_^Dj46+ec1O(LBNe) zzH{dH`bW{La~m(cyRzc+*}jJ^OAKsz4!?^pI#+3PVv>o}LRHT=C+|snEVfKi`RV!H zKmYBOdK1rIjrB+V!Tb8d|8}{vY)Lkw6D^=56w|WKLtciNc zYjxtT!v2!35AeJR^#?a3^c^^RK~sWJWF)Me0L$ofEa z3&Wlkv4-gvm_7(aF~m7>AMnm#tU!|d!?<=%u^j&z=(_o_*=>Ug{xJXG{l6w|+piVZUWffZzdy_KS1BkSdsa^^K6jY$gI*rPW5Z?F z-kL4BJ|k-K)sDF4tfRgxAB3@n2WDXXWRB8YY9gm%y!j%BuCcNH!ql{9Pgh+#db7WO z=1o(()n89FX-B=3`)61DPDH=@SrRa4LSI&Xkx#yyynJbRcHfLM-`4(^b$=Icu5`q) zX^zI5gYVqbvfZY7KF( - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Tanh Member List
-
-
- -

This is the complete list of members for mlx::core::Tanh, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Tanhvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Tanhvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Tanhinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Tanhvirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs) overridemlx::core::Tanhinlinevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Tanhinlinevirtual
stream()mlx::core::Primitiveinline
Tanh(Stream stream)mlx::core::Tanhinlineexplicit
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Tanhvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Tanhvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_tanh.html b/docs/build/html/classmlx_1_1core_1_1_tanh.html deleted file mode 100644 index d89fd4ce..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_tanh.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - - - - -MLX: mlx::core::Tanh Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Tanh Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Tanh:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Tanh (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs) override
 Get the output shapes of the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Tanh()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Tanh::Tanh (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Tanh::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Tanh::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Tanh::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Tanh::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ output_shapes()

- -
-
- - - - - -
- - - - - - - -
std::vector< std::vector< int > > mlx::core::Tanh::output_shapes (const std::vector< array > & inputs)
-
-inlineoverridevirtual
-
- -

Get the output shapes of the primitive.

-

This is not required to be implemented by derived classes, in which case it will throw.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Tanh::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Tanh::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Tanh::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_tanh.png b/docs/build/html/classmlx_1_1core_1_1_tanh.png deleted file mode 100644 index 8e330c32fba7d8c3f5289e90c42b1130d81805b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-aJY5_^Dj46+eVzAOL4d8D zU-Q=Y`bWvu`xuVBRPzez+a;@$AF3bF_|5eK~wR(YR zdtlJ=s~b-*d^@Gf{H{eRi)U8ll(j})lX*2?`ou=Bee-?muF$%bTc^2h^$NOK6ZMpL z*NJO8*VJE`w1hh*D)i*`t)*5+=5IZft>~FP@8T`~E&DpF_fNj261w)*BX9G-Np-y! zCaLHzRP~GlxwL2X)Z%l889(UdF+4V0cI~a%lIt^~CSUD{YtB0A%kn`uiXqO4`+#=_ zV+E%!gZ@I+2dY~b_OysKOuxYNK?ouFlR3)rxs6NP35cV3oVtHn8YwuWc^^OO4<<9|K>yy>d@*0}Az>i>m$Us^95HR(xe%-T7{a(oTt zh0GHDhFkNtEABmZW!4(EFH#}ec}flQQ3C>JD4mwS;HA0rqr%LYy>1yZXI66R8XN2T zXWDLW{^~a~@@9>p-HNO6AMDne9G|sZcdpW>S>3?ES$(Pa{r%(1t{**o<_)9XTGbFE z>+O#=*1VIjGTYF*_VI0NjP$NfdhR=8X6)y@wYyGycmA^_tdd3i zW>)szbU4i12%!q=yG&m@0ent#>E__xu*)U;=+Th5#TrrVh_rx$Jw d^2)UM$9ObM - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Transpose Member List
-
-
- -

This is the complete list of members for mlx::core::Transpose, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Transposevirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Transposevirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Transposevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::Transposevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Transposeinlinevirtual
stream()mlx::core::Primitiveinline
Transpose(Stream stream, const std::vector< int > &axes)mlx::core::Transposeinlineexplicit
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::Transposevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Transposevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_transpose.html b/docs/build/html/classmlx_1_1core_1_1_transpose.html deleted file mode 100644 index 839676ac..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_transpose.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -MLX: mlx::core::Transpose Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Transpose Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Transpose:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Transpose (Stream stream, const std::vector< int > &axes)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Transpose()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::Transpose::Transpose (Stream stream,
const std::vector< int > & axes )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Transpose::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Transpose::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Transpose::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Transpose::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Transpose::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::Transpose::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Transpose::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_transpose.png b/docs/build/html/classmlx_1_1core_1_1_transpose.png deleted file mode 100644 index 77c3b22881f393c2459b0d6d2f2a2bc43e59bdbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GV&o-U3d6^w7^zRr8CAi&nn zuX*cx{iDYg`xuU$Q}d1P+abWO~gW7MRwH70d+&!rS+FRP&IVcNexN8Q!3zZ!LFQIzV+9J{rj z*yg6Zj=1K(Rplki^svxRxw*1@A9sdT>Z-gvp&fO*@tS$z>+(ypmaGbmu6eEIb!oj| z)TAe>TU1VZXLwGUUbwaBT%`qr-BI2In`2jY-EI3K6`Z|E>SA`l+8vz?bxzy|yfYXp zICUBH7qUK3-NLY^MXX`^1*Q)|Q4DcNlJySS&*vO(*6~~nGyQa+w&$ezmA{_OD*69q zk^f)!$xCL$Coel#zZcBq-)^IQ-^BM`-IT)e zwU&94`qsup+G)k@;`#DC^!%=Tt?SorYCSi(Ibl+t$xW--yRU}rp6j12o3+EPBWUGa z$4Py;wjXTs!dLH+SHJn{N?7i8(MQ}-cPHJC3jH+qdaUfD>Zqq%E0%4Q&8R)R?VsJf zIUnY|edbrbWtB=v-XfLSIpY7>{#~%2zkTh#(ATxA|38o4s`A%rp{i%xv8$&npFd>y zA!6R}Q6l(tne?S>pS35mT-G~oeWb?pgJ94=!|e~_+9^R&{F7$h%xIZ5bLR95M#i6u zR(_rJv8esbnSE#2x893PNV~Rp`P6q0-}gWF`?yI}{PlI4wO;2J$Mg8yP4)bmTz`#a z$CX*v)i)<=?|Zi4_u?exrw&H9qotQ|q@|_4PG23fxnF;8N}8_kwo?|fi#M-*HFIX@ z+tpE}6UC$Y8;v&a&DqYlC+haLbDOWOT-)rlp5xVnw6HDeQK2Wd@7`;5w&q4!PC{xWt~$(69C3N#i#%P diff --git a/docs/build/html/classmlx_1_1core_1_1_unary_primitive-members.html b/docs/build/html/classmlx_1_1core_1_1_unary_primitive-members.html deleted file mode 100644 index 494b399d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_unary_primitive-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::UnaryPrimitive Member List
-
-
- -

This is the complete list of members for mlx::core::UnaryPrimitive, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &output)=0mlx::core::UnaryPrimitivepure virtual
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &output)=0mlx::core::UnaryPrimitivepure virtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_unary_primitive.html b/docs/build/html/classmlx_1_1core_1_1_unary_primitive.html deleted file mode 100644 index fde15acb..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_unary_primitive.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - -MLX: mlx::core::UnaryPrimitive Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::UnaryPrimitive Class Referenceabstract
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::UnaryPrimitive:
-
-
- - -mlx::core::Primitive -mlx::core::Abs -mlx::core::Add -mlx::core::AddMM -mlx::core::Arange -mlx::core::ArcCos -mlx::core::ArcCosh -mlx::core::ArcSin -mlx::core::ArcSinh -mlx::core::ArcTan -mlx::core::ArcTan2 -mlx::core::ArcTanh -mlx::core::ArgPartition -mlx::core::ArgReduce -mlx::core::ArgSort -mlx::core::AsStrided -mlx::core::AsType -mlx::core::BitwiseBinary -mlx::core::BlockMaskedMM -mlx::core::Broadcast -mlx::core::Ceil -mlx::core::Cholesky -mlx::core::Concatenate -mlx::core::Conjugate -mlx::core::Convolution -mlx::core::Copy -mlx::core::Cos -mlx::core::Cosh -mlx::core::Divide -mlx::core::Equal -mlx::core::Erf -mlx::core::ErfInv -mlx::core::Exp -mlx::core::Expm1 -mlx::core::FFT -mlx::core::Floor -mlx::core::Full -mlx::core::Gather -mlx::core::GatherMM -mlx::core::GatherQMM -mlx::core::Greater -mlx::core::GreaterEqual -mlx::core::Hadamard -mlx::core::Inverse -mlx::core::Less -mlx::core::LessEqual -mlx::core::Load -mlx::core::Log -mlx::core::Log1p -mlx::core::LogAddExp -mlx::core::LogicalAnd -mlx::core::LogicalNot -mlx::core::LogicalOr -mlx::core::Matmul -mlx::core::Maximum -mlx::core::Minimum -mlx::core::Multiply -mlx::core::Negative -mlx::core::NotEqual -mlx::core::NumberOfElements -mlx::core::Pad -mlx::core::Partition -mlx::core::Power -mlx::core::QuantizedMatmul -mlx::core::RandomBits -mlx::core::Reduce -mlx::core::Remainder -mlx::core::Reshape -mlx::core::Round -mlx::core::Scan -mlx::core::Scatter -mlx::core::Select -mlx::core::Sigmoid -mlx::core::Sign -mlx::core::Sin -mlx::core::Sinh -mlx::core::Slice -mlx::core::SliceUpdate -mlx::core::Softmax -mlx::core::Sort -mlx::core::Sqrt -mlx::core::Square -mlx::core::StopGradient -mlx::core::Subtract -mlx::core::Tan -mlx::core::Tanh -mlx::core::Transpose -mlx::core::Uniform -mlx::core::View - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
virtual void eval_cpu (const std::vector< array > &inputs, array &output)=0
 
virtual void eval_gpu (const std::vector< array > &inputs, array &output)=0
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ UnaryPrimitive() [1/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::UnaryPrimitive::UnaryPrimitive (Stream stream)
-
-inlineexplicit
-
- -

An abstract base class for a primitive with a single output.

- -
-
- -

◆ ~UnaryPrimitive()

- -
-
- - - - - -
- - - - - - - -
virtual mlx::core::UnaryPrimitive::~UnaryPrimitive ()
-
-virtualdefault
-
- -
-
- -

◆ UnaryPrimitive() [2/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::UnaryPrimitive::UnaryPrimitive (const UnaryPrimitive & other)
-
-delete
-
- -
-
- -

◆ UnaryPrimitive() [3/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::UnaryPrimitive::UnaryPrimitive (UnaryPrimitive && other)
-
-delete
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::UnaryPrimitive::eval_cpu (const std::vector< array > & inputs,
array & output )
-
-pure virtual
-
- -

Implemented in mlx::core::Abs, mlx::core::Add, mlx::core::AddMM, mlx::core::Arange, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::ArgPartition, mlx::core::ArgReduce, mlx::core::ArgSort, mlx::core::AsType, mlx::core::AsStrided, mlx::core::BitwiseBinary, mlx::core::BlockMaskedMM, mlx::core::GatherMM, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Concatenate, mlx::core::Conjugate, mlx::core::Convolution, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::Divide, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Load, mlx::core::Log, mlx::core::Log1p, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Matmul, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::NumberOfElements, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::RandomBits, mlx::core::Reshape, mlx::core::Reduce, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Square, mlx::core::Sqrt, mlx::core::StopGradient, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, mlx::core::Uniform, mlx::core::View, mlx::core::Transpose, mlx::core::Cholesky, and mlx::core::Inverse.

- -
-
- -

◆ eval_cpu() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::UnaryPrimitive::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::UnaryPrimitive::eval_gpu (const std::vector< array > & inputs,
array & output )
-
-pure virtual
-
- -

Implemented in mlx::core::Abs, mlx::core::Add, mlx::core::AddMM, mlx::core::Arange, mlx::core::ArcCos, mlx::core::ArcCosh, mlx::core::ArcSin, mlx::core::ArcSinh, mlx::core::ArcTan, mlx::core::ArcTan2, mlx::core::ArcTanh, mlx::core::ArgPartition, mlx::core::ArgReduce, mlx::core::ArgSort, mlx::core::AsType, mlx::core::AsStrided, mlx::core::BitwiseBinary, mlx::core::BlockMaskedMM, mlx::core::GatherMM, mlx::core::Broadcast, mlx::core::Ceil, mlx::core::Concatenate, mlx::core::Conjugate, mlx::core::Convolution, mlx::core::Copy, mlx::core::Cos, mlx::core::Cosh, mlx::core::Divide, mlx::core::Select, mlx::core::Remainder, mlx::core::Equal, mlx::core::Erf, mlx::core::ErfInv, mlx::core::Exp, mlx::core::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, mlx::core::Hadamard, mlx::core::Less, mlx::core::LessEqual, mlx::core::Load, mlx::core::Log, mlx::core::Log1p, mlx::core::LogicalNot, mlx::core::LogicalAnd, mlx::core::LogicalOr, mlx::core::LogAddExp, mlx::core::Matmul, mlx::core::Maximum, mlx::core::Minimum, mlx::core::Multiply, mlx::core::Negative, mlx::core::NotEqual, mlx::core::NumberOfElements, mlx::core::Pad, mlx::core::Partition, mlx::core::Power, mlx::core::QuantizedMatmul, mlx::core::GatherQMM, mlx::core::RandomBits, mlx::core::Reshape, mlx::core::Reduce, mlx::core::Round, mlx::core::Scan, mlx::core::Scatter, mlx::core::Sigmoid, mlx::core::Sign, mlx::core::Sin, mlx::core::Sinh, mlx::core::Slice, mlx::core::SliceUpdate, mlx::core::Softmax, mlx::core::Sort, mlx::core::Square, mlx::core::Sqrt, mlx::core::StopGradient, mlx::core::Subtract, mlx::core::Tan, mlx::core::Tanh, mlx::core::Uniform, mlx::core::View, mlx::core::Transpose, mlx::core::Cholesky, and mlx::core::Inverse.

- -
-
- -

◆ eval_gpu() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::UnaryPrimitive::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ operator=() [1/2]

- -
-
- - - - - -
- - - - - - - -
UnaryPrimitive & mlx::core::UnaryPrimitive::operator= (const UnaryPrimitive & other)
-
-delete
-
- -
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - -
UnaryPrimitive & mlx::core::UnaryPrimitive::operator= (UnaryPrimitive && other)
-
-delete
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_unary_primitive.png b/docs/build/html/classmlx_1_1core_1_1_unary_primitive.png deleted file mode 100644 index d3aa807409387a22e46014ed20554ee45943b437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33073 zcmdUYYgkj)*0qvNLYKV zImaAh%(+gxx;PrYz2faTbLJTD`*M%_oH=tt=gcuV`{sP`m7Oj=`@qXe*RMRk&}y~d zuP=MxxQu%=n@yiaevsMl@~^-C0$<%U*SwUpEBkuN>;{+o+J5tXRTvfUUJ}P#78i+s z53esJs^|aa2M01;M^Jj{)7Q6_C zMj0M(D&{Owc`2JK_kN-3r*vUo9zHOB6jx%-qx!+h0#V_){lzQje|u@YLR?kXe`ely zcf;-HY&}uEe%sFLHP@Qve81oL>`SN0ra5Cip(k8VE&Rzd^u(8W|NAdr)NER;Tj%jn zl|nG)31P{a@zekDWiX76A2-Wy%P>DS-jaw&`a{ORw@?>dKtiBJYjTkKm8Gu|AL zSsSEjS$d5-&LD4MD2v2S{oVI8^I$6YZ(6!cJuCy$65cf5_@VX}q6QjAKkE@5RsW2d zq^ka2Bs8u<&G>r!y9Bx^wnq)OOWd^RDv(>rD$@&y0Q^6zht1Uvc^dS4Q`J6XXSx=w z(>nM6;pNEzkEJ!6s@&!nmxnJpvG8U>-oh_qZA2?RbfwSz2Wg*V#X;?U<97-l%{d2N z=%WAqmk=@(wW==R?Sq-~M1@KZy4RWue%rtyL0_Jvx-TuXjH_&i$MzQ^`)j%`x-&4s zH{xIT)f?AzjUBf(wl`zaE$4gTyK4&874Bk7k6Q0)bqNr(mShVGF>+cXWGi>>PTE?~ z-4{6O*!?A)my1ab(ynrmcd`z^7vgVVRxL>-d64M4e55tL)yStoY5Ppy5j!@XHD%Vq ze$|~^w}fJE()EpS+-6%6RvA$jBN37mX@yMKS5&BF|Hm@|zSvbvuZvnG|JR9tXVeu} zFRb{`i$3?C;KlvF{_;d4(uX381qEJmnmc3fXQiPx3@?Hkt3B~heBJ0v*b#(`x)kZg zJa0Aqt)A~QArAfwwieY1dZ;yBQu%(8&8j71`N;m0C1t5BBJ6S0XN6cXCi1O5 zwy{J4Z5z(63@e2)!s*Pkhu{Gw*yrH1szNI%9V2&iV`#L~KJ3ho&dy(57nPJdCq9H6 zdcr&Ogy(-DxcujUHRh4gZo~DM!+GzjH;Fp)iDP~ux{~NpGes^_*3mNH3e)x%6M1d% z^}iso$66Yfc#)xD58Oe=Gpv>~%5P(vDXSDmO(Euap<3}#o_Dpx?d3g(mq}T@F7Xl% z35!ink_C{VUD zo0dpHJ{@!uorIjKlT#rzhz9{RK+-v6aCmoKH%5R>S z)AQ`SsF1vSCK8)^H`s&*Ny2+~EqZarj{tNj{4XT7|ClWQ$81;Uie@`ydRup{MOiS_ zKUAD(oDgxDUxdpfE{y-framCx-&cA##%M0&4My~pQtPturzZm5c4hnxpMT*{z!g#K zQJ6w4^ow%weoRF~>!pCYlfL93;3vtW8SplC_>lD3F-oVZ|iw z$e-Hb7K0RVVRz7jG|6*fabOIAZi)2-VgF7Z*J7!cFH>q+k)75-QY7Li;d3=@8+g22)elN=@ZNUweUv;?Ei`uZLYHzX?Ns@^oBOQ+B z4F>%v>`y`jt!LOKGy+X=!4GB@{;kwBAgzgt^J$)%KG%;v*Zuzsj7EWaFU}#oeZ*yM zkNXKfm^2faA|F7z;Job#i)k5^Py4dnWngP08V^T|c8WZfYI^}F+4s#r`SonY^CQ;A z2fh**!Ox$J3c93{Q}rY6xX*<7H9=rc-_h^sAbgN&B)YAcyqQP#7K}!$RpjmpVEdUa zqbU|Sk;Qcvh}&6;^$%dF86?c>733l$dw2bkYaUHs@)uRU^%h||bD-K9uY7l#Wz z)tDhkTCd4YR|v^N5!t*s8FCjvR%^N{&JoT^wg)(H8uFV8*s~atY(^nTc;5#u=5bsH z^;gxDWcjNuS)SJ=%h9)3mYLYK zno;zhbgTcdZuP5f?{L6=t@bNix*k3nB=9-g&9)cOoXGFOZIL!TS zMGmF6jkqbKlHu-rWKW*ALVC0Mh}|u_L`fLHs9dsJ_+Hgk(%g%uwXd5ZDFJykE@(i zrNm?;OOAsB^8&epCGv~;>@@NxhUHi5u{eb-GlP1&_@QPIQUgv|360JJ$SLjs)O|P_ zB;Dliy9*<|D7=+EMh}j<*{R=QrzZca6e0`P><}wJ4P>p}iu0l}L7WZt9T!IP>itNj z3Gf~<=K@jvgp(|N7FZ&qwQ}vm&1Gv0k0W97G*s@u@9cBw3vNA6-J~l*cLc-`3d~Ey zQri+DZ|U_3G*fQzhs4&7Y|SqqSmT@WdQH5PLt)@-WF`AA_oM>;Q9jgOcoq2;@Dp6B z_X6>{zXP6GN(r1sDFGDeps{JR1+XPT{Yg0hEqHnkJeUjr_F$G-%d{j>6+8Q| zG+La2c!`-HUWzR6FYOs#k_jp+Me2%|bbv@1;zSDgif>shwT!d_?8_*p|MvZ&zAMGH zg>rZ5_xA(PM3uF2Yd*Ul6R?`ux}-yM$(n`Cz{YKhLxe9F3#a$5ASgzmOs$d_$85MM>%e zD762k>}iQK(3juW!MuYsdh(c}Oorgst3?BP`e28%{;;1YuCFu_bSepsA`C z6+|Gv8Mv^<=v!**TX}tc>Psleo0)2OAkxB^K$p(2+OD|7#78tisF?R}EZ)>}n57Tk zJo*5x$TnwV3bi+N`@gC~ZbM!Oa>Ta)f!6ZR52AEIXD`SR1H|FMs@ldvEDV^OdR=OG ziKYg^$%~@;L*UErqQU5-EgFn^FZ32!ltQe`qmE|F6O!dIyazHS5tKy8hVn2LZULLL9=|7`4*lpOv3=E$2;1O z+YLWN8RxX+CCJe{Z_>5V&#og$uS;qm?J`PXwAoTm90??(};aMk$8XnzVv3u3+VLH&N0G`oHrKAB3QB;vG#Gk z+e%Vmphk73Rhp4%U17=C1r{-ab*0p7)*|F;KnZb4zD^8J~9Ft#VL%bgK4 z6Qj@4(;)%%nZSA#b~wVGQl1@%=UOLiALEEpV{|B`YhyQeM%XTfozVS+<l#KLhwO&kCW<@EcaOwF zk?3Pk7QN4Ml=bz@ibuIjZZ_-HsfzCBMUWBc8Cc|qpx&z`2lx;w7p@nnOxu#K+2TfdKN|#-Jbhx0FXkHe z6aj#_d_Y$`Shr+84%q2Q)gdH(;8_6Q&fWl|L|HIUr{vStZz>6+U!0|@dCIVw6$JHf znK^)T3m1+svHR5<;K;TsOMHVVp7p&)riny;*nZ5*8Who|Ljk+#Xji%M zWf1mZ=y>Q;_^rZ>F_=ZPxO2G_;7|t!FOQ44C1Sc$@jqhS@U5BbbrBb1#o?2?H)3-4 zHbBiRf>SkAg9-N5Q}{Iw)RK%QXw=>Z-ev9x@TiNNz~~(v*%D>h{YUt5-&GXTvkD&w zk1JjQN`cckzk;;S>#==pVtj(f(n99eB$B83pbR$Gmbeq{Ya>1AnOZSkE34BEb{))* z%wc89wjSMnCfHHf%$%FnUnlF$=;&xZF1A;@KyMw=k;|@Z4~3NS4S%S zbErPmLMBMKW3Sr*_(6XFaw}hQXgkIR-5DiU?qf+F^o)i0w;g{1={0)hQ=rL457ns@ zvJQTt_H9w^5QDxh7q|-k43CG#J3=wG5z3a9LDdV544i{ox^rO5$mBg7a{LU&Ud!RV zNzKQ|V*Rkmfx9LE4@u9^0pNmlwG@DewOgmCm20hKAe@P#zXurz(-=m>b_)f!1LWZ%97Rd>qE@HfOKPL{_4l5t7_0OSg>C-p=+H@X3tkhe8tp zi)8B!yYN6pA~0SvqIxGFsxPE4Gaz1(sBmf4eeI$qU`bn5k$xCBpOia-QRmaq6@v79 z7Jj}9$48C*iMVA2Dkh$9?*+(3oP;c2*6u~^J|6_P#9M^{wI$lyl6)Qz3Cj1O(X>~I zkf}szMqip*b4cz<)dzio1cLXgOi{du%@G4dYj0#DX?ZnJ4<|GLotGxFg6!*J5iCfn zPkUm%rx?NC3HZYc<$jo3@y9%=CFoxg&lF{!=D%KwOTLEhjv}P&Axd^zw&@2i9@xX3?0(T2XU}r!G=C?hFc@N;1 zuNAgB_$@pZAG`e6ilM@xMQ%8|lM(FZh<{X3?8p^Y6XTk$l#5C91G%;nC?$Z!`X(Jfmsvf5;1=?q>cY}6(7aA8r((OQ8fVPBK z#thr^#O|2yAWN)N-?4WH!nngx)X&vNV%k>6avS68HnRXWk=_z2qc~3RX-tr}pt{eZ zs(W<Fiv3BNWCOD&F-QKx9zyLR=STu+JU$QIy-PJKfL!D`~ zIq{$FEJiRhGcsv4d=*Km8FZ5kJH|v^(lywg$0ynh$uE%2OG6DBX1l!zL730!D~>V6k@HBdVjrDoVPi@b|BJ4LNS0 z^}e%-KP<+iBVTr)JbRY+Pg1%nv-{a&-(tkW$q;l)iBaBg*M7AF{QL_W>`1p^Vev;N z${9ealOs~9bbiLhd4Lx1c{XXSOIqDp>IXZ&ZZJ6=pfm0vq=j2eB-6d9p_|7?@f5S^-zy;~yb8pVDuS=KiR6($!{dpPt&z!-3g_WQNGEH*v6NW|Pn-ZY7c6>V~+ z7)1T`e^-DEMffbOzELg%tZIQK4V)+st@r4Bdg_{IkHhUQy_=)x0ortybGzy>{2Y6w z&3v!Jr^YC>-8X<%8b=+}Z)(5GA){1AE2XsiVi??&K`y)T8)6S2S7eaJ$DsdnMLPYz zwQ8AZ{TXOIsi#PMMKv|Lp4Ztu%2W({u&{Lr#`;W12QV75hod6RE( zC6xA3&k~`l`!-P>FQcpmfx^p4%3;OJqKh%OV6&hDbT1!$KyA>58cJu{3SGsJ1u#HG zSCMzMbn$n)?trS<=)pj#&C4Y40Sa}F7CoA^{_9S*zw$C3*ay3`ZuFLB>xG+8^S4UceJE`s9 zeskW*gtF#7n;@`fLA=1R@5t@~nMMluX0WjiFFOs4Odm zl5Q>CuG2Fu`i0}{hY z$H;Uioy+!4@MdUQP{d!=&i3EAU#*<<(t|LdH1;Bu2mn&zflo5gf;6>)DBho?Na%dZ%1U~{xYx&fSjP>=I33P&oj4%a{xi#)N9usf>TdUU{QX8JwT5x$&a zkS9oGJ_QQPdpwf2-XdiPkw9jpHb6Qz8e!SlW;IACx2ASpcNaF1UdVm&TC%*q=(&|? zoH-li%x|{+u+^-giXSrs#MZ|A{+^e|hDPcn+U;ym5v97~cIwji=T(#|xVGlzT1s$& z*nI3aUkA1f?r=(LnZDSPE&YXENwh?`ElNX97fRpA}q8 znpC-?EjlzFPUX==h4uOU>@4mz48^`LC>0ne(&(v1PhvNz>;%ogd$T>}iW%j@j5XWY zzY%SfYd={ekseLBSD9m2aRpO?kBToq0(iv9<8R@AU#^WS0hI1#KLu<;g_bX+DF9np!8K~n%&joC; z%8*;kw^TOOQo!zi-5kWpwje<4uaN{tjmg&e?+viv-zRCUF9MUP(Om+anaju4M_Jo@ zRtuFkR$F{2{Jo)j%Sy}h(Odi;@fWSujv#X6qN*TIS?8|b_utH}E|GNT({*E2f&Syk4kLSUJM1JWQ@Wh zrn695y)VAaZgX&^w}=JU2SV^>&p08?Lm-c!orLokUGN`03SW2mh?k`IOT7(^NSnwG zWmZHun?T1V&h^!~V^hWu=D{XPDRK0HD(sqwrks?VPNd6Aeq}utCdMbrj}&uv;d96u zdoLgL-ca#D`QySg;APhq>e2*+_nJYt&C-ViJoTXSJ7i=af8FYS;aPWv#rkb`uTu+B z+sW#8587SwT|C*tTELtiEHA+Y$h6HOymr*|66!xoSY>4&7v;YsJL9rLT(Y)@?JgSv zCYhFahcL5P;gKiiSXF96-(~HpC6!;ooc$!2B$|ACq>D zl?Ylj*A%R~sp}zbmbp;aj%$L0^<9Fif;NX)a^hHHeQtR0e^J7juIAVSkm^ZH1u@XB zsol%`&V&)x#9)La0k_l{W|b}WD5`kNHy8~E!Mz#2plQuihl-AWdMPB(`=|Fij)w&P zl1*__({We5)kd!yar7%nahRquT0zFjSP$3hs_^Zg3QuhVIx<@Jn2IEa*jO)WFYqkA zqqi(Y0L%%%do*MK z!K0O6px?|*&jP+UL&v|Vu0)P4;D^qa3?7#Ln|`fZ`in*n&Qu!xw1ge5ORrdq4*@e*9~TIZVbV|wtK>&uVGUf* z|2gwQds%F@>DlJ%TN1aqjAi6|%b4aN;#yFXlJ)8ctOV@H?5CD-pkbb>l(t!70M=is z+u)BoA6S_++(?<+;MW<46tn`2WStwiZCYhNTHo>PIrwFjrFZlNl@b|91)7q(JP(u1 zEAiByAJNPSv)az;3{{?*t!w(z3L;e($xDK8!WPwjiq z!y`HyQ9NoR0_zyQm&7Rn_}Yr0DAVEVK7U?dr3N&le}Sen!d?Sp@YgjFAX(JwEbxO2 zJ*k?gxm|w6NP&(uVKu&`xUC>$9!m3dIB?pN{Bm~z=-t@fT?Ki7Wc%_^K`b(B5JsiFbi`+tx4pT!cIA__1b6 zup$Mq>xmxgx;Hu&lCT?VJaQ;S>j!o5l5`7h$M$gIs!n%5sxRCuZ(KVv{tJ{Zw+E{} z?CrNGAXb4~ZS5*d4rG{OQz6-Y(m%$&M-Ers$WfahS_9vgEY$IRnoio+mm)4w#q*x{ zRwr%5e7(HSLw@nE+TrFula6l$21a*($qz!_COwpfdw}LC zQG=MP&96(g`~{`U)#aLtz)ys3dkyF=)~3G}ytEpXt7T?f+v9fqjUi}n3WXprrtUS) z`klJZ!FH8aDEQFl)FB%{!{;BOwV!H=dkWjC#yUlKPP40cOdSaAJE(gs`wi!yx0NK3 z5;AO-dR5CUb0(D4gc8f-QysaIjXBpVOGLsekt<)Bz#%>3WxNvx-zZ1#8@0yPrVvSo zIr#;xy(Xxg>lon{sr*C|+gpCE&ySSPRdcYGZ}>EKf4(V-!V5@|RVaxO>J;@?=%YwY zF2sRnLKush>kYC2BUygD*;UP+Dme}IfmvGAP2~-5#f_Ok_eh>URJa@ zLLuMMGqfFw%hqNMAE&S$p9*!C{v41RK(*o#>=H0Glq=ZXaWX=_=6d-iV|1cSNCfDw zk(?T>NE~jY2iuDYhnnZ`@VATVO~{MD z%o7K!e&&g~ecpiDui6*#;&ta1fH5=6yM~Oi(=Bz;Dxr^)lZC&$(Y>%cc{ADsxK!u` zp9W;<)kgOcBm;Fq@at0`-rotBS(;WCqiMBoi99>o1vH$A*MZ-lP?2KpNGbOs_xX4% zbv$+c!IKv|-q*Rj;seu5YDxr`|qs09fXBm70a4fn``QH8e(5SDz~;Q9N$A)F=ndo6`*56C%{V!-g0^yY=+T;gfO`0 zR$idn#NZiy{^i8TJI-asDQa}xekq)UE?g6UcDCBT&2ipWF` zK+?iUVt8xv_bR(vYGW5mt}%?9Vju;0mturHv+A7oZk8%>i%}&mvkgBcrC4HiQwVw9 zvhCUTsR@PJO3(@J-`O#J#dCAYy2iR*4pem{i0jluXkW;q-m;wsvMb*S{D}EHO|g*+ z&h)SV_1`rEPa~UbYz>LegNX^?*aurBmi^Gslwxhrl+@SsR8^HS95v|H8tS0ldAFa$ zMzSs-n>bLi-~XoW(rZP+aUY&ExsN70Yhh zs;T0*X@!fD=fII40nu}3&AxsV&>td*Xq=4QTrOp4#31fx@;vwrD=-k{n~h%za_Y@P z%ZkmfBOWMYz9H)Zsvm2%CGD>My4*>PE6AYMk`lgCCi$puO}K8zdV{W|a_lrRFwa$e zO#sG4=q!#F9~!mqB1rwKL`%`EsToT>#1pC^DN~9(eX-xgcTZ@GhTsD0)rTo+rMfz2NQvs2(;A}R*`m>J~9q& zNb8Dv+BFg{r`O+=vfIribrwnwbv_=aJ{29c9K@2+PFjAr?csT?zxeI|&06Tph=5Mk zQ00LH1-G`=oe`m%Acp4^ea7nAL88nh^nq`mTz-8^mu2$L-9IF)y!rLcAfrk!AMBCA zwnJI)Ez6EjKp@A?ecV=o=HX9Uc60_%B%6;hbm&i;(_qkU1GS0s7`_YT^+$ z?`kkNk^1tX*XJ-$eqWE&nW2m8TgT&tlE<4!o@@sdXwQhSzia_UFwsShC#`^tYGsRi zRNuEFJad?0m*b$>%!wmah=MN~fp87%du#i9MRztjHUz;R^Qw!Go9L*kva|(lw{?%g zk2Gc-o%kg^?ov3`O&}-w2skWa#ffpP!KzN4d=$Y2oD(g%dgByj!3+M|Tz^JpCcq@e zQJJntmqueG(z{(SG4N2yqs)3mFaz_F?ZN1KWOWBR4C<!DMo=w_Z#BAwV=m`>Ex`VQAkmzhq`PselTwL8-!wip zm0N2w3{0fdT|j$`cAt9exDohE;>{C9MbH{dqxc7|k&&ZY718co;{u}IsSMQ=j%YsA22{V1JuL+x$ z((XtJx5NNL3~sA2zSSdCtX!G?x#NwlgPn0XcXU3j4CYB@J6hhXd90tsr?(Yvs4JG3 zh|Q5Z!0i#x=x5ea=F14io`zHxP=jGspRMQNG&A$Kw4Y@kqLqkqx z2D6+w*sC9eU7%S6>LY1>oAw->>blgCxu!XGlh7Xb3@wwg z>LkAl9}4H^cUl)<9@AXOmuFDw13rFc)tlO}pxGeYhvmJ9y|D=@)dpRKmR=z4b|9Ms zF4-<(QFp?ZC*_M0J)}II7D&fw4`ln0@&#Fw_QU$9C6)WYZ0w7=Da+IZb~`-CGk)4~ z71?9{c`>4$$z0CjBk`mByS4NTTF!lPqR`qj9ZaxdQM)_}QtQ9U zS`wr^hZ^fBzir1zvMhag3v(QE;@Ru#jMhV4_WPY z;6gI|2i_wzuFSbc*&369#A{B1DIK2RDZMu}WME_q-m)fhouz>LRae(NYwfCJ2l&UW zpc>fi{JF#<^VGrkf%rpF1ISUci&>C5SqaKq-M9g1kvIziTkt|ZMmS4f=LQvP_)mYYEgLt&kPN1cpt+;zNNZthDS`pRBSw#q${&`P zw$zsks}-ef@hafy%?5L{0ISLS`;eg5pcDhoAg-)>uh>1H z4hx*N{C0gqS7H6E8vGv9JYdpz5|IpzAF++F{Wh5efIJw~WEk*JBu!H)5V>oC7g#-)z1{_TCY z-v}pwaotOSQ()!m<`noIbqat1a@F#ICq@F$&VM~*gf;vda^qD;K<;Vt4=qU*W+_R>+e?%r*+dQ_w~j@e-iC&6B~~F5#9ss0#+6VN>pwOi;I*VE^bBS z+FRR~x`J{@;B+_qF7#r2Ia`?)LLLk8?>^uJLKvwORL zgE9~3cE43UvN(==!7ok<`YUmumN*d_4G4_ zt;68wb-w)e+8=$?*U*ubIu2sPhY6rdt)fH>h3lp#>QvjRq>ZijH=3U9+Lh*5fayW& zE|CzOo~;GFpeVlN0TpHXl>1rQ4s^zF0@Nj@IiQV^kd=b11QW*(uS{R-c(Lo?+Sn<~ zj$0=n8QaSNg#Nu{)t7#EzVM^eru0iKX zPl{Rx8qtw4S?c|1CM^73F#U^^K~$~HZfp~l^3n|QUza{Xc9xc}l7NuyY?yA#tWb!g zc>$n{hWooUfFrlP!ZJ8vJXz4t!pHa{F^R;gqwrlWYvsHA+WhI0<(oX?$ zt47NA$w`Vpxn5&(XO6r4W9|kQVGKP19jk`kb@EPjgah`)_zhLL^nEcEc>}Wi#pnr2 zFY2anW>-*b;z&<=Y(YZf8_PrU0<6a_c=P^5e27(-80=z^QKu^F6~A$bMcL$VDaAyT zciFw8C;RvV^R&}U=o8%nyz)AKX(qW23%dY%S#C|1C@B_3-4+$^n%<| z^`Jll_?y>+(M4~U`ECRmKPeTBf?}Y~xkj6(N_7JzzHrbVqO9$WLoe*HOupRJq}m;n z=|%0zEm(I==eYe8SONGgF8=PMJfKJ%;5MTJFj)AmR_1jiHjj%VC7ZNXj1ng9>oEvL zzySk#T*Z@<+&_Vje(FQw3cw91lVM_rzX1&B$~@y#jD%{xvjg6_4u0A%5aVyrVwM^% z%$@XMVssIZ-;c0DMtG5$olx7$xGOnM)xsOqeW>N7*3wGmV9x~I{f-X1bdAJssp6sN z&ZOr_d*KTh!t@|4xQ6V{)8ruIYpY^Z@(Ih=Vg1}#l^+<0Mk+K6M3b}tjfXx(@v*x> zn2=wa%3(9BkXf41)_^)2&1h-TK+;a2lYF;=TaMZ}SETQubybM$ou75<=D^-{NuVl* zdv1fvOWuP&M$78nwY5@u{bki@)kD<+F>S2Kx4I*%5p>6aDA1?=tPtk|yvhpeHcFOu zuOW+>PGqsefX(xm7{1$S0h4!5c4GGuC4h6DMkmcY;j>gW*kcH(U1dH>PgICE-)^jB z^Qm7r_*Vh{p)BM{pw3hOJhP&u`U5aSg1Se2>e!T%Gt;Wxg#EY>H{`}5)>~(xL*$0m zHxjs3pTnv9Nts|jj(2u))_9svPL)>a&Gd=P+77TOuL%s(SOUT27-(<%cQewJ^ynRc zlvoAMI@sErdw_5&W`AGCe?VSPro z>Se0OY-(Hd(Du$Da1~PWdiaI@jtmyMTRTqI_6-XCnFN9l&@Js5>?9W2N)^O=GTtfu zY4rK+-!{VM(Oqk8E#I58n^av+I%_xS_pX-f`;3SE{K0hl^{UoBnsvL9sw>d;mQ=7s z0Sx@~@H!ffL85yHV7ty(s2}ME+hQ1^o%$RMZ3mG<_aGoVxV~!Ic$`@pXQ_Mian?79 zH2M}44gi@fzm1)k?uc?hAzN~;UL;OX6vu4)M(RWzAqt^Dn?l`5+8X_ezg>z-D0ynRFLzr;30u|9P)`~o*`^d4Kje_xiz@y z$TPDsa+&2V7+gS?{BtFO>>ZfnTJDR=s5!COGndoeOSMo1iAAYTzFb^TwArUB1s2rGshymvS0v+ zyx{F4nn7(TxME}w<#_CW_s0eBH{8!oZ79eb-azH7F5d>Km^oxe%(M=&v_ zX@k|&n?|meuT;ZUuY#QKD)vEL_!lZgcaM%4 zgRl9{>`j}c()bd6kO__%R;TV5eu<93TanBG5ISRJ`a6zkT?g++PjHu(jQf}RR1=%_lrUWz5NP5>&ZLU$#aZXz(~Vii^hi$R(` z@Vd?6ItPgN%C-?oaBz6Xql>(-BlJG_FLj#F?g1o4G}p?x9~ zfsQ7AlR%5W{@KwoI^J;w%qV94WwaRD0YFQb&di9@BK9ne2lGHYh^^_$MdX0x@v^tk zM*N4Zxr6g6?ilw-e@A=-JV)%zyG-1ozlK%ZE9!B)jQ?N|SXZqQFM*~c$k!pEd{=hH z!Z=x|w}2X>HuJ`cpJ$`}2C;Fs<}?)GOgpvn`oP`S*qw302_?zU0|Ks+SlN_l^k|?B z^vLRDJb%HTjz$lHZoTv?uGGyxvk0q6qFizobj*w9lFLqPP*TZm>Jt1{#g&eN4a*9< zL56oXNJ*75YsXnCC81XgaYIIWbJ`!jdcH;^1&@JKT!1H^u#;m>5N-b9921>qoxQe8 zmnNn4e=&^|9Nd`nRrh(oDVh|lW9T@y}Tzdf+mu(z@Ly$zO}B4!Hoks@L4+;TZ~T1lv00v$aD)VX^zS&gZ8v$fGc z*Xz4=yjx(Z^e{#Fjd&34OiAy6TjDQ+nW%&h&^dbGipr57Qtz=t$)Cd&nA3<+|I`GH zWeqAYtryHMy;HrJg6`(dKc8D4i*o)H1c~)_i;ESBFiz=YT)^zHr%7 J^7+9Z{ts4vlXU<9 diff --git a/docs/build/html/classmlx_1_1core_1_1_uniform-members.html b/docs/build/html/classmlx_1_1core_1_1_uniform-members.html deleted file mode 100644 index 97eece0c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_uniform-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::Uniform Member List
-
-
- -

This is the complete list of members for mlx::core::Uniform, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Uniformvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Uniformvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Uniforminlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Uniforminlinevirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
Uniform(Stream stream)mlx::core::Uniforminlineexplicit
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Uniformvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_uniform.html b/docs/build/html/classmlx_1_1core_1_1_uniform.html deleted file mode 100644 index 45442f1a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_uniform.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -MLX: mlx::core::Uniform Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::Uniform Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::Uniform:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Uniform (Stream stream)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Uniform()

- -
-
- - - - - -
- - - - - - - -
mlx::core::Uniform::Uniform (Stream stream)
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Uniform::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::Uniform::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::Uniform::is_equivalent (const Primitive & other) const
-
-inlineoverridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::Uniform::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::Uniform::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_uniform.png b/docs/build/html/classmlx_1_1core_1_1_uniform.png deleted file mode 100644 index 1fe539076e6fc06a10e3b315eb56c94130e41238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-)JzX3_Dj46+y(_fHfXB^$ z|2d1w|LSorjoUvu$>dw=psZ+bG@7koYd1hIz4x71jW!sc3%ipaH`}RBPuAcpsUE5tvy@M=kqMq_u zt+=*tt$dc}B}ToqtDfGzcT4wC^4g+kk4y8?w_IagTmGo(o@Vx>Re^gSd0Pigs&mWm zoHYHyBo+OIs-AJjuAZ`d{*a+UT)g3wi*4||m5a~ru7PpMv*$={+pC;d6|aCz~iua{5T z&As2Ia<#_!waTN6N2{iaeg3&*MnV16rv~l0`TN=Y&2R09-llu^Z`98vniYS8p55K@ zY>(%y{;IUfl@%}ky4kPWb*(nYa{Ib4$;%dHLUG zi{4vx_sz?`u+Wxsep8lg|NJEX!SsJMaoc{axb`~i|GD_BDu3sI{PH;K>7366412n{ z4^;H5EZxcT(sbFi6w^i57es9oX8eOUSdb+DF|VBxB*i~z=FNFVdQ&MBb@0Ax?K{{R30 diff --git a/docs/build/html/classmlx_1_1core_1_1_view-members.html b/docs/build/html/classmlx_1_1core_1_1_view-members.html deleted file mode 100644 index 53d806c5..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_view-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::View Member List
-
-
- -

This is the complete list of members for mlx::core::View, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, array &out) overridemlx::core::Viewvirtual
mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out) overridemlx::core::Viewvirtual
mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::UnaryPrimitiveinlinevirtual
is_equivalent(const Primitive &other) const overridemlx::core::Viewvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
operator=(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
mlx::core::Primitive::operator=(const Primitive &other)=deletemlx::core::Primitive
mlx::core::Primitive::operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::Viewvirtual
stream()mlx::core::Primitiveinline
UnaryPrimitive(Stream stream)mlx::core::UnaryPrimitiveinlineexplicit
UnaryPrimitive(const UnaryPrimitive &other)=deletemlx::core::UnaryPrimitive
UnaryPrimitive(UnaryPrimitive &&other)=deletemlx::core::UnaryPrimitive
View(Stream stream, Dtype dtype)mlx::core::Viewinlineexplicit
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::Viewvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
~UnaryPrimitive()=defaultmlx::core::UnaryPrimitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_view.html b/docs/build/html/classmlx_1_1core_1_1_view.html deleted file mode 100644 index e85cb3c9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1_view.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - - -MLX: mlx::core::View Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::View Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::View:
-
-
- - -mlx::core::UnaryPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 View (Stream stream, Dtype dtype)
 
void eval_cpu (const std::vector< array > &inputs, array &out) override
 
void eval_gpu (const std::vector< array > &inputs, array &out) override
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
void print (std::ostream &os) override
 Print the primitive.
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
- Public Member Functions inherited from mlx::core::UnaryPrimitive
 UnaryPrimitive (Stream stream)
 An abstract base class for a primitive with a single output.
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
virtual ~UnaryPrimitive ()=default
 
 UnaryPrimitive (const UnaryPrimitive &other)=delete
 
 UnaryPrimitive (UnaryPrimitive &&other)=delete
 
UnaryPrimitiveoperator= (const UnaryPrimitive &other)=delete
 
UnaryPrimitiveoperator= (UnaryPrimitive &&other)=delete
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ View()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::View::View (Stream stream,
Dtype dtype )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::View::eval_cpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::View::eval_gpu (const std::vector< array > & inputs,
array & out )
-
-overridevirtual
-
- -

Implements mlx::core::UnaryPrimitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::View::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::View::print (std::ostream & os)
-
-overridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::View::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1_view.png b/docs/build/html/classmlx_1_1core_1_1_view.png deleted file mode 100644 index 919b9f6287d88048790792b33f16f1429671e58c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^(}1{xgBeH~F+Z{fQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+vJzX3_Dj46+ec1O(LBNe) zzH{dH`bW3Jyc@S!nXWs1w(p_FB}P7j7x6{sDs4_oGLc%S>KW(cJ!y}{mPsl`QwoJiQdEqhh2KJC0_ z(=&^HGp{PkuQe)Q6DVF1F@GoSR=r`P&w_S1Xu`9FIxP6fd(auw9n16xkgHRMh zoD=r}?+nHYPF)85g{%)$w=nE!5o?%^kUTAa;gsd`j|$$GGGL}}y6!dUNjhi!E%meO z7hhcdYp+MpY4a`fT;`POL}i-BYlXHS54zs3niE~iIZy6O;rEN%9?Io@^$9Nc8PvZ! zQ}?l2X8f&rrNO2zA0I4?xm;!ue0TfZwN}e+^J-@LZ;wvjsJi{v)0(L4>4)DsUh(?N zHEE0f>&E=Ya#>fuKTg@sSG0Poc4vj-YlElWnL+;&cBQxfm={*78<#niIX6FIW&Ziy z!uQH{@4n0)byiL0j*I6n3-Nm9{a>Dc-gdP=Yj6J7|9?WgFRd4*Y6y90F8!!5b7rqw z#>|<(2rxF*pT0$J-2*whz47rs!?&C{v+m(Vuh(7Ey-Y8D`5jcRllcADv(OpxS9sIX zmhafIj5B;|O4#&Q$$cwlNiD4koqsuN*{w(NTT{|(cdPfVPd>$;eRlo3AMaz|^VfN; zmiv;j{nwf`)@OP9-HbN}>t&g0-hY0rG3vAQ!*grOx1MU;X1?*t>2EpjLoc)gZQkbt mchkbuv}eFnF(pW - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::allocator::Allocator Member List
-
-
- -

This is the complete list of members for mlx::core::allocator::Allocator, including all inherited members.

- - - - - - - - - - -
Allocator()=defaultmlx::core::allocator::Allocator
Allocator(const Allocator &other)=deletemlx::core::allocator::Allocator
Allocator(Allocator &&other)=deletemlx::core::allocator::Allocator
free(Buffer buffer)=0mlx::core::allocator::Allocatorpure virtual
malloc(size_t size, bool allow_swap=false)=0mlx::core::allocator::Allocatorpure virtual
operator=(const Allocator &other)=deletemlx::core::allocator::Allocator
operator=(Allocator &&other)=deletemlx::core::allocator::Allocator
size(Buffer buffer) const =0mlx::core::allocator::Allocatorpure virtual
~Allocator()=defaultmlx::core::allocator::Allocatorvirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.html b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.html deleted file mode 100644 index be9b6b40..00000000 --- a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - -MLX: mlx::core::allocator::Allocator Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::allocator::Allocator Class Referenceabstract
-
-
- -

#include <allocator.h>

-
-Inheritance diagram for mlx::core::allocator::Allocator:
-
-
- - -mlx::core::allocator::CommonAllocator -mlx::core::metal::MetalAllocator - -
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

virtual Buffer malloc (size_t size, bool allow_swap=false)=0
 Abstract base class for a memory allocator.
 
virtual void free (Buffer buffer)=0
 
virtual size_t size (Buffer buffer) const =0
 
 Allocator ()=default
 
 Allocator (const Allocator &other)=delete
 
 Allocator (Allocator &&other)=delete
 
Allocatoroperator= (const Allocator &other)=delete
 
Allocatoroperator= (Allocator &&other)=delete
 
virtual ~Allocator ()=default
 
-

Constructor & Destructor Documentation

- -

◆ Allocator() [1/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::allocator::Allocator::Allocator ()
-
-default
-
- -
-
- -

◆ Allocator() [2/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::allocator::Allocator::Allocator (const Allocator & other)
-
-delete
-
- -
-
- -

◆ Allocator() [3/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::allocator::Allocator::Allocator (Allocator && other)
-
-delete
-
- -
-
- -

◆ ~Allocator()

- -
-
- - - - - -
- - - - - - - -
virtual mlx::core::allocator::Allocator::~Allocator ()
-
-virtualdefault
-
- -
-
-

Member Function Documentation

- -

◆ free()

- -
-
- - - - - -
- - - - - - - -
virtual void mlx::core::allocator::Allocator::free (Buffer buffer)
-
-pure virtual
-
-
- -

◆ malloc()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual Buffer mlx::core::allocator::Allocator::malloc (size_t size,
bool allow_swap = false )
-
-pure virtual
-
- -

Abstract base class for a memory allocator.

- -

Implemented in mlx::core::allocator::CommonAllocator, and mlx::core::metal::MetalAllocator.

- -
-
- -

◆ operator=() [1/2]

- -
-
- - - - - -
- - - - - - - -
Allocator & mlx::core::allocator::Allocator::operator= (Allocator && other)
-
-delete
-
- -
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - -
Allocator & mlx::core::allocator::Allocator::operator= (const Allocator & other)
-
-delete
-
- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
virtual size_t mlx::core::allocator::Allocator::size (Buffer buffer) const
-
-pure virtual
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.png b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.png deleted file mode 100644 index a57dd94719d8f701ff258f2887d9d6d2ee95036f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmeAS@N?(olHy`uVBq!ia0y~yU_1t72XHV0$t_=0KLRP~0G|-o|Ns93nJ?aaE$u(F z+`>S!Kw|ot7Y`mh0E(NQ4O;?~<17jC3uXZF!N8np_7w&O=2M<7jv*C{Z|6Row8=_< z)w*5l^`8I2@vJQZP1-fl_oT{oqK=$V@tM`KpFw{4l%Rd$4fc*3-{z~D-YTmITAbUi zj>NbpbG_vL=02hL|MiL&w@C*retY(#W^ZbiM=!(s&xe=vZ2r{|xx742TF}Hs1TbY_Gad?rv36J+otn^>#0|vQ1jGzfZr+xAa@lO}0HgTiz-MJx&Xc zx#qTev*>MI_MNkj?cKiW{<>rHg>tLiv-T|b_;IEARps8&%YKjVoP6nW``$z;YpK_z zg&U-9hhE)$@uu|b<&T{f<-Ygqt?o^JvdLgpd9wBT=l6Q^GyVWw`hCeU=ibw7*0JZ8 ze=WaSCt_o2d+XYps;$>=|LE`BR_l_r`mp;BgHXeX zC2kEb?&Q4`RIpens9;sz4P=?E6nwz#(aG@8vzH*=f9h@7?!TN2`=;;TWE7ldEcL^e=khdK8=}W>-qKL{!E$ww#H$RK}?x*bY-*lgiKK})sZ^R zCvTa3{`9Jq{>c%0`<8X5e=_?~7`1=ezU@!X{QUYMRQ>zw=fct9f1WwK&)5@HS-kw} zhuGe`3%p%DgAT7MoU>l(ZT~Bidl!FQ|9EuW%5&@F_oZJjswtKK{B_p7vL8hYwwuPS z-Lv=d-xMF=dWn*a8lG7z!jk81xy{FY z-$noZd;O$muRgog%8xlu=b9(IKl=X>YgOSlmE1mYsq3xw`X5Wbt)82($AW9#tYx}O zXU?oVf1~W$oBXpnZ=~b-N@5>ZPksNcL~dVH{n@rVoV$X+p{e@vcZK_66<2jruOMJ1 sQ)$J)cqi4KD6wyv*JEHTU;iX;ll}6onX+dMFsn0oy85}Sb4q9e0E06ZWdHyG diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer-members.html b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer-members.html deleted file mode 100644 index e3bb6d0e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::allocator::Buffer Member List
-
-
- -

This is the complete list of members for mlx::core::allocator::Buffer, including all inherited members.

- - - - - -
Buffer(void *ptr)mlx::core::allocator::Bufferinline
ptr() constmlx::core::allocator::Bufferinline
ptr()mlx::core::allocator::Bufferinline
raw_ptr()mlx::core::allocator::Buffer
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer.html b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer.html deleted file mode 100644 index 26309269..00000000 --- a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - -MLX: mlx::core::allocator::Buffer Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::allocator::Buffer Class Reference
-
-
- -

#include <allocator.h>

- - - - - - - - - - -

-Public Member Functions

 Buffer (void *ptr)
 
void * raw_ptr ()
 
const void * ptr () const
 
void * ptr ()
 
-

Constructor & Destructor Documentation

- -

◆ Buffer()

- -
-
- - - - - -
- - - - - - - -
mlx::core::allocator::Buffer::Buffer (void * ptr)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ ptr() [1/2]

- -
-
- - - - - -
- - - - - - - -
void * mlx::core::allocator::Buffer::ptr ()
-
-inline
-
- -
-
- -

◆ ptr() [2/2]

- -
-
- - - - - -
- - - - - - - -
const void * mlx::core::allocator::Buffer::ptr () const
-
-inline
-
- -
-
- -

◆ raw_ptr()

- -
-
- - - - - - - -
void * mlx::core::allocator::Buffer::raw_ptr ()
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator-members.html b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator-members.html deleted file mode 100644 index 5dc24cb9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::allocator::CommonAllocator Member List
-
-
- -

This is the complete list of members for mlx::core::allocator::CommonAllocator, including all inherited members.

- - - - - - - - - - - -
allocatormlx::core::allocator::CommonAllocatorfriend
Allocator()=defaultmlx::core::allocator::Allocator
Allocator(const Allocator &other)=deletemlx::core::allocator::Allocator
Allocator(Allocator &&other)=deletemlx::core::allocator::Allocator
free(Buffer buffer) overridemlx::core::allocator::CommonAllocatorvirtual
malloc(size_t size, bool allow_swap=false) overridemlx::core::allocator::CommonAllocatorvirtual
operator=(const Allocator &other)=deletemlx::core::allocator::Allocator
operator=(Allocator &&other)=deletemlx::core::allocator::Allocator
size(Buffer buffer) const overridemlx::core::allocator::CommonAllocatorvirtual
~Allocator()=defaultmlx::core::allocator::Allocatorvirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.html b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.html deleted file mode 100644 index f85731c8..00000000 --- a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - - -MLX: mlx::core::allocator::CommonAllocator Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::allocator::CommonAllocator Class Reference
-
-
- -

#include <allocator.h>

-
-Inheritance diagram for mlx::core::allocator::CommonAllocator:
-
-
- - -mlx::core::allocator::Allocator - -
- - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

virtual Buffer malloc (size_t size, bool allow_swap=false) override
 A general CPU allocator.
 
virtual void free (Buffer buffer) override
 
virtual size_t size (Buffer buffer) const override
 
- Public Member Functions inherited from mlx::core::allocator::Allocator
 Allocator ()=default
 
 Allocator (const Allocator &other)=delete
 
 Allocator (Allocator &&other)=delete
 
Allocatoroperator= (const Allocator &other)=delete
 
Allocatoroperator= (Allocator &&other)=delete
 
virtual ~Allocator ()=default
 
- - - -

-Friends

Allocatorallocator ()
 
-

Member Function Documentation

- -

◆ free()

- -
-
- - - - - -
- - - - - - - -
virtual void mlx::core::allocator::CommonAllocator::free (Buffer buffer)
-
-overridevirtual
-
-
- -

◆ malloc()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual Buffer mlx::core::allocator::CommonAllocator::malloc (size_t size,
bool allow_swap = false )
-
-overridevirtual
-
- -

A general CPU allocator.

- -

Implements mlx::core::allocator::Allocator.

- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
virtual size_t mlx::core::allocator::CommonAllocator::size (Buffer buffer) const
-
-overridevirtual
-
-
-

Friends And Related Symbol Documentation

- -

◆ allocator

- -
-
- - - - - -
- - - - - - - -
Allocator & allocator ()
-
-friend
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.png b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.png deleted file mode 100644 index 8b609c844a056c54cc34351188ec30309feafcae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 zcmeAS@N?(olHy`uVBq!ia0vp^_kcKngBeIVGF$5cDd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5CG9y|bwo1P6@0+iz{3GxeO0P?}WoN4wI1_q{hPZ!6K3dXl{U-!LM;Av@h zT=nOle@#*UPF2O|w{ptiGlQDgKdV0Y=h|b~r|mLHCbZ9eQrOc9mCVrdADKMMvWvF% zT>l;~;c0aFf4lg##`r_go6ZW)%iP|$;oJ5!&glBrAMeg#JAd|P>6zGruMH-ptgGIW z*(Pf^;aAXEnZpe5i?Ld*zhcBPssHpxKy<+XAO~+TIZa(cXX=&AmNtY(g-)j?p|7LYV zd9upMApH-oOxH%~L?3)TL9gNEy9>u3UIW?k|Gu(kagoiWEn3HwJy(Mmt3G~A>M4w1 zJdpp2nc;C(&Ytt>8T&SVRNFQ2C)@GQr#KnPo>nj^T^H=kxpGS&uber*U3B zU;FmWGn0zEbL*4erD*PsUmiZ$=kMRGnS0th{r05JQwWM%6nZ29=pFv-)Qdp zk|i7cf6H^>IJHyv=Jf^en@74X%1K}L^3%dIp$|G+9-Ueny63dZ`VW&{ZzRB%8wpzY(Q_(+(_eK|4 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::array Member List
-
-
- -

This is the complete list of members for mlx::core::array, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
array(T val, Dtype dtype=TypeToDtype< T >())mlx::core::arrayexplicit
array(const std::complex< float > &val, Dtype dtype=complex64)mlx::core::arrayexplicit
array(It data, std::vector< int > shape, Dtype dtype=TypeToDtype< typename std::iterator_traits< It >::value_type >())mlx::core::array
array(std::initializer_list< T > data, Dtype dtype=TypeToDtype< T >())mlx::core::array
array(std::initializer_list< float > data)mlx::core::array
array(std::initializer_list< int > data, Dtype dtype)mlx::core::array
array(std::initializer_list< T > data, std::vector< int > shape, Dtype dtype=TypeToDtype< T >())mlx::core::array
array(allocator::Buffer data, std::vector< int > shape, Dtype dtype, deleter_t deleter=allocator::free)mlx::core::array
array(const array &other)=defaultmlx::core::array
array(array &&other)=defaultmlx::core::array
array(std::vector< int > shape, Dtype dtype, std::shared_ptr< Primitive > primitive, std::vector< array > inputs)mlx::core::array
attach_event(Event e) constmlx::core::arrayinline
available enum valuemlx::core::array
begin() constmlx::core::arrayinline
buffer()mlx::core::arrayinline
buffer() constmlx::core::arrayinline
buffer_size() constmlx::core::arrayinline
copy_shared_buffer(const array &other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)mlx::core::array
copy_shared_buffer(const array &other)mlx::core::array
data()mlx::core::arrayinline
data() constmlx::core::arrayinline
data_shared_ptr() constmlx::core::arrayinline
data_size() constmlx::core::arrayinline
detach()mlx::core::array
dtype() constmlx::core::arrayinline
end() constmlx::core::arrayinline
eval()mlx::core::array
event() constmlx::core::arrayinline
flags() constmlx::core::arrayinline
has_primitive() constmlx::core::arrayinline
id() constmlx::core::arrayinline
inputs() constmlx::core::arrayinline
inputs()mlx::core::arrayinline
is_available() constmlx::core::arrayinline
is_donatable() constmlx::core::arrayinline
is_tracer() constmlx::core::array
item()mlx::core::array
item() constmlx::core::array
itemsize() constmlx::core::arrayinline
make_arrays(std::vector< std::vector< int > > shapes, const std::vector< Dtype > &dtypes, const std::shared_ptr< Primitive > &primitive, const std::vector< array > &inputs)mlx::core::arraystatic
move_shared_buffer(array other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)mlx::core::array
move_shared_buffer(array other)mlx::core::array
nbytes() constmlx::core::arrayinline
ndim() constmlx::core::arrayinline
operator=(const array &other) &&=deletemlx::core::array
operator=(array &&other) &&=deletemlx::core::array
operator=(array &&other) &=defaultmlx::core::array
operator=(const array &other) &mlx::core::arrayinline
outputs() constmlx::core::arrayinline
overwrite_descriptor(const array &other)mlx::core::arrayinline
primitive() constmlx::core::arrayinline
primitive_id() constmlx::core::arrayinline
primitive_ptr() constmlx::core::arrayinline
scheduled enum valuemlx::core::array
set_data(allocator::Buffer buffer, deleter_t d=allocator::free)mlx::core::array
set_data(allocator::Buffer buffer, size_t data_size, std::vector< size_t > strides, Flags flags, deleter_t d=allocator::free)mlx::core::array
set_siblings(std::vector< array > siblings, uint16_t position)mlx::core::arrayinline
set_status(Status s) constmlx::core::arrayinline
set_tracer(bool is_tracer)mlx::core::arrayinline
shape() constmlx::core::arrayinline
shape(int dim) constmlx::core::arrayinline
siblings() constmlx::core::arrayinline
siblings()mlx::core::arrayinline
size() constmlx::core::arrayinline
status() constmlx::core::arrayinline
Status enum namemlx::core::array
strides() constmlx::core::arrayinline
strides(int dim) constmlx::core::arrayinline
unscheduled enum valuemlx::core::array
~array()mlx::core::array
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1array.html b/docs/build/html/classmlx_1_1core_1_1array.html deleted file mode 100644 index b1c3fe3d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1array.html +++ /dev/null @@ -1,2028 +0,0 @@ - - - - - - - -MLX: mlx::core::array Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
- -
- -

#include <array.h>

- - - - - - - - -

-Classes

struct  ArrayIterator
 
struct  Data
 
struct  Flags
 
- - - -

-Public Types

enum  Status { unscheduled -, scheduled -, available - }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

template<typename T >
 array (T val, Dtype dtype=TypeToDtype< T >())
 Construct a scalar array with zero dimensions.
 
 array (const std::complex< float > &val, Dtype dtype=complex64)
 
template<typename It >
 array (It data, std::vector< int > shape, Dtype dtype=TypeToDtype< typename std::iterator_traits< It >::value_type >())
 
template<typename T >
 array (std::initializer_list< T > data, Dtype dtype=TypeToDtype< T >())
 
 array (std::initializer_list< float > data)
 
 array (std::initializer_list< int > data, Dtype dtype)
 
template<typename T >
 array (std::initializer_list< T > data, std::vector< int > shape, Dtype dtype=TypeToDtype< T >())
 
 array (allocator::Buffer data, std::vector< int > shape, Dtype dtype, deleter_t deleter=allocator::free)
 
arrayoperator= (const array &other) &&=delete
 Assignment to rvalue does not compile.
 
arrayoperator= (array &&other) &&=delete
 
arrayoperator= (array &&other) &=default
 Default copy and move constructors otherwise.
 
 array (const array &other)=default
 
 array (array &&other)=default
 
arrayoperator= (const array &other) &
 
size_t itemsize () const
 The size of the array's datatype in bytes.
 
size_t size () const
 The number of elements in the array.
 
size_t nbytes () const
 The number of bytes in the array.
 
size_t ndim () const
 The number of dimensions of the array.
 
const std::vector< int > & shape () const
 The shape of the array as a vector of integers.
 
int shape (int dim) const
 Get the size of the corresponding dimension.
 
const std::vector< size_t > & strides () const
 The strides of the array.
 
size_t strides (int dim) const
 Get the stride of the corresponding dimension.
 
Dtype dtype () const
 Get the arrays data type.
 
void eval ()
 Evaluate the array.
 
template<typename T >
item ()
 Get the value from a scalar array.
 
template<typename T >
item () const
 
ArrayIterator begin () const
 
ArrayIterator end () const
 
 array (std::vector< int > shape, Dtype dtype, std::shared_ptr< Primitive > primitive, std::vector< array > inputs)
 The following methods should be used with caution.
 
std::uintptr_t id () const
 A unique identifier for an array.
 
std::uintptr_t primitive_id () const
 A unique identifier for an arrays primitive.
 
Primitiveprimitive () const
 The array's primitive.
 
std::shared_ptr< Primitive > & primitive_ptr () const
 A shared pointer to the array's primitive.
 
bool has_primitive () const
 Check if the array has an attached primitive or is a leaf node.
 
const std::vector< array > & inputs () const
 The array's inputs.
 
std::vector< array > & inputs ()
 
bool is_donatable () const
 True indicates the arrays buffer is safe to reuse.
 
const std::vector< array > & siblings () const
 The array's siblings.
 
std::vector< array > & siblings ()
 The array's siblings.
 
void set_siblings (std::vector< array > siblings, uint16_t position)
 
std::vector< arrayoutputs () const
 The outputs of the array's primitive (i.e.
 
void detach ()
 Detach the array from the graph.
 
const Flagsflags () const
 Get the Flags bit-field.
 
size_t data_size () const
 The size (in elements) of the underlying buffer the array points to.
 
allocator::Bufferbuffer ()
 
const allocator::Bufferbuffer () const
 
size_t buffer_size () const
 
std::shared_ptr< Datadata_shared_ptr () const
 
template<typename T >
T * data ()
 
template<typename T >
const T * data () const
 
bool is_available () const
 
Status status () const
 
void set_status (Status s) const
 
Eventevent () const
 
void attach_event (Event e) const
 
void set_tracer (bool is_tracer)
 
bool is_tracer () const
 
void set_data (allocator::Buffer buffer, deleter_t d=allocator::free)
 
void set_data (allocator::Buffer buffer, size_t data_size, std::vector< size_t > strides, Flags flags, deleter_t d=allocator::free)
 
void copy_shared_buffer (const array &other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)
 
void copy_shared_buffer (const array &other)
 
void move_shared_buffer (array other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)
 
void move_shared_buffer (array other)
 
void overwrite_descriptor (const array &other)
 
 ~array ()
 
- - - -

-Static Public Member Functions

static std::vector< arraymake_arrays (std::vector< std::vector< int > > shapes, const std::vector< Dtype > &dtypes, const std::shared_ptr< Primitive > &primitive, const std::vector< array > &inputs)
 
-

Member Enumeration Documentation

- -

◆ Status

- -
-
- - - - -
enum mlx::core::array::Status
-
- - - - -
Enumerator
unscheduled 
scheduled 
available 
- -
-
-

Constructor & Destructor Documentation

- -

◆ array() [1/11]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - -
mlx::core::array::array (T val,
Dtype dtype = TypeToDtype<T>() )
-
-explicit
-
- -

Construct a scalar array with zero dimensions.

- -
-
- -

◆ array() [2/11]

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::array::array (const std::complex< float > & val,
Dtype dtype = complex64 )
-
-explicit
-
- -
-
- -

◆ array() [3/11]

- -
-
-
-template<typename It >
- - - - - - - - - - - - - - - - -
mlx::core::array::array (It data,
std::vector< int > shape,
Dtype dtype = TypeToDtype<typename std::iterator_traits<It>::value_type>() )
-
- -
-
- -

◆ array() [4/11]

- -
-
-
-template<typename T >
- - - - - - - - - - - -
mlx::core::array::array (std::initializer_list< T > data,
Dtype dtype = TypeToDtype<T>() )
-
- -
-
- -

◆ array() [5/11]

- -
-
- - - - - - - -
mlx::core::array::array (std::initializer_list< float > data)
-
- -
-
- -

◆ array() [6/11]

- -
-
- - - - - - - - - - - -
mlx::core::array::array (std::initializer_list< int > data,
Dtype dtype )
-
- -
-
- -

◆ array() [7/11]

- -
-
-
-template<typename T >
- - - - - - - - - - - - - - - - -
mlx::core::array::array (std::initializer_list< T > data,
std::vector< int > shape,
Dtype dtype = TypeToDtype<T>() )
-
- -
-
- -

◆ array() [8/11]

- -
-
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::array::array (allocator::Buffer data,
std::vector< int > shape,
Dtype dtype,
deleter_t deleter = allocator::free )
-
- -
-
- -

◆ array() [9/11]

- -
-
- - - - - -
- - - - - - - -
mlx::core::array::array (const array & other)
-
-default
-
- -
-
- -

◆ array() [10/11]

- -
-
- - - - - -
- - - - - - - -
mlx::core::array::array (array && other)
-
-default
-
- -
-
- -

◆ array() [11/11]

- -
-
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::array::array (std::vector< int > shape,
Dtype dtype,
std::shared_ptr< Primitive > primitive,
std::vector< array > inputs )
-
- -

The following methods should be used with caution.

-

They are intended for use by the backend implementation and the API may change.

- -
-
- -

◆ ~array()

- -
-
- - - - - - - -
mlx::core::array::~array ()
-
- -
-
-

Member Function Documentation

- -

◆ attach_event()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::array::attach_event (Event e) const
-
-inline
-
- -
-
- -

◆ begin()

- -
-
- - - - - -
- - - - - - - -
ArrayIterator mlx::core::array::begin () const
-
-inline
-
- -
-
- -

◆ buffer() [1/2]

- -
-
- - - - - -
- - - - - - - -
allocator::Buffer & mlx::core::array::buffer ()
-
-inline
-
- -
-
- -

◆ buffer() [2/2]

- -
-
- - - - - -
- - - - - - - -
const allocator::Buffer & mlx::core::array::buffer () const
-
-inline
-
- -
-
- -

◆ buffer_size()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::buffer_size () const
-
-inline
-
- -
-
- -

◆ copy_shared_buffer() [1/2]

- -
-
- - - - - - - -
void mlx::core::array::copy_shared_buffer (const array & other)
-
- -
-
- -

◆ copy_shared_buffer() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void mlx::core::array::copy_shared_buffer (const array & other,
const std::vector< size_t > & strides,
Flags flags,
size_t data_size,
size_t offset = 0 )
-
- -
-
- -

◆ data() [1/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
T * mlx::core::array::data ()
-
-inline
-
- -
-
- -

◆ data() [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
const T * mlx::core::array::data () const
-
-inline
-
- -
-
- -

◆ data_shared_ptr()

- -
-
- - - - - -
- - - - - - - -
std::shared_ptr< Data > mlx::core::array::data_shared_ptr () const
-
-inline
-
- -
-
- -

◆ data_size()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::data_size () const
-
-inline
-
- -

The size (in elements) of the underlying buffer the array points to.

-

This can be different than the actual size of the array if the array has been broadcast or irregularly strided. If first is the offset into the data buffer of the first element of the array (i.e. the offset corresponding to arr[0, 0, ...]) and last is the offset into the data buffer of the last element of the array (i.e. the offset corresponding to arr[-1, -1, ...]) then data_size = last - first. Note, data_size is in units of item_size (not bytes).

- -
-
- -

◆ detach()

- -
-
- - - - - - - -
void mlx::core::array::detach ()
-
- -

Detach the array from the graph.

- -
-
- -

◆ dtype()

- -
-
- - - - - -
- - - - - - - -
Dtype mlx::core::array::dtype () const
-
-inline
-
- -

Get the arrays data type.

- -
-
- -

◆ end()

- -
-
- - - - - -
- - - - - - - -
ArrayIterator mlx::core::array::end () const
-
-inline
-
- -
-
- -

◆ eval()

- -
-
- - - - - - - -
void mlx::core::array::eval ()
-
- -

Evaluate the array.

- -
-
- -

◆ event()

- -
-
- - - - - -
- - - - - - - -
Event & mlx::core::array::event () const
-
-inline
-
- -
-
- -

◆ flags()

- -
-
- - - - - -
- - - - - - - -
const Flags & mlx::core::array::flags () const
-
-inline
-
- -

Get the Flags bit-field.

- -
-
- -

◆ has_primitive()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::array::has_primitive () const
-
-inline
-
- -

Check if the array has an attached primitive or is a leaf node.

- -
-
- -

◆ id()

- -
-
- - - - - -
- - - - - - - -
std::uintptr_t mlx::core::array::id () const
-
-inline
-
- -

A unique identifier for an array.

- -
-
- -

◆ inputs() [1/2]

- -
-
- - - - - -
- - - - - - - -
std::vector< array > & mlx::core::array::inputs ()
-
-inline
-
- -
-
- -

◆ inputs() [2/2]

- -
-
- - - - - -
- - - - - - - -
const std::vector< array > & mlx::core::array::inputs () const
-
-inline
-
- -

The array's inputs.

- -
-
- -

◆ is_available()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::array::is_available () const
-
-inline
-
- -
-
- -

◆ is_donatable()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::array::is_donatable () const
-
-inline
-
- -

True indicates the arrays buffer is safe to reuse.

- -
-
- -

◆ is_tracer()

- -
-
- - - - - - - -
bool mlx::core::array::is_tracer () const
-
- -
-
- -

◆ item() [1/2]

- -
-
-
-template<typename T >
- - - - - - - -
T mlx::core::array::item ()
-
- -

Get the value from a scalar array.

- -
-
- -

◆ item() [2/2]

- -
-
-
-template<typename T >
- - - - - - - -
T mlx::core::array::item () const
-
- -
-
- -

◆ itemsize()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::itemsize () const
-
-inline
-
- -

The size of the array's datatype in bytes.

- -
-
- -

◆ make_arrays()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
static std::vector< array > mlx::core::array::make_arrays (std::vector< std::vector< int > > shapes,
const std::vector< Dtype > & dtypes,
const std::shared_ptr< Primitive > & primitive,
const std::vector< array > & inputs )
-
-static
-
- -
-
- -

◆ move_shared_buffer() [1/2]

- -
-
- - - - - - - -
void mlx::core::array::move_shared_buffer (array other)
-
- -
-
- -

◆ move_shared_buffer() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void mlx::core::array::move_shared_buffer (array other,
const std::vector< size_t > & strides,
Flags flags,
size_t data_size,
size_t offset = 0 )
-
- -
-
- -

◆ nbytes()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::nbytes () const
-
-inline
-
- -

The number of bytes in the array.

- -
-
- -

◆ ndim()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::ndim () const
-
-inline
-
- -

The number of dimensions of the array.

- -
-
- -

◆ operator=() [1/4]

- -
-
- - - - - -
- - - - - - - -
array & mlx::core::array::operator= (array && other) &&
-
-delete
-
- -
-
- -

◆ operator=() [2/4]

- -
-
- - - - - -
- - - - - - - -
array & mlx::core::array::operator= (array && other) &
-
-default
-
- -

Default copy and move constructors otherwise.

- -
-
- -

◆ operator=() [3/4]

- -
-
- - - - - -
- - - - - - - -
array & mlx::core::array::operator= (const array & other) &
-
-inline
-
- -
-
- -

◆ operator=() [4/4]

- -
-
- - - - - -
- - - - - - - -
array & mlx::core::array::operator= (const array & other) &&
-
-delete
-
- -

Assignment to rvalue does not compile.

- -
-
- -

◆ outputs()

- -
-
- - - - - -
- - - - - - - -
std::vector< array > mlx::core::array::outputs () const
-
-inline
-
- -

The outputs of the array's primitive (i.e.

-

this array and its siblings) in the order the primitive expects.

- -
-
- -

◆ overwrite_descriptor()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::array::overwrite_descriptor (const array & other)
-
-inline
-
- -
-
- -

◆ primitive()

- -
-
- - - - - -
- - - - - - - -
Primitive & mlx::core::array::primitive () const
-
-inline
-
- -

The array's primitive.

- -
-
- -

◆ primitive_id()

- -
-
- - - - - -
- - - - - - - -
std::uintptr_t mlx::core::array::primitive_id () const
-
-inline
-
- -

A unique identifier for an arrays primitive.

- -
-
- -

◆ primitive_ptr()

- -
-
- - - - - -
- - - - - - - -
std::shared_ptr< Primitive > & mlx::core::array::primitive_ptr () const
-
-inline
-
- -

A shared pointer to the array's primitive.

- -
-
- -

◆ set_data() [1/2]

- -
-
- - - - - - - - - - - -
void mlx::core::array::set_data (allocator::Buffer buffer,
deleter_t d = allocator::free )
-
- -
-
- -

◆ set_data() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void mlx::core::array::set_data (allocator::Buffer buffer,
size_t data_size,
std::vector< size_t > strides,
Flags flags,
deleter_t d = allocator::free )
-
- -
-
- -

◆ set_siblings()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::array::set_siblings (std::vector< array > siblings,
uint16_t position )
-
-inline
-
- -
-
- -

◆ set_status()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::array::set_status (Status s) const
-
-inline
-
- -
-
- -

◆ set_tracer()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::array::set_tracer (bool is_tracer)
-
-inline
-
- -
-
- -

◆ shape() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::vector< int > & mlx::core::array::shape () const
-
-inline
-
- -

The shape of the array as a vector of integers.

- -
-
- -

◆ shape() [2/2]

- -
-
- - - - - -
- - - - - - - -
int mlx::core::array::shape (int dim) const
-
-inline
-
- -

Get the size of the corresponding dimension.

-

This function supports negative indexing and provides bounds checking.

- -
-
- -

◆ siblings() [1/2]

- -
-
- - - - - -
- - - - - - - -
std::vector< array > & mlx::core::array::siblings ()
-
-inline
-
- -

The array's siblings.

- -
-
- -

◆ siblings() [2/2]

- -
-
- - - - - -
- - - - - - - -
const std::vector< array > & mlx::core::array::siblings () const
-
-inline
-
- -

The array's siblings.

- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::size () const
-
-inline
-
- -

The number of elements in the array.

- -
-
- -

◆ status()

- -
-
- - - - - -
- - - - - - - -
Status mlx::core::array::status () const
-
-inline
-
- -
-
- -

◆ strides() [1/2]

- -
-
- - - - - -
- - - - - - - -
const std::vector< size_t > & mlx::core::array::strides () const
-
-inline
-
- -

The strides of the array.

- -
-
- -

◆ strides() [2/2]

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::array::strides (int dim) const
-
-inline
-
- -

Get the stride of the corresponding dimension.

-

This function supports negative indexing and provides bounds checking.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather-members.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather-members.html deleted file mode 100644 index 8d3fa29f..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::distributed::AllGather Member List
-
-
- -

This is the complete list of members for mlx::core::distributed::AllGather, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
AllGather(Stream stream, Group group)mlx::core::distributed::AllGatherinline
DEFINE_PRINT(AllGather)mlx::core::distributed::AllGather
device()mlx::core::Primitiveinline
DistPrimitive(Stream stream, Group group)mlx::core::distributed::DistPrimitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::AllGathervirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::AllGathervirtual
group() constmlx::core::distributed::DistPrimitiveinline
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::distributed::AllGathervirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::distributed::AllGathervirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::distributed::AllGathervirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.html deleted file mode 100644 index a37da0b1..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::AllGather Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::distributed::AllGather Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::distributed::AllGather:
-
-
- - -mlx::core::distributed::DistPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 AllGather (Stream stream, Group group)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
 DEFINE_PRINT (AllGather)
 
- Public Member Functions inherited from mlx::core::distributed::DistPrimitive
 DistPrimitive (Stream stream, Group group)
 
const Groupgroup () const
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ AllGather()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::distributed::AllGather::AllGather (Stream stream,
Group group )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - - - -
mlx::core::distributed::AllGather::DEFINE_PRINT (AllGather )
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::AllGather::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::AllGather::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::distributed::AllGather::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::distributed::AllGather::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
std::pair< std::vector< array >, std::vector< int > > mlx::core::distributed::AllGather::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.png b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.png deleted file mode 100644 index c26746b4f7379a296aa27607e96c4b44d62460da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1072 zcmeAS@N?(olHy`uVBq!ia0vp^CxN(wgBeIx$=Lq`QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GV>JzX3_Dj46+eVwPR$kWp9 z*!Ab1f6XTG0}Ye&CT}USTqmK+nDZyG;J?!IInxDHf89mAl>Y_fMAW-lujkv{7aM;{FL&W?#F$?w0wa=_l5eF8>t0 zwOd72%fsW+^rjY-T1^mRn$k(j=b|hO_Uoh>bQY$11jdeabBg1fPN?i`fLoL{$z{_0%XgPVP3@C2{!babt?Zrm>_JIHtzTQfuN1XOi@&t=W!^ZZ zw6XZouU{WkF6GQuki5TmTa{Olgq_Mtxi`g925kX8LW{*_{*>_emHk6OJetn%yQzG(o_TC-xzUw%F0a0cdZzzi^*mbxym0)wt1;2jch=rAo|hyPiex@C0pTBk?0zh_TW z%Clqz$^LU^I;RFtTykr&Pn76ONzd<(dhhg2Jo7$9YWuxT&m{X};rY|Gg52J&`dhYq z*X^a>uPx156hq@jl}@n=KwJKQu#a^%Sg diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce-members.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce-members.html deleted file mode 100644 index 021b4673..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce-members.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::distributed::AllReduce Member List
-
-
- -

This is the complete list of members for mlx::core::distributed::AllReduce, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
AllReduce(Stream stream, Group group, ReduceType reduce_type)mlx::core::distributed::AllReduceinline
And enum valuemlx::core::distributed::AllReduce
device()mlx::core::Primitiveinline
DistPrimitive(Stream stream, Group group)mlx::core::distributed::DistPrimitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::AllReducevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::AllReducevirtual
group() constmlx::core::distributed::DistPrimitiveinline
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::distributed::AllReducevirtual
Max enum valuemlx::core::distributed::AllReduce
Min enum valuemlx::core::distributed::AllReduce
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
Or enum valuemlx::core::distributed::AllReduce
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os) overridemlx::core::distributed::AllReduceinlinevirtual
Prod enum valuemlx::core::distributed::AllReduce
ReduceType enum namemlx::core::distributed::AllReduce
stream()mlx::core::Primitiveinline
Sum enum valuemlx::core::distributed::AllReduce
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::distributed::AllReducevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::distributed::AllReducevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.html deleted file mode 100644 index a6735665..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::AllReduce Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::distributed::AllReduce Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::distributed::AllReduce:
-
-
- - -mlx::core::distributed::DistPrimitive -mlx::core::Primitive - -
- - - - -

-Public Types

enum  ReduceType {
-  And -, Or -, Sum -, Prod -,
-  Min -, Max -
- }
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 AllReduce (Stream stream, Group group, ReduceType reduce_type)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
void print (std::ostream &os) override
 Print the primitive.
 
- Public Member Functions inherited from mlx::core::distributed::DistPrimitive
 DistPrimitive (Stream stream, Group group)
 
const Groupgroup () const
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Member Enumeration Documentation

- -

◆ ReduceType

- -
-
- - - - - - - -
Enumerator
And 
Or 
Sum 
Prod 
Min 
Max 
- -
-
-

Constructor & Destructor Documentation

- -

◆ AllReduce()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::distributed::AllReduce::AllReduce (Stream stream,
Group group,
ReduceType reduce_type )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::AllReduce::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::AllReduce::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::distributed::AllReduce::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ print()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::distributed::AllReduce::print (std::ostream & os)
-
-inlineoverridevirtual
-
- -

Print the primitive.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::distributed::AllReduce::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
std::pair< std::vector< array >, std::vector< int > > mlx::core::distributed::AllReduce::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.png b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.png deleted file mode 100644 index 5546be5c94c4c16c66956ba470a8bbb405f97d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 zcmeAS@N?(olHy`uVBq!ia0vp^CxN(wgBeIx$=Lq`QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GU0JzX3_Dj46+eckukfTQJj z^2$el=l|HU^TvY-X1B}wBf3v5-qEL6bL@lk)@xR+0iH!ns+^w3f+kH!(W!L`^7ypt z)Z^zj?>&F5aB}-sd(U|{YPvqkdEWFdn7Kk@oAQ16)7$2??)&*Mt?=UCJKML~U+YrQ zeFC(Gh{MLpv# zwX5uUKIh4kh^zXZ9-of?>NyhfCqljb_Sac1<*bwbbnbJylsD^bZ0_HGZBmO$vL=YJOljrTYmzJs``1Y`_$CNnq?)7nMENX@!bqBiy1sl~$GdWxG8$-%_tS`|NrU)+banK2Jz_&(x4XYS4n? z;kDM%DVi-xN=A*7TwGM9feAm4dk1#UHd$S}=(^1QU-zxzd8dV`C}r*8d$C&O-XA5; z$p1Mi>v>#V+#)9(y`Q|$`d-|c^ey(=nuFW!7S(@^h?HM_xbzlp_~hp*Y1zfeNtViy z`=VX?4*$C3{kvB{Giyuh#pYQvTNAr?U+sKqqVB9=wjF5JOYyZjISJ`1T9X=6R!=q- zzx9Y)WtZ01?S1Yxa_`H2@_6>&y{Bw1`S|<%$rgK0oIUPf6enS>9_Q!UC3WsvvY*S6 z{$QctkI8c_Cd#~ivf|sy@|yqv diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive-members.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive-members.html deleted file mode 100644 index 84584829..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::distributed::DistPrimitive Member List
-
-
- -

This is the complete list of members for mlx::core::distributed::DistPrimitive, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
device()mlx::core::Primitiveinline
DistPrimitive(Stream stream, Group group)mlx::core::distributed::DistPrimitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0mlx::core::Primitivepure virtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0mlx::core::Primitivepure virtual
group() constmlx::core::distributed::DistPrimitiveinline
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.html deleted file mode 100644 index 512c65c5..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::DistPrimitive Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::distributed::DistPrimitive Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::distributed::DistPrimitive:
-
-
- - -mlx::core::Primitive -mlx::core::distributed::AllGather -mlx::core::distributed::AllReduce -mlx::core::distributed::Recv -mlx::core::distributed::Send - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 DistPrimitive (Stream stream, Group group)
 
const Groupgroup () const
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs)=0
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
virtual void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs)=0
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ DistPrimitive()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::distributed::DistPrimitive::DistPrimitive (Stream stream,
Group group )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ group()

- -
-
- - - - - -
- - - - - - - -
const Group & mlx::core::distributed::DistPrimitive::group () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.png b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.png deleted file mode 100644 index 44bcc2932ece3d364f2957d3a809c29ec245aef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2061 zcmcIleNaNw8{`3X~o!d!8 zA(3BVDQL8OJEp9(^hhPz)ph3@i(3K1S}#*azl5RXUxnwS-mjyGlS~Xtt`)CDa|6_8 z#xTAuks8h6E?Y<4=#rJG>@$tNJisyU_~vbyDqFPCkO4t)&YcI17*^&Y;i0Tc_VrEu zYSzlwJW+~);VXR9p24proiBtOupQyI`OeLBN5`%uDi*%|90NylsT3V{{)S6dpNM{+7e;wPp_Y*-&O`N#T zSx53FLBClWn7=$-`+3}(i%Q!%CkmopoOoa-rZ6^1MTR%Kl6&*U_1BkqQdRb#R6q6n zLH0k-kD)|cMuS2|dPxV z{YTye%}Fy+dd}rf6gcKc;nUVfWa(!&j91*8Lf&IpXu{{Y+OJIbGKJ;*jbXM+d`2oZejnY2!tNx-GV|lq!Q! z?Qt4tv2K`Z!Y<7BRNC^nR$1c*r-ld-{QG(vKWHh@a{OQVt&~h*ZYzK>@*hP_YTy!6 zgFkjAQcY-_P+9)nt0OMgOIVDazF5H-asw%&w^;Jy)5j%_yjPD9&XFJ2UzzLiymNOc zZ1iIs@F?2Whd(->2;DaLZ#|kKohfOD6-4Lc zUy;hrc#Q8+nX?^^1CUfRk$&wGYbJAJMY1)Aeb_-SCt>YVxTTnIzj2#aF~JCVw?V@HZNa3m&GA z921z;*&4~qf}?}|KUl5uv!cmS_Q|P=EIXoybC^7NRu!~VXW7n>^_tGLrkhzL$-M?8 znIB|#Z<+Crf2t^+Iy-vqftJD)F_QlT0-hn$W*pEbt z{8Q2+212xpMoZzra?&lwUoa6Z&C7QzO;T|ZbX$W1 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::distributed::Recv Member List
-
-
- -

This is the complete list of members for mlx::core::distributed::Recv, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
DEFINE_PRINT(Recv)mlx::core::distributed::Recv
device()mlx::core::Primitiveinline
DistPrimitive(Stream stream, Group group)mlx::core::distributed::DistPrimitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::Recvvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::Recvvirtual
group() constmlx::core::distributed::DistPrimitiveinline
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
Recv(Stream stream, Group group, int src)mlx::core::distributed::Recvinline
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.html deleted file mode 100644 index bb965428..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::Recv Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::distributed::Recv Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::distributed::Recv:
-
-
- - -mlx::core::distributed::DistPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Recv (Stream stream, Group group, int src)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
 DEFINE_PRINT (Recv)
 
- Public Member Functions inherited from mlx::core::distributed::DistPrimitive
 DistPrimitive (Stream stream, Group group)
 
const Groupgroup () const
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Recv()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::distributed::Recv::Recv (Stream stream,
Group group,
int src )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - - - -
mlx::core::distributed::Recv::DEFINE_PRINT (Recv )
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::Recv::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::Recv::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.png b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_recv.png deleted file mode 100644 index c64f787fa97c55914450c096d36f467c6abde30a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1035 zcmeAS@N?(olHy`uVBq!ia0vp^CxN(wgBeIx$=Lq`QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWEJY5_^Dj46+P3(KEz|+$1 zxT@yA@P4(-4qm_6+jjfMJ?RS6NO;V@p?>kTsO17$o_-5d6i-HY2~Fx*n(x8o85bT| zH}CD<{ic)tMEsxpr1R`{iTM+!{AIb`*Y&9I$?x>ovO9-1R?Liym8pAo`j&jQ>!j&l zI8Sae=AN5&_@eXg&wXdw(@z;uFd<^HvD6}88|Z6xEaXA8xOdVG@o%i&p_xvgyLzT(POle2S9{a+QU zA{pT6G-=}$6%|Qu5W_^&bM4l13JgC=?=mEC`8pTvKHFr(dr~$-vd2#nmg+8|NIo?s4i};@ca}m**d!sCmBqsomC|ocU)TUbE#f7nY59zRyIZIYZf$%Ox(WvN80hF)iI_nqG_Jl+`F>=b_Qw>Q0P;*qmI zuK67MUirwy=-EkwcTYXTcXO@0tu2)NqiMYtAsk>GFg-d7BsbI2W+&0^TGr3SyT|F=`EPaZwAH)X@Qq9w2eabP|8Yd$qG!?_U@mf4{NrXJ^Nr z#rIV{{<`jAck{ER=S}}YaHy8fv^!c|zx~egX%pXWw!E{e{bAari8E@;Iy)??{D48~ za%`Dh^p@Ng7rQ$0auG!vD_c$(^ z9O8a`VV}zEh2=t3>-HuI3WiVjoD=orp1XU}{D&v!R+Qg5`&Xv(F&Dc)GYGX~Kz2tw}*% cGadgkWH_B)<0~o^0?f7yp00i_>zopr05)aXz5oCK diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send-members.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send-members.html deleted file mode 100644 index 36f743da..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::distributed::Send Member List
-
-
- -

This is the complete list of members for mlx::core::distributed::Send, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
DEFINE_PRINT(Send)mlx::core::distributed::Send
device()mlx::core::Primitiveinline
DistPrimitive(Stream stream, Group group)mlx::core::distributed::DistPrimitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::Sendvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::distributed::Sendvirtual
group() constmlx::core::distributed::DistPrimitiveinline
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
Send(Stream stream, Group group, int dst)mlx::core::distributed::Sendinline
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::distributed::Sendvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.html b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.html deleted file mode 100644 index b267427a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::Send Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::distributed::Send Class Reference
-
-
- -

#include <primitives.h>

-
-Inheritance diagram for mlx::core::distributed::Send:
-
-
- - -mlx::core::distributed::DistPrimitive -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Send (Stream stream, Group group, int dst)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
 DEFINE_PRINT (Send)
 
- Public Member Functions inherited from mlx::core::distributed::DistPrimitive
 DistPrimitive (Stream stream, Group group)
 
const Groupgroup () const
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Send()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::distributed::Send::Send (Stream stream,
Group group,
int dst )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - - - -
mlx::core::distributed::Send::DEFINE_PRINT (Send )
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::Send::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::distributed::Send::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
std::pair< std::vector< array >, std::vector< int > > mlx::core::distributed::Send::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.png b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_send.png deleted file mode 100644 index c4b5ed9bd4bd841700b69d0fed123960199a9198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1046 zcmeAS@N?(olHy`uVBq!ia0vp^CxN(wgBeIx$=Lq`QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GT*JzX3_Dj46+eckuifTOj) ze`(kE`bWN#k1@_JxpaC>gub$Tt5w^Fn{7Y4qq65Ztx&OSoYbO{tm)}tG|f&?Q>8NY z>A&Yc^}d;Te9HanJ4xMce$pQIpl`AtdniOM%*** zlC{cr{mmC7&17x2#>;;_*1K4F!jsayrE0$p-<>zPb#czzFE#&JI-{Q~SLy$qwa4Sr zBs-Ohw$GpV99#8oVv9=rwRDwbkA7Q8=3PIpvP*ly6YXDIp1U)*m7CtS+~YJWvFvI7 zSG`F*D^wIuMtBKL>RAe6%<5WlEh=4r;m@u-27}gRiaYP7InHcLVVud5DmUp(EQ5fr zClkZQDJl#C-Xt&zVz*wiY7Ou#Vp8SwJQg%*LW)kWN~=oz?=RkI&$_ptdbb@D@=|5ufXoBv38-c(-GcGu)@Mb6Bwnu>Sp-x=Rd=H4;0{qeI! z!mpLK@br0D`TbrPZ0T|By;zaVwP1f+H^r|R!nG`^Gry)ty2)qy_$^O8zr_2fT$4{pKlb^}@i}HC`E0M%%c^k2uRl7ESp0LiV@`Ob8r5OnEo<0=FQ#W`qKF~<)ROqwUIHO zF86X{MU0YC($_gDy@4*r7Rp6$%Y9|o)ghO=sDFXZ?j0XrMZBNyIlb%dW+kP)K5W0I zL>buZiVd7y@km+e(aUU=T^?VTTVI)&QY>>>=3Z_0k(aLTDoa$pNzI$nS-$M?ZvBZf zy57G&ax!I&@cVQ8rACwH=m-jKteUvwuH^0AA+vA3pRzO7O7?Dh+r82w+Z{tg1O@&7 w-~L}AIPry-kl;jMiiHtT9$uQMY=0RKJU(CjQT@FoFb6Yuy85}Sb4q9e0A$|U5dZ)H diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize-members.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize-members.html deleted file mode 100644 index 0336e5fb..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::AffineQuantize Member List
-
-
- -

This is the complete list of members for mlx::core::fast::AffineQuantize, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
AffineQuantize(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, int group_size, int bits, bool dequantize)mlx::core::fast::AffineQuantizeinlineexplicit
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(AffineQuantize)mlx::core::fast::AffineQuantize
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::AffineQuantizeinlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::AffineQuantizevirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::Customvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.html deleted file mode 100644 index e0e7182a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::AffineQuantize Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::AffineQuantize Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::AffineQuantize:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 AffineQuantize (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, int group_size, int bits, bool dequantize)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
 DEFINE_PRINT (AffineQuantize)
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ AffineQuantize()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::fast::AffineQuantize::AffineQuantize (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
int group_size,
int bits,
bool dequantize )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - - - -
mlx::core::fast::AffineQuantize::DEFINE_PRINT (AffineQuantize )
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::AffineQuantize::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::AffineQuantize::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_affine_quantize.png deleted file mode 100644 index 08c501ce3fc934ee48bebac14dbf1844bcb6ad79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^n}E23gBeJcY;~Lnq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#Nt#JY5_^Dj46+eckt2i^p}l zdC=4E^^Yb?C+KC)p11LfqGghAkY3tR#%KCLUYWWRJc?AEW~%JvOr7-Q*~U#1o_s%1 zclKD``Ei#{MGmmW)^!Q|ZKmF#p3#k)D`nF{6te;r#UAgOV-qiI=uk|RMjIImZ zX8l*~^kcE#D|{x!e{3$={P)*Z8=ao>r^>n~JyEX<*Xv$lYk2DOlVXmWQ=WbO|L2Ip z$@-Q6HP3vQL(_bpP6>+QV)*col_7iMyic#U&iPz*YWByhbKF|TI~f`NwHPr}2%lnj z;H$yhV7`!t;T{2joOM9+xK$>_bi%Cp85HU9iSZJzfqm+353{F%74lEb{f-CU|JQzM z6Z`GQvixdarmn29-gWiK-2SEgxvOi9cK(!_lCE;nQhv&I4$F=S+h*Lh%w4&OcL~qZ zKsl#plAcB9mh0SZxO-i-RoPds`|*XO`@2pbT5j@x?xwq8l~<=EZa=m3rt{AKt5lXQ zu3Q>rDQRhDtzmw9ef;Uot%Z*#Jf8D<+My_oHLWVoZ9>5T^vW=B`5kS&jk`Ku@2q*d zX;VepM-@xue~FWqm@o911oW|ImGCK*muHvF3G(u0WU$-Akf3`lxNh&X;yC|Gek2oQ`_Gyd$j4!|1*oHrG;K?oZYslrp3N_d*eEr zC$}%IUG}U-r*_sh?JIG`SLBYmX$Mc=e(I~`rAp&qlT+^YfwJDxm&0zdg=ThlW%(O! zpI}``qbsO;a-=Qg96u3=Ux63>Djv)*q`pY zb1!9Q_0M-lHvHbZX4{^f>uYW9TOB@Gpxa{giYp}k(c8|2t9G$1T(jzxug2fV}_I!c>F{xc?*Z!^qQJ - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::Custom Member List
-
-
- -

This is the complete list of members for mlx::core::fast::Custom, including all inherited members.

- - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0mlx::core::Primitivepure virtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0mlx::core::Primitivepure virtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::Customvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.html deleted file mode 100644 index 745d2537..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::Custom Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::Custom Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::Custom:
-
-
- - -mlx::core::Primitive -mlx::core::fast::AffineQuantize -mlx::core::fast::LayerNorm -mlx::core::fast::LayerNormVJP -mlx::core::fast::RMSNorm -mlx::core::fast::RMSNormVJP -mlx::core::fast::RoPE -mlx::core::fast::ScaledDotProductAttention - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs)=0
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
virtual void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs)=0
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ Custom()

- -
-
- - - - - -
- - - - - - - - - - - -
mlx::core::fast::Custom::Custom (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ jvp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
virtual std::vector< array > mlx::core::fast::Custom::jvp (const std::vector< array > & primals,
const std::vector< array > & tangents,
const std::vector< int > & argnums )
-
-overridevirtual
-
- -

The Jacobian-vector product.

- -

Reimplemented from mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
virtual std::vector< array > mlx::core::fast::Custom::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::Primitive.

- -

Reimplemented in mlx::core::fast::RMSNorm, mlx::core::fast::LayerNorm, and mlx::core::fast::RoPE.

- -
-
- -

◆ vmap()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual std::pair< std::vector< array >, std::vector< int > > mlx::core::fast::Custom::vmap (const std::vector< array > & inputs,
const std::vector< int > & axes )
-
-overridevirtual
-
- -

The primitive must know how to vectorize itself across the given axes.

-

The output is a pair containing the output arrays representing the vectorized computation and the axes which corresponds to the vectorized dimensions of each output.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.png deleted file mode 100644 index d348e8e12d6362b54d15d015fec93938de90decc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3025 zcmd5;X;c$g7Di>1Q2~z|9t1LTw58hxL{QKm!G(#?NF1fWVT(K1%BDaWlfaA%s2oYR z3<3&*8)yZ{C=ir_V0T1RRtaG>lFtJL7=Ak_8INZDlIyhj zyNFe(HG`i%eZujrwLXvVxj#l7^g3jK|JIq~+`CN%28#mR_wMq(FlR(GbnAh~D#Hdo z`O42q(r9R?SwuQ_g?~6Oabf<+sWq&i{VHEPNo$2Teh{9Vnfy9YnwSo=(a8kdz16E22Rb@GnMo<^I zEM+>Zl`G(8$Aq5>+`1UaQY4DP5HyupB6?1&9CD_@mZXg=2)ej?CT%;{2MJX^jW3n? z-EL+GHGD?3aIB{O05F~>w=~49C^Vnv-z0dNHi5=NJ4(=ZoQgK9J;J^X%ms6_rntBV zv0NX4 z8DM`&D0J`ArF13E#{7{}`n?{rpT%w$ z>2~RV=J_3^{6D)4uZ}-DXrkqUp~IQ9oYP`YeY0+Vm9Xx!oPK@~QBOGV+vXIq_$`RT z{=}Bj{EV4p-11yh^Vbj<9Ow|}xVt1GYv9g_)@>gqmcx#PLFVyjy|OZ_1Xbh;tC;;A zUP=p#ZK&xEMvudO!DT(&xzdye1BZUmUgRvRM4GGMUeZDDh*l#*Z zoqK1K+*W7S6~{Sx3ZlYzYVQa$|Na!3&;2oZlsY=Mlra zW~lYbvUwP$83zvId_J{-V?lelUC%7=a6TGiy(449+e@%{|DpjV7<43I>@1b4b4(`k9{aCF2d{cb(} zPf_@?$6wctFD_da^BXL+YGY({SU6uNH*?K@(zh@E?6&Wmb#ozPec#Mw062^NMUS=L z;(kq^zU28GrToSvn|8PM)UyBb5o{dv%6httG>VV=zC*-8&+a{(rG$$qlMU&fJLKze z@VaR^-r3+8ko`KL?nL7Z$QT5sO?D(tHsD~;H!e}@l1<7za1f8s2sWhaKy3v3^e7#u zjljEHx7I};HuK%1*<5V7Wz;%-F2^*iNDJh+ zeNxY))%C1NeDpXap+D-bNAe(X4Wp3_;l*j^sDLnC9tZ%zOLfnw#d&Nq&;V z+V`n0JU}h27Wo6k^1Uj`^|IDdn68O_=q;2KcT!@@KeSRcM=PajhS2X27Nt^H0j5Z%=^6h}cs_>&VfnAJ7Byh)fx|66ZjLZ_{bG?b~}he%@4DoHhfweaY>dV_N` z$ET$Ok=qG55VRt%1q8`2+Ca0=i1Rj_EQvRP#AsW?EFn&T_M13AAa4^Yc{!>6EagV- z2&Fi%&>yDP)^p3AQmm&t&wwAp?36bkh_F+cOr@_)sy;5BDp1C?_`1l5lT1~8qBFcx zQ-%gPnEP63a*?+lhp-S8<%a5Y6Q>j8tWKR;^Z7ATQHo5+7FUZ{KP9mhtg*J@07-c( z=tHQEE<9h`qUNG8WMd$e)7MwyTkGg;Ta&w6r48++z1YnS}9`}?7Ykyk)6%*H%C?$}*q#9vy1_EKPx?X#=H^!3e1DjY)^YNnc>Bbo z#QZYnb2NWyj^D?r77x|Gd;wu5F2q~O$EMP#ABVDvKI=#0lSM!)zGW|luMDht;?Z&VdQfpcnPRw{S@Pt0;6JD+ z+;du5VeK;v1LW@a{J8BVgbyHL8O;tw#dy9RS!#q|>;Z)7+MAH8Nx@qgIVIrH1Fwu} zw%17WiPLAtW!Z)PU4A9y4^Wff_MkVXBQKKRypbE~KZIj&*{8%0YL||fmvPIjR(A9~ zodaShg^q1{7K7~ExwLR`?z{BN;E8$EJO&jhC&}*HnNod$=u|VgXg%rbSVFaPo8O^| zAf()0#y^BDV3st$$avhL4)Xc7oIWjWGfJRkWOd0WT}Ei0Q5TkH`1UhU+Ps - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::CustomKernel Member List
-
-
- -

This is the complete list of members for mlx::core::fast::CustomKernel, including all inherited members.

- - - - - - - - - - - - - - - - - - - -
CustomKernel(Stream stream, std::string name, std::string source, std::tuple< int, int, int > grid, std::tuple< int, int, int > threadgroup, std::vector< CustomKernelShapeInfo > shape_infos, bool ensure_row_contiguous, std::optional< float > init_value)mlx::core::fast::CustomKernelinline
DEFINE_PRINT(CustomKernel)mlx::core::fast::CustomKernel
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::CustomKernelinlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::CustomKernelvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)mlx::core::Primitivevirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)mlx::core::Primitivevirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes)mlx::core::Primitivevirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.html deleted file mode 100644 index dde6de3c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.html +++ /dev/null @@ -1,297 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::CustomKernel Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::CustomKernel Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::CustomKernel:
-
-
- - -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 CustomKernel (Stream stream, std::string name, std::string source, std::tuple< int, int, int > grid, std::tuple< int, int, int > threadgroup, std::vector< CustomKernelShapeInfo > shape_infos, bool ensure_row_contiguous, std::optional< float > init_value)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
 DEFINE_PRINT (CustomKernel)
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
 The vector-Jacobian product.
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes)
 The primitive must know how to vectorize itself across the given axes.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ CustomKernel()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::fast::CustomKernel::CustomKernel (Stream stream,
std::string name,
std::string source,
std::tuple< int, int, int > grid,
std::tuple< int, int, int > threadgroup,
std::vector< CustomKernelShapeInfo > shape_infos,
bool ensure_row_contiguous,
std::optional< float > init_value )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - - - -
mlx::core::fast::CustomKernel::DEFINE_PRINT (CustomKernel )
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::CustomKernel::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::CustomKernel::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom_kernel.png deleted file mode 100644 index e22688288376aa53a031e30d04d33484c5c1accb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006r zNklyGO%2!w};w3_#S;?w44d`a4#U8GuK*Q2DyhA$ZW8_TjRvj_`G&Y^@Q z$p|GZNk-^1SR={zWzWCS-pBhkNb-Hf!rtupnDkv(JMyr;xIla2j>o#Jdu z&tuv7quxc5W4#CabWY=7)DivEan8;%^y58{IB`g3$C}9C0LJ1215lUD9h)}`;K!g$& zFf*G)FiDz22`fnvN?1vXP!Iblyfqu#&u0Tms>Z`xl{JSB^S-G>+}FAokAD}ogI&!g^}{{3fajDqNY;%CwsTn` z?yS{EwbAR$dRNU^N~T^_{z`hf1Fy3;fZxNJq(*-L>l^1dtaIBX>}eh!MDgokx2ZeW z_6#Liqpmxuyp3V|%IYeqb?KsCz*Y^`*6gSZx+1P`gQ^5CU@v04E(6#0gWJHjs5`&| zskCXiXSb=--0m+~FEL!n-QBa2^rcEzNs3UyN>YRpR+1t#8?2exB>D%WHIAk!7Qes% O0000 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::LayerNorm Member List
-
-
- -

This is the complete list of members for mlx::core::fast::LayerNorm, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(LayerNorm) bool is_equivalent(const Primitive &other) const overridemlx::core::fast::LayerNorm
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::LayerNorminlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::LayerNormvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
LayerNorm(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)mlx::core::fast::LayerNorminline
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::LayerNormvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.html deleted file mode 100644 index dd9db97a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::LayerNorm Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::LayerNorm Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::LayerNorm:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LayerNorm (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
 DEFINE_PRINT (LayerNorm) bool is_equivalent(const Primitive &other) const override
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LayerNorm()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::fast::LayerNorm::LayerNorm (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
float eps )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - -
- - - - - - - -
mlx::core::fast::LayerNorm::DEFINE_PRINT (LayerNorm ) const &
-
-override
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::LayerNorm::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::LayerNorm::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::fast::LayerNorm::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::fast::Custom.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.png deleted file mode 100644 index 202a404d0d3ee549d25154cfcb6d4a2a78cd694a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 951 zcmeAS@N?(olHy`uVBq!ia0vp^bAh;ngBeJkdMtScNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcGXdAc};R4~4s`?~M30#9o{ zf6&wK^^eZ-8ni6wwYKiw()UB;)X|!Q2A{<>mzwB$s90(yx=*q@)TdHglcuin({hvD z;+@{L`YJye>yN)nJGVGsd)cJ@C97wgIDYNPb+a|^!esY+%TdgllN#~!;yI<0ebu{7 zrCOUW=_SrCdgXK8ps&|qlJdPbb9t}5<<+#gJa6~CpYw0>>K|Hqw=is0q{_{Y8|UuL z7OyV1`DKk;Sg!Eommr>C96F3xAmb@)#% z+r$5Va+&$*{H^=$r>no-Q~D~*FtG3a`SrOGcPH(QI(B29mD=Rp{hpPsleY1^op!Kt z&xCC=uJ3co+$6hXj#qLy*UWI0%+nR`-`vr&UGl+av$N~-E6Mg7em{8ltTsE{zuK>Q zW?5$VuKinHUv>(zlKOqiVn*e=f9KZi6#ctXI`v!9PMLK3WRYu5iMlGeKhLa7*|~S~ z*G1P}WFLMQ@ILHsb-B#HNq;ZbOxk*+-e}Sn!7`PX%CN9Hs<(7X8Y@HH1aStR(^tyY zUq4e7d|S6j`1RRb@p3VSJp_XWS;6D~n}h{tigm1dwWMY4s#X0Pf{-|1 z^tZZa3a_>Ob$Nfh>b>UAZMV}NT`9h0#`h*9^uJzTYu)*Co6oJkxpUgjqi0sFvQq&H j*Mhxu)Xya)>>tC9I}5dR|L^kxW-$g&S3j3^P6 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::LayerNormVJP Member List
-
-
- -

This is the complete list of members for mlx::core::fast::LayerNormVJP, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(LayerNormVJP) bool is_equivalent(const Primitive &other) const overridemlx::core::fast::LayerNormVJP
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::LayerNormVJPinlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::LayerNormVJPvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
LayerNormVJP(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)mlx::core::fast::LayerNormVJPinline
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::Customvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html deleted file mode 100644 index 81a4b6e4..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::LayerNormVJP Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::LayerNormVJP Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::LayerNormVJP:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 LayerNormVJP (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
 DEFINE_PRINT (LayerNormVJP) bool is_equivalent(const Primitive &other) const override
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ LayerNormVJP()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::fast::LayerNormVJP::LayerNormVJP (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
float eps )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - -
- - - - - - - -
mlx::core::fast::LayerNormVJP::DEFINE_PRINT (LayerNormVJP ) const &
-
-override
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::LayerNormVJP::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::LayerNormVJP::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.png deleted file mode 100644 index e81afc1426049bda9e0cf122b880207911ac2fe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmeAS@N?(olHy`uVBq!ia0vp^TY1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NsyJzX3_Dj46+eZ6V(8X-3M zS*t|8*B_l9XsM}I_%`L6_thmYmKI4w$wbtPCih%k$YCIv$D7a`&3vQaz7<1_U&TMS z6BSzGq_m&U>bQ_V!)7wtn86${YAt=k6(Id#(qp^P}z4 z6%920UdavhYh0EpvAmbzL!Wf^UB99TZ;m-HKmYon_kYgU0_M1=_mUvqnJ z{l;t0WxrpOdf@yo>F(QO$#L_Ip6o5%oy>Uevwg($oR{Y(6xsjKVBB?S?E(FB0uA+S z+u1f8T+5hKkj)^yY-^w4v6~Z?$bX!$0C2BW+6T4i?ZA#6WQP>dpYAQ|IED} z{wr*kZ=J6=DWx^qdlGM+uBX|KttvMkT$_~AOh{mtkQ2w{g%g6jCO^EUxfG~=`IJe# z>92R^3-U3adVJd9Z#lz>n5$=Zuc&y za~4)S{Gy`$7i6BtlHpC3+= eb>i6kQJ#0h&d1B9wMGGRBZH@_pUXO@geCyM#`Wd^ diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm-members.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm-members.html deleted file mode 100644 index ab88c81d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::RMSNorm Member List
-
-
- -

This is the complete list of members for mlx::core::fast::RMSNorm, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(RMSNorm) bool is_equivalent(const Primitive &other) const overridemlx::core::fast::RMSNorm
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::RMSNorminlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::RMSNormvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
RMSNorm(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)mlx::core::fast::RMSNorminline
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::RMSNormvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html deleted file mode 100644 index c476b2c9..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::RMSNorm Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::RMSNorm Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::RMSNorm:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 RMSNorm (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
 DEFINE_PRINT (RMSNorm) bool is_equivalent(const Primitive &other) const override
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ RMSNorm()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::fast::RMSNorm::RMSNorm (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
float eps )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - -
- - - - - - - -
mlx::core::fast::RMSNorm::DEFINE_PRINT (RMSNorm ) const &
-
-override
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::RMSNorm::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::RMSNorm::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::fast::RMSNorm::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::fast::Custom.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.png deleted file mode 100644 index 0cb8e0a310f3b7a732e96136a5e706655baa4d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmeAS@N?(olHy`uVBq!ia0vp^(}B2ygBeKPJ=n<#q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NtfJY5_^Dj46+yIm^eEWZ`yk2NDD^O+jqtBbZzew4C zZ1dlX-74n`Dovm7vyXR{v#-9n+i{Zcx{9fDwte5Y$KNdM#4?lYJ>~MApT2YGPx>MZ zb>sO%ahglF$T57-m1EeT&|PIKm))iNYHOyh=C)Pgcib6vI8`t<%>Tf|VE>Snq3#ej z!=Dy$h98{z3?GE!7#^taVL0HAtl(cuxR<6bhmfb9d&R^h^FJtg+CPtTnj}6Uui>Z0 zZT^$XYB>Izt~VEcpI`esRKK#Xg6~%RnIFk#e{L*aefvX|Zf#EV+sP--9$#SdxO)BC z=y#e+bf10fid~h%tm&M&r)@&zG5+7F?xiOcT9wbP6PdX1sNUM>S345zKW%z$slJoP z`m5I2?R$TzOqkMlY(9;R$Ws# zU-bB!uivh`U;nsbdJO;L$NvR9?$*Dvg?lC9_a_w4JSXqT&E zpEWN2E)$(Q<#FWn*|N(MH#=^RFI%+h=+;QrtqVP)BVRwMnQ5}e>3mpfc=6@eGcKfP zFW+pg_u15Q&7$jjd?sxEo3&@Qw%NSjuM$?}Re%x?$7UP8l`r?^O!>9vWoXf@d&jFd z--;Z!wbi?jQtY>Hzt4@G(^tK6YMH)j)%*`Zp - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::RMSNormVJP Member List
-
-
- -

This is the complete list of members for mlx::core::fast::RMSNormVJP, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(RMSNormVJP) bool is_equivalent(const Primitive &other) const overridemlx::core::fast::RMSNormVJP
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::RMSNormVJPinlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::RMSNormVJPvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
RMSNormVJP(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)mlx::core::fast::RMSNormVJPinline
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::Customvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html deleted file mode 100644 index 4b010e9d..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::RMSNormVJP Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::RMSNormVJP Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::RMSNormVJP:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 RMSNormVJP (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, float eps)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
 DEFINE_PRINT (RMSNormVJP) bool is_equivalent(const Primitive &other) const override
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ RMSNormVJP()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
mlx::core::fast::RMSNormVJP::RMSNormVJP (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
float eps )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - -
- - - - - - - -
mlx::core::fast::RMSNormVJP::DEFINE_PRINT (RMSNormVJP ) const &
-
-override
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::RMSNormVJP::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::RMSNormVJP::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.png deleted file mode 100644 index 39e2b0d047114e829281dfb67b725699313f8a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmeAS@N?(olHy`uVBq!ia0vp^>w&m~gBeIJd+L1>NJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcGDc)B=-R4~4s`?hb1f`Ds& z>?FUv|Ap7*a*N1YS-rf){EH^{$tV-dH&i~mG{c; zv#*s`{}Y*1)3o`$>-_i=_r6WtBlWvk@^!?%n%lFlimvUwZ(7|Um7X0|w`H%#r=HpS z-v1Es^Rix1JJo*2%9+PD3VM8+wEK1T;quq+T<*92yiNbuUb8&<&6V#bHY^kOocHn0 z^>?o)f0g}yrGKAFW&81cXX{>nEEood&FW;aHRgWnP#?a-L{iYUM&umo2Zf=^E>ZuF^giZ z;r8=0o=#n>kgC!9Ucji|W0G-QM7;Fc-z%0BEQvg-WO3z&X1RC4-UIQUxBk{p_kLOS zDtguacem?(CSAICX8FE3Uu0JAe|!7QcDwrYp9M-29@i92Jrt#}rd1`~=8Nvmi}U!u z2CR6zH(n;J^!l~W-*1Gernmi5u@tKB_q@~(^94uzq%X;zeKnVsGBEJRF>Da%{<$wM zn^XVU?w5M1duHX&;b(Z@`GcuJ{vkI5Fk~5i2<~He;7&l`xT?}70fEq~sT}d4q4tNu zL$CH<{JwI3iR`KKwbrx6e{ZfWH46&feYa@A`X78}SLaKvJF~jB^!D|CXZB6X{?=YL z^Ud2C1<}#BZtOC?Z`Ag-^3Uqz*&4<7*H*q$T(xaRwB*+H;TJtE-<3*k`fZY9w&VG2 zjw}A5t3yMiXPu7^%b&FW+2&fO^J&(V#Z&kD*ZBTV{$#29Yo&d - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::RoPE Member List
-
-
- -

This is the complete list of members for mlx::core::fast::RoPE, including all inherited members.

- - - - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(RoPE) bool is_equivalent(const Primitive &other) const overridemlx::core::fast::RoPE
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::RoPEinlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::RoPEvirtual
is_equivalent(const Primitive &other) constmlx::core::Primitiveinlinevirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
RoPE(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, int dims, bool traditional, float base, float scale, int offset, bool forward)mlx::core::fast::RoPEinline
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::RoPEvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.html deleted file mode 100644 index 745b490b..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::RoPE Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::RoPE Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::RoPE:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 RoPE (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, int dims, bool traditional, float base, float scale, int offset, bool forward)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
 DEFINE_PRINT (RoPE) bool is_equivalent(const Primitive &other) const override
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual bool is_equivalent (const Primitive &other) const
 Equivalence check defaults to false unless overridden by the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ RoPE()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
mlx::core::fast::RoPE::RoPE (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
int dims,
bool traditional,
float base,
float scale,
int offset,
bool forward )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - -
- - - - - - - -
mlx::core::fast::RoPE::DEFINE_PRINT (RoPE ) const &
-
-override
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::RoPE::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::RoPE::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-overridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ vjp()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
std::vector< array > mlx::core::fast::RoPE::vjp (const std::vector< array > & primals,
const std::vector< array > & cotangents,
const std::vector< int > & argnums,
const std::vector< array > & outputs )
-
-overridevirtual
-
- -

The vector-Jacobian product.

- -

Reimplemented from mlx::core::fast::Custom.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.png deleted file mode 100644 index 62648d9411cecb26a750282334d3053f4627966a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmeAS@N?(olHy`uVBq!ia0vp^?LgeY!3-pS<#W6RQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-KJY5_^Dj46+ecSh0i>Kvy zbI8ws>wj#?Y%o;Gtt#8EoS0LdTXI}lM zuju`I|A|j#{#82OJ?HzRZTFn#gI0 zU0%5B<0H#8i$y)kWZ$+g<9)5#yZPupiI@Kx9&a%9xBNDlFY>y@mh=AKlHVQOE~8?3 z%e(Kw^5lA-=bz>|SI=DXip$-4aYg*C-v^ILN{U=7dAo1Ill##{6GT+mJp+N1?h&9< z@0&CHSb3Krfib$}aalBTieR7hF(HN31y5=j1*XU_xSV8kAVmEaao1d`lc1sUv(%e! z(xN8{nzJl>RO}6;g`Qk~XFthN{b~J~k4cN(=6>1#c!T>9<&5fyKWcryZfyOUY8M~f z^Q+2d>#KW{U-e9UY!_qew(7~pHCNlNINn-vz;NmsW4_-D0}nr&bnND#Rkx2!cAsvf zv-a{oeZIH*t1@)oPFcKDzqn_%*CjUYIkg`Yip%1ka@1OVJAQGejOeuApWd)a?ap{p zb@<{rjeFDUJgep&KVTRA{@cI*8@DH0@7A>cf8CP}8Wuq6;@rhkg7)Pzd%hO@BRUUqg-6IeRsE?g9tI7#q*ALzbw^R_*NU<_Kulmw{63|dE1WdGQE5K)Eh%_%Xh{h zV#VPnA6te>2et3^mC}y6#jk6VvwZi@oQD#(c!KLg`m+Ci%N)~{~x~l qw|tt+J3TL`E5#le82{e)m)+34>;I=?*W7_wfx*+&&t;ucLK6Tj`k7Y% diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention-members.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention-members.html deleted file mode 100644 index f75d5bd4..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::fast::ScaledDotProductAttention Member List
-
-
- -

This is the complete list of members for mlx::core::fast::ScaledDotProductAttention, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - -
Custom(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)mlx::core::fast::Custominlineexplicit
DEFINE_PRINT(ScaledDotProductAttention)mlx::core::fast::ScaledDotProductAttention
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::ScaledDotProductAttentioninlinevirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::fast::ScaledDotProductAttentioninlinevirtual
eval_gpu(const std::vector< array > &inputs, array &out)mlx::core::fast::ScaledDotProductAttention
is_equivalent(const Primitive &other) const overridemlx::core::fast::ScaledDotProductAttentionvirtual
jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) overridemlx::core::fast::Customvirtual
operator=(const Primitive &other)=deletemlx::core::Primitive
operator=(Primitive &&other)=deletemlx::core::Primitive
output_shapes(const std::vector< array > &inputs)mlx::core::Primitivevirtual
Primitive(Stream stream)mlx::core::Primitiveinlineexplicit
Primitive(const Primitive &other)=deletemlx::core::Primitive
Primitive(Primitive &&other)=deletemlx::core::Primitive
print(std::ostream &os)=0mlx::core::Primitivepure virtual
ScaledDotProductAttention(Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, const float scale, const bool needs_mask)mlx::core::fast::ScaledDotProductAttentioninlineexplicit
stream()mlx::core::Primitiveinline
vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) overridemlx::core::fast::Customvirtual
vmap(const std::vector< array > &inputs, const std::vector< int > &axes) overridemlx::core::fast::Customvirtual
~Primitive()=defaultmlx::core::Primitivevirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html deleted file mode 100644 index e5b51579..00000000 --- a/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::ScaledDotProductAttention Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::fast::ScaledDotProductAttention Class Reference
-
-
- -

#include <fast_primitives.h>

-
-Inheritance diagram for mlx::core::fast::ScaledDotProductAttention:
-
-
- - -mlx::core::fast::Custom -mlx::core::Primitive - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ScaledDotProductAttention (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback, const float scale, const bool needs_mask)
 
void eval_cpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
void eval_gpu (const std::vector< array > &inputs, array &out)
 
bool is_equivalent (const Primitive &other) const override
 Equivalence check defaults to false unless overridden by the primitive.
 
 DEFINE_PRINT (ScaledDotProductAttention)
 
- Public Member Functions inherited from mlx::core::fast::Custom
 Custom (Stream stream, std::function< std::vector< array >(std::vector< array >)> fallback)
 
virtual std::pair< std::vector< array >, std::vector< int > > vmap (const std::vector< array > &inputs, const std::vector< int > &axes) override
 The primitive must know how to vectorize itself across the given axes.
 
virtual std::vector< arrayjvp (const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
 The Jacobian-vector product.
 
virtual std::vector< arrayvjp (const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
 The vector-Jacobian product.
 
- Public Member Functions inherited from mlx::core::Primitive
 Primitive (Stream stream)
 
const Devicedevice ()
 The device the primitive will run on.
 
const Streamstream ()
 The stream the primitive will run on.
 
virtual void print (std::ostream &os)=0
 Print the primitive.
 
virtual std::vector< std::vector< int > > output_shapes (const std::vector< array > &inputs)
 Get the output shapes of the primitive.
 
virtual ~Primitive ()=default
 
 Primitive (const Primitive &other)=delete
 
 Primitive (Primitive &&other)=delete
 
Primitiveoperator= (const Primitive &other)=delete
 
Primitiveoperator= (Primitive &&other)=delete
 
-

Constructor & Destructor Documentation

- -

◆ ScaledDotProductAttention()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - -
mlx::core::fast::ScaledDotProductAttention::ScaledDotProductAttention (Stream stream,
std::function< std::vector< array >(std::vector< array >)> fallback,
const float scale,
const bool needs_mask )
-
-inlineexplicit
-
- -
-
-

Member Function Documentation

- -

◆ DEFINE_PRINT()

- -
-
- - - - - - - -
mlx::core::fast::ScaledDotProductAttention::DEFINE_PRINT (ScaledDotProductAttention )
-
- -
-
- -

◆ eval_cpu()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::ScaledDotProductAttention::eval_cpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the output arrays.

-

To avoid unnecessary allocations, the evaluation function is responsible for allocating space for the array.

- -

Implements mlx::core::Primitive.

- -
-
- -

◆ eval_gpu() [1/2]

- -
-
- - - - - - - - - - - -
void mlx::core::fast::ScaledDotProductAttention::eval_gpu (const std::vector< array > & inputs,
array & out )
-
- -
-
- -

◆ eval_gpu() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::fast::ScaledDotProductAttention::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
-
-inlineoverridevirtual
-
- -

Implements mlx::core::Primitive.

- -
-
- -

◆ is_equivalent()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::fast::ScaledDotProductAttention::is_equivalent (const Primitive & other) const
-
-overridevirtual
-
- -

Equivalence check defaults to false unless overridden by the primitive.

- -

Reimplemented from mlx::core::Primitive.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.png b/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.png deleted file mode 100644 index 65f61e4a0d67c4cbc125902d2b8d2bc41e4f01a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1075 zcmeAS@N?(olHy`uVBq!ia0vp^UxB!TgBeJ2T#oesQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=GWsJY5_^Dj46+yuh+J!*!Stw zZ{GO*xx3=Y?w^&f)sy$R{q)LSX}#HQM#uKGYvi-H@7uli^QBFG7oYDe&yN42G0Em& z={4^uB7R-`cf+nK=R__0d_&UXlaBbit-M9sr!Ofua{u+;-9O&1S0cl9cn_s*O9fw|Y} z{A0f08{DmXCp?)QlYiH5_xXpmh2K|9?>f8o`H_FsdsWw#akqU``6)L2Z`|Z3^A*>6 z8nI>iP6GOUQjcTA>maXAHika}<_sL}9Kxo;SD70;kZv& zaAJW&NNDrKYpYfPZ3(?9(Q|EnE%zqr3;Xp>28CXInEmelwK>1`yfWD0?)uw4d;Y6A z+w3})*vXjh-r)0g$*Z4HmwxS!$VuAU7d!8_O78JD$G3^^+xm55?q|uG?_yc2LM$#{j=6?;$8K~JNC%=2lLl#eQyw*%W+(1-|Xm+ z+>hNi_sTsswN_iT>-gIhw@u5Rw_mn)v)j{Cwu#T?dEnVyz3X4ZX3x%f^)UDFGx6=E zuY&y7ynUj-_VuIBJMHuK#z%yvwpVNKEt0T&b9&9Ao~^QV8*Ut56Kgj6{({8^`qsqX zef@F9Ikow*?>oO%SLaUps?vTt=T6f-p@(H>etVdgmV|F0Im_J)Q2z3&MMr6pTeW$|2!3N>X*ThS3j3^ HP6 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::io::FileWriter Member List
-
-
- -

This is the complete list of members for mlx::core::io::FileWriter, including all inherited members.

- - - - - - - - - - -
FileWriter(std::string file_path)mlx::core::io::FileWriterinlineexplicit
good() const overridemlx::core::io::FileWriterinlinevirtual
is_open() const overridemlx::core::io::FileWriterinlinevirtual
label() const overridemlx::core::io::FileWriterinlinevirtual
seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) overridemlx::core::io::FileWriterinlinevirtual
tell() overridemlx::core::io::FileWriterinlinevirtual
write(const char *data, size_t n) overridemlx::core::io::FileWriterinlinevirtual
~FileWriter() overridemlx::core::io::FileWriterinline
~Writer()=defaultmlx::core::io::Writervirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.html deleted file mode 100644 index f9114aea..00000000 --- a/docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - -MLX: mlx::core::io::FileWriter Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::io::FileWriter Class Reference
-
-
- -

#include <load.h>

-
-Inheritance diagram for mlx::core::io::FileWriter:
-
-
- - -mlx::core::io::Writer - -
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 FileWriter (std::string file_path)
 
 ~FileWriter () override
 
bool is_open () const override
 
bool good () const override
 
size_t tell () override
 
void seek (int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
 
void write (const char *data, size_t n) override
 
std::string label () const override
 
- Public Member Functions inherited from mlx::core::io::Writer
virtual ~Writer ()=default
 
-

Constructor & Destructor Documentation

- -

◆ FileWriter()

- -
-
- - - - - -
- - - - - - - -
mlx::core::io::FileWriter::FileWriter (std::string file_path)
-
-inlineexplicit
-
- -
-
- -

◆ ~FileWriter()

- -
-
- - - - - -
- - - - - - - -
mlx::core::io::FileWriter::~FileWriter ()
-
-inlineoverride
-
- -
-
-

Member Function Documentation

- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::io::FileWriter::good () const
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Writer.

- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::io::FileWriter::is_open () const
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Writer.

- -
-
- -

◆ label()

- -
-
- - - - - -
- - - - - - - -
std::string mlx::core::io::FileWriter::label () const
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Writer.

- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::io::FileWriter::seek (int64_t off,
std::ios_base::seekdir way = std::ios_base::beg )
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Writer.

- -
-
- -

◆ tell()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::io::FileWriter::tell ()
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Writer.

- -
-
- -

◆ write()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::io::FileWriter::write (const char * data,
size_t n )
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Writer.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.png b/docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.png deleted file mode 100644 index 3f1679897f3bd4c71bcf9d4034cc9a56cc8686ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmeAS@N?(olHy`uVBq!ia0vp^-9Q|`!3-qj?8+2@lyrbki0l9V|AEXGZ@!lHA6jl< zpjjX>{mhF84;}!;P0xlc0m^Zf1o;Is0Qq2G&NTZ90|VoGPZ!6K3dXl{Z}%Nm;Bh(L z9CG%5{YSGWX$G0w-r6mgD&5C)P=(##mA02=s!)JO5!aRH0= z=>~G8|MVcQnam77=CL#Q9CFd?KW<|rywfIh*~FPARnH4D^mvFfbS&X!aJj_Fp!AZ7 zVPXkmgU2og2bEX`g-Lo00-i|H|1TUplOvQc$%OT#lIO&diAy|6DlhButl$6Z&zq<$ z>*(qaGuOwem>%WbUnW`qtYBm8wy>C-xlb!sCuaZs<8!?%IDU83tI+G`_HHhW{FN#t zQXZXjXR+OpwY8U@{yxY1<^7v$N8MX0XDykR_Rn`8Ps}y#6{eA2I!}MwxzT&KUi-}x zPp|AN`IM0=UPiJUvDWj4Ne tbUyGOyT>I_m}_@=1U-3~lxD_m|J=N|>cy3~slfEW;OXk;vd$@?2>>FtAhiGh diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader-members.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader-members.html deleted file mode 100644 index b8280c0c..00000000 --- a/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::io::ParallelFileReader Member List
-
-
- -

This is the complete list of members for mlx::core::io::ParallelFileReader, including all inherited members.

- - - - - - - - - - - -
good() const overridemlx::core::io::ParallelFileReaderinlinevirtual
is_open() const overridemlx::core::io::ParallelFileReaderinlinevirtual
label() const overridemlx::core::io::ParallelFileReaderinlinevirtual
ParallelFileReader(std::string file_path)mlx::core::io::ParallelFileReaderinlineexplicit
read(char *data, size_t n) overridemlx::core::io::ParallelFileReadervirtual
read(char *data, size_t n, size_t offset) overridemlx::core::io::ParallelFileReadervirtual
seek(int64_t, std::ios_base::seekdir=std::ios_base::beg) overridemlx::core::io::ParallelFileReaderinlinevirtual
tell() overridemlx::core::io::ParallelFileReaderinlinevirtual
~ParallelFileReader() overridemlx::core::io::ParallelFileReaderinline
~Reader()=defaultmlx::core::io::Readervirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.html deleted file mode 100644 index 69dba1c4..00000000 --- a/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.html +++ /dev/null @@ -1,387 +0,0 @@ - - - - - - - -MLX: mlx::core::io::ParallelFileReader Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::io::ParallelFileReader Class Reference
-
-
- -

#include <load.h>

-
-Inheritance diagram for mlx::core::io::ParallelFileReader:
-
-
- - -mlx::core::io::Reader - -
- - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ParallelFileReader (std::string file_path)
 
 ~ParallelFileReader () override
 
bool is_open () const override
 
bool good () const override
 
size_t tell () override
 
void seek (int64_t, std::ios_base::seekdir=std::ios_base::beg) override
 
void read (char *data, size_t n) override
 
void read (char *data, size_t n, size_t offset) override
 
std::string label () const override
 
- Public Member Functions inherited from mlx::core::io::Reader
virtual ~Reader ()=default
 
-

Constructor & Destructor Documentation

- -

◆ ParallelFileReader()

- -
-
- - - - - -
- - - - - - - -
mlx::core::io::ParallelFileReader::ParallelFileReader (std::string file_path)
-
-inlineexplicit
-
- -
-
- -

◆ ~ParallelFileReader()

- -
-
- - - - - -
- - - - - - - -
mlx::core::io::ParallelFileReader::~ParallelFileReader ()
-
-inlineoverride
-
- -
-
-

Member Function Documentation

- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::io::ParallelFileReader::good () const
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
bool mlx::core::io::ParallelFileReader::is_open () const
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
- -

◆ label()

- -
-
- - - - - -
- - - - - - - -
std::string mlx::core::io::ParallelFileReader::label () const
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
- -

◆ read() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::io::ParallelFileReader::read (char * data,
size_t n )
-
-overridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
- -

◆ read() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
void mlx::core::io::ParallelFileReader::read (char * data,
size_t n,
size_t offset )
-
-overridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - - - - -
void mlx::core::io::ParallelFileReader::seek (int64_t ,
std::ios_base::seekdir = std::ios_base::beg )
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
- -

◆ tell()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::io::ParallelFileReader::tell ()
-
-inlineoverridevirtual
-
- -

Implements mlx::core::io::Reader.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.png b/docs/build/html/classmlx_1_1core_1_1io_1_1_parallel_file_reader.png deleted file mode 100644 index 5e33ea75f2ee61676a271374f44dc7a837c8a2a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^dx1EBgBeIxUv7y5QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+uo-U3d6^w7^KHRj*fTv~q z>7LE+{~r+-FvxTaI6nDu@#77_Qj@=A`@D|lIc!j(&7*R2<)nEk$y2_lNG`tqlG`&b z{B7JaeowP1!;k$JCYPL-**E*~>@TUO>~szG&)7OGXx-sAX{)T;LyEKSu%++WG4=JA z!#^-H|`a*MybXO`(K`TIVTk6ypc|G0dO z{AKT=^D=ci_AI|2{l(&+WNqZ - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::io::Reader Member List
-
-
- -

This is the complete list of members for mlx::core::io::Reader, including all inherited members.

- - - - - - - - - -
good() const =0mlx::core::io::Readerpure virtual
is_open() const =0mlx::core::io::Readerpure virtual
label() const =0mlx::core::io::Readerpure virtual
read(char *data, size_t n)=0mlx::core::io::Readerpure virtual
read(char *data, size_t n, size_t offset)=0mlx::core::io::Readerpure virtual
seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0mlx::core::io::Readerpure virtual
tell()=0mlx::core::io::Readerpure virtual
~Reader()=defaultmlx::core::io::Readervirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_reader.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_reader.html deleted file mode 100644 index f91e682a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1io_1_1_reader.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - - -MLX: mlx::core::io::Reader Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::io::Reader Class Referenceabstract
-
-
- -

#include <load.h>

-
-Inheritance diagram for mlx::core::io::Reader:
-
-
- - -mlx::core::io::ParallelFileReader - -
- - - - - - - - - - - - - - - - - - -

-Public Member Functions

virtual bool is_open () const =0
 
virtual bool good () const =0
 
virtual size_t tell ()=0
 
virtual void seek (int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
 
virtual void read (char *data, size_t n)=0
 
virtual void read (char *data, size_t n, size_t offset)=0
 
virtual std::string label () const =0
 
virtual ~Reader ()=default
 
-

Constructor & Destructor Documentation

- -

◆ ~Reader()

- -
-
- - - - - -
- - - - - - - -
virtual mlx::core::io::Reader::~Reader ()
-
-virtualdefault
-
- -
-
-

Member Function Documentation

- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
virtual bool mlx::core::io::Reader::good () const
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
virtual bool mlx::core::io::Reader::is_open () const
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
- -

◆ label()

- -
-
- - - - - -
- - - - - - - -
virtual std::string mlx::core::io::Reader::label () const
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
- -

◆ read() [1/2]

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::io::Reader::read (char * data,
size_t n )
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
- -

◆ read() [2/2]

- -
-
- - - - - -
- - - - - - - - - - - - - - - - -
virtual void mlx::core::io::Reader::read (char * data,
size_t n,
size_t offset )
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::io::Reader::seek (int64_t off,
std::ios_base::seekdir way = std::ios_base::beg )
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
- -

◆ tell()

- -
-
- - - - - -
- - - - - - - -
virtual size_t mlx::core::io::Reader::tell ()
-
-pure virtual
-
- -

Implemented in mlx::core::io::ParallelFileReader.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_reader.png b/docs/build/html/classmlx_1_1core_1_1io_1_1_reader.png deleted file mode 100644 index d572487f800b14e171e5a78cb743fd4e756835dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^dx1EBgBeIxUv7y5QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B*mo-U3d6^w7^Cazm-z|*2G zymHp>`4x@qSNs+%t#!KhW>=EPqg&_1uY3MqG$p7_v`d9|)spE;BvkjR9DPyzi~n!* z_ou5SEb)t<^0BPS^Iha2{^C2H@z36De*Y=yT9o%r-tO5e-w9nhv$jxv&c{b#>n{6C zZkH7~X_q#mwr6E&q z_VE|voG)qFlfL-HU(DzIu;`m_%;Wz)7fdg>v;UB;D$nAt`+R+F@yhqAFPrKd_m@xH zU;M57c1GR3V}Cd7wsxO%?{)p}^;4JZclFfwH1w+S>e=zdnTtvK6+@itRglG&!)wSUY? zJZ1l;+$;<5_&p=>o8hu+sm@ix39)zA^qb%Fy|nC`nRl@FrVZ1z?*!hzrQi1=JUqW% z>g=st-rwhT`sMS7x#w@+Sl(ng_iteC+dRSatJ;G7XB~2zkhjo_`%Ox%(uH$ckkGpwLJ3P{(Z%DH}1~;od56o rq$e6)Rg-!GVIDQPcs=U%ieJoIDi-igbvG#nCOQUBS3j3^P6 - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::io::Writer Member List
-
-
- -

This is the complete list of members for mlx::core::io::Writer, including all inherited members.

- - - - - - - - -
good() const =0mlx::core::io::Writerpure virtual
is_open() const =0mlx::core::io::Writerpure virtual
label() const =0mlx::core::io::Writerpure virtual
seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0mlx::core::io::Writerpure virtual
tell()=0mlx::core::io::Writerpure virtual
write(const char *data, size_t n)=0mlx::core::io::Writerpure virtual
~Writer()=defaultmlx::core::io::Writervirtual
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_writer.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_writer.html deleted file mode 100644 index 8e81a25a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1io_1_1_writer.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - -MLX: mlx::core::io::Writer Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::io::Writer Class Referenceabstract
-
-
- -

#include <load.h>

-
-Inheritance diagram for mlx::core::io::Writer:
-
-
- - -mlx::core::io::FileWriter - -
- - - - - - - - - - - - - - - - -

-Public Member Functions

virtual bool is_open () const =0
 
virtual bool good () const =0
 
virtual size_t tell ()=0
 
virtual void seek (int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
 
virtual void write (const char *data, size_t n)=0
 
virtual std::string label () const =0
 
virtual ~Writer ()=default
 
-

Constructor & Destructor Documentation

- -

◆ ~Writer()

- -
-
- - - - - -
- - - - - - - -
virtual mlx::core::io::Writer::~Writer ()
-
-virtualdefault
-
- -
-
-

Member Function Documentation

- -

◆ good()

- -
-
- - - - - -
- - - - - - - -
virtual bool mlx::core::io::Writer::good () const
-
-pure virtual
-
- -

Implemented in mlx::core::io::FileWriter.

- -
-
- -

◆ is_open()

- -
-
- - - - - -
- - - - - - - -
virtual bool mlx::core::io::Writer::is_open () const
-
-pure virtual
-
- -

Implemented in mlx::core::io::FileWriter.

- -
-
- -

◆ label()

- -
-
- - - - - -
- - - - - - - -
virtual std::string mlx::core::io::Writer::label () const
-
-pure virtual
-
- -

Implemented in mlx::core::io::FileWriter.

- -
-
- -

◆ seek()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::io::Writer::seek (int64_t off,
std::ios_base::seekdir way = std::ios_base::beg )
-
-pure virtual
-
- -

Implemented in mlx::core::io::FileWriter.

- -
-
- -

◆ tell()

- -
-
- - - - - -
- - - - - - - -
virtual size_t mlx::core::io::Writer::tell ()
-
-pure virtual
-
- -

Implemented in mlx::core::io::FileWriter.

- -
-
- -

◆ write()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual void mlx::core::io::Writer::write (const char * data,
size_t n )
-
-pure virtual
-
- -

Implemented in mlx::core::io::FileWriter.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_writer.png b/docs/build/html/classmlx_1_1core_1_1io_1_1_writer.png deleted file mode 100644 index 70dfa5f6882969907fbe781de58cc2ae5b58d14a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0005@ zNklCg)KDm5p*@v&~op<~58~>q;q^9&Pw{IM{*gk_=aW7c@0{B}E+v?}H`}RS-)?Pnc zk}D&Zb&yPh;%;kWl|2{v1hCL;eqtq)56* zQY2j@DUvRd6j@x%%;o?9p7R2LNtnpx^_oX!B9}#F8kw0~@*Dxch;#vfNV)((BwYX? zk}d!cNf!W!qzeE<(ggq_=>hv2RAG(xM%41%ol=2u9lAMBcA<0O( zkYpsf7)ky;eYn+MeSUVWwVii+@R`RhB%9)fU%QMybGXGFN&2Ksk)>*6EAJdI>eGyf)E1}@tb)cn|= zT;87>yR_?an2lUc?Q0jG<`?VYT|c?>*&DX(#-+*KK3{J4XqYdTE_dtV4$R;j`NPp4 zmXN#05sNPV9OeH2lDr~aNHUTxBpFE;l8h`arIa!Ue*g)}bh{@89OnQ4002ovPDHLk FV1nahCCUH* diff --git a/docs/build/html/classmlx_1_1core_1_1metal_1_1_device-members.html b/docs/build/html/classmlx_1_1core_1_1metal_1_1_device-members.html deleted file mode 100644 index cca54911..00000000 --- a/docs/build/html/classmlx_1_1core_1_1metal_1_1_device-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::metal::Device Member List
-
-
- -

This is the complete list of members for mlx::core::metal::Device, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - -
argument_encoder(const std::vector< MTL::ArgumentDescriptor * > &arg_descs) constmlx::core::metal::Device
commit_command_buffer(int index)mlx::core::metal::Device
Device()mlx::core::metal::Device
Device(const Device &)=deletemlx::core::metal::Device
end_encoding(int index)mlx::core::metal::Device
get_command_buffer(int index)mlx::core::metal::Device
get_command_buffer_ops(int index)mlx::core::metal::Device
get_command_encoder(int index)mlx::core::metal::Device
get_function(const std::string &base_name, MTL::Library *mtl_lib, const std::string &specialized_name="", const MTLFCList &func_consts={})mlx::core::metal::Device
get_function(const std::string &base_name, const std::string &lib_name="mlx", const std::string &specialized_name="", const MTLFCList &func_consts={})mlx::core::metal::Device
get_kernel(const std::string &base_name, MTL::Library *mtl_lib, const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})mlx::core::metal::Device
get_kernel(const std::string &base_name, const std::string &lib_name="mlx", const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})mlx::core::metal::Device
get_library(const std::string &name)mlx::core::metal::Device
get_library(const std::string &name, const std::string &source_string, bool cache=true)mlx::core::metal::Device
get_library(const std::string &name, const MTL::StitchedLibraryDescriptor *desc, bool cache=true)mlx::core::metal::Device
increment_command_buffer_ops(int index)mlx::core::metal::Device
mtl_device()mlx::core::metal::Deviceinline
new_queue(int index)mlx::core::metal::Device
operator=(const Device &)=deletemlx::core::metal::Device
register_library(const std::string &lib_name, const std::string &lib_path)mlx::core::metal::Device
register_library(const std::string &lib_name)mlx::core::metal::Deviceinline
~Device()mlx::core::metal::Device
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1metal_1_1_device.html b/docs/build/html/classmlx_1_1core_1_1metal_1_1_device.html deleted file mode 100644 index dbb7c878..00000000 --- a/docs/build/html/classmlx_1_1core_1_1metal_1_1_device.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - - - - -MLX: mlx::core::metal::Device Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::metal::Device Class Reference
-
-
- -

#include <device.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Device ()
 
 Device (const Device &)=delete
 
Deviceoperator= (const Device &)=delete
 
 ~Device ()
 
MTL::Device * mtl_device ()
 
void new_queue (int index)
 
MTL::CommandBuffer * get_command_buffer (int index)
 
int get_command_buffer_ops (int index)
 
void increment_command_buffer_ops (int index)
 
void commit_command_buffer (int index)
 
CommandEncoderget_command_encoder (int index)
 
void end_encoding (int index)
 
void register_library (const std::string &lib_name, const std::string &lib_path)
 
void register_library (const std::string &lib_name)
 
MTL::Library * get_library (const std::string &name)
 
MTL::Library * get_library (const std::string &name, const std::string &source_string, bool cache=true)
 
MTL::Library * get_library (const std::string &name, const MTL::StitchedLibraryDescriptor *desc, bool cache=true)
 
MTL::Function * get_function (const std::string &base_name, MTL::Library *mtl_lib, const std::string &specialized_name="", const MTLFCList &func_consts={})
 
MTL::Function * get_function (const std::string &base_name, const std::string &lib_name="mlx", const std::string &specialized_name="", const MTLFCList &func_consts={})
 
MTL::ComputePipelineState * get_kernel (const std::string &base_name, MTL::Library *mtl_lib, const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})
 
MTL::ComputePipelineState * get_kernel (const std::string &base_name, const std::string &lib_name="mlx", const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})
 
MTL::ArgumentEncoder * argument_encoder (const std::vector< MTL::ArgumentDescriptor * > &arg_descs) const
 
-

Constructor & Destructor Documentation

- -

◆ Device() [1/2]

- -
-
- - - - - - - -
mlx::core::metal::Device::Device ()
-
- -
-
- -

◆ Device() [2/2]

- -
-
- - - - - -
- - - - - - - -
mlx::core::metal::Device::Device (const Device & )
-
-delete
-
- -
-
- -

◆ ~Device()

- -
-
- - - - - - - -
mlx::core::metal::Device::~Device ()
-
- -
-
-

Member Function Documentation

- -

◆ argument_encoder()

- -
-
- - - - - - - -
MTL::ArgumentEncoder * mlx::core::metal::Device::argument_encoder (const std::vector< MTL::ArgumentDescriptor * > & arg_descs) const
-
- -
-
- -

◆ commit_command_buffer()

- -
-
- - - - - - - -
void mlx::core::metal::Device::commit_command_buffer (int index)
-
- -
-
- -

◆ end_encoding()

- -
-
- - - - - - - -
void mlx::core::metal::Device::end_encoding (int index)
-
- -
-
- -

◆ get_command_buffer()

- -
-
- - - - - - - -
MTL::CommandBuffer * mlx::core::metal::Device::get_command_buffer (int index)
-
- -
-
- -

◆ get_command_buffer_ops()

- -
-
- - - - - - - -
int mlx::core::metal::Device::get_command_buffer_ops (int index)
-
- -
-
- -

◆ get_command_encoder()

- -
-
- - - - - - - -
CommandEncoder & mlx::core::metal::Device::get_command_encoder (int index)
-
- -
-
- -

◆ get_function() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - -
MTL::Function * mlx::core::metal::Device::get_function (const std::string & base_name,
const std::string & lib_name = "mlx",
const std::string & specialized_name = "",
const MTLFCList & func_consts = {} )
-
- -
-
- -

◆ get_function() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - -
MTL::Function * mlx::core::metal::Device::get_function (const std::string & base_name,
MTL::Library * mtl_lib,
const std::string & specialized_name = "",
const MTLFCList & func_consts = {} )
-
- -
-
- -

◆ get_kernel() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
MTL::ComputePipelineState * mlx::core::metal::Device::get_kernel (const std::string & base_name,
const std::string & lib_name = "mlx",
const std::string & hash_name = "",
const MTLFCList & func_consts = {},
const std::vector< MTL::Function * > & linked_functions = {} )
-
- -
-
- -

◆ get_kernel() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
MTL::ComputePipelineState * mlx::core::metal::Device::get_kernel (const std::string & base_name,
MTL::Library * mtl_lib,
const std::string & hash_name = "",
const MTLFCList & func_consts = {},
const std::vector< MTL::Function * > & linked_functions = {} )
-
- -
-
- -

◆ get_library() [1/3]

- -
-
- - - - - - - -
MTL::Library * mlx::core::metal::Device::get_library (const std::string & name)
-
- -
-
- -

◆ get_library() [2/3]

- -
-
- - - - - - - - - - - - - - - - -
MTL::Library * mlx::core::metal::Device::get_library (const std::string & name,
const MTL::StitchedLibraryDescriptor * desc,
bool cache = true )
-
- -
-
- -

◆ get_library() [3/3]

- -
-
- - - - - - - - - - - - - - - - -
MTL::Library * mlx::core::metal::Device::get_library (const std::string & name,
const std::string & source_string,
bool cache = true )
-
- -
-
- -

◆ increment_command_buffer_ops()

- -
-
- - - - - - - -
void mlx::core::metal::Device::increment_command_buffer_ops (int index)
-
- -
-
- -

◆ mtl_device()

- -
-
- - - - - -
- - - - - - - -
MTL::Device * mlx::core::metal::Device::mtl_device ()
-
-inline
-
- -
-
- -

◆ new_queue()

- -
-
- - - - - - - -
void mlx::core::metal::Device::new_queue (int index)
-
- -
-
- -

◆ operator=()

- -
-
- - - - - -
- - - - - - - -
Device & mlx::core::metal::Device::operator= (const Device & )
-
-delete
-
- -
-
- -

◆ register_library() [1/2]

- -
-
- - - - - -
- - - - - - - -
void mlx::core::metal::Device::register_library (const std::string & lib_name)
-
-inline
-
- -
-
- -

◆ register_library() [2/2]

- -
-
- - - - - - - - - - - -
void mlx::core::metal::Device::register_library (const std::string & lib_name,
const std::string & lib_path )
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator-members.html b/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator-members.html deleted file mode 100644 index 30350023..00000000 --- a/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::metal::MetalAllocator Member List
-
- - - - - diff --git a/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.html b/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.html deleted file mode 100644 index 1e35fa97..00000000 --- a/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - -MLX: mlx::core::metal::MetalAllocator Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::metal::MetalAllocator Class Reference
-
-
- -

#include <allocator.h>

-
-Inheritance diagram for mlx::core::metal::MetalAllocator:
-
-
- - -mlx::core::allocator::Allocator - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

virtual Buffer malloc (size_t size, bool allow_swap=false) override
 Allocator for Metal GPUs.
 
virtual void free (Buffer buffer) override
 
virtual size_t size (Buffer buffer) const override
 
size_t get_active_memory ()
 
size_t get_peak_memory ()
 
void reset_peak_memory ()
 
size_t get_cache_memory ()
 
size_t set_cache_limit (size_t limit)
 
size_t set_memory_limit (size_t limit, bool relaxed)
 
void clear_cache ()
 
- Public Member Functions inherited from mlx::core::allocator::Allocator
 Allocator ()=default
 
 Allocator (const Allocator &other)=delete
 
 Allocator (Allocator &&other)=delete
 
Allocatoroperator= (const Allocator &other)=delete
 
Allocatoroperator= (Allocator &&other)=delete
 
virtual ~Allocator ()=default
 
- - - -

-Friends

MetalAllocatorallocator ()
 
-

Member Function Documentation

- -

◆ clear_cache()

- -
-
- - - - - - - -
void mlx::core::metal::MetalAllocator::clear_cache ()
-
- -
-
- -

◆ free()

- -
-
- - - - - -
- - - - - - - -
virtual void mlx::core::metal::MetalAllocator::free (Buffer buffer)
-
-overridevirtual
-
-
- -

◆ get_active_memory()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::metal::MetalAllocator::get_active_memory ()
-
-inline
-
- -
-
- -

◆ get_cache_memory()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::metal::MetalAllocator::get_cache_memory ()
-
-inline
-
- -
-
- -

◆ get_peak_memory()

- -
-
- - - - - -
- - - - - - - -
size_t mlx::core::metal::MetalAllocator::get_peak_memory ()
-
-inline
-
- -
-
- -

◆ malloc()

- -
-
- - - - - -
- - - - - - - - - - - -
virtual Buffer mlx::core::metal::MetalAllocator::malloc (size_t size,
bool allow_swap = false )
-
-overridevirtual
-
- -

Allocator for Metal GPUs.

- -

Implements mlx::core::allocator::Allocator.

- -
-
- -

◆ reset_peak_memory()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::metal::MetalAllocator::reset_peak_memory ()
-
-inline
-
- -
-
- -

◆ set_cache_limit()

- -
-
- - - - - - - -
size_t mlx::core::metal::MetalAllocator::set_cache_limit (size_t limit)
-
- -
-
- -

◆ set_memory_limit()

- -
-
- - - - - - - - - - - -
size_t mlx::core::metal::MetalAllocator::set_memory_limit (size_t limit,
bool relaxed )
-
- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
virtual size_t mlx::core::metal::MetalAllocator::size (Buffer buffer) const
-
-overridevirtual
-
-
-

Friends And Related Symbol Documentation

- -

◆ allocator

- -
-
- - - - - -
- - - - - - - -
MetalAllocator & allocator ()
-
-friend
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.png b/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.png deleted file mode 100644 index c82190d6222eabf8781259a9fd6bce166fb65348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^JApWWgBeH`S*WN0Dd_;85ZC|z{{xvX-h3_XKeXJ! zK(jz%`k5CG9y|bwo1P6@0+iz{3GxeO0P?}WoN4wI1_mZ$PZ!6K3dXl{Z=QRtz|+F6 z9Qyg6f6b!W`}cR8h}Q%;RrHCH(mt*tLBV+4CqR!ZW_YmwB`ZU4R@A5K*TZ4^}I%GsLr6G64O_cp%)7j{&Hc;X~*I=7#l6G7Lb|P?anQ_tNy$ zRGBmbU&x)KP`&u5uH%2ZtEfyYBl}^{IA?#TNbY$046)K3RU-{mI!a zVP}6gm6V#Czn4N)NY-ye9EPsU+i^GGyFu}m3jly6oaR$ KpUXO@geCxqC`zON diff --git a/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence-members.html b/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence-members.html deleted file mode 100644 index a3e82b9e..00000000 --- a/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::random::KeySequence Member List
-
-
- -

This is the complete list of members for mlx::core::random::KeySequence, including all inherited members.

- - - - - -
default_()mlx::core::random::KeySequenceinlinestatic
KeySequence(uint64_t seed)mlx::core::random::KeySequenceexplicit
next()mlx::core::random::KeySequence
seed(uint64_t seed)mlx::core::random::KeySequence
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence.html b/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence.html deleted file mode 100644 index 4662bb44..00000000 --- a/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -MLX: mlx::core::random::KeySequence Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::random::KeySequence Class Reference
-
-
- -

#include <random.h>

- - - - - - - - -

-Public Member Functions

 KeySequence (uint64_t seed)
 
void seed (uint64_t seed)
 
array next ()
 
- - - -

-Static Public Member Functions

static KeySequencedefault_ ()
 
-

Constructor & Destructor Documentation

- -

◆ KeySequence()

- -
-
- - - - - -
- - - - - - - -
mlx::core::random::KeySequence::KeySequence (uint64_t seed)
-
-explicit
-
- -
-
-

Member Function Documentation

- -

◆ default_()

- -
-
- - - - - -
- - - - - - - -
static KeySequence & mlx::core::random::KeySequence::default_ ()
-
-inlinestatic
-
- -
-
- -

◆ next()

- -
-
- - - - - - - -
array mlx::core::random::KeySequence::next ()
-
- -
-
- -

◆ seed()

- -
-
- - - - - - - -
void mlx::core::random::KeySequence::seed (uint64_t seed)
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler-members.html b/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler-members.html deleted file mode 100644 index 30d4f67a..00000000 --- a/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
mlx::core::scheduler::Scheduler Member List
-
- - - - - diff --git a/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler.html b/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler.html deleted file mode 100644 index 1ebc58e2..00000000 --- a/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - -MLX: mlx::core::scheduler::Scheduler Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
mlx::core::scheduler::Scheduler Class Reference
-
-
- -

#include <scheduler.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 Scheduler ()
 
 Scheduler (const Scheduler &)=delete
 
 Scheduler (Scheduler &&)=delete
 
Scheduleroperator= (const Scheduler &)=delete
 
Scheduleroperator= (Scheduler &&)=delete
 
Stream new_stream (const Device &d)
 
template<typename F >
void enqueue (const Stream &stream, F &&f)
 
Stream get_default_stream (const Device &d) const
 
void set_default_stream (const Stream &s)
 
void notify_new_task (const Stream &stream)
 
void notify_task_completion (const Stream &stream)
 
int n_active_tasks () const
 
void wait_for_one ()
 
 ~Scheduler ()
 
-

Constructor & Destructor Documentation

- -

◆ Scheduler() [1/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::scheduler::Scheduler::Scheduler ()
-
-inline
-
- -
-
- -

◆ Scheduler() [2/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::scheduler::Scheduler::Scheduler (const Scheduler & )
-
-delete
-
- -
-
- -

◆ Scheduler() [3/3]

- -
-
- - - - - -
- - - - - - - -
mlx::core::scheduler::Scheduler::Scheduler (Scheduler && )
-
-delete
-
- -
-
- -

◆ ~Scheduler()

- -
-
- - - - - -
- - - - - - - -
mlx::core::scheduler::Scheduler::~Scheduler ()
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ enqueue()

- -
-
-
-template<typename F >
- - - - - - - - - - - -
void mlx::core::scheduler::Scheduler::enqueue (const Stream & stream,
F && f )
-
- -
-
- -

◆ get_default_stream()

- -
-
- - - - - -
- - - - - - - -
Stream mlx::core::scheduler::Scheduler::get_default_stream (const Device & d) const
-
-inline
-
- -
-
- -

◆ n_active_tasks()

- -
-
- - - - - -
- - - - - - - -
int mlx::core::scheduler::Scheduler::n_active_tasks () const
-
-inline
-
- -
-
- -

◆ new_stream()

- -
-
- - - - - -
- - - - - - - -
Stream mlx::core::scheduler::Scheduler::new_stream (const Device & d)
-
-inline
-
- -
-
- -

◆ notify_new_task()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::scheduler::Scheduler::notify_new_task (const Stream & stream)
-
-inline
-
- -
-
- -

◆ notify_task_completion()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::scheduler::Scheduler::notify_task_completion (const Stream & stream)
-
-inline
-
- -
-
- -

◆ operator=() [1/2]

- -
-
- - - - - -
- - - - - - - -
Scheduler & mlx::core::scheduler::Scheduler::operator= (const Scheduler & )
-
-delete
-
- -
-
- -

◆ operator=() [2/2]

- -
-
- - - - - -
- - - - - - - -
Scheduler & mlx::core::scheduler::Scheduler::operator= (Scheduler && )
-
-delete
-
- -
-
- -

◆ set_default_stream()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::scheduler::Scheduler::set_default_stream (const Stream & s)
-
-inline
-
- -
-
- -

◆ wait_for_one()

- -
-
- - - - - -
- - - - - - - -
void mlx::core::scheduler::Scheduler::wait_for_one ()
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23-members.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23-members.html deleted file mode 100644 index 91ebfde0..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::T_dcst23< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::T_dcst23< T0 >, including all inherited members.

- - - - -
exec(T c[], T0 fct, bool ortho, int type, bool cosine) constpocketfft::detail::T_dcst23< T0 >inline
length() constpocketfft::detail::T_dcst23< T0 >inline
T_dcst23(size_t length)pocketfft::detail::T_dcst23< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23.html deleted file mode 100644 index c7c55e2a..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::T_dcst23< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::T_dcst23< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - -

-Public Member Functions

 T_dcst23 (size_t length)
 
template<typename T >
void exec (T c[], T0 fct, bool ortho, int type, bool cosine) const
 
size_t length () const
 
-

Constructor & Destructor Documentation

- -

◆ T_dcst23()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::T_dcst23< T0 >::T_dcst23 (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void pocketfft::detail::T_dcst23< T0 >::exec (T c[],
T0 fct,
bool ortho,
int type,
bool cosine ) const
-
-inline
-
- -
-
- -

◆ length()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::T_dcst23< T0 >::length () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4-members.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4-members.html deleted file mode 100644 index 3df2ebce..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::T_dcst4< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::T_dcst4< T0 >, including all inherited members.

- - - - -
exec(T c[], T0 fct, bool, int, bool cosine) constpocketfft::detail::T_dcst4< T0 >inline
length() constpocketfft::detail::T_dcst4< T0 >inline
T_dcst4(size_t length)pocketfft::detail::T_dcst4< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4.html deleted file mode 100644 index 8d03410d..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::T_dcst4< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::T_dcst4< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - -

-Public Member Functions

 T_dcst4 (size_t length)
 
template<typename T >
void exec (T c[], T0 fct, bool, int, bool cosine) const
 
size_t length () const
 
-

Constructor & Destructor Documentation

- -

◆ T_dcst4()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::T_dcst4< T0 >::T_dcst4 (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void pocketfft::detail::T_dcst4< T0 >::exec (T c[],
T0 fct,
bool ,
int ,
bool cosine ) const
-
-inline
-
- -
-
- -

◆ length()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::T_dcst4< T0 >::length () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1-members.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1-members.html deleted file mode 100644 index 306b02f4..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::T_dct1< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::T_dct1< T0 >, including all inherited members.

- - - - -
exec(T c[], T0 fct, bool ortho, int, bool) constpocketfft::detail::T_dct1< T0 >inline
length() constpocketfft::detail::T_dct1< T0 >inline
T_dct1(size_t length)pocketfft::detail::T_dct1< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1.html deleted file mode 100644 index ad8c292f..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::T_dct1< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::T_dct1< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - -

-Public Member Functions

 T_dct1 (size_t length)
 
template<typename T >
void exec (T c[], T0 fct, bool ortho, int, bool) const
 
size_t length () const
 
-

Constructor & Destructor Documentation

- -

◆ T_dct1()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::T_dct1< T0 >::T_dct1 (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void pocketfft::detail::T_dct1< T0 >::exec (T c[],
T0 fct,
bool ortho,
int ,
bool  ) const
-
-inline
-
- -
-
- -

◆ length()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::T_dct1< T0 >::length () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1-members.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1-members.html deleted file mode 100644 index 5f72dd26..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::T_dst1< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::T_dst1< T0 >, including all inherited members.

- - - - -
exec(T c[], T0 fct, bool, int, bool) constpocketfft::detail::T_dst1< T0 >inline
length() constpocketfft::detail::T_dst1< T0 >inline
T_dst1(size_t length)pocketfft::detail::T_dst1< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1.html b/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1.html deleted file mode 100644 index 678dde85..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::T_dst1< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::T_dst1< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - -

-Public Member Functions

 T_dst1 (size_t length)
 
template<typename T >
void exec (T c[], T0 fct, bool, int, bool) const
 
size_t length () const
 
-

Constructor & Destructor Documentation

- -

◆ T_dst1()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::T_dst1< T0 >::T_dst1 (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
void pocketfft::detail::T_dst1< T0 >::exec (T c[],
T0 fct,
bool ,
int ,
bool  ) const
-
-inline
-
- -
-
- -

◆ length()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::T_dst1< T0 >::length () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1arr-members.html b/docs/build/html/classpocketfft_1_1detail_1_1arr-members.html deleted file mode 100644 index 0a83715c..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1arr-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::arr< T > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::arr< T >, including all inherited members.

- - - - - - - - - - - -
arr()pocketfft::detail::arr< T >inline
arr(size_t n)pocketfft::detail::arr< T >inline
arr(arr &&other)pocketfft::detail::arr< T >inline
data()pocketfft::detail::arr< T >inline
data() constpocketfft::detail::arr< T >inline
operator[](size_t idx)pocketfft::detail::arr< T >inline
operator[](size_t idx) constpocketfft::detail::arr< T >inline
resize(size_t n)pocketfft::detail::arr< T >inline
size() constpocketfft::detail::arr< T >inline
~arr()pocketfft::detail::arr< T >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1arr.html b/docs/build/html/classpocketfft_1_1detail_1_1arr.html deleted file mode 100644 index d81388ba..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1arr.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::arr< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::arr< T > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 arr ()
 
 arr (size_t n)
 
 arr (arr &&other)
 
 ~arr ()
 
void resize (size_t n)
 
Toperator[] (size_t idx)
 
const Toperator[] (size_t idx) const
 
Tdata ()
 
const Tdata () const
 
size_t size () const
 
-

Constructor & Destructor Documentation

- -

◆ arr() [1/3]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
pocketfft::detail::arr< T >::arr ()
-
-inline
-
- -
-
- -

◆ arr() [2/3]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
pocketfft::detail::arr< T >::arr (size_t n)
-
-inline
-
- -
-
- -

◆ arr() [3/3]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
pocketfft::detail::arr< T >::arr (arr< T > && other)
-
-inline
-
- -
-
- -

◆ ~arr()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
pocketfft::detail::arr< T >::~arr ()
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ data() [1/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
T * pocketfft::detail::arr< T >::data ()
-
-inline
-
- -
-
- -

◆ data() [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
const T * pocketfft::detail::arr< T >::data () const
-
-inline
-
- -
-
- -

◆ operator[]() [1/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
T & pocketfft::detail::arr< T >::operator[] (size_t idx)
-
-inline
-
- -
-
- -

◆ operator[]() [2/2]

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
const T & pocketfft::detail::arr< T >::operator[] (size_t idx) const
-
-inline
-
- -
-
- -

◆ resize()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
void pocketfft::detail::arr< T >::resize (size_t n)
-
-inline
-
- -
-
- -

◆ size()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::arr< T >::size () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1arr__info-members.html b/docs/build/html/classpocketfft_1_1detail_1_1arr__info-members.html deleted file mode 100644 index 38eb5333..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1arr__info-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::arr_info Member List
-
-
- -

This is the complete list of members for pocketfft::detail::arr_info, including all inherited members.

- - - - - - - - - - -
arr_info(const shape_t &shape_, const stride_t &stride_)pocketfft::detail::arr_infoinline
ndim() constpocketfft::detail::arr_infoinline
shape() constpocketfft::detail::arr_infoinline
shape(size_t i) constpocketfft::detail::arr_infoinline
shppocketfft::detail::arr_infoprotected
size() constpocketfft::detail::arr_infoinline
strpocketfft::detail::arr_infoprotected
stride() constpocketfft::detail::arr_infoinline
stride(size_t i) constpocketfft::detail::arr_infoinline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1arr__info.html b/docs/build/html/classpocketfft_1_1detail_1_1arr__info.html deleted file mode 100644 index 08df0214..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1arr__info.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::arr_info Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::arr_info Class Reference
-
-
- -

#include <pocketfft.h>

-
-Inheritance diagram for pocketfft::detail::arr_info:
-
-
- - -pocketfft::detail::cndarr< T > -pocketfft::detail::ndarr< T > - -
- - - - - - - - - - - - - - - - -

-Public Member Functions

 arr_info (const shape_t &shape_, const stride_t &stride_)
 
size_t ndim () const
 
size_t size () const
 
const shape_tshape () const
 
size_t shape (size_t i) const
 
const stride_tstride () const
 
const ptrdiff_t & stride (size_t i) const
 
- - - - - -

-Protected Attributes

shape_t shp
 
stride_t str
 
-

Constructor & Destructor Documentation

- -

◆ arr_info()

- -
-
- - - - - -
- - - - - - - - - - - -
pocketfft::detail::arr_info::arr_info (const shape_t & shape_,
const stride_t & stride_ )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ ndim()

- -
-
- - - - - -
- - - - - - - -
size_t pocketfft::detail::arr_info::ndim () const
-
-inline
-
- -
-
- -

◆ shape() [1/2]

- -
-
- - - - - -
- - - - - - - -
const shape_t & pocketfft::detail::arr_info::shape () const
-
-inline
-
- -
-
- -

◆ shape() [2/2]

- -
-
- - - - - -
- - - - - - - -
size_t pocketfft::detail::arr_info::shape (size_t i) const
-
-inline
-
- -
-
- -

◆ size()

- -
-
- - - - - -
- - - - - - - -
size_t pocketfft::detail::arr_info::size () const
-
-inline
-
- -
-
- -

◆ stride() [1/2]

- -
-
- - - - - -
- - - - - - - -
const stride_t & pocketfft::detail::arr_info::stride () const
-
-inline
-
- -
-
- -

◆ stride() [2/2]

- -
-
- - - - - -
- - - - - - - -
const ptrdiff_t & pocketfft::detail::arr_info::stride (size_t i) const
-
-inline
-
- -
-
-

Member Data Documentation

- -

◆ shp

- -
-
- - - - - -
- - - - -
shape_t pocketfft::detail::arr_info::shp
-
-protected
-
- -
-
- -

◆ str

- -
-
- - - - - -
- - - - -
stride_t pocketfft::detail::arr_info::str
-
-protected
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1arr__info.png b/docs/build/html/classpocketfft_1_1detail_1_1arr__info.png deleted file mode 100644 index 8cf1d3ced302b69089d970e4947289599f2076c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcIB_H=O!sbG9N_w_nuO`eu+ zr>;N${P)!ExbIY+R+HBJq~jIC#=G*zChRXbx6_$LU8$(0C)C9y{+O21qV><$%)NX5 zKy1JFIKiCjGks0?rbBN^mtI}pBYyekXU@MV zlZ`G#@$}tPYwOv3)pWnfPMyiS(|R99AClR5&UbNy(B@X*%;=T#%eJq6U$lE$rEH}4 z6V=z}ve#XIbVcmti*<*j%<4}^={S|IYpg$bt8K^0*DvgEWo%may0q^9iCrtN$0yeo z^DoiO>#KRWZSvCxE!9qQu1s5&7h%7P-Nj{}|9|7`JuBq*z5lVNtD|Ni!YkcZEuWtg zV0iJGm7)EG!nNzKWo|S_=wC@r@K4%W&A?FSe2k0Xmr)qQh3Ola8us;wGJHv0!>~X< znU$edQk&t$=?F%Lcr+#Vs@JcZ{{7x+?s+Qx6E;p-vae^V%Ga&wrH`Q@cKzmroLkS9 ze<=PlA!Ygb2 z^NT{{ZQg92`$EqYO7oBPwWWGGRZ98}D)6x{(Ht%b5!{=YOy4{wc z{Iq8M=cu}hBU0M6$ALljoip3Yc4n!C*I^C5{D^jwH=nG2y^q}OA^*HIcKzqy?$>+y*H8DV zOAk(dB4`vg>B@AFWqFZzEeftbzGSlhMXA~93YD9ukMeu^{hDF=VBNJ3X_+d!%MS0_ zoDsP`g?0Cqbw8$lOtLyWYqOV@RrkTdju_v=IaL$Zyp;rpV+1T5BX6HF`Lx{B{Pw*s zRd4LpD`#(v-}G+Ju{~w`ay#a{FOAzRKX22qru!Skx-Z<_wCwWa$o4P1i>>yg%Wm3u z`t^(bC;!GH!mw{m>|V2!`PX0nlJkhZGw1Q8T=mm|oZnewcbm<6w)D*Me-G!nPP(t1 ztm;{N_uuhJPo|%U@C=GS<~8Zpu86(g|MC1~KXhPyhlEhoR$$&`@O1TaS?83{1OT-s B79aos diff --git a/docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html b/docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html deleted file mode 100644 index 65676b3e..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::cfftp< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::cfftp< T0 >, including all inherited members.

- - - -
cfftp(size_t length_)pocketfft::detail::cfftp< T0 >inline
exec(T c[], T0 fct, bool fwd) constpocketfft::detail::cfftp< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1cfftp.html b/docs/build/html/classpocketfft_1_1detail_1_1cfftp.html deleted file mode 100644 index 77e4017f..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1cfftp.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::cfftp< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::cfftp< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - -

-Public Member Functions

template<typename T >
void exec (T c[], T0 fct, bool fwd) const
 
 cfftp (size_t length_)
 
-

Constructor & Destructor Documentation

- -

◆ cfftp()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::cfftp< T0 >::cfftp (size_t length_)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
void pocketfft::detail::cfftp< T0 >::exec (T c[],
T0 fct,
bool fwd ) const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1cndarr-members.html b/docs/build/html/classpocketfft_1_1detail_1_1cndarr-members.html deleted file mode 100644 index 1d2ac708..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1cndarr-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::cndarr< T > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::cndarr< T >, including all inherited members.

- - - - - - - - - - - - - -
arr_info(const shape_t &shape_, const stride_t &stride_)pocketfft::detail::arr_infoinline
cndarr(const void *data_, const shape_t &shape_, const stride_t &stride_)pocketfft::detail::cndarr< T >inline
dpocketfft::detail::cndarr< T >protected
ndim() constpocketfft::detail::arr_infoinline
operator[](ptrdiff_t ofs) constpocketfft::detail::cndarr< T >inline
shape() constpocketfft::detail::arr_infoinline
shape(size_t i) constpocketfft::detail::arr_infoinline
shppocketfft::detail::arr_infoprotected
size() constpocketfft::detail::arr_infoinline
strpocketfft::detail::arr_infoprotected
stride() constpocketfft::detail::arr_infoinline
stride(size_t i) constpocketfft::detail::arr_infoinline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1cndarr.html b/docs/build/html/classpocketfft_1_1detail_1_1cndarr.html deleted file mode 100644 index 742ba67f..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1cndarr.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::cndarr< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::cndarr< T > Class Template Reference
-
-
- -

#include <pocketfft.h>

-
-Inheritance diagram for pocketfft::detail::cndarr< T >:
-
-
- - -pocketfft::detail::arr_info -pocketfft::detail::ndarr< T > - -
- - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 cndarr (const void *data_, const shape_t &shape_, const stride_t &stride_)
 
const Toperator[] (ptrdiff_t ofs) const
 
- Public Member Functions inherited from pocketfft::detail::arr_info
 arr_info (const shape_t &shape_, const stride_t &stride_)
 
size_t ndim () const
 
size_t size () const
 
const shape_tshape () const
 
size_t shape (size_t i) const
 
const stride_tstride () const
 
const ptrdiff_t & stride (size_t i) const
 
- - - - - - - - -

-Protected Attributes

const chard
 
- Protected Attributes inherited from pocketfft::detail::arr_info
shape_t shp
 
stride_t str
 
-

Constructor & Destructor Documentation

- -

◆ cndarr()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
pocketfft::detail::cndarr< T >::cndarr (const void * data_,
const shape_t & shape_,
const stride_t & stride_ )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ operator[]()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
const T & pocketfft::detail::cndarr< T >::operator[] (ptrdiff_t ofs) const
-
-inline
-
- -
-
-

Member Data Documentation

- -

◆ d

- -
-
-
-template<typename T >
- - - - - -
- - - - -
const char* pocketfft::detail::cndarr< T >::d
-
-protected
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1cndarr.png b/docs/build/html/classpocketfft_1_1detail_1_1cndarr.png deleted file mode 100644 index 268d77cafbb0952a67dfc3b44e99ea88660ca187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1037 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcIB@N{tusbG9N_w_nuO`eu+ zr>;N${P)P@oz*Q#KbCIh(YJz6;P&4{o}b+B_u9LBP^oO`nX2+Nb&bl(_0QMj$?W*R zG3%N5-g9j#?xt+^iJnE*=5Kbpb5-h|POpl5M)Ix{-jiK=>;7t0XwJ2tf8)HFrSjUN z4zi|?AM_(`3z%2R{&ko3y;i#S+>>KyRJwG6KL@J=a(YEvIJ4S{dypq}sFHT1=I>aC2V)$hg#&BW!My7^+ zJ)#U>Qr9pn&`)M%s6|s^@%)Zrldzzr(=jcjMf%C2f)}sP+xq)$`h!Et8METQm=)$< zn(V)~!(;jR2<3NKy!q4Alr~-X8>XkLmF*Gs<|*sa^-a?+Ns32@6kmws=`;1e%dOXM zF5&Ic0Z5Y#${gjH->fJs68~x-#<~d?~=i(%KMx7GH*OB{c?YE*+jc@uXn{g|K7i5 zc2zC&&8ykFXFdPAYajb3F?04EWw%dOxjnK~^jmlBc$V#{F0t^H9Vb?-V{>uY7Xk9z z`oHySI!=5)5#j0r3=JhEU}&DRET?X0R=nT4EAC$PdcBHCHcp@zGYXq@<+|=_X?8uE zre!}}*KdwIs(dm|uhygJ((yHdl0CLr?0VI zZ@7MLzVxCe)pM`EYhS)*<%9AySCz`Pule~!p$;Wcm3yI z<=4xAF|jUAdeiyWrM3J|bo0&?zTGzY>xv`QO?|P_zNdqp1^@qWPU+mdKI;Vst0EhYf<^TWy diff --git a/docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html b/docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html deleted file mode 100644 index ba6b7bcd..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::fftblue< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::fftblue< T0 >, including all inherited members.

- - - - -
exec(cmplx< T > c[], T0 fct, bool fwd) constpocketfft::detail::fftblue< T0 >inline
exec_r(T c[], T0 fct, bool fwd)pocketfft::detail::fftblue< T0 >inline
fftblue(size_t length)pocketfft::detail::fftblue< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1fftblue.html b/docs/build/html/classpocketfft_1_1detail_1_1fftblue.html deleted file mode 100644 index 519a05ae..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1fftblue.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::fftblue< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::fftblue< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - -

-Public Member Functions

 fftblue (size_t length)
 
template<typename T >
void exec (cmplx< T > c[], T0 fct, bool fwd) const
 
template<typename T >
void exec_r (T c[], T0 fct, bool fwd)
 
-

Constructor & Destructor Documentation

- -

◆ fftblue()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::fftblue< T0 >::fftblue (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
void pocketfft::detail::fftblue< T0 >::exec (cmplx< T > c[],
T0 fct,
bool fwd ) const
-
-inline
-
- -
-
- -

◆ exec_r()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
void pocketfft::detail::fftblue< T0 >::exec_r (T c[],
T0 fct,
bool fwd )
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1multi__iter-members.html b/docs/build/html/classpocketfft_1_1detail_1_1multi__iter-members.html deleted file mode 100644 index fc671bdf..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1multi__iter-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::multi_iter< N > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::multi_iter< N >, including all inherited members.

- - - - - - - - - - - - -
advance(size_t n)pocketfft::detail::multi_iter< N >inline
iofs(size_t i) constpocketfft::detail::multi_iter< N >inline
iofs(size_t j, size_t i) constpocketfft::detail::multi_iter< N >inline
length_in() constpocketfft::detail::multi_iter< N >inline
length_out() constpocketfft::detail::multi_iter< N >inline
multi_iter(const arr_info &iarr_, const arr_info &oarr_, size_t idim_)pocketfft::detail::multi_iter< N >inline
oofs(size_t i) constpocketfft::detail::multi_iter< N >inline
oofs(size_t j, size_t i) constpocketfft::detail::multi_iter< N >inline
remaining() constpocketfft::detail::multi_iter< N >inline
stride_in() constpocketfft::detail::multi_iter< N >inline
stride_out() constpocketfft::detail::multi_iter< N >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1multi__iter.html b/docs/build/html/classpocketfft_1_1detail_1_1multi__iter.html deleted file mode 100644 index 1558f0d9..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1multi__iter.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::multi_iter< N > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::multi_iter< N > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 multi_iter (const arr_info &iarr_, const arr_info &oarr_, size_t idim_)
 
void advance (size_t n)
 
ptrdiff_t iofs (size_t i) const
 
ptrdiff_t iofs (size_t j, size_t i) const
 
ptrdiff_t oofs (size_t i) const
 
ptrdiff_t oofs (size_t j, size_t i) const
 
size_t length_in () const
 
size_t length_out () const
 
ptrdiff_t stride_in () const
 
ptrdiff_t stride_out () const
 
size_t remaining () const
 
-

Constructor & Destructor Documentation

- -

◆ multi_iter()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - - - - - - - - - - -
pocketfft::detail::multi_iter< N >::multi_iter (const arr_info & iarr_,
const arr_info & oarr_,
size_t idim_ )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ advance()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
void pocketfft::detail::multi_iter< N >::advance (size_t n)
-
-inline
-
- -
-
- -

◆ iofs() [1/2]

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::multi_iter< N >::iofs (size_t i) const
-
-inline
-
- -
-
- -

◆ iofs() [2/2]

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - - - - - -
ptrdiff_t pocketfft::detail::multi_iter< N >::iofs (size_t j,
size_t i ) const
-
-inline
-
- -
-
- -

◆ length_in()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
size_t pocketfft::detail::multi_iter< N >::length_in () const
-
-inline
-
- -
-
- -

◆ length_out()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
size_t pocketfft::detail::multi_iter< N >::length_out () const
-
-inline
-
- -
-
- -

◆ oofs() [1/2]

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::multi_iter< N >::oofs (size_t i) const
-
-inline
-
- -
-
- -

◆ oofs() [2/2]

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - - - - - -
ptrdiff_t pocketfft::detail::multi_iter< N >::oofs (size_t j,
size_t i ) const
-
-inline
-
- -
-
- -

◆ remaining()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
size_t pocketfft::detail::multi_iter< N >::remaining () const
-
-inline
-
- -
-
- -

◆ stride_in()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::multi_iter< N >::stride_in () const
-
-inline
-
- -
-
- -

◆ stride_out()

- -
-
-
-template<size_t N>
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::multi_iter< N >::stride_out () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1ndarr-members.html b/docs/build/html/classpocketfft_1_1detail_1_1ndarr-members.html deleted file mode 100644 index 695ada82..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1ndarr-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::ndarr< T > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::ndarr< T >, including all inherited members.

- - - - - - - - - - - - - - - -
arr_info(const shape_t &shape_, const stride_t &stride_)pocketfft::detail::arr_infoinline
cndarr(const void *data_, const shape_t &shape_, const stride_t &stride_)pocketfft::detail::cndarr< T >inline
dpocketfft::detail::cndarr< T >protected
ndarr(void *data_, const shape_t &shape_, const stride_t &stride_)pocketfft::detail::ndarr< T >inline
ndim() constpocketfft::detail::arr_infoinline
operator[](ptrdiff_t ofs)pocketfft::detail::ndarr< T >inline
pocketfft::detail::cndarr::operator[](ptrdiff_t ofs) constpocketfft::detail::cndarr< T >inline
shape() constpocketfft::detail::arr_infoinline
shape(size_t i) constpocketfft::detail::arr_infoinline
shppocketfft::detail::arr_infoprotected
size() constpocketfft::detail::arr_infoinline
strpocketfft::detail::arr_infoprotected
stride() constpocketfft::detail::arr_infoinline
stride(size_t i) constpocketfft::detail::arr_infoinline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1ndarr.html b/docs/build/html/classpocketfft_1_1detail_1_1ndarr.html deleted file mode 100644 index 515d2c77..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1ndarr.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::ndarr< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::ndarr< T > Class Template Reference
-
-
- -

#include <pocketfft.h>

-
-Inheritance diagram for pocketfft::detail::ndarr< T >:
-
-
- - -pocketfft::detail::cndarr< T > -pocketfft::detail::arr_info - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 ndarr (void *data_, const shape_t &shape_, const stride_t &stride_)
 
Toperator[] (ptrdiff_t ofs)
 
- Public Member Functions inherited from pocketfft::detail::cndarr< T >
 cndarr (const void *data_, const shape_t &shape_, const stride_t &stride_)
 
const Toperator[] (ptrdiff_t ofs) const
 
- Public Member Functions inherited from pocketfft::detail::arr_info
 arr_info (const shape_t &shape_, const stride_t &stride_)
 
size_t ndim () const
 
size_t size () const
 
const shape_tshape () const
 
size_t shape (size_t i) const
 
const stride_tstride () const
 
const ptrdiff_t & stride (size_t i) const
 
- - - - - - - - - -

-Additional Inherited Members

- Protected Attributes inherited from pocketfft::detail::cndarr< T >
const chard
 
- Protected Attributes inherited from pocketfft::detail::arr_info
shape_t shp
 
stride_t str
 
-

Constructor & Destructor Documentation

- -

◆ ndarr()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
pocketfft::detail::ndarr< T >::ndarr (void * data_,
const shape_t & shape_,
const stride_t & stride_ )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ operator[]()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
T & pocketfft::detail::ndarr< T >::operator[] (ptrdiff_t ofs)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1ndarr.png b/docs/build/html/classpocketfft_1_1detail_1_1ndarr.png deleted file mode 100644 index 96f688ccda63c89376608b377f575b96caf2c9a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcGr_H=O!sbG9N_jTVBEuNNc zr>viU=l@7i5Gc-^bnok%OqKo>CIYvA8npfFmPo$i(xI}mbE%Yxnoxo?72sml{`nO{((L zu1`|0w_3eadVAM5;_@^7$knc|`b-d@$$d*Y72|GuWX>aXcF^X~_C z9({G<`nq{**wya}^X$20S$g=_MO%kS_m}^lX&QfpfB*K{IL}YqARp+bt9n+;t}#5e zqn+VEoIb-17wL`r;(i~if(LAEb-I7&c7b%+#=Vjwr*Mr)wAz^wU`x zsx7q{Zk&!}JP>z|i{TrZk`BXTzAYY;qEAG6UWz;CHR)T_=C(S4zT*oM>n>&Ic&yr1 zF*WYF{iK{PlG%smu6=m+l1I@Z>1*X;Q@?tI8Ci%=sppFGOOMJ4JnNWz(ej#&sr(L` zOK*NERBn~NCKD$-P2u_-gHx)8Q7l2`sn@Gg{uRH>y8YEDz4C43>W5QGpI&|Tb=FnI zk|mSgSH`{Wc3-peQuvyyN~QBR%v-*ELz(+Z>8B5Qv!}O(##R3}%@%(7c+a`lrGM(q z?^Wc68(@ri%)0oW8lMa~yws!NC6IS*QE8djC5+cz(?=eR%HLhqO$k zOIv>D)?_b?>`z&GaOb)|pj3BxR(F<`RQI`!-8D0p-TbVm6kdG{oZwzV6P!ZP)|r{l z?60rcwwJYP_VsyNZ}~@t$JNG3$IC8yQa$hbx1-M2Vm@eJ%bK{$``YI(BG>F{m5NN~ zeu%!NC%qb&0K4z}FO7Tt)v9iPdhC_#^S7?7R{Fgs?m0Le%7D_LyXswGp(UAnGb2w` zypq2csibsY8|0(wZ~sRKPSl?W^4RG}SC==X8`=a8$^GJ&{kh(%_`AdtV4h|0boFyt I=akR{0FJ5)UjP6A diff --git a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c-members.html b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c-members.html deleted file mode 100644 index cd88f36a..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::pocketfft_c< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::pocketfft_c< T0 >, including all inherited members.

- - - - -
exec(cmplx< T > c[], T0 fct, bool fwd) constpocketfft::detail::pocketfft_c< T0 >inline
length() constpocketfft::detail::pocketfft_c< T0 >inline
pocketfft_c(size_t length)pocketfft::detail::pocketfft_c< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c.html b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c.html deleted file mode 100644 index 8eac32ad..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::pocketfft_c< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::pocketfft_c< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - -

-Public Member Functions

 pocketfft_c (size_t length)
 
template<typename T >
void exec (cmplx< T > c[], T0 fct, bool fwd) const
 
size_t length () const
 
-

Constructor & Destructor Documentation

- -

◆ pocketfft_c()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::pocketfft_c< T0 >::pocketfft_c (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
void pocketfft::detail::pocketfft_c< T0 >::exec (cmplx< T > c[],
T0 fct,
bool fwd ) const
-
-inline
-
- -
-
- -

◆ length()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::pocketfft_c< T0 >::length () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r-members.html b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r-members.html deleted file mode 100644 index 14d5e1b2..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::pocketfft_r< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::pocketfft_r< T0 >, including all inherited members.

- - - - -
exec(T c[], T0 fct, bool fwd) constpocketfft::detail::pocketfft_r< T0 >inline
length() constpocketfft::detail::pocketfft_r< T0 >inline
pocketfft_r(size_t length)pocketfft::detail::pocketfft_r< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r.html b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r.html deleted file mode 100644 index 7cf6d4e6..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::pocketfft_r< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::pocketfft_r< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - -

-Public Member Functions

 pocketfft_r (size_t length)
 
template<typename T >
void exec (T c[], T0 fct, bool fwd) const
 
size_t length () const
 
-

Constructor & Destructor Documentation

- -

◆ pocketfft_r()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::pocketfft_r< T0 >::pocketfft_r (size_t length)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
void pocketfft::detail::pocketfft_r< T0 >::exec (T c[],
T0 fct,
bool fwd ) const
-
-inline
-
- -
-
- -

◆ length()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
size_t pocketfft::detail::pocketfft_r< T0 >::length () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1rev__iter-members.html b/docs/build/html/classpocketfft_1_1detail_1_1rev__iter-members.html deleted file mode 100644 index 39dfa468..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1rev__iter-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::rev_iter Member List
-
-
- -

This is the complete list of members for pocketfft::detail::rev_iter, including all inherited members.

- - - - - - -
advance()pocketfft::detail::rev_iterinline
ofs() constpocketfft::detail::rev_iterinline
remaining() constpocketfft::detail::rev_iterinline
rev_iter(const arr_info &arr_, const shape_t &axes)pocketfft::detail::rev_iterinline
rev_ofs() constpocketfft::detail::rev_iterinline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1rev__iter.html b/docs/build/html/classpocketfft_1_1detail_1_1rev__iter.html deleted file mode 100644 index 3775ffc1..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1rev__iter.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::rev_iter Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::rev_iter Class Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - - - -

-Public Member Functions

 rev_iter (const arr_info &arr_, const shape_t &axes)
 
void advance ()
 
ptrdiff_t ofs () const
 
ptrdiff_t rev_ofs () const
 
size_t remaining () const
 
-

Constructor & Destructor Documentation

- -

◆ rev_iter()

- -
-
- - - - - -
- - - - - - - - - - - -
pocketfft::detail::rev_iter::rev_iter (const arr_info & arr_,
const shape_t & axes )
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ advance()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::rev_iter::advance ()
-
-inline
-
- -
-
- -

◆ ofs()

- -
-
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::rev_iter::ofs () const
-
-inline
-
- -
-
- -

◆ remaining()

- -
-
- - - - - -
- - - - - - - -
size_t pocketfft::detail::rev_iter::remaining () const
-
-inline
-
- -
-
- -

◆ rev_ofs()

- -
-
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::rev_iter::rev_ofs () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1rfftp-members.html b/docs/build/html/classpocketfft_1_1detail_1_1rfftp-members.html deleted file mode 100644 index 778f37aa..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1rfftp-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::rfftp< T0 > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::rfftp< T0 >, including all inherited members.

- - - -
exec(T c[], T0 fct, bool r2hc) constpocketfft::detail::rfftp< T0 >inline
rfftp(size_t length_)pocketfft::detail::rfftp< T0 >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1rfftp.html b/docs/build/html/classpocketfft_1_1detail_1_1rfftp.html deleted file mode 100644 index deddc38d..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1rfftp.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::rfftp< T0 > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::rfftp< T0 > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - -

-Public Member Functions

template<typename T >
void exec (T c[], T0 fct, bool r2hc) const
 
 rfftp (size_t length_)
 
-

Constructor & Destructor Documentation

- -

◆ rfftp()

- -
-
-
-template<typename T0 >
- - - - - -
- - - - - - - -
pocketfft::detail::rfftp< T0 >::rfftp (size_t length_)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ exec()

- -
-
-
-template<typename T0 >
-
-template<typename T >
- - - - - -
- - - - - - - - - - - - - - - - -
void pocketfft::detail::rfftp< T0 >::exec (T c[],
T0 fct,
bool r2hc ) const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1simple__iter-members.html b/docs/build/html/classpocketfft_1_1detail_1_1simple__iter-members.html deleted file mode 100644 index 0bd71a25..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1simple__iter-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::simple_iter Member List
-
-
- -

This is the complete list of members for pocketfft::detail::simple_iter, including all inherited members.

- - - - - -
advance()pocketfft::detail::simple_iterinline
ofs() constpocketfft::detail::simple_iterinline
remaining() constpocketfft::detail::simple_iterinline
simple_iter(const arr_info &arr_)pocketfft::detail::simple_iterinline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1simple__iter.html b/docs/build/html/classpocketfft_1_1detail_1_1simple__iter.html deleted file mode 100644 index 973bde1d..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1simple__iter.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::simple_iter Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::simple_iter Class Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - -

-Public Member Functions

 simple_iter (const arr_info &arr_)
 
void advance ()
 
ptrdiff_t ofs () const
 
size_t remaining () const
 
-

Constructor & Destructor Documentation

- -

◆ simple_iter()

- -
-
- - - - - -
- - - - - - - -
pocketfft::detail::simple_iter::simple_iter (const arr_info & arr_)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ advance()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::simple_iter::advance ()
-
-inline
-
- -
-
- -

◆ ofs()

- -
-
- - - - - -
- - - - - - - -
ptrdiff_t pocketfft::detail::simple_iter::ofs () const
-
-inline
-
- -
-
- -

◆ remaining()

- -
-
- - - - - -
- - - - - - - -
size_t pocketfft::detail::simple_iter::remaining () const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn-members.html b/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn-members.html deleted file mode 100644 index 8220ef46..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::sincos_2pibyn< T > Member List
-
-
- -

This is the complete list of members for pocketfft::detail::sincos_2pibyn< T >, including all inherited members.

- - - -
operator[](size_t idx) constpocketfft::detail::sincos_2pibyn< T >inline
sincos_2pibyn(size_t n)pocketfft::detail::sincos_2pibyn< T >inline
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn.html b/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn.html deleted file mode 100644 index c3933268..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::sincos_2pibyn< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::sincos_2pibyn< T > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - -

-Public Member Functions

 sincos_2pibyn (size_t n)
 
cmplx< Toperator[] (size_t idx) const
 
-

Constructor & Destructor Documentation

- -

◆ sincos_2pibyn()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
pocketfft::detail::sincos_2pibyn< T >::sincos_2pibyn (size_t n)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ operator[]()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
cmplx< T > pocketfft::detail::sincos_2pibyn< T >::operator[] (size_t idx) const
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue-members.html b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue-members.html deleted file mode 100644 index 119b98e5..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::threading::concurrent_queue< T > Member List
-
- - - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html deleted file mode 100644 index 624dd530..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::threading::concurrent_queue< T > Class Template Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::threading::concurrent_queue< T > Class Template Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - -

-Public Member Functions

void push (T val)
 
bool try_pop (T &val)
 
bool empty () const
 
-

Member Function Documentation

- -

◆ empty()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
bool pocketfft::detail::threading::concurrent_queue< T >::empty () const
-
-inline
-
- -
-
- -

◆ push()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
void pocketfft::detail::threading::concurrent_queue< T >::push (T val)
-
-inline
-
- -
-
- -

◆ try_pop()

- -
-
-
-template<typename T >
- - - - - -
- - - - - - - -
bool pocketfft::detail::threading::concurrent_queue< T >::try_pop (T & val)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch-members.html b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch-members.html deleted file mode 100644 index 1a1651f3..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::threading::latch Member List
-
- - - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch.html b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch.html deleted file mode 100644 index b4bc2ced..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::threading::latch Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::threading::latch Class Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - -

-Public Member Functions

 latch (size_t n)
 
void count_down ()
 
void wait ()
 
bool is_ready ()
 
-

Constructor & Destructor Documentation

- -

◆ latch()

- -
-
- - - - - -
- - - - - - - -
pocketfft::detail::threading::latch::latch (size_t n)
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ count_down()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::threading::latch::count_down ()
-
-inline
-
- -
-
- -

◆ is_ready()

- -
-
- - - - - -
- - - - - - - -
bool pocketfft::detail::threading::latch::is_ready ()
-
-inline
-
- -
-
- -

◆ wait()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::threading::latch::wait ()
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool-members.html b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool-members.html deleted file mode 100644 index a0affd7d..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
pocketfft::detail::threading::thread_pool Member List
-
- - - - - diff --git a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool.html b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool.html deleted file mode 100644 index d09be49b..00000000 --- a/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::threading::thread_pool Class Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
pocketfft::detail::threading::thread_pool Class Reference
-
-
- -

#include <pocketfft.h>

- - - - - - - - - - - - - - -

-Public Member Functions

 thread_pool (size_t nthreads)
 
 thread_pool ()
 
 ~thread_pool ()
 
void submit (std::function< void()> work)
 
void shutdown ()
 
void restart ()
 
-

Constructor & Destructor Documentation

- -

◆ thread_pool() [1/2]

- -
-
- - - - - -
- - - - - - - -
pocketfft::detail::threading::thread_pool::thread_pool (size_t nthreads)
-
-inlineexplicit
-
- -
-
- -

◆ thread_pool() [2/2]

- -
-
- - - - - -
- - - - - - - -
pocketfft::detail::threading::thread_pool::thread_pool ()
-
-inline
-
- -
-
- -

◆ ~thread_pool()

- -
-
- - - - - -
- - - - - - - -
pocketfft::detail::threading::thread_pool::~thread_pool ()
-
-inline
-
- -
-
-

Member Function Documentation

- -

◆ restart()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::threading::thread_pool::restart ()
-
-inline
-
- -
-
- -

◆ shutdown()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::threading::thread_pool::shutdown ()
-
-inline
-
- -
-
- -

◆ submit()

- -
-
- - - - - -
- - - - - - - -
void pocketfft::detail::threading::thread_pool::submit (std::function< void()> work)
-
-inline
-
- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/build/html/clipboard.js b/docs/build/html/clipboard.js deleted file mode 100644 index 42c1fb0e..00000000 --- a/docs/build/html/clipboard.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - -The code below is based on the Doxygen Awesome project, see -https://github.com/jothepro/doxygen-awesome-css - -MIT License - -Copyright (c) 2021 - 2022 jothepro - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -*/ - -let clipboard_title = "Copy to clipboard" -let clipboard_icon = `` -let clipboard_successIcon = `` -let clipboard_successDuration = 1000 - -$(function() { - if(navigator.clipboard) { - const fragments = document.getElementsByClassName("fragment") - for(const fragment of fragments) { - const clipboard_div = document.createElement("div") - clipboard_div.classList.add("clipboard") - clipboard_div.innerHTML = clipboard_icon - clipboard_div.title = clipboard_title - $(clipboard_div).click(function() { - const content = this.parentNode.cloneNode(true) - // filter out line number and folded fragments from file listings - content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) - let text = content.textContent - // remove trailing newlines and trailing spaces from empty lines - text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') - navigator.clipboard.writeText(text); - this.classList.add("success") - this.innerHTML = clipboard_successIcon - window.setTimeout(() => { // switch back to normal icon after timeout - this.classList.remove("success") - this.innerHTML = clipboard_icon - }, clipboard_successDuration); - }) - fragment.insertBefore(clipboard_div, fragment.firstChild) - } - } -}) diff --git a/docs/build/html/closed.png b/docs/build/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/docs/build/html/common_2arange_8h.html b/docs/build/html/common_2arange_8h.html deleted file mode 100644 index c78de6f0..00000000 --- a/docs/build/html/common_2arange_8h.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/arange.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
arange.h File Reference
-
-
-
#include "mlx/allocator.h"
-#include "mlx/array.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - -

-Functions

void mlx::core::arange (const std::vector< array > &inputs, array &out, double start, double step)
 
-
- - - - diff --git a/docs/build/html/common_2arange_8h_source.html b/docs/build/html/common_2arange_8h_source.html deleted file mode 100644 index 5866cd97..00000000 --- a/docs/build/html/common_2arange_8h_source.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/arange.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
arange.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/allocator.h"
-
6#include "mlx/array.h"
-
7
-
8namespace mlx::core {
-
9
-
10namespace {
-
11
-
12template <typename T>
-
13void arange(T start, T next, array& out, size_t size) {
-
14 auto ptr = out.data<T>();
-
15 auto step_size = next - start;
-
16 for (int i = 0; i < size; ++i) {
-
17 ptr[i] = start;
-
18 start += step_size;
-
19 }
-
20}
-
21
-
22} // namespace
-
23
-
-
24void arange(
-
25 const std::vector<array>& inputs,
-
26 array& out,
-
27 double start,
-
28 double step) {
-
29 assert(inputs.size() == 0);
- -
31 switch (out.dtype()) {
-
32 case bool_:
-
33 throw std::runtime_error("Bool type unsupported for arange.");
-
34 break;
-
35 case uint8:
-
36 arange<uint8_t>(start, start + step, out, out.size());
-
37 break;
-
38 case uint16:
-
39 arange<uint16_t>(start, start + step, out, out.size());
-
40 break;
-
41 case uint32:
-
42 arange<uint32_t>(start, start + step, out, out.size());
-
43 break;
-
44 case uint64:
-
45 arange<uint64_t>(start, start + step, out, out.size());
-
46 break;
-
47 case int8:
-
48 arange<int8_t>(start, start + step, out, out.size());
-
49 break;
-
50 case int16:
-
51 arange<int16_t>(start, start + step, out, out.size());
-
52 break;
-
53 case int32:
-
54 arange<int32_t>(start, start + step, out, out.size());
-
55 break;
-
56 case int64:
-
57 arange<int64_t>(start, start + step, out, out.size());
-
58 break;
-
59 case float16:
-
60 arange<float16_t>(start, start + step, out, out.size());
-
61 break;
-
62 case float32:
-
63 arange<float>(start, start + step, out, out.size());
-
64 break;
-
65 case bfloat16:
-
66 arange<bfloat16_t>(start, start + step, out, out.size());
-
67 break;
-
68 case complex64:
-
69 arange<complex64_t>(start, start + step, out, out.size());
-
70 break;
-
71 }
-
72}
-
-
73
-
74} // namespace mlx::core
- - -
BufferHolder * next
Definition allocator.h:37
-
Definition array.h:20
-
size_t nbytes() const
The number of bytes in the array.
Definition array.h:89
-
size_t size() const
The number of elements in the array.
Definition array.h:84
-
void set_data(allocator::Buffer buffer, deleter_t d=allocator::free)
-
Dtype dtype() const
Get the arrays data type.
Definition array.h:127
-
Buffer malloc_or_wait(size_t size)
-
Definition allocator.h:7
-
constexpr Dtype bool_
Definition dtype.h:58
-
constexpr Dtype uint64
Definition dtype.h:63
-
constexpr Dtype uint16
Definition dtype.h:61
-
void arange(const std::vector< array > &inputs, array &out, double start, double step)
Definition arange.h:24
-
constexpr Dtype bfloat16
Definition dtype.h:72
-
constexpr Dtype int32
Definition dtype.h:67
-
constexpr Dtype float32
Definition dtype.h:71
-
constexpr Dtype int16
Definition dtype.h:66
-
constexpr Dtype int8
Definition dtype.h:65
-
constexpr Dtype int64
Definition dtype.h:68
-
constexpr Dtype uint8
Definition dtype.h:60
-
constexpr Dtype float16
Definition dtype.h:70
-
constexpr Dtype uint32
Definition dtype.h:62
-
constexpr Dtype complex64
Definition dtype.h:73
-
- - - - diff --git a/docs/build/html/common_2binary_8h.html b/docs/build/html/common_2binary_8h.html deleted file mode 100644 index ae064873..00000000 --- a/docs/build/html/common_2binary_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/binary.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
binary.h File Reference
-
-
-
#include <cassert>
-#include "mlx/allocator.h"
-#include "mlx/array.h"
-#include "mlx/backend/common/utils.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
-

Variable Documentation

- -

◆ op

- -
-
- - - - -
Op op
-
- -
-
-
- - - - diff --git a/docs/build/html/common_2binary_8h_source.html b/docs/build/html/common_2binary_8h_source.html deleted file mode 100644 index f5dec3b6..00000000 --- a/docs/build/html/common_2binary_8h_source.html +++ /dev/null @@ -1,768 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/binary.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
binary.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4#include <cassert>
-
5
-
6#include "mlx/allocator.h"
-
7#include "mlx/array.h"
- -
9
-
10namespace mlx::core {
-
11
-
12namespace {
-
13
-
14enum class BinaryOpType {
-
15 ScalarScalar,
-
16 ScalarVector,
-
17 VectorScalar,
-
18 VectorVector,
-
19 General,
-
20};
-
21
-
22BinaryOpType get_binary_op_type(const array& a, const array& b) {
-
23 BinaryOpType bopt;
-
24 if (a.data_size() == 1 && b.data_size() == 1) {
-
25 bopt = BinaryOpType::ScalarScalar;
-
26 } else if (a.data_size() == 1 && b.flags().contiguous) {
-
27 bopt = BinaryOpType::ScalarVector;
-
28 } else if (b.data_size() == 1 && a.flags().contiguous) {
-
29 bopt = BinaryOpType::VectorScalar;
-
30 } else if (
-
31 a.flags().row_contiguous && b.flags().row_contiguous ||
-
32 a.flags().col_contiguous && b.flags().col_contiguous) {
-
33 bopt = BinaryOpType::VectorVector;
-
34 } else {
-
35 bopt = BinaryOpType::General;
-
36 }
-
37 return bopt;
-
38}
-
39
-
40void set_binary_op_output_data(
-
41 const array& a,
-
42 const array& b,
-
43 array& out,
-
44 BinaryOpType bopt,
-
45 bool donate_with_move = false) {
-
46 bool b_donatable = is_donatable(b, out);
-
47 bool a_donatable = is_donatable(a, out);
-
48 switch (bopt) {
-
49 case BinaryOpType::ScalarScalar:
-
50 out.set_data(
-
51 allocator::malloc_or_wait(out.itemsize()), 1, a.strides(), a.flags());
-
52 break;
-
53 case BinaryOpType::ScalarVector:
-
54 if (b_donatable) {
-
55 if (donate_with_move) {
-
56 out.move_shared_buffer(b);
-
57 } else {
-
58 out.copy_shared_buffer(b);
-
59 }
-
60 } else {
-
61 out.set_data(
-
62 allocator::malloc_or_wait(b.data_size() * out.itemsize()),
-
63 b.data_size(),
-
64 b.strides(),
-
65 b.flags());
-
66 }
-
67 break;
-
68 case BinaryOpType::VectorScalar:
-
69 if (a_donatable) {
-
70 if (donate_with_move) {
-
71 out.move_shared_buffer(a);
-
72 } else {
-
73 out.copy_shared_buffer(a);
-
74 }
-
75 } else {
-
76 out.set_data(
-
77 allocator::malloc_or_wait(a.data_size() * out.itemsize()),
-
78 a.data_size(),
-
79 a.strides(),
-
80 a.flags());
-
81 }
-
82 break;
-
83 case BinaryOpType::VectorVector:
-
84 if (a_donatable) {
-
85 if (donate_with_move) {
-
86 out.move_shared_buffer(a);
-
87 } else {
-
88 out.copy_shared_buffer(a);
-
89 }
-
90 } else if (b_donatable) {
-
91 if (donate_with_move) {
-
92 out.move_shared_buffer(b);
-
93 } else {
-
94 out.copy_shared_buffer(b);
-
95 }
-
96 } else {
-
97 out.set_data(
-
98 allocator::malloc_or_wait(a.data_size() * out.itemsize()),
-
99 a.data_size(),
-
100 a.strides(),
-
101 a.flags());
-
102 }
-
103 break;
-
104 case BinaryOpType::General:
-
105 if (a_donatable && a.flags().row_contiguous && a.size() == out.size()) {
-
106 if (donate_with_move) {
-
107 out.move_shared_buffer(a);
-
108 } else {
-
109 out.copy_shared_buffer(a);
-
110 }
-
111 } else if (
-
112 b_donatable && b.flags().row_contiguous && b.size() == out.size()) {
-
113 if (donate_with_move) {
-
114 out.move_shared_buffer(b);
-
115 } else {
-
116 out.copy_shared_buffer(b);
-
117 }
-
118 } else {
-
119 out.set_data(allocator::malloc_or_wait(out.nbytes()));
-
120 }
-
121 break;
-
122 }
-
123}
-
124
-
125struct UseDefaultBinaryOp {
-
126 template <typename T, typename U>
-
127 void operator()(const T* a, const T* b, U* dst, int size) {
-
128 // Should we throw? This should normally never be called.
-
129 assert(false);
-
130 }
-
131
-
132 template <typename T, typename U>
-
133 void operator()(const T* a, const T* b, U* dst_a, U* dst_b, int size) {
-
134 // Should we throw? This should normally never be called.
-
135 assert(false);
-
136 }
-
137};
-
138
-
139template <typename T, typename U, typename Op>
-
140struct DefaultVectorScalar {
-
141 Op op;
-
142
-
143 DefaultVectorScalar(Op op_) : op(op_) {}
-
144
-
145 void operator()(const T* a, const T* b, U* dst, int size) {
-
146 T scalar = *b;
-
147 while (size-- > 0) {
-
148 *dst = op(*a, scalar);
-
149 dst++;
-
150 a++;
-
151 }
-
152 }
-
153
-
154 void operator()(const T* a, const T* b, U* dst_a, U* dst_b, int size) {
-
155 T scalar = *b;
-
156 while (size-- > 0) {
-
157 auto dst = op(*a, scalar);
-
158 *dst_a = dst.first;
-
159 *dst_b = dst.second;
-
160 dst_a++;
-
161 dst_b++;
-
162 a++;
-
163 }
-
164 }
-
165};
-
166
-
167template <typename T, typename U, typename Op>
-
168struct DefaultScalarVector {
-
169 Op op;
-
170
-
171 DefaultScalarVector(Op op_) : op(op_) {}
-
172
-
173 void operator()(const T* a, const T* b, U* dst, int size) {
-
174 T scalar = *a;
-
175 while (size-- > 0) {
-
176 *dst = op(scalar, *b);
-
177 dst++;
-
178 b++;
-
179 }
-
180 }
-
181
-
182 void operator()(const T* a, const T* b, U* dst_a, U* dst_b, int size) {
-
183 T scalar = *a;
-
184 while (size-- > 0) {
-
185 auto dst = op(scalar, *b);
-
186 *dst_a = dst.first;
-
187 *dst_b = dst.second;
-
188 dst_a++;
-
189 dst_b++;
-
190 b++;
-
191 }
-
192 }
-
193};
-
194
-
195template <typename T, typename U, typename Op>
-
196struct DefaultVectorVector {
-
197 Op op;
-
198
-
199 DefaultVectorVector(Op op_) : op(op_) {}
-
200
-
201 void operator()(const T* a, const T* b, U* dst, int size) {
-
202 while (size-- > 0) {
-
203 *dst = op(*a, *b);
-
204 dst++;
-
205 a++;
-
206 b++;
-
207 }
-
208 }
-
209
-
210 void operator()(const T* a, const T* b, U* dst_a, U* dst_b, int size) {
-
211 while (size-- > 0) {
-
212 auto dst = op(*a, *b);
-
213 *dst_a = dst.first;
-
214 *dst_b = dst.second;
-
215 dst_a++;
-
216 dst_b++;
-
217 a++;
-
218 b++;
-
219 }
-
220 }
-
221};
-
222
-
223template <typename T, typename U, typename Op>
-
224void binary_op_dims1(const array& a, const array& b, array& out, Op op) {
-
225 const T* a_ptr = a.data<T>();
-
226 const T* b_ptr = b.data<T>();
-
227 U* dst = out.data<U>();
-
228 size_t a_idx = 0;
-
229 size_t b_idx = 0;
-
230 for (size_t i = 0; i < out.size(); ++i) {
-
231 dst[i] = op(a_ptr[a_idx], b_ptr[b_idx]);
-
232 a_idx += a.strides()[0];
-
233 b_idx += b.strides()[0];
-
234 }
-
235}
-
236
-
237template <typename T, typename U, typename Op>
-
238void binary_op_dims1(
-
239 const array& a,
-
240 const array& b,
-
241 array& out,
-
242 Op op,
-
243 int stride) {
-
244 const T* a_ptr = a.data<T>();
-
245 const T* b_ptr = b.data<T>();
-
246 U* dst = out.data<U>();
-
247 size_t a_idx = 0;
-
248 size_t b_idx = 0;
-
249 for (size_t i = 0; i < a.shape()[0]; i++) {
-
250 op(a_ptr + a_idx, b_ptr + b_idx, dst, stride);
-
251 a_idx += a.strides()[0];
-
252 b_idx += b.strides()[0];
-
253 dst += stride;
-
254 }
-
255}
-
256
-
257template <typename T, typename U, typename Op>
-
258void binary_op_dims2(const array& a, const array& b, array& out, Op op) {
-
259 const T* a_ptr = a.data<T>();
-
260 const T* b_ptr = b.data<T>();
-
261 U* dst = out.data<U>();
-
262 size_t a_idx = 0;
-
263 size_t b_idx = 0;
-
264 size_t out_idx = 0;
-
265 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
266 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
267 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx]);
-
268 a_idx += a.strides()[1];
-
269 b_idx += b.strides()[1];
-
270 }
-
271 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
272 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
273 }
-
274}
-
275
-
276template <typename T, typename U, typename Op>
-
277void binary_op_dims2(
-
278 const array& a,
-
279 const array& b,
-
280 array& out,
-
281 Op op,
-
282 int stride) {
-
283 const T* a_ptr = a.data<T>();
-
284 const T* b_ptr = b.data<T>();
-
285 U* dst = out.data<U>();
-
286 size_t a_idx = 0;
-
287 size_t b_idx = 0;
-
288 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
289 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
290 op(a_ptr + a_idx, b_ptr + b_idx, dst, stride);
-
291 a_idx += a.strides()[1];
-
292 b_idx += b.strides()[1];
-
293 dst += stride;
-
294 }
-
295 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
296 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
297 }
-
298}
-
299
-
300template <typename T, typename U, typename Op>
-
301void binary_op_dims3(const array& a, const array& b, array& out, Op op) {
-
302 const T* a_ptr = a.data<T>();
-
303 const T* b_ptr = b.data<T>();
-
304 U* dst = out.data<U>();
-
305 size_t a_idx = 0;
-
306 size_t b_idx = 0;
-
307 size_t out_idx = 0;
-
308 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
309 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
310 for (size_t k = 0; k < a.shape()[2]; ++k) {
-
311 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx]);
-
312 a_idx += a.strides()[2];
-
313 b_idx += b.strides()[2];
-
314 }
-
315 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
-
316 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
-
317 }
-
318 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
319 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
320 }
-
321}
-
322
-
323template <typename T, typename U, typename Op>
-
324void binary_op_dims4(const array& a, const array& b, array& out, Op op) {
-
325 const T* a_ptr = a.data<T>();
-
326 const T* b_ptr = b.data<T>();
-
327 U* dst = out.data<U>();
-
328 size_t a_idx = 0;
-
329 size_t b_idx = 0;
-
330 size_t out_idx = 0;
-
331 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
332 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
333 for (size_t k = 0; k < a.shape()[2]; ++k) {
-
334 for (size_t ii = 0; ii < a.shape()[3]; ++ii) {
-
335 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx]);
-
336 a_idx += a.strides()[3];
-
337 b_idx += b.strides()[3];
-
338 }
-
339 a_idx += a.strides()[2] - a.strides()[3] * a.shape()[3];
-
340 b_idx += b.strides()[2] - b.strides()[3] * b.shape()[3];
-
341 }
-
342 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
-
343 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
-
344 }
-
345 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
346 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
347 }
-
348}
-
349
-
350template <typename T, typename U, typename Op>
-
351void binary_op_dispatch_dims(
-
352 const array& a,
-
353 const array& b,
-
354 array& out,
-
355 Op op) {
-
356 switch (out.ndim()) {
-
357 case 1:
-
358 binary_op_dims1<T, U, Op>(a, b, out, op);
-
359 return;
-
360 case 2:
-
361 binary_op_dims2<T, U, Op>(a, b, out, op);
-
362 return;
-
363 case 3:
-
364 binary_op_dims3<T, U, Op>(a, b, out, op);
-
365 return;
-
366 case 4:
-
367 binary_op_dims4<T, U, Op>(a, b, out, op);
-
368 return;
-
369 }
-
370
-
371 const T* a_ptr = a.data<T>();
-
372 const T* b_ptr = b.data<T>();
-
373 U* dst = out.data<U>();
-
374 for (size_t i = 0; i < out.size(); i++) {
-
375 int a_idx = elem_to_loc(i, a.shape(), a.strides());
-
376 int b_idx = elem_to_loc(i, b.shape(), b.strides());
-
377 dst[i] = op(a_ptr[a_idx], b_ptr[b_idx]);
-
378 }
-
379}
-
380
-
381template <typename T, typename U, typename Op>
-
382void binary_op_dispatch_dims(
-
383 const array& a,
-
384 const array& b,
-
385 array& out,
-
386 Op op,
-
387 int dim,
-
388 int stride) {
-
389 // Number of dimensions to loop over for vectorized ops
-
390 switch (dim) {
-
391 case 1:
-
392 binary_op_dims1<T, U, Op>(a, b, out, op, stride);
-
393 return;
-
394 case 2:
-
395 binary_op_dims2<T, U, Op>(a, b, out, op, stride);
-
396 return;
-
397 }
-
398
-
399 const T* a_ptr = a.data<T>();
-
400 const T* b_ptr = b.data<T>();
-
401 U* dst = out.data<U>();
-
402 for (size_t i = 0; i < out.size(); i += stride) {
-
403 int a_idx = elem_to_loc(i, a.shape(), a.strides());
-
404 int b_idx = elem_to_loc(i, b.shape(), b.strides());
-
405 op(a_ptr + a_idx, b_ptr + b_idx, dst, stride);
-
406 dst += stride;
-
407 }
-
408}
-
409
-
410template <
-
411 typename T,
-
412 typename U,
-
413 typename Op,
-
414 typename OpSV,
-
415 typename OpVS,
-
416 typename OpVV>
-
417void binary_op(
-
418 const array& a,
-
419 const array& b,
-
420 array& out,
-
421 Op op,
-
422 OpSV opsv,
-
423 OpVS opvs,
-
424 OpVV opvv) {
-
425 auto bopt = get_binary_op_type(a, b);
-
426 set_binary_op_output_data(a, b, out, bopt);
-
427
-
428 // The full computation is scalar scalar so call the base op once
-
429 if (bopt == BinaryOpType::ScalarScalar) {
-
430 *(out.data<U>()) = op(*a.data<T>(), *b.data<T>());
-
431 return;
-
432 }
-
433
-
434 // The full computation is scalar vector so delegate to the op
-
435 if (bopt == BinaryOpType::ScalarVector) {
-
436 opsv(a.data<T>(), b.data<T>(), out.data<U>(), b.data_size());
-
437 return;
-
438 }
-
439
-
440 // The full computation is vector scalar so delegate to the op
-
441 if (bopt == BinaryOpType::VectorScalar) {
-
442 opvs(a.data<T>(), b.data<T>(), out.data<U>(), a.data_size());
-
443 return;
-
444 }
-
445
-
446 // The full computation is vector vector so delegate to the op
-
447 if (bopt == BinaryOpType::VectorVector) {
-
448 opvv(a.data<T>(), b.data<T>(), out.data<U>(), out.size());
-
449 return;
-
450 }
-
451
-
452 // General computation so let's try to optimize
-
453
-
454 // Get the left-most dim such that the array is row contiguous after
-
455 auto& strides = out.strides();
-
456 auto leftmost_rc_dim = [&strides](const array& arr) {
-
457 int d = arr.ndim() - 1;
-
458 for (; d >= 0 && arr.strides()[d] == strides[d]; d--) {
-
459 }
-
460 return d + 1;
-
461 };
-
462 auto a_rc_dim = leftmost_rc_dim(a);
-
463 auto b_rc_dim = leftmost_rc_dim(b);
-
464
-
465 // Get the left-most dim such that the array is a broadcasted "scalar" after
-
466 auto leftmost_s_dim = [](const array& arr) {
-
467 int d = arr.ndim() - 1;
-
468 for (; d >= 0 && arr.strides()[d] == 0; d--) {
-
469 }
-
470 return d + 1;
-
471 };
-
472 auto a_s_dim = leftmost_s_dim(a);
-
473 auto b_s_dim = leftmost_s_dim(b);
-
474
-
475 auto ndim = out.ndim();
-
476
-
477 // Case 1: LxM and FxM where L and F are broadcastable and M is row contiguous
-
478 int dim = ndim;
-
479 if (int d = std::max(a_rc_dim, b_rc_dim); d < ndim) {
-
480 bopt = BinaryOpType::VectorVector;
-
481 dim = d;
-
482 // Case 2: LxM and Fx1 where L and F are broadcastable and M is row
-
483 // contiguous
-
484 } else if (int d = std::max(a_rc_dim, b_s_dim); d < ndim) {
-
485 bopt = BinaryOpType::VectorScalar;
-
486 dim = d;
-
487 // Case 3: Lx1 and FxM where L and F are broadcastable and M is row
-
488 // contiguous
-
489 } else if (int d = std::max(a_s_dim, b_rc_dim); d < ndim) {
-
490 bopt = BinaryOpType::ScalarVector;
-
491 dim = d;
-
492 }
-
493
-
494 // Can be sure dim > 0 since otherwise we would have used one of the fully
-
495 // contiguous methods above. Except for the case that the flags do not
-
496 // correspond to the underlying contiguity.
-
497 size_t stride;
-
498 if (dim == 0 || strides[dim - 1] < 16) {
-
499 stride = 1;
-
500 bopt = BinaryOpType::General;
-
501 dim = ndim;
-
502 } else {
-
503 stride = strides[dim - 1];
-
504 }
-
505
-
506 switch (bopt) {
-
507 case BinaryOpType::VectorVector:
-
508 binary_op_dispatch_dims<T, U>(a, b, out, opvv, dim, stride);
-
509 break;
-
510 case BinaryOpType::VectorScalar:
-
511 binary_op_dispatch_dims<T, U>(a, b, out, opvs, dim, stride);
-
512 break;
-
513 case BinaryOpType::ScalarVector:
-
514 binary_op_dispatch_dims<T, U>(a, b, out, opsv, dim, stride);
-
515 break;
-
516 default:
-
517 binary_op_dispatch_dims<T, U>(a, b, out, op);
-
518 break;
-
519 }
-
520}
-
521
-
522template <typename T, typename Op, typename OpSV, typename OpVS, typename OpVV>
-
523void binary_op(
-
524 const array& a,
-
525 const array& b,
-
526 array& out,
-
527 Op op,
-
528 OpSV opsv,
-
529 OpVS opvs,
-
530 OpVV opvv) {
-
531 // TODO: The following mess of constexpr evaluations can probably be achieved
-
532 // with template specializations and overloading. Would it be simpler?
-
533
-
534 if (std::is_same<decltype(opsv), UseDefaultBinaryOp>::value) {
-
535 if (std::is_same<decltype(opvs), UseDefaultBinaryOp>::value) {
-
536 if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
537 // All ops are UseDefaultBinaryOp (why oh why would someone call that?)
-
538 binary_op<T, T>(
-
539 a,
-
540 b,
-
541 out,
-
542 op,
-
543 DefaultScalarVector<T, T, Op>(op),
-
544 DefaultVectorScalar<T, T, Op>(op),
-
545 DefaultVectorVector<T, T, Op>(op));
-
546 } else {
-
547 // opsv and opvs were UseDefaultBinaryOp
-
548 binary_op<T, T>(
-
549 a,
-
550 b,
-
551 out,
-
552 op,
-
553 DefaultScalarVector<T, T, Op>(op),
-
554 DefaultVectorScalar<T, T, Op>(op),
-
555 opvv);
-
556 }
-
557 } else if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
558 // opsv and opvv were UseDefaultBinaryOp
-
559 binary_op<T, T>(
-
560 a,
-
561 b,
-
562 out,
-
563 op,
-
564 DefaultScalarVector<T, T, Op>(op),
-
565 opvs,
-
566 DefaultVectorVector<T, T, Op>(op));
-
567 } else {
-
568 // opsv was UseDefaultBinaryOp
-
569 binary_op<T, T>(
-
570 a, b, out, op, DefaultScalarVector<T, T, Op>(op), opvs, opvv);
-
571 }
-
572 } else if (std::is_same<decltype(opvs), UseDefaultBinaryOp>::value) {
-
573 if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
574 // opvs and opvv were UseDefaultBinaryOp
-
575 binary_op<T, T>(
-
576 a,
-
577 b,
-
578 out,
-
579 op,
-
580 opsv,
-
581 DefaultVectorScalar<T, T, Op>(op),
-
582 DefaultVectorVector<T, T, Op>(op));
-
583 } else {
-
584 // opvs was UseDefaultBinaryOp
-
585 binary_op<T, T>(
-
586 a, b, out, op, opsv, DefaultVectorScalar<T, T, Op>(op), opvv);
-
587 }
-
588 } else if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
589 // opvv was UseDefaultBinaryOp
-
590 binary_op<T, T>(
-
591 a, b, out, op, opsv, opvs, DefaultVectorVector<T, T, Op>(op));
-
592 } else {
-
593 // All ops provided
-
594 binary_op<T, T>(a, b, out, op, opsv, opvs, opvv);
-
595 }
-
596}
-
597
-
598template <typename T, typename Op>
-
599void binary_op(const array& a, const array& b, array& out, Op op) {
-
600 DefaultScalarVector<T, T, Op> opsv(op);
-
601 DefaultVectorScalar<T, T, Op> opvs(op);
-
602 DefaultVectorVector<T, T, Op> opvv(op);
-
603 binary_op<T, T>(a, b, out, op, opsv, opvs, opvv);
-
604}
-
605
-
606template <typename... Ops>
-
607void binary(const array& a, const array& b, array& out, Ops... ops) {
-
608 switch (out.dtype()) {
-
609 case bool_:
-
610 binary_op<bool>(a, b, out, ops...);
-
611 break;
-
612 case uint8:
-
613 binary_op<uint8_t>(a, b, out, ops...);
-
614 break;
-
615 case uint16:
-
616 binary_op<uint16_t>(a, b, out, ops...);
-
617 break;
-
618 case uint32:
-
619 binary_op<uint32_t>(a, b, out, ops...);
-
620 break;
-
621 case uint64:
-
622 binary_op<uint64_t>(a, b, out, ops...);
-
623 break;
-
624 case int8:
-
625 binary_op<int8_t>(a, b, out, ops...);
-
626 break;
-
627 case int16:
-
628 binary_op<int16_t>(a, b, out, ops...);
-
629 break;
-
630 case int32:
-
631 binary_op<int32_t>(a, b, out, ops...);
-
632 break;
-
633 case int64:
-
634 binary_op<int64_t>(a, b, out, ops...);
-
635 break;
-
636 case float16:
-
637 binary_op<float16_t>(a, b, out, ops...);
-
638 break;
-
639 case float32:
-
640 binary_op<float>(a, b, out, ops...);
-
641 break;
-
642 case bfloat16:
-
643 binary_op<bfloat16_t>(a, b, out, ops...);
-
644 break;
-
645 case complex64:
-
646 binary_op<complex64_t>(a, b, out, ops...);
-
647 break;
-
648 }
-
649}
-
650
-
651} // namespace
-
652
-
653} // namespace mlx::core
- - - -
Op op
Definition binary.h:141
-
Buffer malloc_or_wait(size_t size)
-
const char * binary()
-
Definition allocator.h:7
-
constexpr Dtype bool_
Definition dtype.h:58
-
constexpr Dtype uint64
Definition dtype.h:63
-
constexpr Dtype uint16
Definition dtype.h:61
-
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
-
constexpr Dtype bfloat16
Definition dtype.h:72
-
constexpr Dtype int32
Definition dtype.h:67
-
constexpr Dtype float32
Definition dtype.h:71
-
constexpr Dtype int16
Definition dtype.h:66
-
constexpr Dtype int8
Definition dtype.h:65
-
constexpr Dtype int64
Definition dtype.h:68
-
constexpr Dtype uint8
Definition dtype.h:60
- -
constexpr Dtype float16
Definition dtype.h:70
-
constexpr Dtype uint32
Definition dtype.h:62
-
bool is_donatable(const array &in, const array &out)
Definition utils.h:158
-
constexpr Dtype complex64
Definition dtype.h:73
-
- - - - diff --git a/docs/build/html/common_2binary__two_8h.html b/docs/build/html/common_2binary__two_8h.html deleted file mode 100644 index 23b7b371..00000000 --- a/docs/build/html/common_2binary__two_8h.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/binary_two.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
binary_two.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
-
- - - - diff --git a/docs/build/html/common_2binary__two_8h_source.html b/docs/build/html/common_2binary__two_8h_source.html deleted file mode 100644 index 44daec52..00000000 --- a/docs/build/html/common_2binary__two_8h_source.html +++ /dev/null @@ -1,647 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/binary_two.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
binary_two.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
- - -
7
-
8namespace mlx::core {
-
9
-
10namespace {
-
11
-
12template <typename T, typename U, typename Op>
-
13void binary_op_dims1(
-
14 const array& a,
-
15 const array& b,
-
16 array& out_a,
-
17 array& out_b,
-
18 Op op) {
-
19 const T* a_ptr = a.data<T>();
-
20 const T* b_ptr = b.data<T>();
-
21 U* dst_a = out_a.data<U>();
-
22 U* dst_b = out_b.data<U>();
-
23 size_t a_idx = 0;
-
24 size_t b_idx = 0;
-
25 for (size_t i = 0; i < out_a.size(); ++i) {
-
26 auto dst = op(a_ptr[a_idx], b_ptr[b_idx]);
-
27 dst_a[i] = dst.first;
-
28 dst_b[i] = dst.second;
-
29 a_idx += a.strides()[0];
-
30 b_idx += b.strides()[0];
-
31 }
-
32}
-
33
-
34template <typename T, typename U, typename Op>
-
35void binary_op_dims1(
-
36 const array& a,
-
37 const array& b,
-
38 array& out_a,
-
39 array& out_b,
-
40 Op op,
-
41 int stride) {
-
42 const T* a_ptr = a.data<T>();
-
43 const T* b_ptr = b.data<T>();
-
44 U* dst_a = out_a.data<U>();
-
45 U* dst_b = out_b.data<U>();
-
46 size_t a_idx = 0;
-
47 size_t b_idx = 0;
-
48 for (size_t i = 0; i < a.shape()[0]; i++) {
-
49 op(a_ptr + a_idx, b_ptr + b_idx, dst_a, dst_b, stride);
-
50 a_idx += a.strides()[0];
-
51 b_idx += b.strides()[0];
-
52 dst_a += stride;
-
53 dst_b += stride;
-
54 }
-
55}
-
56
-
57template <typename T, typename U, typename Op>
-
58void binary_op_dims2(
-
59 const array& a,
-
60 const array& b,
-
61 array& out_a,
-
62 array& out_b,
-
63 Op op) {
-
64 const T* a_ptr = a.data<T>();
-
65 const T* b_ptr = b.data<T>();
-
66 U* dst_a = out_a.data<U>();
-
67 U* dst_b = out_b.data<U>();
-
68 size_t a_idx = 0;
-
69 size_t b_idx = 0;
-
70 size_t out_idx = 0;
-
71 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
72 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
73 auto dst = op(a_ptr[a_idx], b_ptr[b_idx]);
-
74 dst_a[out_idx] = dst.first;
-
75 dst_b[out_idx++] = dst.second;
-
76 a_idx += a.strides()[1];
-
77 b_idx += b.strides()[1];
-
78 }
-
79 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
80 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
81 }
-
82}
-
83
-
84template <typename T, typename U, typename Op>
-
85void binary_op_dims2(
-
86 const array& a,
-
87 const array& b,
-
88 array& out_a,
-
89 array& out_b,
-
90 Op op,
-
91 int stride) {
-
92 const T* a_ptr = a.data<T>();
-
93 const T* b_ptr = b.data<T>();
-
94 U* dst_a = out_a.data<U>();
-
95 U* dst_b = out_b.data<U>();
-
96 size_t a_idx = 0;
-
97 size_t b_idx = 0;
-
98 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
99 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
100 op(a_ptr + a_idx, b_ptr + b_idx, dst_a, dst_b, stride);
-
101 a_idx += a.strides()[1];
-
102 b_idx += b.strides()[1];
-
103 dst_a += stride;
-
104 dst_b += stride;
-
105 }
-
106 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
107 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
108 }
-
109}
-
110
-
111template <typename T, typename U, typename Op>
-
112void binary_op_dims3(
-
113 const array& a,
-
114 const array& b,
-
115 array& out_a,
-
116 array& out_b,
-
117 Op op) {
-
118 const T* a_ptr = a.data<T>();
-
119 const T* b_ptr = b.data<T>();
-
120 U* dst_a = out_a.data<U>();
-
121 U* dst_b = out_b.data<U>();
-
122 size_t a_idx = 0;
-
123 size_t b_idx = 0;
-
124 size_t out_idx = 0;
-
125 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
126 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
127 for (size_t k = 0; k < a.shape()[2]; ++k) {
-
128 auto dst = op(a_ptr[a_idx], b_ptr[b_idx]);
-
129 dst_a[out_idx] = dst.first;
-
130 dst_b[out_idx++] = dst.second;
-
131 a_idx += a.strides()[2];
-
132 b_idx += b.strides()[2];
-
133 }
-
134 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
-
135 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
-
136 }
-
137 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
138 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
139 }
-
140}
-
141
-
142template <typename T, typename U, typename Op>
-
143void binary_op_dims4(
-
144 const array& a,
-
145 const array& b,
-
146 array& out_a,
-
147 array& out_b,
-
148 Op op) {
-
149 const T* a_ptr = a.data<T>();
-
150 const T* b_ptr = b.data<T>();
-
151 U* dst_a = out_a.data<U>();
-
152 U* dst_b = out_b.data<U>();
-
153 size_t a_idx = 0;
-
154 size_t b_idx = 0;
-
155 size_t out_idx = 0;
-
156 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
157 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
158 for (size_t k = 0; k < a.shape()[2]; ++k) {
-
159 for (size_t ii = 0; ii < a.shape()[3]; ++ii) {
-
160 auto dst = op(a_ptr[a_idx], b_ptr[b_idx]);
-
161 dst_a[out_idx] = dst.first;
-
162 dst_b[out_idx++] = dst.second;
-
163 a_idx += a.strides()[3];
-
164 b_idx += b.strides()[3];
-
165 }
-
166 a_idx += a.strides()[2] - a.strides()[3] * a.shape()[3];
-
167 b_idx += b.strides()[2] - b.strides()[3] * b.shape()[3];
-
168 }
-
169 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
-
170 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
-
171 }
-
172 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
173 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
174 }
-
175}
-
176
-
177template <typename T, typename U, typename Op>
-
178void binary_op_dispatch_dims(
-
179 const array& a,
-
180 const array& b,
-
181 array& out_a,
-
182 array& out_b,
-
183 Op op) {
-
184 switch (out_a.ndim()) {
-
185 case 1:
-
186 binary_op_dims1<T, U, Op>(a, b, out_a, out_b, op);
-
187 return;
-
188 case 2:
-
189 binary_op_dims2<T, U, Op>(a, b, out_a, out_b, op);
-
190 return;
-
191 case 3:
-
192 binary_op_dims3<T, U, Op>(a, b, out_a, out_b, op);
-
193 return;
-
194 case 4:
-
195 binary_op_dims4<T, U, Op>(a, b, out_a, out_b, op);
-
196 return;
-
197 }
-
198
-
199 const T* a_ptr = a.data<T>();
-
200 const T* b_ptr = b.data<T>();
-
201 U* dst_a = out_a.data<U>();
-
202 U* dst_b = out_b.data<U>();
-
203 for (size_t i = 0; i < out_a.size(); i++) {
-
204 int a_idx = elem_to_loc(i, a.shape(), a.strides());
-
205 int b_idx = elem_to_loc(i, b.shape(), b.strides());
-
206 std::tie(dst_a[i], dst_b[i]) = op(a_ptr[a_idx], b_ptr[b_idx]);
-
207 }
-
208}
-
209
-
210template <typename T, typename U, typename Op>
-
211void binary_op_dispatch_dims(
-
212 const array& a,
-
213 const array& b,
-
214 array& out_a,
-
215 array& out_b,
-
216 Op op,
-
217 int dim,
-
218 int stride) {
-
219 // Number of dimensions to loop over for vectorized ops
-
220 switch (dim) {
-
221 case 1:
-
222 binary_op_dims1<T, U, Op>(a, b, out_a, out_b, op, stride);
-
223 return;
-
224 case 2:
-
225 binary_op_dims2<T, U, Op>(a, b, out_a, out_b, op, stride);
-
226 return;
-
227 }
-
228
-
229 const T* a_ptr = a.data<T>();
-
230 const T* b_ptr = b.data<T>();
-
231 U* dst_a = out_a.data<U>();
-
232 U* dst_b = out_b.data<U>();
-
233 for (size_t i = 0; i < out_a.size(); i += stride) {
-
234 int a_idx = elem_to_loc(i, a.shape(), a.strides());
-
235 int b_idx = elem_to_loc(i, b.shape(), b.strides());
-
236 op(a_ptr + a_idx, b_ptr + b_idx, dst_a, dst_b, stride);
-
237 dst_a += stride;
-
238 dst_b += stride;
-
239 }
-
240}
-
241
-
242template <
-
243 typename T,
-
244 typename U,
-
245 typename Op,
-
246 typename OpSV,
-
247 typename OpVS,
-
248 typename OpVV>
-
249void binary_op(
-
250 const array& a,
-
251 const array& b,
-
252 array& out_a,
-
253 array& out_b,
-
254 Op op,
-
255 OpSV opsv,
-
256 OpVS opvs,
-
257 OpVV opvv) {
-
258 auto bopt = get_binary_op_type(a, b);
-
259 set_binary_op_output_data(a, b, out_a, bopt);
-
260 set_binary_op_output_data(a, b, out_b, bopt);
-
261
-
262 // The full computation is scalar scalar so call the base op once
-
263 if (bopt == BinaryOpType::ScalarScalar) {
-
264 std::tie(*(out_a.data<U>()), *(out_b.data<U>())) =
-
265 op(*a.data<T>(), *b.data<T>());
-
266 return;
-
267 }
-
268
-
269 // The full computation is scalar vector so delegate to the op
-
270 if (bopt == BinaryOpType::ScalarVector) {
-
271 opsv(
-
272 a.data<T>(),
-
273 b.data<T>(),
-
274 out_a.data<U>(),
-
275 out_b.data<U>(),
-
276 b.data_size());
-
277 return;
-
278 }
-
279
-
280 // The full computation is vector scalar so delegate to the op
-
281 if (bopt == BinaryOpType::VectorScalar) {
-
282 opvs(
-
283 a.data<T>(),
-
284 b.data<T>(),
-
285 out_a.data<U>(),
-
286 out_b.data<U>(),
-
287 a.data_size());
-
288 return;
-
289 }
-
290
-
291 // The full computation is vector vector so delegate to the op
-
292 if (bopt == BinaryOpType::VectorVector) {
-
293 opvv(
-
294 a.data<T>(),
-
295 b.data<T>(),
-
296 out_a.data<U>(),
-
297 out_b.data<U>(),
-
298 out_a.size());
-
299 return;
-
300 }
-
301
-
302 // General computation so let's try to optimize
-
303
-
304 // Get the left-most dim such that the array is row contiguous after
-
305 auto& strides = out_a.strides();
-
306 auto leftmost_rc_dim = [&strides](const array& arr) {
-
307 int d = arr.ndim() - 1;
-
308 for (; d >= 0 && arr.strides()[d] == strides[d]; d--) {
-
309 }
-
310 return d + 1;
-
311 };
-
312 auto a_rc_dim = leftmost_rc_dim(a);
-
313 auto b_rc_dim = leftmost_rc_dim(b);
-
314
-
315 // Get the left-most dim such that the array is a broadcasted "scalar" after
-
316 auto leftmost_s_dim = [](const array& arr) {
-
317 int d = arr.ndim() - 1;
-
318 for (; d >= 0 && arr.strides()[d] == 0; d--) {
-
319 }
-
320 return d + 1;
-
321 };
-
322 auto a_s_dim = leftmost_s_dim(a);
-
323 auto b_s_dim = leftmost_s_dim(b);
-
324
-
325 auto ndim = out_a.ndim();
-
326
-
327 // Case 1: LxM and FxM where L and F are broadcastable and M is row contiguous
-
328 int dim = ndim;
-
329 if (int d = std::max(a_rc_dim, b_rc_dim); d < ndim) {
-
330 bopt = BinaryOpType::VectorVector;
-
331 dim = d;
-
332 // Case 2: LxM and Fx1 where L and F are broadcastable and M is row
-
333 // contiguous
-
334 } else if (int d = std::max(a_rc_dim, b_s_dim); d < ndim) {
-
335 bopt = BinaryOpType::VectorScalar;
-
336 dim = d;
-
337 // Case 3: Lx1 and FxM where L and F are broadcastable and M is row
-
338 // contiguous
-
339 } else if (int d = std::max(a_s_dim, b_rc_dim); d < ndim) {
-
340 bopt = BinaryOpType::ScalarVector;
-
341 dim = d;
-
342 }
-
343
-
344 // Can be sure dim > 0 since otherwise we would have used one of the fully
-
345 // contiguous methods above. Except for the case that the flags do not
-
346 // correspond to the underlying contiguity.
-
347 size_t stride;
-
348 if (dim == 0 || strides[dim - 1] < 16) {
-
349 stride = 1;
-
350 bopt = BinaryOpType::General;
-
351 dim = ndim;
-
352 } else {
-
353 stride = strides[dim - 1];
-
354 }
-
355
-
356 switch (bopt) {
-
357 case BinaryOpType::VectorVector:
-
358 binary_op_dispatch_dims<T, U>(a, b, out_a, out_b, opvv, dim, stride);
-
359 break;
-
360 case BinaryOpType::VectorScalar:
-
361 binary_op_dispatch_dims<T, U>(a, b, out_a, out_b, opvs, dim, stride);
-
362 break;
-
363 case BinaryOpType::ScalarVector:
-
364 binary_op_dispatch_dims<T, U>(a, b, out_a, out_b, opsv, dim, stride);
-
365 break;
-
366 default:
-
367 binary_op_dispatch_dims<T, U>(a, b, out_a, out_b, op);
-
368 break;
-
369 }
-
370}
-
371
-
372template <typename T, typename Op, typename OpSV, typename OpVS, typename OpVV>
-
373void binary_op(
-
374 const array& a,
-
375 const array& b,
-
376 std::vector<array>& outputs,
-
377 Op op,
-
378 OpSV opsv,
-
379 OpVS opvs,
-
380 OpVV opvv) {
-
381 // TODO: The following mess of constexpr evaluations can probably be achieved
-
382 // with template specializations and overloading. Would it be simpler?
-
383
-
384 if (std::is_same<decltype(opsv), UseDefaultBinaryOp>::value) {
-
385 if (std::is_same<decltype(opvs), UseDefaultBinaryOp>::value) {
-
386 if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
387 // All ops are UseDefaultBinaryOp (why oh why would someone call that?)
-
388 binary_op<T, T>(
-
389 a,
-
390 b,
-
391 outputs[0],
-
392 outputs[1],
-
393 op,
-
394 DefaultScalarVector<T, T, Op>(op),
-
395 DefaultVectorScalar<T, T, Op>(op),
-
396 DefaultVectorVector<T, T, Op>(op));
-
397 } else {
-
398 // opsv and opvs were UseDefaultBinaryOp
-
399 binary_op<T, T>(
-
400 a,
-
401 b,
-
402 outputs[0],
-
403 outputs[1],
-
404 op,
-
405 DefaultScalarVector<T, T, Op>(op),
-
406 DefaultVectorScalar<T, T, Op>(op),
-
407 opvv);
-
408 }
-
409 } else if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
410 // opsv and opvv were UseDefaultBinaryOp
-
411 binary_op<T, T>(
-
412 a,
-
413 b,
-
414 outputs[0],
-
415 outputs[1],
-
416 op,
-
417 DefaultScalarVector<T, T, Op>(op),
-
418 opvs,
-
419 DefaultVectorVector<T, T, Op>(op));
-
420 } else {
-
421 // opsv was UseDefaultBinaryOp
-
422 binary_op<T, T>(
-
423 a,
-
424 b,
-
425 outputs[0],
-
426 outputs[1],
-
427 op,
-
428 DefaultScalarVector<T, T, Op>(op),
-
429 opvs,
-
430 opvv);
-
431 }
-
432 } else if (std::is_same<decltype(opvs), UseDefaultBinaryOp>::value) {
-
433 if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
434 // opvs and opvv were UseDefaultBinaryOp
-
435 binary_op<T, T>(
-
436 a,
-
437 b,
-
438 outputs[0],
-
439 outputs[1],
-
440 op,
-
441 opsv,
-
442 DefaultVectorScalar<T, T, Op>(op),
-
443 DefaultVectorVector<T, T, Op>(op));
-
444 } else {
-
445 // opvs was UseDefaultBinaryOp
-
446 binary_op<T, T>(
-
447 a,
-
448 b,
-
449 outputs[0],
-
450 outputs[1],
-
451 op,
-
452 opsv,
-
453 DefaultVectorScalar<T, T, Op>(op),
-
454 opvv);
-
455 }
-
456 } else if (std::is_same<decltype(opvv), UseDefaultBinaryOp>::value) {
-
457 // opvv was UseDefaultBinaryOp
-
458 binary_op<T, T>(
-
459 a,
-
460 b,
-
461 outputs[0],
-
462 outputs[1],
-
463 op,
-
464 opsv,
-
465 opvs,
-
466 DefaultVectorVector<T, T, Op>(op));
-
467 } else {
-
468 // All ops provided
-
469 binary_op<T, T>(a, b, outputs[0], outputs[1], op, opsv, opvs, opvv);
-
470 }
-
471}
-
472
-
473template <typename T, typename Op>
-
474void binary_op(
-
475 const array& a,
-
476 const array& b,
-
477 std::vector<array>& outputs,
-
478 Op op) {
-
479 DefaultScalarVector<T, T, Op> opsv(op);
-
480 DefaultVectorScalar<T, T, Op> opvs(op);
-
481 DefaultVectorVector<T, T, Op> opvv(op);
-
482 binary_op<T, T>(a, b, outputs[0], outputs[1], op, opsv, opvs, opvv);
-
483}
-
484
-
485template <typename... Ops>
-
486void binary(
-
487 const array& a,
-
488 const array& b,
-
489 std::vector<array>& outputs,
-
490 Ops... ops) {
-
491 switch (outputs[0].dtype()) {
-
492 case bool_:
-
493 binary_op<bool>(a, b, outputs, ops...);
-
494 break;
-
495 case uint8:
-
496 binary_op<uint8_t>(a, b, outputs, ops...);
-
497 break;
-
498 case uint16:
-
499 binary_op<uint16_t>(a, b, outputs, ops...);
-
500 break;
-
501 case uint32:
-
502 binary_op<uint32_t>(a, b, outputs, ops...);
-
503 break;
-
504 case uint64:
-
505 binary_op<uint64_t>(a, b, outputs, ops...);
-
506 break;
-
507 case int8:
-
508 binary_op<int8_t>(a, b, outputs, ops...);
-
509 break;
-
510 case int16:
-
511 binary_op<int16_t>(a, b, outputs, ops...);
-
512 break;
-
513 case int32:
-
514 binary_op<int32_t>(a, b, outputs, ops...);
-
515 break;
-
516 case int64:
-
517 binary_op<int64_t>(a, b, outputs, ops...);
-
518 break;
-
519 case float16:
-
520 binary_op<float16_t>(a, b, outputs, ops...);
-
521 break;
-
522 case float32:
-
523 binary_op<float>(a, b, outputs, ops...);
-
524 break;
-
525 case bfloat16:
-
526 binary_op<bfloat16_t>(a, b, outputs, ops...);
-
527 break;
-
528 case complex64:
-
529 binary_op<complex64_t>(a, b, outputs, ops...);
-
530 break;
-
531 }
-
532}
-
533
-
534} // namespace
-
535
-
536} // namespace mlx::core
- - -
Op op
Definition binary.h:141
-
const char * binary()
-
Definition allocator.h:7
-
constexpr Dtype bool_
Definition dtype.h:58
-
constexpr Dtype uint64
Definition dtype.h:63
-
constexpr Dtype uint16
Definition dtype.h:61
-
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
-
constexpr Dtype bfloat16
Definition dtype.h:72
-
constexpr Dtype int32
Definition dtype.h:67
-
constexpr Dtype float32
Definition dtype.h:71
-
constexpr Dtype int16
Definition dtype.h:66
-
constexpr Dtype int8
Definition dtype.h:65
-
constexpr Dtype int64
Definition dtype.h:68
-
constexpr Dtype uint8
Definition dtype.h:60
-
constexpr Dtype float16
Definition dtype.h:70
-
constexpr Dtype uint32
Definition dtype.h:62
-
constexpr Dtype complex64
Definition dtype.h:73
-
- - - - diff --git a/docs/build/html/common_2copy_8h.html b/docs/build/html/common_2copy_8h.html deleted file mode 100644 index 2a90f491..00000000 --- a/docs/build/html/common_2copy_8h.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/copy.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
copy.h File Reference
-
-
-
#include "mlx/array.h"
-#include "mlx/backend/common/utils.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - -

-Enumerations

enum class  mlx::core::CopyType { mlx::core::Scalar -, mlx::core::Vector -, mlx::core::General -, mlx::core::GeneralGeneral - }
 
- - - - - - - - -

-Functions

void mlx::core::copy (const array &src, array &dst, CopyType ctype)
 
void mlx::core::copy_inplace (const array &src, array &dst, CopyType ctype)
 
template<typename stride_t >
void mlx::core::copy_inplace (const array &src, array &dst, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype)
 
-
- - - - diff --git a/docs/build/html/common_2copy_8h_source.html b/docs/build/html/common_2copy_8h_source.html deleted file mode 100644 index 050fc5aa..00000000 --- a/docs/build/html/common_2copy_8h_source.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/copy.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
copy.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/array.h"
- -
7
-
8namespace mlx::core {
-
9
-
-
10enum class CopyType {
-
11 // Copy a raw scalar input into the full contiguous output
-
12 Scalar,
-
13
-
14 // Copy the raw input buffer contiguously into a raw output buffer of the same
-
15 // size
-
16 Vector,
-
17
-
18 // Copy the full virtual input to the full contiguous output
-
19 General,
-
20
-
21 // Copy the full virtual input to the full virtual output. We assume the
-
22 // input and output have the same shape.
- -
24};
-
-
25
-
26void copy(const array& src, array& dst, CopyType ctype);
-
27void copy_inplace(const array& src, array& dst, CopyType ctype);
-
28
-
29template <typename stride_t>
- -
31 const array& src,
-
32 array& dst,
-
33 const std::vector<int>& data_shape,
-
34 const std::vector<stride_t>& i_strides,
-
35 const std::vector<stride_t>& o_strides,
-
36 int64_t i_offset,
-
37 int64_t o_offset,
-
38 CopyType ctype);
-
39
-
40} // namespace mlx::core
- - -
Definition array.h:20
-
Definition allocator.h:7
-
void copy(const array &src, array &dst, CopyType ctype)
-
void copy_inplace(const array &src, array &dst, CopyType ctype)
-
CopyType
Definition copy.h:10
- - - - -
- - - - diff --git a/docs/build/html/common_2hadamard_8h.html b/docs/build/html/common_2hadamard_8h.html deleted file mode 100644 index 62b1004e..00000000 --- a/docs/build/html/common_2hadamard_8h.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/hadamard.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
hadamard.h File Reference
-
-
-
#include <map>
-#include "mlx/utils.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - - - -

-Functions

const std::map< int, std::string_view > mlx::core::hadamard_matrices ()
 
std::pair< int, int > mlx::core::decompose_hadamard (int n)
 
- - - - - - - -

-Variables

constexpr std::string_view mlx::core::h12
 
constexpr std::string_view mlx::core::h20
 
constexpr std::string_view mlx::core::h28
 
-
- - - - diff --git a/docs/build/html/common_2hadamard_8h_source.html b/docs/build/html/common_2hadamard_8h_source.html deleted file mode 100644 index b56ce655..00000000 --- a/docs/build/html/common_2hadamard_8h_source.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/hadamard.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
hadamard.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include <map>
-
6
-
7#include "mlx/utils.h"
-
8
-
9namespace mlx::core {
-
10
-
11// From http://neilsloane.com/hadamard/
-
12constexpr std::string_view h12 = R"(
-
13+-++++++++++
-
14--+-+-+-+-+-
-
15+++-++----++
-
16+---+--+-++-
-
17+++++-++----
-
18+-+---+--+-+
-
19++--+++-++--
-
20+--++---+--+
-
21++----+++-++
-
22+--+-++---+-
-
23++++----+++-
-
24+-+--+-++---
-
25)";
-
26
-
27constexpr std::string_view h20 = R"(
-
28+----+----++--++-++-
-
29-+----+---+++---+-++
-
30--+----+---+++-+-+-+
-
31---+----+---+++++-+-
-
32----+----++--++-++-+
-
33-+++++-----+--+++--+
-
34+-+++-+---+-+--+++--
-
35++-++--+---+-+--+++-
-
36+++-+---+---+-+--+++
-
37++++-----++--+-+--++
-
38--++-+-++-+-----++++
-
39---++-+-++-+---+-+++
-
40+---++-+-+--+--++-++
-
41++---++-+----+-+++-+
-
42-++---++-+----+++++-
-
43-+--+--++-+----+----
-
44+-+-----++-+----+---
-
45-+-+-+---+--+----+--
-
46--+-+++------+----+-
-
47+--+--++------+----+
-
48)";
-
49
-
50constexpr std::string_view h28 = R"(
-
51+------++----++-+--+-+--++--
-
52-+-----+++-----+-+--+-+--++-
-
53--+-----+++---+-+-+----+--++
-
54---+-----+++---+-+-+-+--+--+
-
55----+-----+++---+-+-+++--+--
-
56-----+-----++++--+-+--++--+-
-
57------++----++-+--+-+--++--+
-
58--++++-+-------++--+++-+--+-
-
59---++++-+-----+-++--+-+-+--+
-
60+---+++--+----++-++--+-+-+--
-
61++---++---+----++-++--+-+-+-
-
62+++---+----+----++-++--+-+-+
-
63++++--------+-+--++-++--+-+-
-
64-++++--------+++--++--+--+-+
-
65-+-++-++--++--+--------++++-
-
66+-+-++--+--++--+--------++++
-
67-+-+-++--+--++--+----+---+++
-
68+-+-+-++--+--+---+---++---++
-
69++-+-+-++--+------+--+++---+
-
70-++-+-+-++--+------+-++++---
-
71+-++-+---++--+------+-++++--
-
72-++--++-+-++-+++----++------
-
73+-++--++-+-++-+++-----+-----
-
74++-++---+-+-++-+++-----+----
-
75-++-++-+-+-+-+--+++-----+---
-
76--++-++++-+-+----+++-----+--
-
77+--++-+-++-+-+----+++-----+-
-
78++--++-+-++-+-+----++------+
-
79)";
-
80
-
-
81inline const std::map<int, std::string_view> hadamard_matrices() {
-
82 return {{12, h12}, {20, h20}, {28, h28}};
-
83}
-
-
84
-
-
85inline std::pair<int, int> decompose_hadamard(int n) {
-
86 // n = m*2^k
-
87 int m = 1;
-
88 if (!is_power_of_2(n)) {
-
89 auto h_matrices = hadamard_matrices();
-
90 for (auto [factor, _] : h_matrices) {
-
91 if (n % factor == 0) {
-
92 m = factor;
-
93 n /= factor;
-
94 break;
-
95 }
-
96 }
-
97 if (m == 1) {
-
98 throw std::invalid_argument(
-
99 "[hadamard] Only supports n = m*2^k where m in (1, 12, 20, 28).");
-
100 }
-
101 }
-
102 return {n, m};
-
103}
-
-
104
-
105} // namespace mlx::core
-
Definition allocator.h:7
-
std::pair< int, int > decompose_hadamard(int n)
Definition hadamard.h:85
-
constexpr std::string_view h12
Definition hadamard.h:12
-
const std::map< int, std::string_view > hadamard_matrices()
Definition hadamard.h:81
-
constexpr std::string_view h20
Definition hadamard.h:27
-
constexpr std::string_view h28
Definition hadamard.h:50
-
bool is_power_of_2(int n)
Definition utils.h:112
- -
- - - - diff --git a/docs/build/html/common_2reduce_8h.html b/docs/build/html/common_2reduce_8h.html deleted file mode 100644 index e66eb8b7..00000000 --- a/docs/build/html/common_2reduce_8h.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/reduce.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
reduce.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - -

-Classes

struct  mlx::core::ReductionPlan
 
struct  mlx::core::DefaultStridedReduce< T, U, Op >
 
struct  mlx::core::DefaultContiguousReduce< T, U, Op >
 
- - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - -

-Enumerations

enum  mlx::core::ReductionOpType {
-  mlx::core::ContiguousAllReduce -, mlx::core::ContiguousReduce -, mlx::core::ContiguousStridedReduce -, mlx::core::GeneralContiguousReduce -,
-  mlx::core::GeneralStridedReduce -, mlx::core::GeneralReduce -
- }
 
- - - - - - - - - - - - - -

-Functions

ReductionPlan mlx::core::get_reduction_plan (const array &x, const std::vector< int > &axes)
 
void mlx::core::nd_loop (std::function< void(int)> callback, const std::vector< int > &shape, const std::vector< size_t > &strides)
 
std::pair< std::vector< int >, std::vector< size_t > > mlx::core::shapes_without_reduction_axes (const array &x, const std::vector< int > &axes)
 
template<typename T , typename U , typename OpS , typename OpC , typename Op >
void mlx::core::reduction_op (const array &x, array &out, const std::vector< int > &axes, U init, OpS ops, OpC opc, Op op)
 
template<typename T , typename U , typename Op >
void mlx::core::reduction_op (const array &x, array &out, const std::vector< int > &axes, U init, Op op)
 
-
- - - - diff --git a/docs/build/html/common_2reduce_8h_source.html b/docs/build/html/common_2reduce_8h_source.html deleted file mode 100644 index 6be7c795..00000000 --- a/docs/build/html/common_2reduce_8h_source.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/reduce.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
reduce.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
- -
6
-
7namespace mlx::core {
-
8
-
- -
10 // Self-explanatory. Read everything and produce 1 output.
- -
12
-
13 // The input is contiguous and the last axis is reduced
-
14 // N1xR1xN2xR2x...xNnxRn
- -
16
-
17 // The input is contiguous and the last axis is not reduced
-
18 // R1xN1xR2xN2x...xRnxNn
- -
20
-
21 // The input is not contiguous but the last axis is and it is reduced so we
-
22 // need to figure out the offsets but we can call the contiguous reduce after
-
23 // that.
-
24 // N3xR1xN1xR4x...xRn
- -
26
-
27 // The input is not contiguous but the last reduction axis and the last axis
-
28 // are so we need to figure out the offset but we can call the strided reduce
-
29 // after that.
- -
31
-
32 // The input is not contiguous after the reduction axis and it may contain
-
33 // 0-stride axes or transpositions. We could copy the strides and produce a
-
34 // transposed outcome or we can read the input out of order and write the
-
35 // output in order.
- -
37};
-
-
38
-
- - -
41 std::vector<int> shape;
-
42 std::vector<size_t> strides;
-
43
-
- -
45 ReductionOpType type_,
-
46 std::vector<int> shape_,
-
47 std::vector<size_t> strides_)
-
48 : type(type_), shape(std::move(shape_)), strides(std::move(strides_)) {}
-
- -
50};
-
-
51
-
52ReductionPlan get_reduction_plan(const array& x, const std::vector<int>& axes);
-
53
-
54// Helper for the ndimensional strided loop
-
55// Should this be in utils?
- -
57 std::function<void(int)> callback,
-
58 const std::vector<int>& shape,
-
59 const std::vector<size_t>& strides);
-
60
-
61std::pair<std::vector<int>, std::vector<size_t>> shapes_without_reduction_axes(
-
62 const array& x,
-
63 const std::vector<int>& axes);
-
64
-
65template <typename T, typename U, typename Op>
-
- -
67 Op op;
-
68
-
69 DefaultStridedReduce(Op op_) : op(op_) {}
-
70
-
-
71 void operator()(const T* x, U* accumulator, int size, size_t stride) {
-
72 for (int i = 0; i < size; i++) {
-
73 U* moving_accumulator = accumulator;
-
74 for (int j = 0; j < stride; j++) {
-
75 op(moving_accumulator, *x);
-
76 moving_accumulator++;
-
77 x++;
-
78 }
-
79 }
-
80 }
-
-
81};
-
-
82
-
83template <typename T, typename U, typename Op>
-
- -
85 Op op;
-
86
-
87 DefaultContiguousReduce(Op op_) : op(op_) {}
-
88
-
-
89 void operator()(const T* x, U* accumulator, int size) {
-
90 while (size-- > 0) {
-
91 op(accumulator, *x);
-
92 x++;
-
93 }
-
94 }
-
-
95};
-
-
96
-
97template <typename T, typename U, typename OpS, typename OpC, typename Op>
-
- -
99 const array& x,
-
100 array& out,
-
101 const std::vector<int>& axes,
-
102 U init,
-
103 OpS ops,
-
104 OpC opc,
-
105 Op op) {
- -
107 ReductionPlan plan = get_reduction_plan(x, axes);
-
108
-
109 if (plan.type == ContiguousAllReduce) {
-
110 U* out_ptr = out.data<U>();
-
111 *out_ptr = init;
-
112 opc(x.data<T>(), out_ptr, x.size());
-
113 return;
-
114 }
-
115
-
116 std::vector<int> shape;
-
117 std::vector<size_t> strides;
-
118
-
119 if (plan.type == ContiguousReduce && plan.shape.size() == 1) {
-
120 int reduction_size = plan.shape[0];
-
121 const T* x_ptr = x.data<T>();
-
122 U* out_ptr = out.data<U>();
-
123 for (int i = 0; i < out.size(); i++, out_ptr++, x_ptr += reduction_size) {
-
124 *out_ptr = init;
-
125 opc(x_ptr, out_ptr, reduction_size);
-
126 }
-
127 return;
-
128 }
-
129
-
130 if (plan.type == GeneralContiguousReduce || plan.type == ContiguousReduce) {
-
131 int reduction_size = plan.shape.back();
-
132 plan.shape.pop_back();
-
133 plan.strides.pop_back();
-
134 const T* x_ptr = x.data<T>();
-
135 U* out_ptr = out.data<U>();
-
136 // Unrolling the following loop (and implementing it in order for
-
137 // ContiguousReduce) should hold extra performance boost.
-
138 std::tie(shape, strides) = shapes_without_reduction_axes(x, axes);
-
139 if (plan.shape.size() == 0) {
-
140 for (int i = 0; i < out.size(); i++, out_ptr++) {
-
141 int offset = elem_to_loc(i, shape, strides);
-
142 *out_ptr = init;
-
143 opc(x_ptr + offset, out_ptr, reduction_size);
-
144 }
-
145 } else {
-
146 for (int i = 0; i < out.size(); i++, out_ptr++) {
-
147 int offset = elem_to_loc(i, shape, strides);
-
148 *out_ptr = init;
-
149 nd_loop(
-
150 [&](int extra_offset) {
-
151 opc(x_ptr + offset + extra_offset, out_ptr, reduction_size);
-
152 },
-
153 plan.shape,
-
154 plan.strides);
-
155 }
-
156 }
-
157 return;
-
158 }
-
159
-
160 if (plan.type == ContiguousStridedReduce && plan.shape.size() == 1) {
-
161 int reduction_size = plan.shape.back();
-
162 size_t reduction_stride = plan.strides.back();
-
163 plan.shape.pop_back();
-
164 plan.strides.pop_back();
-
165 const T* x_ptr = x.data<T>();
-
166 U* out_ptr = out.data<U>();
-
167 for (int i = 0; i < out.size(); i += reduction_stride) {
-
168 std::fill_n(out_ptr, reduction_stride, init);
-
169 ops(x_ptr, out_ptr, reduction_size, reduction_stride);
-
170 x_ptr += reduction_stride * reduction_size;
-
171 out_ptr += reduction_stride;
-
172 }
-
173 return;
-
174 }
-
175
-
176 if (plan.type == GeneralStridedReduce ||
- -
178 int reduction_size = plan.shape.back();
-
179 size_t reduction_stride = plan.strides.back();
-
180 plan.shape.pop_back();
-
181 plan.strides.pop_back();
-
182 const T* x_ptr = x.data<T>();
-
183 U* out_ptr = out.data<U>();
-
184 std::tie(shape, strides) = shapes_without_reduction_axes(x, axes);
-
185 if (plan.shape.size() == 0) {
-
186 for (int i = 0; i < out.size(); i += reduction_stride) {
-
187 int offset = elem_to_loc(i, shape, strides);
-
188 std::fill_n(out_ptr, reduction_stride, init);
-
189 ops(x_ptr + offset, out_ptr, reduction_size, reduction_stride);
-
190 out_ptr += reduction_stride;
-
191 }
-
192 } else {
-
193 for (int i = 0; i < out.size(); i += reduction_stride) {
-
194 int offset = elem_to_loc(i, shape, strides);
-
195 std::fill_n(out_ptr, reduction_stride, init);
-
196 nd_loop(
-
197 [&](int extra_offset) {
-
198 ops(x_ptr + offset + extra_offset,
-
199 out_ptr,
-
200 reduction_size,
-
201 reduction_stride);
-
202 },
-
203 plan.shape,
-
204 plan.strides);
-
205 out_ptr += reduction_stride;
-
206 }
-
207 }
-
208 return;
-
209 }
-
210
-
211 if (plan.type == GeneralReduce) {
-
212 const T* x_ptr = x.data<T>();
-
213 U* out_ptr = out.data<U>();
-
214 std::tie(shape, strides) = shapes_without_reduction_axes(x, axes);
-
215 for (int i = 0; i < out.size(); i++, out_ptr++) {
-
216 int offset = elem_to_loc(i, shape, strides);
-
217 U val = init;
-
218 nd_loop(
-
219 [&](int extra_offset) { op(&val, *(x_ptr + offset + extra_offset)); },
-
220 plan.shape,
-
221 plan.strides);
-
222 *out_ptr = val;
-
223 }
-
224 }
-
225}
-
-
226
-
227template <typename T, typename U, typename Op>
-
- -
229 const array& x,
-
230 array& out,
-
231 const std::vector<int>& axes,
-
232 U init,
-
233 Op op) {
- - -
236 reduction_op<T, U>(x, out, axes, init, ops, opc, op);
-
237}
-
-
238
-
239} // namespace mlx::core
- -
Definition array.h:20
-
size_t nbytes() const
The number of bytes in the array.
Definition array.h:89
-
size_t size() const
The number of elements in the array.
Definition array.h:84
-
void set_data(allocator::Buffer buffer, deleter_t d=allocator::free)
-
T * data()
Definition array.h:338
-
Op op
Definition binary.h:141
-
array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
Computes the standard deviation of the elements of an array.
-
Buffer malloc_or_wait(size_t size)
-
Definition allocator.h:7
-
ReductionOpType
Definition reduce.h:9
-
@ GeneralReduce
Definition reduce.h:36
-
@ GeneralContiguousReduce
Definition reduce.h:25
-
@ ContiguousStridedReduce
Definition reduce.h:19
-
@ ContiguousReduce
Definition reduce.h:15
-
@ GeneralStridedReduce
Definition reduce.h:30
-
@ ContiguousAllReduce
Definition reduce.h:11
-
std::pair< std::vector< int >, std::vector< size_t > > shapes_without_reduction_axes(const array &x, const std::vector< int > &axes)
-
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
-
void nd_loop(std::function< void(int)> callback, const std::vector< int > &shape, const std::vector< size_t > &strides)
-
void reduction_op(const array &x, array &out, const std::vector< int > &axes, U init, OpS ops, OpC opc, Op op)
Definition reduce.h:98
-
ReductionPlan get_reduction_plan(const array &x, const std::vector< int > &axes)
- -
void operator()(const T *x, U *accumulator, int size)
Definition reduce.h:89
-
Op op
Definition reduce.h:85
-
DefaultContiguousReduce(Op op_)
Definition reduce.h:87
-
Definition reduce.h:66
-
void operator()(const T *x, U *accumulator, int size, size_t stride)
Definition reduce.h:71
-
DefaultStridedReduce(Op op_)
Definition reduce.h:69
-
Op op
Definition reduce.h:67
-
Definition reduce.h:39
-
ReductionOpType type
Definition reduce.h:40
-
ReductionPlan(ReductionOpType type_, std::vector< int > shape_, std::vector< size_t > strides_)
Definition reduce.h:44
-
std::vector< int > shape
Definition reduce.h:41
-
std::vector< size_t > strides
Definition reduce.h:42
-
ReductionPlan(ReductionOpType type_)
Definition reduce.h:49
-
- - - - diff --git a/docs/build/html/common_2slicing_8h.html b/docs/build/html/common_2slicing_8h.html deleted file mode 100644 index e5ebc697..00000000 --- a/docs/build/html/common_2slicing_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/slicing.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
slicing.h File Reference
-
-
-
#include "mlx/array.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - - - -

-Functions

std::tuple< bool, int64_t, std::vector< int64_t > > mlx::core::prepare_slice (const array &in, const std::vector< int > &start_indices, const std::vector< int > &strides)
 
void mlx::core::shared_buffer_slice (const array &in, const std::vector< size_t > &out_strides, size_t data_offset, size_t data_size, array &out)
 
-
- - - - diff --git a/docs/build/html/common_2slicing_8h_source.html b/docs/build/html/common_2slicing_8h_source.html deleted file mode 100644 index b8400787..00000000 --- a/docs/build/html/common_2slicing_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/slicing.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
slicing.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/array.h"
-
6
-
7namespace mlx::core {
-
8
-
9std::tuple<bool, int64_t, std::vector<int64_t>> prepare_slice(
-
10 const array& in,
-
11 const std::vector<int>& start_indices,
-
12 const std::vector<int>& strides);
-
13
- -
15 const array& in,
-
16 const std::vector<size_t>& out_strides,
-
17 size_t data_offset,
-
18 size_t data_size,
-
19 array& out);
-
20
-
21} // namespace mlx::core
- -
Definition array.h:20
-
Definition allocator.h:7
-
std::tuple< bool, int64_t, std::vector< int64_t > > prepare_slice(const array &in, const std::vector< int > &start_indices, const std::vector< int > &strides)
-
void shared_buffer_slice(const array &in, const std::vector< size_t > &out_strides, size_t data_offset, size_t data_size, array &out)
-
- - - - diff --git a/docs/build/html/common_2ternary_8h.html b/docs/build/html/common_2ternary_8h.html deleted file mode 100644 index 2bdd394c..00000000 --- a/docs/build/html/common_2ternary_8h.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/ternary.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
ternary.h File Reference
-
-
-
#include "mlx/allocator.h"
-#include "mlx/array.h"
-#include "mlx/backend/common/ops.h"
-#include "mlx/backend/common/utils.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
-
- - - - diff --git a/docs/build/html/common_2ternary_8h_source.html b/docs/build/html/common_2ternary_8h_source.html deleted file mode 100644 index 02908999..00000000 --- a/docs/build/html/common_2ternary_8h_source.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/ternary.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
ternary.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4#include "mlx/allocator.h"
-
5#include "mlx/array.h"
- - -
8namespace mlx::core {
-
9
-
10namespace {
-
11
-
12// TODO: Add support for more combinations of input types.
-
13enum class TernaryOpType {
-
14 ScalarScalarScalar,
-
15 VectorVectorVector,
-
16 General,
-
17};
-
18
-
19TernaryOpType
-
20get_ternary_op_type(const array& a, const array& b, const array& c) {
-
21 TernaryOpType topt;
-
22 if (a.data_size() == 1 && b.data_size() == 1 && c.data_size() == 1) {
-
23 topt = TernaryOpType::ScalarScalarScalar;
-
24 } else if (
-
25 (a.flags().row_contiguous && b.flags().row_contiguous &&
-
26 c.flags().row_contiguous) ||
-
27 (a.flags().col_contiguous && b.flags().col_contiguous &&
-
28 c.flags().col_contiguous)) {
-
29 topt = TernaryOpType::VectorVectorVector;
-
30 } else {
-
31 topt = TernaryOpType::General;
-
32 }
-
33 return topt;
-
34}
-
35
-
36void set_ternary_op_output_data(
-
37 const array& a,
-
38 const array& b,
-
39 const array& c,
-
40 array& out,
-
41 TernaryOpType topt,
-
42 bool donate_with_move = false) {
-
43 auto maybe_donate = [&out, donate_with_move](const array& x) {
-
44 if (is_donatable(x, out)) {
-
45 if (donate_with_move) {
-
46 out.move_shared_buffer(x);
-
47 } else {
-
48 out.copy_shared_buffer(x);
-
49 }
-
50 return true;
-
51 }
-
52 return false;
-
53 };
-
54
-
55 switch (topt) {
-
56 case TernaryOpType::ScalarScalarScalar:
-
57 out.set_data(
-
58 allocator::malloc_or_wait(out.itemsize()), 1, b.strides(), b.flags());
-
59 break;
-
60 case TernaryOpType::VectorVectorVector:
-
61 if (!(maybe_donate(a) || maybe_donate(b) || maybe_donate(c))) {
-
62 out.set_data(
-
63 allocator::malloc_or_wait(out.itemsize() * b.data_size()),
-
64 b.data_size(),
-
65 b.strides(),
-
66 b.flags());
-
67 }
-
68 break;
-
69 case TernaryOpType::General:
-
70 out.set_data(allocator::malloc_or_wait(out.nbytes()));
-
71 break;
-
72 }
-
73}
-
74
-
75template <typename T1, typename T2, typename T3, typename U, typename Op>
-
76void ternary_op_dims1(
-
77 const array& a,
-
78 const array& b,
-
79 const array& c,
-
80 array& out,
-
81 Op op) {
-
82 const T1* a_ptr = a.data<T1>();
-
83 const T2* b_ptr = b.data<T2>();
-
84 const T3* c_ptr = c.data<T3>();
-
85
-
86 U* dst = out.data<U>();
-
87 size_t a_idx = 0;
-
88 size_t b_idx = 0;
-
89 size_t c_idx = 0;
-
90 for (size_t i = 0; i < out.size(); ++i) {
-
91 dst[i] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
-
92 a_idx += a.strides()[0];
-
93 b_idx += b.strides()[0];
-
94 c_idx += c.strides()[0];
-
95 }
-
96}
-
97
-
98template <typename T1, typename T2, typename T3, typename U, typename Op>
-
99void ternary_op_dims2(
-
100 const array& a,
-
101 const array& b,
-
102 const array& c,
-
103 array& out,
-
104 Op op) {
-
105 const T1* a_ptr = a.data<T1>();
-
106 const T2* b_ptr = b.data<T2>();
-
107 const T3* c_ptr = c.data<T3>();
-
108
-
109 U* dst = out.data<U>();
-
110 size_t a_idx = 0;
-
111 size_t b_idx = 0;
-
112 size_t c_idx = 0;
-
113 size_t out_idx = 0;
-
114 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
115 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
116 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
-
117 a_idx += a.strides()[1];
-
118 b_idx += b.strides()[1];
-
119 c_idx += c.strides()[1];
-
120 }
-
121 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
122 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
123 c_idx += c.strides()[0] - c.strides()[1] * c.shape()[1];
-
124 }
-
125}
-
126
-
127template <typename T1, typename T2, typename T3, typename U, typename Op>
-
128void ternary_op_dims3(
-
129 const array& a,
-
130 const array& b,
-
131 const array& c,
-
132 array& out,
-
133 Op op) {
-
134 const T1* a_ptr = a.data<T1>();
-
135 const T2* b_ptr = b.data<T2>();
-
136 const T3* c_ptr = c.data<T3>();
-
137 U* dst = out.data<U>();
-
138 size_t a_idx = 0;
-
139 size_t b_idx = 0;
-
140 size_t c_idx = 0;
-
141 size_t out_idx = 0;
-
142 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
143 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
144 for (size_t k = 0; k < a.shape()[2]; ++k) {
-
145 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
-
146 a_idx += a.strides()[2];
-
147 b_idx += b.strides()[2];
-
148 c_idx += c.strides()[2];
-
149 }
-
150 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
-
151 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
-
152 c_idx += c.strides()[1] - c.strides()[2] * c.shape()[2];
-
153 }
-
154 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
155 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
156 c_idx += c.strides()[0] - c.strides()[1] * c.shape()[1];
-
157 }
-
158}
-
159
-
160template <typename T1, typename T2, typename T3, typename U, typename Op>
-
161void ternary_op_dims4(
-
162 const array& a,
-
163 const array& b,
-
164 const array& c,
-
165 array& out,
-
166 Op op) {
-
167 const T1* a_ptr = a.data<T1>();
-
168 const T2* b_ptr = b.data<T2>();
-
169 const T3* c_ptr = c.data<T3>();
-
170
-
171 U* dst = out.data<U>();
-
172 size_t a_idx = 0;
-
173 size_t b_idx = 0;
-
174 size_t c_idx = 0;
-
175 size_t out_idx = 0;
-
176 for (size_t i = 0; i < a.shape()[0]; ++i) {
-
177 for (size_t j = 0; j < a.shape()[1]; ++j) {
-
178 for (size_t k = 0; k < a.shape()[2]; ++k) {
-
179 for (size_t ii = 0; ii < a.shape()[3]; ++ii) {
-
180 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
-
181 a_idx += a.strides()[3];
-
182 b_idx += b.strides()[3];
-
183 c_idx += c.strides()[3];
-
184 }
-
185 a_idx += a.strides()[2] - a.strides()[3] * a.shape()[3];
-
186 b_idx += b.strides()[2] - b.strides()[3] * b.shape()[3];
-
187 c_idx += c.strides()[2] - c.strides()[3] * c.shape()[3];
-
188 }
-
189 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
-
190 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
-
191 c_idx += c.strides()[1] - c.strides()[2] * c.shape()[2];
-
192 }
-
193 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
-
194 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
-
195 c_idx += c.strides()[0] - c.strides()[1] * c.shape()[1];
-
196 }
-
197}
-
198
-
199template <typename T1, typename T2, typename T3, typename U, typename Op>
-
200void ternary_op_dispatch_dims(
-
201 const array& a,
-
202 const array& b,
-
203 const array& c,
-
204 array& out,
-
205 Op op) {
-
206 switch (out.ndim()) {
-
207 case 1:
-
208 ternary_op_dims1<T1, T2, T3, U, Op>(a, b, c, out, op);
-
209 return;
-
210 case 2:
-
211 ternary_op_dims2<T1, T2, T3, U, Op>(a, b, c, out, op);
-
212 return;
-
213 case 3:
-
214 ternary_op_dims3<T1, T2, T3, U, Op>(a, b, c, out, op);
-
215 return;
-
216 case 4:
-
217 ternary_op_dims4<T1, T2, T3, U, Op>(a, b, c, out, op);
-
218 return;
-
219 }
-
220
-
221 const T1* a_ptr = a.data<T1>();
-
222 const T2* b_ptr = b.data<T2>();
-
223 const T3* c_ptr = c.data<T3>();
-
224 U* dst = out.data<U>();
-
225 for (size_t i = 0; i < out.size(); i++) {
-
226 int a_idx = elem_to_loc(i, a.shape(), a.strides());
-
227 int b_idx = elem_to_loc(i, b.shape(), b.strides());
-
228 int c_idx = elem_to_loc(i, c.shape(), c.strides());
-
229 dst[i] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
-
230 }
-
231}
-
232
-
233template <typename T1, typename T2, typename T3, typename U, typename Op>
-
234void ternary_op(
-
235 const array& a,
-
236 const array& b,
-
237 const array& c,
-
238 array& out,
-
239 Op op) {
-
240 TernaryOpType topt = get_ternary_op_type(a, b, c);
-
241 set_ternary_op_output_data(a, b, c, out, topt);
-
242
-
243 // The full computation is scalar-scalar-scalar so we call the base op once.
-
244 if (topt == TernaryOpType::ScalarScalarScalar) {
-
245 *(out.data<U>()) = op(*a.data<T1>(), *b.data<T2>(), *c.data<T3>());
-
246 return;
-
247 }
-
248
-
249 ternary_op_dispatch_dims<T1, T2, T3, U>(a, b, c, out, op);
-
250}
-
251
-
252} // namespace
-
253
-
254} // namespace mlx::core
- - - - -
Op op
Definition binary.h:141
-
Buffer malloc_or_wait(size_t size)
-
Definition allocator.h:7
-
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
- -
bool is_donatable(const array &in, const array &out)
Definition utils.h:158
-
- - - - diff --git a/docs/build/html/common_2unary_8h.html b/docs/build/html/common_2unary_8h.html deleted file mode 100644 index c0017b1c..00000000 --- a/docs/build/html/common_2unary_8h.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/unary.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
unary.h File Reference
-
-
-
#include "mlx/allocator.h"
-#include "mlx/array.h"
-#include "mlx/backend/common/utils.h"
-#include "mlx/utils.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
-
- - - - diff --git a/docs/build/html/common_2unary_8h_source.html b/docs/build/html/common_2unary_8h_source.html deleted file mode 100644 index 3d1f2b04..00000000 --- a/docs/build/html/common_2unary_8h_source.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/unary.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
unary.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/allocator.h"
-
6#include "mlx/array.h"
- -
8#include "mlx/utils.h"
-
9
-
10namespace mlx::core {
-
11
-
12namespace {
-
13
-
14void set_unary_output_data(const array& in, array& out) {
-
15 if (is_donatable(in, out)) {
-
16 out.copy_shared_buffer(in);
-
17 } else {
-
18 auto size = in.data_size();
-
19 out.set_data(
-
20 allocator::malloc_or_wait(size * out.itemsize()),
-
21 size,
-
22 in.strides(),
-
23 in.flags());
-
24 }
-
25}
-
26
-
27template <typename T, typename Op>
-
28void unary_op(const array& a, array& out, Op op) {
-
29 const T* a_ptr = a.data<T>();
-
30 if (a.flags().contiguous) {
-
31 set_unary_output_data(a, out);
-
32 T* dst = out.data<T>();
-
33 for (size_t i = 0; i < a.data_size(); ++i) {
-
34 dst[i] = op(a_ptr[i]);
-
35 }
-
36 } else {
-
37 out.set_data(allocator::malloc_or_wait(out.nbytes()));
-
38 T* dst = out.data<T>();
-
39 for (size_t i = 0; i < out.size(); ++i) {
-
40 // TODO this is super inefficient, need to fix.
-
41 int a_idx = elem_to_loc(i, a.shape(), a.strides());
-
42 dst[i] = op(a_ptr[a_idx]);
-
43 }
-
44 }
-
45}
-
46
-
47template <typename Op>
-
48void unary(const array& a, array& out, Op op) {
-
49 switch (out.dtype()) {
-
50 case bool_:
-
51 unary_op<bool>(a, out, op);
-
52 break;
-
53 case uint8:
-
54 unary_op<uint8_t>(a, out, op);
-
55 break;
-
56 case uint16:
-
57 unary_op<uint16_t>(a, out, op);
-
58 break;
-
59 case uint32:
-
60 unary_op<uint32_t>(a, out, op);
-
61 break;
-
62 case uint64:
-
63 unary_op<uint64_t>(a, out, op);
-
64 break;
-
65 case int8:
-
66 unary_op<int8_t>(a, out, op);
-
67 break;
-
68 case int16:
-
69 unary_op<int16_t>(a, out, op);
-
70 break;
-
71 case int32:
-
72 unary_op<int32_t>(a, out, op);
-
73 break;
-
74 case int64:
-
75 unary_op<int64_t>(a, out, op);
-
76 break;
-
77 case float16:
-
78 unary_op<float16_t>(a, out, op);
-
79 break;
-
80 case float32:
-
81 unary_op<float>(a, out, op);
-
82 break;
-
83 case bfloat16:
-
84 unary_op<bfloat16_t>(a, out, op);
-
85 break;
-
86 case complex64:
-
87 unary_op<complex64_t>(a, out, op);
-
88 break;
-
89 }
-
90}
-
91
-
92template <typename Op>
-
93void unary_fp(const array& a, array& out, Op op) {
-
94 switch (out.dtype()) {
-
95 case bfloat16:
-
96 unary_op<bfloat16_t>(a, out, op);
-
97 break;
-
98 case float16:
-
99 unary_op<float16_t>(a, out, op);
-
100 break;
-
101 case float32:
-
102 unary_op<float>(a, out, op);
-
103 break;
-
104 case complex64:
-
105 unary_op<complex64_t>(a, out, op);
-
106 break;
-
107 default:
-
108 std::ostringstream err;
-
109 err << "[unary_fp] Does not support " << out.dtype();
-
110 throw std::runtime_error(err.str());
-
111 }
-
112}
-
113
-
114} // namespace
-
115
-
116} // namespace mlx::core
- - - -
Op op
Definition binary.h:141
-
Buffer malloc_or_wait(size_t size)
-
const char * unary()
-
Definition allocator.h:7
-
constexpr Dtype bool_
Definition dtype.h:58
-
constexpr Dtype uint64
Definition dtype.h:63
-
constexpr Dtype uint16
Definition dtype.h:61
-
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
-
constexpr Dtype bfloat16
Definition dtype.h:72
-
constexpr Dtype int32
Definition dtype.h:67
-
constexpr Dtype float32
Definition dtype.h:71
-
constexpr Dtype int16
Definition dtype.h:66
-
constexpr Dtype int8
Definition dtype.h:65
-
constexpr Dtype int64
Definition dtype.h:68
-
constexpr Dtype uint8
Definition dtype.h:60
-
constexpr Dtype float16
Definition dtype.h:70
-
constexpr Dtype uint32
Definition dtype.h:62
-
bool is_donatable(const array &in, const array &out)
Definition utils.h:158
-
constexpr Dtype complex64
Definition dtype.h:73
- -
- - - - diff --git a/docs/build/html/compile_8h.html b/docs/build/html/compile_8h.html deleted file mode 100644 index 3689b75f..00000000 --- a/docs/build/html/compile_8h.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx/compile.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
compile.h File Reference
-
-
-
#include "mlx/array.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - -

-Enumerations

enum class  mlx::core::CompileMode { mlx::core::disabled -, mlx::core::no_simplify -, mlx::core::no_fuse -, mlx::core::enabled - }
 
- - - - - - - - - - -

-Functions

void mlx::core::disable_compile ()
 Globally disable compilation.
 
void mlx::core::enable_compile ()
 Globally enable compilation.
 
void mlx::core::set_compile_mode (CompileMode mode)
 Set the compiler mode to the given value.
 
- - - - -

-Variables

std::function< std::vector< array >(const std::vector< array > &) mlx::core::compile )(const std::function< std::vector< array >(const std::vector< array > &)> &fun, bool shapeless=false)
 Compile takes a function and returns a compiled function.
 
-
- - - - diff --git a/docs/build/html/compile_8h_source.html b/docs/build/html/compile_8h_source.html deleted file mode 100644 index 8960d1dd..00000000 --- a/docs/build/html/compile_8h_source.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -MLX: mlx/compile.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
compile.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/array.h"
-
6
-
7namespace mlx::core {
-
8
- -
10
-
12std::function<std::vector<array>(const std::vector<array>&)> compile(
-
13 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
-
14 bool shapeless = false);
-
15
- -
21
- -
26
- -
29} // namespace mlx::core
- -
Definition allocator.h:7
-
void enable_compile()
Globally enable compilation.
-
void set_compile_mode(CompileMode mode)
Set the compiler mode to the given value.
-
void disable_compile()
Globally disable compilation.
-
std::function< std::vector< array >(const std::vector< array > &) compile)(const std::function< std::vector< array >(const std::vector< array > &)> &fun, bool shapeless=false)
Compile takes a function and returns a compiled function.
-
CompileMode
Definition compile.h:9
- - - - -
- - - - diff --git a/docs/build/html/compile__impl_8h.html b/docs/build/html/compile__impl_8h.html deleted file mode 100644 index cfe23b4a..00000000 --- a/docs/build/html/compile__impl_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/compile_impl.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
compile_impl.h File Reference
-
-
-
#include "mlx/device.h"
-
-

Go to the source code of this file.

- - - - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
namespace  mlx::core::detail
 
- - - -

-Functions

bool mlx::core::detail::compile_available_for_device (const Device &device)
 
-
- - - - diff --git a/docs/build/html/compile__impl_8h_source.html b/docs/build/html/compile__impl_8h_source.html deleted file mode 100644 index 83d84e37..00000000 --- a/docs/build/html/compile__impl_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: mlx/compile_impl.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
compile_impl.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5#include "mlx/device.h"
-
6
-
7namespace mlx::core::detail {
-
8
- -
10
-
11}
- -
Definition ops.h:8
-
bool compile_available_for_device(const Device &device)
-
Definition device.h:7
-
- - - - diff --git a/docs/build/html/compiled_8h.html b/docs/build/html/compiled_8h.html deleted file mode 100644 index aae146e4..00000000 --- a/docs/build/html/compiled_8h.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/compiled.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
compiled.h File Reference
-
-
-
#include <iomanip>
-#include <sstream>
-#include <unordered_set>
-#include "mlx/array.h"
-#include "mlx/primitives.h"
-
-

Go to the source code of this file.

- - - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::core
 
- - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

bool mlx::core::is_static_cast (const Primitive &p)
 
std::string mlx::core::build_lib_name (const std::vector< array > &inputs, const std::vector< array > &outputs, const std::vector< array > &tape, const std::unordered_set< uintptr_t > &constant_ids)
 
std::string mlx::core::get_type_string (Dtype d)
 
template<typename T >
void mlx::core::print_float_constant (std::ostream &os, const array &x)
 
template<typename T >
void mlx::core::print_int_constant (std::ostream &os, const array &x)
 
template<typename T >
void mlx::core::print_complex_constant (std::ostream &os, const array &x)
 
void mlx::core::print_constant (std::ostream &os, const array &x)
 
bool mlx::core::is_scalar (const array &x)
 
bool mlx::core::compiled_check_contiguity (const std::vector< array > &inputs, const std::vector< int > &shape)
 
void mlx::core::compiled_allocate_outputs (const std::vector< array > &inputs, std::vector< array > &outputs, const std::vector< array > &inputs_, const std::unordered_set< uintptr_t > &constant_ids_, bool contiguous, bool move_buffers=false)
 
-
- - - - diff --git a/docs/build/html/compiled_8h_source.html b/docs/build/html/compiled_8h_source.html deleted file mode 100644 index 6a9a530d..00000000 --- a/docs/build/html/compiled_8h_source.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/compiled.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
compiled.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-2024 Apple Inc.
-
2#pragma once
-
3
-
4#include <iomanip>
-
5#include <sstream>
-
6#include <unordered_set>
-
7
-
8#include "mlx/array.h"
-
9#include "mlx/primitives.h"
-
10
-
11namespace mlx::core {
-
12
-
-
13inline bool is_static_cast(const Primitive& p) {
-
14 return (
-
15 typeid(p) == typeid(Broadcast) || typeid(p) == typeid(Copy) ||
-
16 typeid(p) == typeid(StopGradient) || typeid(p) == typeid(AsType));
-
17}
-
-
18
-
19std::string build_lib_name(
-
20 const std::vector<array>& inputs,
-
21 const std::vector<array>& outputs,
-
22 const std::vector<array>& tape,
-
23 const std::unordered_set<uintptr_t>& constant_ids);
-
24
-
25std::string get_type_string(Dtype d);
-
26
-
27template <typename T>
-
-
28void print_float_constant(std::ostream& os, const array& x) {
-
29 auto old_precision = os.precision();
-
30 os << std::setprecision(std::numeric_limits<float>::digits10 + 1)
-
31 << x.item<T>() << std::setprecision(old_precision);
-
32}
-
-
33
-
34template <typename T>
-
-
35void print_int_constant(std::ostream& os, const array& x) {
-
36 os << x.item<T>();
-
37}
-
-
38
-
39template <typename T>
-
-
40void print_complex_constant(std::ostream& os, const array& x) {
-
41 auto old_precision = os.precision();
-
42 T constant = x.item<T>();
-
43
-
44 os << get_type_string(x.dtype()) << "("
-
45 << std::setprecision(std::numeric_limits<float>::digits10 + 1)
-
46 << constant.real() << ", " << constant.imag() << ")"
-
47 << std::setprecision(old_precision);
-
48}
-
-
49
-
50void print_constant(std::ostream& os, const array& x);
-
51
-
-
52inline bool is_scalar(const array& x) {
-
53 return x.ndim() == 0;
-
54}
-
-
55
-
56// Check if we can use a contiguous operation given inputs and the output shape
- -
58 const std::vector<array>& inputs,
-
59 const std::vector<int>& shape);
-
60
-
61// Allocate space for the outputs possibly with input donation
- -
63 const std::vector<array>& inputs,
-
64 std::vector<array>& outputs,
-
65 const std::vector<array>& inputs_,
-
66 const std::unordered_set<uintptr_t>& constant_ids_,
-
67 bool contiguous,
-
68 bool move_buffers = false);
-
69
-
70} // namespace mlx::core
- -
Definition primitives.h:416
-
Definition primitives.h:526
-
Definition primitives.h:681
-
Definition primitives.h:48
-
Definition primitives.h:1985
-
Definition array.h:20
-
size_t ndim() const
The number of dimensions of the array.
Definition array.h:94
-
T item()
Get the value from a scalar array.
Definition array.h:513
-
Dtype dtype() const
Get the arrays data type.
Definition array.h:127
-
Definition allocator.h:7
-
void print_complex_constant(std::ostream &os, const array &x)
Definition compiled.h:40
-
bool compiled_check_contiguity(const std::vector< array > &inputs, const std::vector< int > &shape)
-
std::string build_lib_name(const std::vector< array > &inputs, const std::vector< array > &outputs, const std::vector< array > &tape, const std::unordered_set< uintptr_t > &constant_ids)
-
void print_constant(std::ostream &os, const array &x)
-
void print_float_constant(std::ostream &os, const array &x)
Definition compiled.h:28
-
void print_int_constant(std::ostream &os, const array &x)
Definition compiled.h:35
-
bool is_scalar(const array &x)
Definition compiled.h:52
-
void compiled_allocate_outputs(const std::vector< array > &inputs, std::vector< array > &outputs, const std::vector< array > &inputs_, const std::unordered_set< uintptr_t > &constant_ids_, bool contiguous, bool move_buffers=false)
-
std::string get_type_string(Dtype d)
-
bool is_static_cast(const Primitive &p)
Definition compiled.h:13
- -
Definition dtype.h:13
-
- - - - diff --git a/docs/build/html/compiled__preamble_8h.html b/docs/build/html/compiled__preamble_8h.html deleted file mode 100644 index ffb11123..00000000 --- a/docs/build/html/compiled__preamble_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/compiled_preamble.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
compiled_preamble.h File Reference
-
-
- -

Go to the source code of this file.

- - - - -

-Functions

const char * get_kernel_preamble ()
 
-

Function Documentation

- -

◆ get_kernel_preamble()

- -
-
- - - - - - - -
const char * get_kernel_preamble ()
-
- -
-
-
- - - - diff --git a/docs/build/html/compiled__preamble_8h_source.html b/docs/build/html/compiled__preamble_8h_source.html deleted file mode 100644 index 3e318c42..00000000 --- a/docs/build/html/compiled__preamble_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/compiled_preamble.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
compiled_preamble.h
-
-
-Go to the documentation of this file.
1// Copyright © 2023-24 Apple Inc.
-
2
-
3#pragma once
-
4
-
5// clang-format off
- -
7#include "mlx/types/complex.h"
- -
9// clang-format on
-
10
-
11const char* get_kernel_preamble();
- -
const char * get_kernel_preamble()
- - -
- - - - diff --git a/docs/build/html/conv_2loader_8h.html b/docs/build/html/conv_2loader_8h.html deleted file mode 100644 index f5125528..00000000 --- a/docs/build/html/conv_2loader_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loader.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
loader.h File Reference
-
- - - - - diff --git a/docs/build/html/conv_2loader_8h_source.html b/docs/build/html/conv_2loader_8h_source.html deleted file mode 100644 index b3bb84bc..00000000 --- a/docs/build/html/conv_2loader_8h_source.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loader.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
loader.h
-
- - - - - diff --git a/docs/build/html/conv_2params_8h.html b/docs/build/html/conv_2params_8h.html deleted file mode 100644 index 72736b01..00000000 --- a/docs/build/html/conv_2params_8h.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/params.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
- -
params.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - - - -

-Classes

struct  MLXConvParams< NDIM >
 
struct  mlx::steel::ImplicitGemmConv2DParams
 
struct  mlx::steel::Conv2DGeneralJumpParams
 
struct  mlx::steel::Conv2DGeneralBaseInfo
 
- - - - - -

-Namespaces

namespace  mlx
 
namespace  mlx::steel
 
-
- - - - diff --git a/docs/build/html/conv_2params_8h_source.html b/docs/build/html/conv_2params_8h_source.html deleted file mode 100644 index deb4bf9a..00000000 --- a/docs/build/html/conv_2params_8h_source.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/params.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
params.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#pragma once
-
4
-
5template <int NDIM>
-
- -
7 const int N; // Batch size
-
8 const int C; // In channels
-
9 const int O; // Out channels
-
10 const int iS[NDIM]; // Input spatial dim
-
11 const int wS[NDIM]; // Weight spatial dim
-
12 const int oS[NDIM]; // Output spatial dim
-
13 const int str[NDIM]; // Kernel strides
-
14 const int pad[NDIM]; // Input padding
-
15 const int kdil[NDIM]; // Kernel dilation
-
16 const int idil[NDIM]; // Input dilation
-
17 const size_t in_strides[NDIM + 2]; // In strides
-
18 const size_t wt_strides[NDIM + 2]; // Wt strides
-
19 const size_t out_strides[NDIM + 2]; // Out strides
-
20 const int groups; // Input channel groups
-
21 const bool flip;
-
22};
-
-
23
-
24namespace mlx {
-
25namespace steel {
-
26
-
- -
28 const int M;
-
29 const int N;
-
30 const int K;
-
31
- -
33
-
34 const int inp_jump_w;
-
35 const int inp_jump_h;
-
36 const int inp_jump_c;
-
37
-
38 const int tiles_n;
-
39 const int tiles_m;
-
40 const int swizzle_log;
-
41};
-
-
42
-
- -
44 const int f_wgt_jump_h;
-
45 const int f_wgt_jump_w;
-
46
-
47 const int f_out_jump_h;
-
48 const int f_out_jump_w;
-
49
-
50 const int adj_out_h;
-
51 const int adj_out_w;
-
52 const int adj_out_hw;
-
53 const int adj_implicit_m;
-
54};
-
-
55
-
- - - -
59};
-
-
60
-
61} // namespace steel
-
62} // namespace mlx
-
Definition allocator.h:7
-
Definition params.h:6
-
const int C
Definition params.h:8
-
const size_t out_strides[NDIM+2]
Definition params.h:19
-
const int oS[NDIM]
Definition params.h:12
-
const int iS[NDIM]
Definition params.h:10
-
const int kdil[NDIM]
Definition params.h:15
-
const int str[NDIM]
Definition params.h:13
-
const size_t wt_strides[NDIM+2]
Definition params.h:18
-
const bool flip
Definition params.h:21
-
const size_t in_strides[NDIM+2]
Definition params.h:17
-
const int wS[NDIM]
Definition params.h:11
-
const int O
Definition params.h:9
-
const int N
Definition params.h:7
-
const int pad[NDIM]
Definition params.h:14
-
const int groups
Definition params.h:20
-
const int idil[NDIM]
Definition params.h:16
-
Definition params.h:56
-
int weight_base
Definition params.h:57
-
int weight_size
Definition params.h:58
- -
const int f_out_jump_w
Definition params.h:48
-
const int f_wgt_jump_h
Definition params.h:44
-
const int f_wgt_jump_w
Definition params.h:45
-
const int adj_implicit_m
Definition params.h:53
-
const int f_out_jump_h
Definition params.h:47
-
const int adj_out_h
Definition params.h:50
-
const int adj_out_w
Definition params.h:51
-
const int adj_out_hw
Definition params.h:52
- -
const int inp_jump_h
Definition params.h:35
-
const int M
Definition params.h:28
-
const int N
Definition params.h:29
-
const int tiles_m
Definition params.h:39
-
const int tiles_n
Definition params.h:38
-
const int inp_jump_c
Definition params.h:36
-
const int gemm_k_iterations
Definition params.h:32
-
const int inp_jump_w
Definition params.h:34
-
const int swizzle_log
Definition params.h:40
-
const int K
Definition params.h:30
-
- - - - diff --git a/docs/build/html/conv_8h.html b/docs/build/html/conv_8h.html deleted file mode 100644 index bcb720e1..00000000 --- a/docs/build/html/conv_8h.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/conv.h File Reference - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
conv.h File Reference
-
- - - - - diff --git a/docs/build/html/conv_8h_source.html b/docs/build/html/conv_8h_source.html deleted file mode 100644 index b05a494b..00000000 --- a/docs/build/html/conv_8h_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/conv.h Source File - - - - - - - - - - - -
-
- - - - - - -
-
MLX -
-
-
- - - - - - - - - -
-
- - -
-
-
-
-
-
Loading...
-
Searching...
-
No Matches
-
-
-
-
- - -
-
-
conv.h
-
-
-Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
-
2
-
3#pragma once
-
4
- - -
7
- - - -
11
-
12using namespace metal;
-
13using namespace mlx::steel;
- - - - -
Definition bf16.h:265
-
Definition loader_channel_l.h:14
- -
- - - - diff --git a/docs/build/html/cookie.js b/docs/build/html/cookie.js deleted file mode 100644 index 53ad21d9..00000000 --- a/docs/build/html/cookie.js +++ /dev/null @@ -1,58 +0,0 @@ -/*! - Cookie helper functions - Copyright (c) 2023 Dimitri van Heesch - Released under MIT license. -*/ -let Cookie = { - cookie_namespace: 'doxygen_', - - readSetting(cookie,defVal) { - if (window.chrome) { - const val = localStorage.getItem(this.cookie_namespace+cookie) || - sessionStorage.getItem(this.cookie_namespace+cookie); - if (val) return val; - } else { - let myCookie = this.cookie_namespace+cookie+"="; - if (document.cookie) { - const index = document.cookie.indexOf(myCookie); - if (index != -1) { - const valStart = index + myCookie.length; - let valEnd = document.cookie.indexOf(";", valStart); - if (valEnd == -1) { - valEnd = document.cookie.length; - } - return document.cookie.substring(valStart, valEnd); - } - } - } - return defVal; - }, - - writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete - if (window.chrome) { - if (days==0) { - sessionStorage.setItem(this.cookie_namespace+cookie,val); - } else { - localStorage.setItem(this.cookie_namespace+cookie,val); - } - } else { - let date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; - document.cookie = this.cookie_namespace + cookie + "=" + - val + "; SameSite=Lax;" + expiration + "path=/"; - } - }, - - eraseSetting(cookie) { - if (window.chrome) { - if (localStorage.getItem(this.cookie_namespace+cookie)) { - localStorage.removeItem(this.cookie_namespace+cookie); - } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { - sessionStorage.removeItem(this.cookie_namespace+cookie); - } - } else { - this.writeSetting(cookie,'',-1); - } - }, -} diff --git a/docs/build/html/cpp/ops.html b/docs/build/html/cpp/ops.html index 1cf076bd..407ce266 100644 --- a/docs/build/html/cpp/ops.html +++ b/docs/build/html/cpp/ops.html @@ -8,7 +8,7 @@ - Operations — MLX 0.17.3 documentation + Operations — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -361,6 +361,7 @@
  • mlx.core.pad
  • mlx.core.power
  • mlx.core.prod
  • +
  • mlx.core.put_along_axis
  • mlx.core.quantize
  • mlx.core.quantized_matmul
  • mlx.core.radians
  • @@ -469,6 +470,7 @@
  • mlx.core.linalg.norm
  • mlx.core.linalg.cholesky
  • mlx.core.linalg.cholesky_inv
  • +
  • mlx.core.linalg.cross
  • mlx.core.linalg.qr
  • mlx.core.linalg.svd
  • @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • @@ -891,7 +899,7 @@ document.write(`
    • expand_dims()
    • expand_dims()
    • slice()
    • -
    • slice()
    • +
    • slice()
    • slice_update()
    • slice_update()
    • split()
    • @@ -1078,8 +1086,11 @@ document.write(`
    • gather()
    • gather()
    • take()
    • +
    • take()
    • take()
    • +
    • take()
    • take_along_axis()
    • +
    • put_along_axis()
    • scatter()
    • scatter()
    • scatter_add()
    • @@ -1369,7 +1380,7 @@ document.write(`
      -inline array squeeze(const array &a, int axis, StreamOrDevice s = {})#
      +array squeeze(const array &a, int axis, StreamOrDevice s = {})#

      Remove singleton dimensions at the given axis.

      @@ -1398,8 +1409,8 @@ document.write(`
      -
      -array slice(const array &a, const std::vector<int> &start, const std::vector<int> &stop, StreamOrDevice s = {})#
      +
      +array slice(const array &a, std::vector<int> start, std::vector<int> stop, StreamOrDevice s = {})#

      Slice an array with a stride of 1 in each dimension.

      @@ -2458,18 +2469,34 @@ document.write(`

      Take array slices at the given indices of the specified axis.

      +
      +
      +array take(const array &a, int index, int axis, StreamOrDevice s = {})#
      +
      +
      array take(const array &a, const array &indices, StreamOrDevice s = {})#

      Take array entries at the given indices treating the array as flattened.

      +
      +
      +array take(const array &a, int index, StreamOrDevice s = {})#
      +
      +
      array take_along_axis(const array &a, const array &indices, int axis, StreamOrDevice s = {})#

      Take array entries given indices along the axis.

      +
      +
      +array put_along_axis(const array &a, const array &indices, const array &values, int axis, StreamOrDevice s = {})#
      +

      Put the values into the array at the given indices along the axis.

      +
      +
      array scatter(const array &a, const std::vector<array> &indices, const array &updates, const std::vector<int> &axes, StreamOrDevice s = {})#
      @@ -2986,7 +3013,7 @@ document.write(`
    • expand_dims()
    • expand_dims()
    • slice()
    • -
    • slice()
    • +
    • slice()
    • slice_update()
    • slice_update()
    • split()
    • @@ -3173,8 +3200,11 @@ document.write(`
    • gather()
    • gather()
    • take()
    • +
    • take()
    • take()
    • +
    • take()
    • take_along_axis()
    • +
    • put_along_axis()
    • scatter()
    • scatter()
    • scatter_add()
    • diff --git a/docs/build/html/defines_8h.html b/docs/build/html/defines_8h.html deleted file mode 100644 index dc16b29d..00000000 --- a/docs/build/html/defines_8h.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/defines.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      defines.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Macros

      #define MTL_CONST
       
      #define instantiate_kernel(name, func, ...)
       
      - - - - - - - - - - - - - -

      -Variables

      static constexpr int MAX_REDUCE_SPECIALIZED_DIMS = 4
       
      static constexpr int REDUCE_N_READS = 4
       
      static constexpr int REDUCE_N_WRITES = 4
       
      static constexpr int SOFTMAX_N_READS = 4
       
      static constexpr int RMS_N_READS = 4
       
      static constexpr int RMS_LOOPED_LIMIT = 4096
       
      -

      Macro Definition Documentation

      - -

      ◆ instantiate_kernel

      - -
      -
      - - - - - - - - - - - - - - - - -
      #define instantiate_kernel( name,
      func,
      ... )
      -
      -Value:
      template [[host_name( \
      -
      name)]] [[kernel]] decltype(func<__VA_ARGS__>) func<__VA_ARGS__>;
      -
      -
      -
      - -

      ◆ MTL_CONST

      - -
      -
      - - - - -
      #define MTL_CONST
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ MAX_REDUCE_SPECIALIZED_DIMS

      - -
      -
      - - - - - -
      - - - - -
      constexpr int MAX_REDUCE_SPECIALIZED_DIMS = 4
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ REDUCE_N_READS

      - -
      -
      - - - - - -
      - - - - -
      constexpr int REDUCE_N_READS = 4
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ REDUCE_N_WRITES

      - -
      -
      - - - - - -
      - - - - -
      constexpr int REDUCE_N_WRITES = 4
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ RMS_LOOPED_LIMIT

      - -
      -
      - - - - - -
      - - - - -
      constexpr int RMS_LOOPED_LIMIT = 4096
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ RMS_N_READS

      - -
      -
      - - - - - -
      - - - - -
      constexpr int RMS_N_READS = 4
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ SOFTMAX_N_READS

      - -
      -
      - - - - - -
      - - - - -
      constexpr int SOFTMAX_N_READS = 4
      -
      -staticconstexpr
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/defines_8h_source.html b/docs/build/html/defines_8h_source.html deleted file mode 100644 index ff28e4ed..00000000 --- a/docs/build/html/defines_8h_source.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/defines.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      defines.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#if defined __METAL__ || defined MLX_METAL_JIT
      -
      6#define MTL_CONST constant
      -
      7#else
      -
      8#define MTL_CONST
      -
      9#endif
      -
      10
      -
      11static MTL_CONST constexpr int MAX_REDUCE_SPECIALIZED_DIMS = 4;
      -
      12static MTL_CONST constexpr int REDUCE_N_READS = 4;
      -
      13static MTL_CONST constexpr int REDUCE_N_WRITES = 4;
      -
      14static MTL_CONST constexpr int SOFTMAX_N_READS = 4;
      -
      15static MTL_CONST constexpr int RMS_N_READS = 4;
      -
      16static MTL_CONST constexpr int RMS_LOOPED_LIMIT = 4096;
      -
      17
      -
      18// Instantiate a templated kernel.
      -
      19// Extra args are used as template parameters:
      -
      20// e.g. instantiate_kernel(binary_int, binary, a, b) ->
      -
      21// [[host_name(binary_int)]] [kernel] binary<a, b>
      -
      -
      22#define instantiate_kernel(name, func, ...) \
      -
      23 template [[host_name( \
      -
      24 name)]] [[kernel]] decltype(func<__VA_ARGS__>) func<__VA_ARGS__>;
      -
      -
      static constexpr int MAX_REDUCE_SPECIALIZED_DIMS
      Definition defines.h:11
      -
      static constexpr int REDUCE_N_READS
      Definition defines.h:12
      -
      static constexpr int REDUCE_N_WRITES
      Definition defines.h:13
      -
      static constexpr int RMS_LOOPED_LIMIT
      Definition defines.h:16
      -
      static constexpr int SOFTMAX_N_READS
      Definition defines.h:14
      -
      #define MTL_CONST
      Definition defines.h:8
      -
      static constexpr int RMS_N_READS
      Definition defines.h:15
      -
      - - - - diff --git a/docs/build/html/dev/custom_metal_kernels.html b/docs/build/html/dev/custom_metal_kernels.html index 3e341107..c4b1975d 100644 --- a/docs/build/html/dev/custom_metal_kernels.html +++ b/docs/build/html/dev/custom_metal_kernels.html @@ -8,7 +8,7 @@ - Custom Metal Kernels — MLX 0.17.3 documentation + Custom Metal Kernels — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -130,8 +130,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -360,6 +360,7 @@
    • mlx.core.pad
    • mlx.core.power
    • mlx.core.prod
    • +
    • mlx.core.put_along_axis
    • mlx.core.quantize
    • mlx.core.quantized_matmul
    • mlx.core.radians
    • @@ -468,6 +469,7 @@
    • mlx.core.linalg.norm
    • mlx.core.linalg.cholesky
    • mlx.core.linalg.cholesky_inv
    • +
    • mlx.core.linalg.cross
    • mlx.core.linalg.qr
    • mlx.core.linalg.svd
    @@ -517,6 +519,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -527,6 +530,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -538,6 +542,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -553,6 +559,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -568,6 +575,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • diff --git a/docs/build/html/device_8h.html b/docs/build/html/device_8h.html deleted file mode 100644 index 5d75480d..00000000 --- a/docs/build/html/device_8h.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -MLX: mlx/device.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      device.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - -

      -Classes

      struct  mlx::core::Device
       
      - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - -

      -Functions

      const Devicemlx::core::default_device ()
       
      void mlx::core::set_default_device (const Device &d)
       
      bool mlx::core::operator== (const Device &lhs, const Device &rhs)
       
      bool mlx::core::operator!= (const Device &lhs, const Device &rhs)
       
      -
      - - - - diff --git a/docs/build/html/device_8h_source.html b/docs/build/html/device_8h_source.html deleted file mode 100644 index ba4a7b8c..00000000 --- a/docs/build/html/device_8h_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -MLX: mlx/device.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      device.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5namespace mlx::core {
      -
      6
      -
      -
      7struct Device {
      -
      -
      8 enum class DeviceType {
      -
      9 cpu,
      -
      10 gpu,
      -
      11 };
      -
      -
      12
      -
      13 static constexpr DeviceType cpu = DeviceType::cpu;
      -
      14 static constexpr DeviceType gpu = DeviceType::gpu;
      -
      15
      - -
      17
      - -
      19 int index;
      -
      20};
      -
      -
      21
      - -
      23
      - -
      25
      -
      26bool operator==(const Device& lhs, const Device& rhs);
      -
      27bool operator!=(const Device& lhs, const Device& rhs);
      -
      28
      -
      29} // namespace mlx::core
      -
      Definition allocator.h:7
      -
      const Device & default_device()
      -
      void set_default_device(const Device &d)
      -
      bool operator==(const Device &lhs, const Device &rhs)
      -
      bool operator!=(const Device &lhs, const Device &rhs)
      -
      Definition device.h:7
      -
      static constexpr DeviceType gpu
      Definition device.h:14
      -
      Device(DeviceType type, int index=0)
      Definition device.h:16
      -
      int index
      Definition device.h:19
      -
      static constexpr DeviceType cpu
      Definition device.h:13
      -
      DeviceType type
      Definition device.h:18
      -
      DeviceType
      Definition device.h:8
      - - -
      - - - - diff --git a/docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html b/docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html deleted file mode 100644 index d0cb9438..00000000 --- a/docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: mlx/backend Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      backend Directory Reference
      -
      -
      - - - - - - - - -

      -Directories

       accelerate
       
       common
       
       metal
       
      -
      - - - - diff --git a/docs/build/html/dir_2193406f5b2eae6fc53753d8a9a80df3.html b/docs/build/html/dir_2193406f5b2eae6fc53753d8a9a80df3.html deleted file mode 100644 index b34bf763..00000000 --- a/docs/build/html/dir_2193406f5b2eae6fc53753d8a9a80df3.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: mlx/io Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      io Directory Reference
      -
      -
      - - - - - - - - -

      -Files

       gguf.h
       
       load.h
       
       threadpool.h
       
      -
      - - - - diff --git a/docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html b/docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html deleted file mode 100644 index 044c937f..00000000 --- a/docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: mlx/distributed Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      distributed Directory Reference
      -
      -
      - - - - - - - - - - -

      -Files

       distributed.h
       
       distributed_impl.h
       
       ops.h
       
       primitives.h
       
      -
      - - - - diff --git a/docs/build/html/dir_4336740ec0075891704443b417fef6cb.html b/docs/build/html/dir_4336740ec0075891704443b417fef6cb.html deleted file mode 100644 index d3d48244..00000000 --- a/docs/build/html/dir_4336740ec0075891704443b417fef6cb.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      jit Directory Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - -

      -Files

       arange.h
       
       copy.h
       
       gemv_masked.h
       
       includes.h
       
       indexing.h
       
       scan.h
       
       softmax.h
       
       steel_conv.h
       
       steel_gemm.h
       
      -
      - - - - diff --git a/docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html b/docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html deleted file mode 100644 index 4a8dfe11..00000000 --- a/docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: mlx/types Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      types Directory Reference
      -
      -
      - - - - - - - - - - -

      -Files

       bf16.h
       
       complex.h
       
       fp16.h
       
       half_types.h
       
      -
      - - - - diff --git a/docs/build/html/dir_6379e541ea5051a09bc0e3fdd92fcd3b.html b/docs/build/html/dir_6379e541ea5051a09bc0e3fdd92fcd3b.html deleted file mode 100644 index 61e4556a..00000000 --- a/docs/build/html/dir_6379e541ea5051a09bc0e3fdd92fcd3b.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/kernels Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      kernels Directory Reference
      -
      -
      - - - - - - -

      -Files

       steel_conv.h
       
       steel_conv_general.h
       
      -
      - - - - diff --git a/docs/build/html/dir_6768c99e6145fb9510ccdb40db8ede25.html b/docs/build/html/dir_6768c99e6145fb9510ccdb40db8ede25.html deleted file mode 100644 index 57fd0451..00000000 --- a/docs/build/html/dir_6768c99e6145fb9510ccdb40db8ede25.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      gemm Directory Reference
      -
      -
      - - - - -

      -Directories

       kernels
       
      - - - - - - - - - - - -

      -Files

       gemm.h
       
       loader.h
       
       mma.h
       
       params.h
       
       transforms.h
       
      -
      - - - - diff --git a/docs/build/html/dir_70a37effa88bcbd6b791977fa1e64356.html b/docs/build/html/dir_70a37effa88bcbd6b791977fa1e64356.html deleted file mode 100644 index 1d1da57f..00000000 --- a/docs/build/html/dir_70a37effa88bcbd6b791977fa1e64356.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      kernels Directory Reference
      -
      -
      - - - - - - - - -

      -Directories

       fft
       
       reduction
       
       steel
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Files

       arange.h
       
       atomic.h
       
       bf16.h
       
       bf16_math.h
       
       binary.h
       
       binary_ops.h
       
       binary_two.h
       
       complex.h
       
       copy.h
       
       defines.h
       
       erf.h
       
       expm1f.h
       
       fft.h
       
       gather.h
       
       gemv_masked.h
       
       hadamard.h
       
       indexing.h
       
       quantized.h
       
       reduce.h
       
       reduce_utils.h
       
       scaled_dot_product_attention_params.h
       
       scan.h
       
       scatter.h
       
       softmax.h
       
       sort.h
       
       ternary.h
       
       ternary_ops.h
       
       unary.h
       
       unary_ops.h
       
       utils.h
       
      -
      - - - - diff --git a/docs/build/html/dir_76215a6c54e2b67053e723fc2395583c.html b/docs/build/html/dir_76215a6c54e2b67053e723fc2395583c.html deleted file mode 100644 index 2cc62c38..00000000 --- a/docs/build/html/dir_76215a6c54e2b67053e723fc2395583c.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel Directory Reference
      -
      -
      - - - - - - -

      -Directories

       conv
       
       gemm
       
      - - - - - -

      -Files

       defines.h
       
       utils.h
       
      -
      - - - - diff --git a/docs/build/html/dir_86b95e7b1d0d6e25466bb9213752d32f.html b/docs/build/html/dir_86b95e7b1d0d6e25466bb9213752d32f.html deleted file mode 100644 index 25787867..00000000 --- a/docs/build/html/dir_86b95e7b1d0d6e25466bb9213752d32f.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: mlx/backend/accelerate Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      accelerate Directory Reference
      -
      -
      - - - - -

      -Files

       utils.h
       
      -
      - - - - diff --git a/docs/build/html/dir_8c751ccfa9f494753d976761a9d60a84.html b/docs/build/html/dir_8c751ccfa9f494753d976761a9d60a84.html deleted file mode 100644 index 311f78ed..00000000 --- a/docs/build/html/dir_8c751ccfa9f494753d976761a9d60a84.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      fft Directory Reference
      -
      -
      - - - - - - -

      -Files

       radix.h
       
       readwrite.h
       
      -
      - - - - diff --git a/docs/build/html/dir_938ab0ecf10b8b860ff766c820f665fd.html b/docs/build/html/dir_938ab0ecf10b8b860ff766c820f665fd.html deleted file mode 100644 index a1a46d46..00000000 --- a/docs/build/html/dir_938ab0ecf10b8b860ff766c820f665fd.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - -MLX: mlx Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      mlx Directory Reference
      -
      -
      - - - - - - - - - - - - -

      -Directories

       3rdparty
       
       backend
       
       distributed
       
       io
       
       types
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Files

       allocator.h
       
       array.h
       
       compile.h
       
       compile_impl.h
       
       device.h
       
       dtype.h
       
       einsum.h
       
       event.h
       
       fast.h
       
       fast_primitives.h
       
       fft.h
       
       graph_utils.h
       
       io.h
       
       linalg.h
       
       mlx.h
       
       ops.h
       
       primitives.h
       
       random.h
       
       scheduler.h
       
       stream.h
       
       transforms.h
       
       transforms_impl.h
       
       utils.h
       
      -
      - - - - diff --git a/docs/build/html/dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html b/docs/build/html/dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html deleted file mode 100644 index 5b3dfd77..00000000 --- a/docs/build/html/dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      kernels Directory Reference
      -
      -
      - - - - - - - - -

      -Files

       steel_gemm_fused.h
       
       steel_gemm_masked.h
       
       steel_gemm_splitk.h
       
      -
      - - - - diff --git a/docs/build/html/dir_ad00dcd1517bfdbe01f68ec9b4eff877.html b/docs/build/html/dir_ad00dcd1517bfdbe01f68ec9b4eff877.html deleted file mode 100644 index ddbfad24..00000000 --- a/docs/build/html/dir_ad00dcd1517bfdbe01f68ec9b4eff877.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: mlx/3rdparty Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      3rdparty Directory Reference
      -
      -
      - - - - -

      -Files

       pocketfft.h
       
      -
      - - - - diff --git a/docs/build/html/dir_ba4426224ef60f409462a2a12fa18f06.html b/docs/build/html/dir_ba4426224ef60f409462a2a12fa18f06.html deleted file mode 100644 index 686f3288..00000000 --- a/docs/build/html/dir_ba4426224ef60f409462a2a12fa18f06.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      loaders Directory Reference
      -
      -
      - - - - - - - - -

      -Files

       loader_channel_l.h
       
       loader_channel_n.h
       
       loader_general.h
       
      -
      - - - - diff --git a/docs/build/html/dir_d0c977ea65824390717cdb7efc36c157.html b/docs/build/html/dir_d0c977ea65824390717cdb7efc36c157.html deleted file mode 100644 index 6bd52696..00000000 --- a/docs/build/html/dir_d0c977ea65824390717cdb7efc36c157.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      metal Directory Reference
      -
      -
      - - - - - - -

      -Directories

       jit
       
       kernels
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Files

       allocator.h
       
       binary.h
       
       copy.h
       
       device.h
       
       kernels.h
       
       matmul.h
       
       metal.h
       
       metal_impl.h
       
       reduce.h
       
       slicing.h
       
       ternary.h
       
       unary.h
       
       utils.h
       
      -
      - - - - diff --git a/docs/build/html/dir_df9494e83ef22ae6150a0e080d9709ed.html b/docs/build/html/dir_df9494e83ef22ae6150a0e080d9709ed.html deleted file mode 100644 index 65f2b6bd..00000000 --- a/docs/build/html/dir_df9494e83ef22ae6150a0e080d9709ed.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      conv Directory Reference
      -
      -
      - - - - - - -

      -Directories

       kernels
       
       loaders
       
      - - - - - - - -

      -Files

       conv.h
       
       loader.h
       
       params.h
       
      -
      - - - - diff --git a/docs/build/html/dir_f149b24a1b5be11cd70151abe517e3f8.html b/docs/build/html/dir_f149b24a1b5be11cd70151abe517e3f8.html deleted file mode 100644 index 48cbe670..00000000 --- a/docs/build/html/dir_f149b24a1b5be11cd70151abe517e3f8.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -MLX: mlx/backend/common Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      common Directory Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Files

       arange.h
       
       binary.h
       
       binary_two.h
       
       compiled.h
       
       compiled_preamble.h
       
       copy.h
       
       hadamard.h
       
       lapack_helper.h
       
       load.h
       
       ops.h
       
       reduce.h
       
       slicing.h
       
       ternary.h
       
       threefry.h
       
       unary.h
       
       utils.h
       
      -
      - - - - diff --git a/docs/build/html/dir_f60cd69d27fd3faa641c79056fff0e2d.html b/docs/build/html/dir_f60cd69d27fd3faa641c79056fff0e2d.html deleted file mode 100644 index 734d5793..00000000 --- a/docs/build/html/dir_f60cd69d27fd3faa641c79056fff0e2d.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction Directory Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduction Directory Reference
      -
      -
      - - - - - - - - - - - - -

      -Files

       ops.h
       
       reduce_all.h
       
       reduce_col.h
       
       reduce_init.h
       
       reduce_row.h
       
      -
      - - - - diff --git a/docs/build/html/distributed_2ops_8h.html b/docs/build/html/distributed_2ops_8h.html deleted file mode 100644 index 0566e83f..00000000 --- a/docs/build/html/distributed_2ops_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/distributed/ops.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      ops.h File Reference
      -
      -
      -
      #include <optional>
      -#include "mlx/distributed/distributed.h"
      -#include "mlx/utils.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::distributed
       
      - - - - - - - - - - - -

      -Functions

      array mlx::core::distributed::all_sum (const array &x, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::distributed::all_gather (const array &x, std::optional< Group > group=std::nullopt, StreamOrDevice S={})
       
      array mlx::core::distributed::send (const array &x, int dst, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::distributed::recv (std::vector< int > shape, Dtype dtype, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::distributed::recv_like (const array &x, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      -
      - - - - diff --git a/docs/build/html/distributed_2ops_8h_source.html b/docs/build/html/distributed_2ops_8h_source.html deleted file mode 100644 index c704938e..00000000 --- a/docs/build/html/distributed_2ops_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -MLX: mlx/distributed/ops.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      ops.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <optional>
      -
      6
      - -
      8#include "mlx/utils.h"
      -
      9
      -
      10namespace mlx::core::distributed {
      -
      11
      - -
      13 const array& x,
      -
      14 std::optional<Group> group = std::nullopt,
      -
      15 StreamOrDevice s = {});
      -
      16
      - -
      18 const array& x,
      -
      19 std::optional<Group> group = std::nullopt,
      -
      20 StreamOrDevice S = {});
      -
      21
      - -
      23 const array& x,
      -
      24 int dst,
      -
      25 std::optional<Group> group = std::nullopt,
      -
      26 StreamOrDevice s = {});
      -
      27
      - -
      29 std::vector<int> shape,
      -
      30 Dtype dtype,
      -
      31 int src,
      -
      32 std::optional<Group> group = std::nullopt,
      -
      33 StreamOrDevice s = {});
      -
      34
      - -
      36 const array& x,
      -
      37 int src,
      -
      38 std::optional<Group> group = std::nullopt,
      -
      39 StreamOrDevice s = {});
      -
      40
      -
      41} // namespace mlx::core::distributed
      -
      Definition array.h:20
      - -
      Definition distributed.h:9
      -
      array recv(std::vector< int > shape, Dtype dtype, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
      -
      array recv_like(const array &x, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
      -
      array send(const array &x, int dst, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
      -
      array all_sum(const array &x, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
      -
      array all_gather(const array &x, std::optional< Group > group=std::nullopt, StreamOrDevice S={})
      -
      std::variant< std::monostate, Stream, Device > StreamOrDevice
      Definition utils.h:14
      -
      Definition dtype.h:13
      - -
      - - - - diff --git a/docs/build/html/distributed_2primitives_8h.html b/docs/build/html/distributed_2primitives_8h.html deleted file mode 100644 index c46b9a6b..00000000 --- a/docs/build/html/distributed_2primitives_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/distributed/primitives.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      primitives.h File Reference
      -
      - - - - - diff --git a/docs/build/html/distributed_2primitives_8h_source.html b/docs/build/html/distributed_2primitives_8h_source.html deleted file mode 100644 index 742d16d4..00000000 --- a/docs/build/html/distributed_2primitives_8h_source.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - -MLX: mlx/distributed/primitives.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      primitives.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - - -
      7#include "mlx/primitives.h"
      -
      8
      - -
      10
      -
      -
      11class DistPrimitive : public Primitive {
      -
      12 public:
      - -
      15
      -
      -
      16 const Group& group() const {
      -
      17 return group_;
      -
      18 }
      -
      -
      19
      -
      20 private:
      -
      21 Group group_;
      -
      22};
      -
      -
      23
      -
      -
      24class AllReduce : public DistPrimitive {
      -
      25 public:
      -
      26 enum ReduceType { And, Or, Sum, Prod, Min, Max };
      -
      27
      -
      - -
      29 : DistPrimitive(stream, group), reduce_type_(reduce_type) {}
      -
      -
      30
      -
      31 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      32 override;
      -
      33 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      34 override;
      -
      35 std::pair<std::vector<array>, std::vector<int>> vmap(
      -
      36 const std::vector<array>& inputs,
      -
      37 const std::vector<int>& axes) override;
      -
      38 std::vector<array> jvp(
      -
      39 const std::vector<array>& primals,
      -
      40 const std::vector<array>& tangents,
      -
      41 const std::vector<int>& argnums) override;
      -
      42 std::vector<array> vjp(
      -
      43 const std::vector<array>& primals,
      -
      44 const std::vector<array>& cotangents,
      -
      45 const std::vector<int>& argnums,
      -
      46 const std::vector<array>& outputs) override;
      -
      47
      -
      -
      48 void print(std::ostream& os) override {
      -
      49 switch (reduce_type_) {
      -
      50 case And:
      -
      51 os << "And";
      -
      52 case Or:
      -
      53 os << "And";
      -
      54 break;
      -
      55 case Sum:
      -
      56 os << "Sum";
      -
      57 break;
      -
      58 case Prod:
      -
      59 os << "Prod";
      -
      60 break;
      -
      61 case Min:
      -
      62 os << "Min";
      -
      63 break;
      -
      64 case Max:
      -
      65 os << "Max";
      -
      66 break;
      -
      67 }
      -
      68 os << " AllReduce";
      -
      69 }
      -
      -
      70
      -
      71 private:
      -
      72 ReduceType reduce_type_;
      -
      73};
      -
      -
      74
      -
      -
      75class AllGather : public DistPrimitive {
      -
      76 public:
      - -
      78
      -
      79 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      80 override;
      -
      81 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      82 override;
      -
      83
      -
      84 std::pair<std::vector<array>, std::vector<int>> vmap(
      -
      85 const std::vector<array>& inputs,
      -
      86 const std::vector<int>& axes) override;
      -
      87 std::vector<array> jvp(
      -
      88 const std::vector<array>& primals,
      -
      89 const std::vector<array>& tangents,
      -
      90 const std::vector<int>& argnums) override;
      -
      91 std::vector<array> vjp(
      -
      92 const std::vector<array>& primals,
      -
      93 const std::vector<array>& cotangents,
      -
      94 const std::vector<int>& argnums,
      -
      95 const std::vector<array>& outputs) override;
      -
      96
      - -
      98};
      -
      -
      99
      -
      -
      100class Send : public DistPrimitive {
      -
      101 public:
      -
      - -
      103 : DistPrimitive(stream, group), dst_(dst) {}
      -
      -
      104
      -
      105 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      106 override;
      -
      107 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      108 override;
      -
      109 std::pair<std::vector<array>, std::vector<int>> vmap(
      -
      110 const std::vector<array>& inputs,
      -
      111 const std::vector<int>& axes) override;
      -
      112
      - -
      114
      -
      115 private:
      -
      116 int dst_;
      -
      117};
      -
      -
      118
      -
      -
      119class Recv : public DistPrimitive {
      -
      120 public:
      -
      - -
      122 : DistPrimitive(stream, group), src_(src) {}
      -
      -
      123
      -
      124 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      125 override;
      -
      126 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      127 override;
      -
      128
      - -
      130
      -
      131 private:
      -
      132 int src_;
      -
      133};
      -
      -
      134
      -
      135} // namespace mlx::core::distributed
      -
      Definition primitives.h:48
      -
      const Stream & stream()
      The stream the primitive will run on.
      Definition primitives.h:58
      -
      Definition primitives.h:75
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      - -
      std::vector< array > jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
      The Jacobian-vector product.
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      std::pair< std::vector< array >, std::vector< int > > vmap(const std::vector< array > &inputs, const std::vector< int > &axes) override
      The primitive must know how to vectorize itself across the given axes.
      -
      AllGather(Stream stream, Group group)
      Definition primitives.h:77
      -
      Definition primitives.h:24
      -
      AllReduce(Stream stream, Group group, ReduceType reduce_type)
      Definition primitives.h:28
      -
      std::pair< std::vector< array >, std::vector< int > > vmap(const std::vector< array > &inputs, const std::vector< int > &axes) override
      The primitive must know how to vectorize itself across the given axes.
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      void print(std::ostream &os) override
      Print the primitive.
      Definition primitives.h:48
      -
      ReduceType
      Definition primitives.h:26
      -
      @ Sum
      Definition primitives.h:26
      -
      @ Min
      Definition primitives.h:26
      -
      @ Or
      Definition primitives.h:26
      -
      @ And
      Definition primitives.h:26
      -
      @ Max
      Definition primitives.h:26
      -
      @ Prod
      Definition primitives.h:26
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      std::vector< array > jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums) override
      The Jacobian-vector product.
      -
      Definition primitives.h:11
      -
      const Group & group() const
      Definition primitives.h:16
      -
      DistPrimitive(Stream stream, Group group)
      Definition primitives.h:13
      -
      Definition primitives.h:119
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      Recv(Stream stream, Group group, int src)
      Definition primitives.h:121
      - -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      Definition primitives.h:100
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      Send(Stream stream, Group group, int dst)
      Definition primitives.h:102
      - -
      std::pair< std::vector< array >, std::vector< int > > vmap(const std::vector< array > &inputs, const std::vector< int > &axes) override
      The primitive must know how to vectorize itself across the given axes.
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      - - -
      Definition distributed.h:9
      - -
      Definition ops.h:185
      -
      Definition stream.h:9
      -
      A distributed::Group represents a group of independent mlx processes that can communicate.
      Definition distributed.h:19
      -
      - - - - diff --git a/docs/build/html/distributed_8h.html b/docs/build/html/distributed_8h.html deleted file mode 100644 index 69b2a305..00000000 --- a/docs/build/html/distributed_8h.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -MLX: mlx/distributed/distributed.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      distributed.h File Reference
      -
      -
      -
      #include <memory>
      -#include "mlx/array.h"
      -
      -

      Go to the source code of this file.

      - - - - - -

      -Classes

      struct  mlx::core::distributed::Group
       A distributed::Group represents a group of independent mlx processes that can communicate. More...
       
      - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::distributed
       
      - - - - - - -

      -Functions

      bool mlx::core::distributed::is_available ()
       
      Group mlx::core::distributed::init (bool strict=false)
       Initialize the distributed backend and return the group containing all discoverable processes.
       
      -
      - - - - diff --git a/docs/build/html/distributed_8h_source.html b/docs/build/html/distributed_8h_source.html deleted file mode 100644 index 558e8866..00000000 --- a/docs/build/html/distributed_8h_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -MLX: mlx/distributed/distributed.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      distributed.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <memory>
      -
      6
      -
      7#include "mlx/array.h"
      -
      8
      -
      - -
      10
      -
      11/* Check if a communication backend is available */
      - -
      13
      -
      -
      19struct Group {
      -
      20 Group(std::shared_ptr<void> group) : group_(group) {}
      -
      21
      -
      22 int rank();
      -
      23 int size();
      -
      24
      -
      33 Group split(int color, int key = -1);
      -
      34
      -
      -
      35 const std::shared_ptr<void>& raw_group() {
      -
      36 return group_;
      -
      37 }
      -
      -
      38
      -
      39 private:
      -
      40 std::shared_ptr<void> group_{nullptr};
      -
      41};
      -
      -
      42
      -
      51Group init(bool strict = false);
      -
      52
      -
      53} // namespace mlx::core::distributed
      -
      - -
      Definition distributed.h:9
      -
      Group init(bool strict=false)
      Initialize the distributed backend and return the group containing all discoverable processes.
      - -
      A distributed::Group represents a group of independent mlx processes that can communicate.
      Definition distributed.h:19
      -
      const std::shared_ptr< void > & raw_group()
      Definition distributed.h:35
      -
      Group(std::shared_ptr< void > group)
      Definition distributed.h:20
      -
      Group split(int color, int key=-1)
      Split the group according to the provided color.
      - - -
      - - - - diff --git a/docs/build/html/distributed__impl_8h.html b/docs/build/html/distributed__impl_8h.html deleted file mode 100644 index 1a3dac44..00000000 --- a/docs/build/html/distributed__impl_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -MLX: mlx/distributed/distributed_impl.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      distributed_impl.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::distributed
       
      namespace  mlx::core::distributed::detail
       
      - - - - - - - - - - - - - -

      -Functions

      Stream mlx::core::distributed::detail::communication_stream ()
       
      void mlx::core::distributed::detail::all_sum (Group group, const array &input, array &output)
       
      void mlx::core::distributed::detail::all_gather (Group group, const array &input, array &output)
       
      void mlx::core::distributed::detail::send (Group group, const array &input, int dst)
       Send an array to the dst rank.
       
      void mlx::core::distributed::detail::recv (Group group, array &out, int src)
       Recv an array from the src rank.
       
      -
      - - - - diff --git a/docs/build/html/distributed__impl_8h_source.html b/docs/build/html/distributed__impl_8h_source.html deleted file mode 100644 index 26e20be7..00000000 --- a/docs/build/html/distributed__impl_8h_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: mlx/distributed/distributed_impl.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      distributed_impl.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - -
      6
      -
      - -
      8
      -
      9/* Return the communication stream. */
      - -
      11
      -
      12/* Perform an all reduce sum operation */
      -
      13void all_sum(Group group, const array& input, array& output);
      -
      14
      -
      15/* Perform an all gather operation */
      -
      16void all_gather(Group group, const array& input, array& output);
      -
      17
      -
      19void send(Group group, const array& input, int dst);
      -
      20
      -
      22void recv(Group group, array& out, int src);
      -
      23
      -
      24} // namespace mlx::core::distributed::detail
      -
      -
      Definition array.h:20
      - -
      Definition distributed_impl.h:7
      -
      void recv(Group group, array &out, int src)
      Recv an array from the src rank.
      -
      void all_sum(Group group, const array &input, array &output)
      -
      void send(Group group, const array &input, int dst)
      Send an array to the dst rank.
      - -
      void all_gather(Group group, const array &input, array &output)
      -
      Definition stream.h:9
      -
      A distributed::Group represents a group of independent mlx processes that can communicate.
      Definition distributed.h:19
      -
      - - - - diff --git a/docs/build/html/doc.svg b/docs/build/html/doc.svg deleted file mode 100644 index 0b928a53..00000000 --- a/docs/build/html/doc.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/build/html/docd.svg b/docs/build/html/docd.svg deleted file mode 100644 index ac18b275..00000000 --- a/docs/build/html/docd.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/docs/build/html/doxygen.css b/docs/build/html/doxygen.css deleted file mode 100644 index 7b7d851b..00000000 --- a/docs/build/html/doxygen.css +++ /dev/null @@ -1,2225 +0,0 @@ -/* The standard CSS for doxygen 1.10.0*/ - -html { -/* page base colors */ ---page-background-color: white; ---page-foreground-color: black; ---page-link-color: #3D578C; ---page-visited-link-color: #4665A2; - -/* index */ ---index-odd-item-bg-color: #F8F9FC; ---index-even-item-bg-color: white; ---index-header-color: black; ---index-separator-color: #A0A0A0; - -/* header */ ---header-background-color: #F9FAFC; ---header-separator-color: #C4CFE5; ---header-gradient-image: url('nav_h.png'); ---group-header-separator-color: #879ECB; ---group-header-color: #354C7B; ---inherit-header-color: gray; - ---footer-foreground-color: #2A3D61; ---footer-logo-width: 104px; ---citation-label-color: #334975; ---glow-color: cyan; - ---title-background-color: white; ---title-separator-color: #5373B4; ---directory-separator-color: #9CAFD4; ---separator-color: #4A6AAA; - ---blockquote-background-color: #F7F8FB; ---blockquote-border-color: #9CAFD4; - ---scrollbar-thumb-color: #9CAFD4; ---scrollbar-background-color: #F9FAFC; - ---icon-background-color: #728DC1; ---icon-foreground-color: white; ---icon-doc-image: url('doc.svg'); ---icon-folder-open-image: url('folderopen.svg'); ---icon-folder-closed-image: url('folderclosed.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #F9FAFC; ---memdecl-separator-color: #DEE4F0; ---memdecl-foreground-color: #555; ---memdecl-template-color: #4665A2; - -/* detailed member list */ ---memdef-border-color: #A8B8D9; ---memdef-title-background-color: #E2E8F2; ---memdef-title-gradient-image: url('nav_f.png'); ---memdef-proto-background-color: #DFE5F1; ---memdef-proto-text-color: #253555; ---memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---memdef-doc-background-color: white; ---memdef-param-name-color: #602020; ---memdef-template-color: #4665A2; - -/* tables */ ---table-cell-border-color: #2D4068; ---table-header-background-color: #374F7F; ---table-header-foreground-color: #FFFFFF; - -/* labels */ ---label-background-color: #728DC1; ---label-left-top-border-color: #5373B4; ---label-right-bottom-border-color: #C4CFE5; ---label-foreground-color: white; - -/** navigation bar/tree/menu */ ---nav-background-color: #F9FAFC; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_b.png'); ---nav-gradient-hover-image: url('tab_h.png'); ---nav-gradient-active-image: url('tab_a.png'); ---nav-gradient-active-image-parent: url("../tab_a.png"); ---nav-separator-image: url('tab_s.png'); ---nav-breadcrumb-image: url('bc_s.png'); ---nav-breadcrumb-border-color: #C2CDE4; ---nav-splitbar-image: url('splitbar.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #283A5D; ---nav-text-hover-color: white; ---nav-text-active-color: white; ---nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #364D7C; ---nav-menu-background-color: white; ---nav-menu-foreground-color: #555555; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.5); ---nav-arrow-color: #9CAFD4; ---nav-arrow-selected-color: #9CAFD4; - -/* table of contents */ ---toc-background-color: #F4F6FA; ---toc-border-color: #D8DFEE; ---toc-header-color: #4665A2; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: white; ---search-foreground-color: #909090; ---search-magnification-image: url('mag.svg'); ---search-magnification-select-image: url('mag_sel.svg'); ---search-active-color: black; ---search-filter-background-color: #F9FAFC; ---search-filter-foreground-color: black; ---search-filter-border-color: #90A5CE; ---search-filter-highlight-text-color: white; ---search-filter-highlight-bg-color: #3D578C; ---search-results-foreground-color: #425E97; ---search-results-background-color: #EEF1F7; ---search-results-border-color: black; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #555; - -/** code fragments */ ---code-keyword-color: #008000; ---code-type-keyword-color: #604020; ---code-flow-keyword-color: #E08000; ---code-comment-color: #800000; ---code-preprocessor-color: #806020; ---code-string-literal-color: #002080; ---code-char-literal-color: #008080; ---code-xml-cdata-color: black; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #000000; ---code-vhdl-keyword-color: #700070; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #4665A2; ---code-external-link-color: #4665A2; ---fragment-foreground-color: black; ---fragment-background-color: #FBFCFD; ---fragment-border-color: #C4CFE5; ---fragment-lineno-border-color: #00FF00; ---fragment-lineno-background-color: #E8E8E8; ---fragment-lineno-foreground-color: black; ---fragment-lineno-link-fg-color: #4665A2; ---fragment-lineno-link-bg-color: #D8D8D8; ---fragment-lineno-link-hover-fg-color: #4665A2; ---fragment-lineno-link-hover-bg-color: #C8C8C8; ---fragment-copy-ok-color: #2EC82E; ---tooltip-foreground-color: black; ---tooltip-background-color: white; ---tooltip-border-color: gray; ---tooltip-doc-color: grey; ---tooltip-declaration-color: #006318; ---tooltip-link-color: #4665A2; ---tooltip-shadow: 1px 1px 7px gray; ---fold-line-color: #808080; ---fold-minus-image: url('minus.svg'); ---fold-plus-image: url('plus.svg'); ---fold-minus-image-relpath: url('../../minus.svg'); ---fold-plus-image-relpath: url('../../plus.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -/** special sections */ ---warning-color-bg: #f8d1cc; ---warning-color-hl: #b61825; ---warning-color-text: #75070f; ---note-color-bg: #faf3d8; ---note-color-hl: #f3a600; ---note-color-text: #5f4204; ---todo-color-bg: #e4f3ff; ---todo-color-hl: #1879C4; ---todo-color-text: #274a5c; ---test-color-bg: #e8e8ff; ---test-color-hl: #3939C4; ---test-color-text: #1a1a5c; ---deprecated-color-bg: #ecf0f3; ---deprecated-color-hl: #5b6269; ---deprecated-color-text: #43454a; ---bug-color-bg: #e4dafd; ---bug-color-hl: #5b2bdd; ---bug-color-text: #2a0d72; ---invariant-color-bg: #d8f1e3; ---invariant-color-hl: #44b86f; ---invariant-color-text: #265532; -} - -@media (prefers-color-scheme: dark) { - html:not(.dark-mode) { - color-scheme: dark; - -/* page base colors */ ---page-background-color: black; ---page-foreground-color: #C9D1D9; ---page-link-color: #90A5CE; ---page-visited-link-color: #A3B4D7; - -/* index */ ---index-odd-item-bg-color: #0B101A; ---index-even-item-bg-color: black; ---index-header-color: #C4CFE5; ---index-separator-color: #334975; - -/* header */ ---header-background-color: #070B11; ---header-separator-color: #141C2E; ---header-gradient-image: url('nav_hd.png'); ---group-header-separator-color: #283A5D; ---group-header-color: #90A5CE; ---inherit-header-color: #A0A0A0; - ---footer-foreground-color: #5B7AB7; ---footer-logo-width: 60px; ---citation-label-color: #90A5CE; ---glow-color: cyan; - ---title-background-color: #090D16; ---title-separator-color: #354C79; ---directory-separator-color: #283A5D; ---separator-color: #283A5D; - ---blockquote-background-color: #101826; ---blockquote-border-color: #283A5D; - ---scrollbar-thumb-color: #283A5D; ---scrollbar-background-color: #070B11; - ---icon-background-color: #334975; ---icon-foreground-color: #C4CFE5; ---icon-doc-image: url('docd.svg'); ---icon-folder-open-image: url('folderopend.svg'); ---icon-folder-closed-image: url('folderclosedd.svg'); - -/* brief member declaration list */ ---memdecl-background-color: #0B101A; ---memdecl-separator-color: #2C3F65; ---memdecl-foreground-color: #BBB; ---memdecl-template-color: #7C95C6; - -/* detailed member list */ ---memdef-border-color: #233250; ---memdef-title-background-color: #1B2840; ---memdef-title-gradient-image: url('nav_fd.png'); ---memdef-proto-background-color: #19243A; ---memdef-proto-text-color: #9DB0D4; ---memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); ---memdef-doc-background-color: black; ---memdef-param-name-color: #D28757; ---memdef-template-color: #7C95C6; - -/* tables */ ---table-cell-border-color: #283A5D; ---table-header-background-color: #283A5D; ---table-header-foreground-color: #C4CFE5; - -/* labels */ ---label-background-color: #354C7B; ---label-left-top-border-color: #4665A2; ---label-right-bottom-border-color: #283A5D; ---label-foreground-color: #CCCCCC; - -/** navigation bar/tree/menu */ ---nav-background-color: #101826; ---nav-foreground-color: #364D7C; ---nav-gradient-image: url('tab_bd.png'); ---nav-gradient-hover-image: url('tab_hd.png'); ---nav-gradient-active-image: url('tab_ad.png'); ---nav-gradient-active-image-parent: url("../tab_ad.png"); ---nav-separator-image: url('tab_sd.png'); ---nav-breadcrumb-image: url('bc_sd.png'); ---nav-breadcrumb-border-color: #2A3D61; ---nav-splitbar-image: url('splitbard.png'); ---nav-font-size-level1: 13px; ---nav-font-size-level2: 10px; ---nav-font-size-level3: 9px; ---nav-text-normal-color: #B6C4DF; ---nav-text-hover-color: #DCE2EF; ---nav-text-active-color: #DCE2EF; ---nav-text-normal-shadow: 0px 1px 1px black; ---nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); ---nav-menu-button-color: #B6C4DF; ---nav-menu-background-color: #05070C; ---nav-menu-foreground-color: #BBBBBB; ---nav-menu-toggle-color: rgba(255, 255, 255, 0.2); ---nav-arrow-color: #334975; ---nav-arrow-selected-color: #90A5CE; - -/* table of contents */ ---toc-background-color: #151E30; ---toc-border-color: #202E4A; ---toc-header-color: #A3B4D7; ---toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); - -/** search field */ ---search-background-color: black; ---search-foreground-color: #C5C5C5; ---search-magnification-image: url('mag_d.svg'); ---search-magnification-select-image: url('mag_seld.svg'); ---search-active-color: #C5C5C5; ---search-filter-background-color: #101826; ---search-filter-foreground-color: #90A5CE; ---search-filter-border-color: #7C95C6; ---search-filter-highlight-text-color: #BCC9E2; ---search-filter-highlight-bg-color: #283A5D; ---search-results-background-color: #101826; ---search-results-foreground-color: #90A5CE; ---search-results-border-color: #7C95C6; ---search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; - -/** code fragments */ ---code-keyword-color: #CC99CD; ---code-type-keyword-color: #AB99CD; ---code-flow-keyword-color: #E08000; ---code-comment-color: #717790; ---code-preprocessor-color: #65CABE; ---code-string-literal-color: #7EC699; ---code-char-literal-color: #00E0F0; ---code-xml-cdata-color: #C9D1D9; ---code-vhdl-digit-color: #FF00FF; ---code-vhdl-char-color: #C0C0C0; ---code-vhdl-keyword-color: #CF53C9; ---code-vhdl-logic-color: #FF0000; ---code-link-color: #79C0FF; ---code-external-link-color: #79C0FF; ---fragment-foreground-color: #C9D1D9; ---fragment-background-color: #090D16; ---fragment-border-color: #30363D; ---fragment-lineno-border-color: #30363D; ---fragment-lineno-background-color: black; ---fragment-lineno-foreground-color: #6E7681; ---fragment-lineno-link-fg-color: #6E7681; ---fragment-lineno-link-bg-color: #303030; ---fragment-lineno-link-hover-fg-color: #8E96A1; ---fragment-lineno-link-hover-bg-color: #505050; ---fragment-copy-ok-color: #0EA80E; ---tooltip-foreground-color: #C9D1D9; ---tooltip-background-color: #202020; ---tooltip-border-color: #C9D1D9; ---tooltip-doc-color: #D9E1E9; ---tooltip-declaration-color: #20C348; ---tooltip-link-color: #79C0FF; ---tooltip-shadow: none; ---fold-line-color: #808080; ---fold-minus-image: url('minusd.svg'); ---fold-plus-image: url('plusd.svg'); ---fold-minus-image-relpath: url('../../minusd.svg'); ---fold-plus-image-relpath: url('../../plusd.svg'); - -/** font-family */ ---font-family-normal: Roboto,sans-serif; ---font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; ---font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; ---font-family-title: Tahoma,Arial,sans-serif; ---font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; ---font-family-search: Arial,Verdana,sans-serif; ---font-family-icon: Arial,Helvetica; ---font-family-tooltip: Roboto,sans-serif; - -/** special sections */ ---warning-color-bg: #2e1917; ---warning-color-hl: #ad2617; ---warning-color-text: #f5b1aa; ---note-color-bg: #3b2e04; ---note-color-hl: #f1b602; ---note-color-text: #ceb670; ---todo-color-bg: #163750; ---todo-color-hl: #1982D2; ---todo-color-text: #dcf0fa; ---test-color-bg: #121258; ---test-color-hl: #4242cf; ---test-color-text: #c0c0da; ---deprecated-color-bg: #2e323b; ---deprecated-color-hl: #738396; ---deprecated-color-text: #abb0bd; ---bug-color-bg: #2a2536; ---bug-color-hl: #7661b3; ---bug-color-text: #ae9ed6; ---invariant-color-bg: #303a35; ---invariant-color-hl: #76ce96; ---invariant-color-text: #cceed5; -}} -body { - background-color: var(--page-background-color); - color: var(--page-foreground-color); -} - -body, table, div, p, dl { - font-weight: 400; - font-size: 14px; - font-family: var(--font-family-normal); - line-height: 22px; -} - -/* @group Heading Levels */ - -.title { - font-family: var(--font-family-normal); - line-height: 28px; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h1.groupheader { - font-size: 150%; -} - -h2.groupheader { - border-bottom: 1px solid var(--group-header-separator-color); - color: var(--group-header-color); - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px var(--glow-color); -} - -dt { - font-weight: bold; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.navtab { - padding-right: 15px; - text-align: right; - line-height: 110%; -} - -div.navtab table { - border-spacing: 0; -} - -td.navtab { - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL { - background-image: var(--nav-gradient-active-image); - background-repeat:repeat-x; - padding-right: 6px; - padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -a.navtab { - font-weight: bold; -} - -div.qindex{ - text-align: center; - width: 100%; - line-height: 140%; - font-size: 130%; - color: var(--index-separator-color); -} - -#main-menu a:focus { - outline: auto; - z-index: 10; - position: relative; -} - -dt.alphachar{ - font-size: 180%; - font-weight: bold; -} - -.alphachar a{ - color: var(--index-header-color); -} - -.alphachar a:hover, .alphachar a:visited{ - text-decoration: none; -} - -.classindex dl { - padding: 25px; - column-count:1 -} - -.classindex dd { - display:inline-block; - margin-left: 50px; - width: 90%; - line-height: 1.15em; -} - -.classindex dl.even { - background-color: var(--index-even-item-bg-color); -} - -.classindex dl.odd { - background-color: var(--index-odd-item-bg-color); -} - -@media(min-width: 1120px) { - .classindex dl { - column-count:2 - } -} - -@media(min-width: 1320px) { - .classindex dl { - column-count:3 - } -} - - -/* @group Link Styling */ - -a { - color: var(--page-link-color); - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: var(--page-visited-link-color); -} - -a:hover { - text-decoration: none; - background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); -} - -a:hover > span.arrow { - text-decoration: none; - background : var(--nav-background-color); -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: var(--code-link-color); -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: var(--code-external-link-color); -} - -a.code.hl_class { /* style for links to class names in code snippets */ } -a.code.hl_struct { /* style for links to struct names in code snippets */ } -a.code.hl_union { /* style for links to union names in code snippets */ } -a.code.hl_interface { /* style for links to interface names in code snippets */ } -a.code.hl_protocol { /* style for links to protocol names in code snippets */ } -a.code.hl_category { /* style for links to category names in code snippets */ } -a.code.hl_exception { /* style for links to exception names in code snippets */ } -a.code.hl_service { /* style for links to service names in code snippets */ } -a.code.hl_singleton { /* style for links to singleton names in code snippets */ } -a.code.hl_concept { /* style for links to concept names in code snippets */ } -a.code.hl_namespace { /* style for links to namespace names in code snippets */ } -a.code.hl_package { /* style for links to package names in code snippets */ } -a.code.hl_define { /* style for links to macro names in code snippets */ } -a.code.hl_function { /* style for links to function names in code snippets */ } -a.code.hl_variable { /* style for links to variable names in code snippets */ } -a.code.hl_typedef { /* style for links to typedef names in code snippets */ } -a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } -a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } -a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } -a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } -a.code.hl_friend { /* style for links to friend names in code snippets */ } -a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } -a.code.hl_property { /* style for links to property names in code snippets */ } -a.code.hl_event { /* style for links to event names in code snippets */ } -a.code.hl_sequence { /* style for links to sequence names in code snippets */ } -a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: visible; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; - list-style-type: none; -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; - overflow-y: hidden; - position: relative; - min-height: 12px; - margin: 10px 0px; - padding: 10px 10px; - border: 1px solid var(--fragment-border-color); - border-radius: 4px; - background-color: var(--fragment-background-color); - color: var(--fragment-foreground-color); -} - -pre.fragment { - word-wrap: break-word; - font-size: 10pt; - line-height: 125%; - font-family: var(--font-family-monospace); -} - -.clipboard { - width: 24px; - height: 24px; - right: 5px; - top: 5px; - opacity: 0; - position: absolute; - display: inline; - overflow: auto; - fill: var(--fragment-foreground-color); - justify-content: center; - align-items: center; - cursor: pointer; -} - -.clipboard.success { - border: 1px solid var(--fragment-foreground-color); - border-radius: 4px; -} - -.fragment:hover .clipboard, .clipboard.success { - opacity: .28; -} - -.clipboard:hover, .clipboard.success { - opacity: 1 !important; -} - -.clipboard:active:not([class~=success]) svg { - transform: scale(.91); -} - -.clipboard.success svg { - fill: var(--fragment-copy-ok-color); -} - -.clipboard.success { - border-color: var(--fragment-copy-ok-color); -} - -div.line { - font-family: var(--font-family-monospace); - font-size: 13px; - min-height: 13px; - line-height: 1.2; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: var(--glow-color); - box-shadow: 0 0 10px var(--glow-color); -} - -span.fold { - margin-left: 5px; - margin-right: 1px; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; - display: inline-block; - width: 12px; - height: 12px; - background-repeat:no-repeat; - background-position:center; -} - -span.lineno { - padding-right: 4px; - margin-right: 9px; - text-align: right; - border-right: 2px solid var(--fragment-lineno-border-color); - color: var(--fragment-lineno-foreground-color); - background-color: var(--fragment-lineno-background-color); - white-space: pre; -} -span.lineno a, span.lineno a:visited { - color: var(--fragment-lineno-link-fg-color); - background-color: var(--fragment-lineno-link-bg-color); -} - -span.lineno a:hover { - color: var(--fragment-lineno-link-hover-fg-color); - background-color: var(--fragment-lineno-link-hover-bg-color); -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - color: var(--page-foreground-color); - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -p.formulaDsp { - text-align: center; -} - -img.dark-mode-visible { - display: none; -} -img.light-mode-visible { - display: none; -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; - width: var(--footer-logo-width); -} - -.compoundTemplParams { - color: var(--memdecl-template-color); - font-size: 80%; - line-height: 120%; -} - -/* @group Code Colorization */ - -span.keyword { - color: var(--code-keyword-color); -} - -span.keywordtype { - color: var(--code-type-keyword-color); -} - -span.keywordflow { - color: var(--code-flow-keyword-color); -} - -span.comment { - color: var(--code-comment-color); -} - -span.preprocessor { - color: var(--code-preprocessor-color); -} - -span.stringliteral { - color: var(--code-string-literal-color); -} - -span.charliteral { - color: var(--code-char-literal-color); -} - -span.xmlcdata { - color: var(--code-xml-cdata-color); -} - -span.vhdldigit { - color: var(--code-vhdl-digit-color); -} - -span.vhdlchar { - color: var(--code-vhdl-char-color); -} - -span.vhdlkeyword { - color: var(--code-vhdl-keyword-color); -} - -span.vhdllogic { - color: var(--code-vhdl-logic-color); -} - -blockquote { - background-color: var(--blockquote-background-color); - border-left: 2px solid var(--blockquote-border-color); - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid var(--table-cell-border-color); -} - -th.dirtab { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid var(--separator-color); -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: var(--glow-color); - box-shadow: 0 0 15px var(--glow-color); -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: var(--memdecl-background-color); - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: var(--memdecl-foreground-color); -} - -.memSeparator { - border-bottom: 1px solid var(--memdecl-separator-color); - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: var(--memdecl-template-color); - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: var(--memdef-title-gradient-image); - background-repeat: repeat-x; - background-color: var(--memdef-title-background-color); - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: var(--memdef-template-color); - font-weight: normal; - margin-left: 9px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px var(--glow-color); -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 0px 6px 0px; - color: var(--memdef-proto-text-color); - font-weight: bold; - text-shadow: var(--memdef-proto-text-shadow); - background-color: var(--memdef-proto-background-color); - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; -} - -.overload { - font-family: var(--font-family-monospace); - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid var(--memdef-border-color); - border-left: 1px solid var(--memdef-border-color); - border-right: 1px solid var(--memdef-border-color); - padding: 6px 10px 2px 10px; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: var(--memdef-doc-background-color); - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; - padding: 0px; - padding-bottom: 1px; -} - -.paramname { - white-space: nowrap; - padding: 0px; - padding-bottom: 1px; - margin-left: 2px; -} - -.paramname em { - color: var(--memdef-param-name-color); - font-style: normal; - margin-right: 1px; -} - -.paramname .paramdefval { - font-family: var(--font-family-monospace); -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: var(--font-family-monospace); - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: var(--label-background-color); - border-top:1px solid var(--label-left-top-border-color); - border-left:1px solid var(--label-left-top-border-color); - border-right:1px solid var(--label-right-bottom-border-color); - border-bottom:1px solid var(--label-right-bottom-border-color); - text-shadow: none; - color: var(--label-foreground-color); - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid var(--directory-separator-color); - border-bottom: 1px solid var(--directory-separator-color); - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.odd { - padding-left: 6px; - background-color: var(--index-odd-item-bg-color); -} - -.directory tr.even { - padding-left: 6px; - background-color: var(--index-even-item-bg-color); -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: var(--page-link-color); -} - -.arrow { - color: var(--nav-arrow-color); - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: var(--font-family-icon); - line-height: normal; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: var(--icon-background-color); - color: var(--icon-foreground-color); - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-open-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-folder-closed-image); - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:var(--icon-doc-image); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: var(--footer-foreground-color); -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - margin-bottom: 10px; - border: 1px solid var(--memdef-border-color); - border-spacing: 0px; - border-radius: 4px; - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid var(--memdef-border-color); - border-bottom: 1px solid var(--memdef-border-color); - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid var(--memdef-border-color); -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image: var(--memdef-title-gradient-image); - background-repeat:repeat-x; - background-color: var(--memdef-title-background-color); - font-size: 90%; - color: var(--memdef-proto-text-color); - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid var(--memdef-border-color); -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: var(--nav-gradient-image); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image: var(--nav-gradient-image); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:var(--nav-text-normal-color); - border:solid 1px var(--nav-breadcrumb-border-color); - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:var(--nav-breadcrumb-image); - background-repeat:no-repeat; - background-position:right; - color: var(--nav-foreground-color); -} - -.navpath li.navelem a -{ - height:32px; - display:block; - outline: none; - color: var(--nav-text-normal-color); - font-family: var(--font-family-nav); - text-shadow: var(--nav-text-normal-shadow); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color: var(--nav-text-hover-color); - text-shadow: var(--nav-text-hover-shadow); -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color: var(--footer-foreground-color); - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image: var(--header-gradient-image); - background-repeat:repeat-x; - background-color: var(--header-background-color); - margin: 0px; - border-bottom: 1px solid var(--header-separator-color); -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* - -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -*/ - -dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { - font-weight: bold !important; -} - -dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, -dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { - padding: 10px; - margin: 10px 0px; - overflow: hidden; - margin-left: 0; - border-radius: 4px; -} - -dl.section dd { - margin-bottom: 2px; -} - -dl.warning, dl.attention { - background: var(--warning-color-bg); - border-left: 8px solid var(--warning-color-hl); - color: var(--warning-color-text); -} - -dl.warning dt, dl.attention dt { - color: var(--warning-color-hl); -} - -dl.note, dl.remark { - background: var(--note-color-bg); - border-left: 8px solid var(--note-color-hl); - color: var(--note-color-text); -} - -dl.note dt, dl.remark dt { - color: var(--note-color-hl); -} - -dl.todo { - background: var(--todo-color-bg); - border-left: 8px solid var(--todo-color-hl); - color: var(--todo-color-text); -} - -dl.todo dt { - color: var(--todo-color-hl); -} - -dl.test { - background: var(--test-color-bg); - border-left: 8px solid var(--test-color-hl); - color: var(--test-color-text); -} - -dl.test dt { - color: var(--test-color-hl); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.bug { - background: var(--bug-color-bg); - border-left: 8px solid var(--bug-color-hl); - color: var(--bug-color-text); -} - -dl.bug dt a { - color: var(--bug-color-hl) !important; -} - -dl.deprecated { - background: var(--deprecated-color-bg); - border-left: 8px solid var(--deprecated-color-hl); - color: var(--deprecated-color-text); -} - -dl.deprecated dt a { - color: var(--deprecated-color-hl) !important; -} - -dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { - margin-inline-start: 0px; -} - -dl.invariant, dl.pre, dl.post { - background: var(--invariant-color-bg); - border-left: 8px solid var(--invariant-color-hl); - color: var(--invariant-color-text); -} - -dl.invariant dt, dl.pre dt, dl.post dt { - color: var(--invariant-color-hl); -} - - -#projectrow -{ - height: 56px; -} - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; - padding-left: 0.5em; -} - -#projectname -{ - font-size: 200%; - font-family: var(--font-family-title); - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font-size: 90%; - font-family: var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font-size: 50%; - font-family: 50% var(--font-family-title); - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid var(--title-separator-color); - background-color: var(--title-background-color); -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:var(--citation-label-color); - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; -} - -dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: var(--toc-background-color); - border: 1px solid var(--toc-border-color); - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; - font: 10px/1.2 var(--font-family-toc); - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 var(--font-family-toc); - color: var(--toc-header-color); - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 15px; -} - -div.toc li.level4 { - margin-left: 15px; -} - -span.emoji { - /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html - * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; - */ -} - -span.obfuscator { - display: none; -} - -.inherit_header { - font-weight: bold; - color: var(--inherit-header-color); - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - /*white-space: nowrap;*/ - color: var(--tooltip-foreground-color); - background-color: var(--tooltip-background-color); - border: 1px solid var(--tooltip-border-color); - border-radius: 4px 4px 4px 4px; - box-shadow: var(--tooltip-shadow); - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: var(--tooltip-doc-color); - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip a { - color: var(--tooltip-link-color); -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: var(--tooltip-declaration-color); -} - -#powerTip div { - margin: 0px; - padding: 0px; - font-size: 12px; - font-family: var(--font-family-tooltip); - line-height: 16px; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { - border-top-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: var(--tooltip-background-color); - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: var(--tooltip-border-color); - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: var(--tooltip-border-color); - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: var(--tooltip-border-color); - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid var(--table-cell-border-color); - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: var(--table-header-background-color); - color: var(--table-header-foreground-color); - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -tt, code, kbd, samp -{ - display: inline-block; -} -/* @end */ - -u { - text-decoration: underline; -} - -details>summary { - list-style-type: none; -} - -details > summary::-webkit-details-marker { - display: none; -} - -details>summary::before { - content: "\25ba"; - padding-right:4px; - font-size: 80%; -} - -details[open]>summary::before { - content: "\25bc"; - padding-right:4px; - font-size: 80%; -} - -body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); -} - -::-webkit-scrollbar { - background-color: var(--scrollbar-background-color); - height: 12px; - width: 12px; -} -::-webkit-scrollbar-thumb { - border-radius: 6px; - box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); - border: solid 2px transparent; -} -::-webkit-scrollbar-corner { - background-color: var(--scrollbar-background-color); -} - diff --git a/docs/build/html/doxygen.svg b/docs/build/html/doxygen.svg deleted file mode 100644 index 79a76354..00000000 --- a/docs/build/html/doxygen.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/build/html/doxygen_crawl.html b/docs/build/html/doxygen_crawl.html deleted file mode 100644 index 63d7c2c3..00000000 --- a/docs/build/html/doxygen_crawl.html +++ /dev/null @@ -1,1315 +0,0 @@ - - - -Validator / crawler helper - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/build/html/dtype_8h.html b/docs/build/html/dtype_8h.html deleted file mode 100644 index 1c7aab34..00000000 --- a/docs/build/html/dtype_8h.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -MLX: mlx/dtype.h File Reference - - - - - - - - - - - - -
      - -
      dtype.h File Reference
      -
      -
      -
      #include <complex>
      -#include <cstdint>
      -#include "mlx/types/complex.h"
      -#include "mlx/types/half_types.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Classes

      struct  mlx::core::Dtype
       
      struct  mlx::core::TypeToDtype< T >
       
      - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - - - - - - - -

      -Functions

      bool mlx::core::issubdtype (const Dtype &a, const Dtype &b)
       
      bool mlx::core::issubdtype (const Dtype::Category &a, const Dtype &b)
       
      bool mlx::core::issubdtype (const Dtype &a, const Dtype::Category &b)
       
      bool mlx::core::issubdtype (const Dtype::Category &a, const Dtype::Category &b)
       
      Dtype mlx::core::promote_types (const Dtype &t1, const Dtype &t2)
       
      uint8_t mlx::core::size_of (const Dtype &t)
       
      Dtype::Kind mlx::core::kindof (const Dtype &t)
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Variables

      constexpr Dtype mlx::core::bool_ {Dtype::Val::bool_, sizeof(bool)}
       
      constexpr Dtype mlx::core::uint8 {Dtype::Val::uint8, sizeof(uint8_t)}
       
      constexpr Dtype mlx::core::uint16 {Dtype::Val::uint16, sizeof(uint16_t)}
       
      constexpr Dtype mlx::core::uint32 {Dtype::Val::uint32, sizeof(uint32_t)}
       
      constexpr Dtype mlx::core::uint64 {Dtype::Val::uint64, sizeof(uint64_t)}
       
      constexpr Dtype mlx::core::int8 {Dtype::Val::int8, sizeof(int8_t)}
       
      constexpr Dtype mlx::core::int16 {Dtype::Val::int16, sizeof(int16_t)}
       
      constexpr Dtype mlx::core::int32 {Dtype::Val::int32, sizeof(int32_t)}
       
      constexpr Dtype mlx::core::int64 {Dtype::Val::int64, sizeof(int64_t)}
       
      constexpr Dtype mlx::core::float16 {Dtype::Val::float16, sizeof(uint16_t)}
       
      constexpr Dtype mlx::core::float32 {Dtype::Val::float32, sizeof(float)}
       
      constexpr Dtype mlx::core::bfloat16 {Dtype::Val::bfloat16, sizeof(uint16_t)}
       
      constexpr Dtype mlx::core::complex64 {Dtype::Val::complex64, sizeof(complex64_t)}
       
      constexpr Dtype::Category mlx::core::complexfloating
       
      constexpr Dtype::Category mlx::core::floating = Dtype::Category::floating
       
      constexpr Dtype::Category mlx::core::inexact = Dtype::Category::inexact
       
      constexpr Dtype::Category mlx::core::signedinteger = Dtype::Category::signedinteger
       
      constexpr Dtype::Category mlx::core::unsignedinteger
       
      constexpr Dtype::Category mlx::core::integer = Dtype::Category::integer
       
      constexpr Dtype::Category mlx::core::number = Dtype::Category::number
       
      constexpr Dtype::Category mlx::core::generic = Dtype::Category::generic
       
      -
      - - - - diff --git a/docs/build/html/dtype_8h_source.html b/docs/build/html/dtype_8h_source.html deleted file mode 100644 index 6d4deca4..00000000 --- a/docs/build/html/dtype_8h_source.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -MLX: mlx/dtype.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      dtype.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <complex>
      -
      6#include <cstdint>
      -
      7
      -
      8#include "mlx/types/complex.h"
      - -
      10
      -
      11namespace mlx::core {
      -
      12
      -
      -
      13struct Dtype {
      -
      -
      14 enum class Val {
      -
      15 bool_,
      -
      16 uint8,
      -
      17 uint16,
      -
      18 uint32,
      -
      19 uint64,
      -
      20 int8,
      -
      21 int16,
      -
      22 int32,
      -
      23 int64,
      -
      24 float16,
      -
      25 float32,
      - - -
      28 };
      -
      -
      29
      -
      -
      30 enum class Kind {
      -
      31 b, /* bool */
      -
      32 u, /* unsigned int */
      -
      33 i, /* signed int */
      -
      34 f, /* float */
      -
      35 c, /* complex */
      -
      36 V, /* void - used for brain float */
      -
      37 };
      -
      -
      38
      -
      -
      39 enum class Category {
      - - -
      42 inexact,
      - - -
      45 integer,
      -
      46 number,
      -
      47 generic
      -
      48 };
      -
      -
      49
      - -
      51 const uint8_t size;
      -
      52 constexpr explicit Dtype(Val val, uint8_t size) : val(val), size(size) {}
      -
      -
      53 constexpr operator Val() const {
      -
      54 return val;
      -
      55 }
      -
      -
      56};
      -
      -
      57
      -
      58inline constexpr Dtype bool_{Dtype::Val::bool_, sizeof(bool)};
      -
      59
      -
      60inline constexpr Dtype uint8{Dtype::Val::uint8, sizeof(uint8_t)};
      -
      61inline constexpr Dtype uint16{Dtype::Val::uint16, sizeof(uint16_t)};
      -
      62inline constexpr Dtype uint32{Dtype::Val::uint32, sizeof(uint32_t)};
      -
      63inline constexpr Dtype uint64{Dtype::Val::uint64, sizeof(uint64_t)};
      -
      64
      -
      65inline constexpr Dtype int8{Dtype::Val::int8, sizeof(int8_t)};
      -
      66inline constexpr Dtype int16{Dtype::Val::int16, sizeof(int16_t)};
      -
      67inline constexpr Dtype int32{Dtype::Val::int32, sizeof(int32_t)};
      -
      68inline constexpr Dtype int64{Dtype::Val::int64, sizeof(int64_t)};
      -
      69
      -
      70inline constexpr Dtype float16{Dtype::Val::float16, sizeof(uint16_t)};
      -
      71inline constexpr Dtype float32{Dtype::Val::float32, sizeof(float)};
      -
      72inline constexpr Dtype bfloat16{Dtype::Val::bfloat16, sizeof(uint16_t)};
      - -
      74
      - - - - - - - - - -
      84inline constexpr Dtype::Category generic = Dtype::Category::generic;
      -
      85
      -
      86bool issubdtype(const Dtype& a, const Dtype& b);
      -
      87bool issubdtype(const Dtype::Category& a, const Dtype& b);
      -
      88bool issubdtype(const Dtype& a, const Dtype::Category& b);
      - -
      90
      -
      91Dtype promote_types(const Dtype& t1, const Dtype& t2);
      -
      92
      -
      -
      93inline uint8_t size_of(const Dtype& t) {
      -
      94 return t.size;
      -
      95}
      -
      -
      96
      - -
      98
      -
      99template <typename T>
      -
      - -
      101 operator Dtype();
      -
      102};
      -
      -
      103
      -
      104} // namespace mlx::core
      - -
      Definition allocator.h:7
      -
      constexpr Dtype::Category number
      Definition dtype.h:83
      -
      constexpr Dtype::Category integer
      Definition dtype.h:82
      -
      constexpr Dtype bool_
      Definition dtype.h:58
      -
      constexpr Dtype uint64
      Definition dtype.h:63
      -
      constexpr Dtype::Category signedinteger
      Definition dtype.h:79
      -
      constexpr Dtype uint16
      Definition dtype.h:61
      -
      constexpr Dtype::Category unsignedinteger
      Definition dtype.h:80
      -
      Dtype promote_types(const Dtype &t1, const Dtype &t2)
      -
      constexpr Dtype bfloat16
      Definition dtype.h:72
      -
      constexpr Dtype::Category inexact
      Definition dtype.h:78
      -
      constexpr Dtype int32
      Definition dtype.h:67
      -
      constexpr Dtype float32
      Definition dtype.h:71
      -
      constexpr Dtype::Category complexfloating
      Definition dtype.h:75
      -
      constexpr Dtype int16
      Definition dtype.h:66
      -
      constexpr Dtype int8
      Definition dtype.h:65
      -
      constexpr Dtype int64
      Definition dtype.h:68
      -
      constexpr Dtype uint8
      Definition dtype.h:60
      -
      constexpr Dtype float16
      Definition dtype.h:70
      -
      constexpr Dtype uint32
      Definition dtype.h:62
      -
      constexpr Dtype::Category floating
      Definition dtype.h:77
      -
      bool issubdtype(const Dtype &a, const Dtype &b)
      -
      Dtype::Kind kindof(const Dtype &t)
      -
      uint8_t size_of(const Dtype &t)
      Definition dtype.h:93
      -
      constexpr Dtype complex64
      Definition dtype.h:73
      -
      Definition dtype.h:13
      -
      Category
      Definition dtype.h:39
      - - - - - - - - -
      Val val
      Definition dtype.h:50
      -
      Kind
      Definition dtype.h:30
      - - - - - - -
      const uint8_t size
      Definition dtype.h:51
      -
      Val
      Definition dtype.h:14
      - - - - - - - - - - - - - -
      constexpr Dtype(Val val, uint8_t size)
      Definition dtype.h:52
      -
      Definition dtype.h:100
      -
      Definition complex.h:34
      - -
      - - - - diff --git a/docs/build/html/dynsections.js b/docs/build/html/dynsections.js deleted file mode 100644 index 8f493264..00000000 --- a/docs/build/html/dynsections.js +++ /dev/null @@ -1,194 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ - -let dynsection = { - - // helper function - updateStripes : function() { - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); - $('table.directory tr'). - removeClass('odd').filter(':visible:odd').addClass('odd'); - }, - - toggleVisibility : function(linkObj) { - const base = $(linkObj).attr('id'); - const summary = $('#'+base+'-summary'); - const content = $('#'+base+'-content'); - const trigger = $('#'+base+'-trigger'); - const src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; - }, - - toggleLevel : function(level) { - $('table.directory tr').each(function() { - const l = this.id.split('_').length-1; - const i = $('#img'+this.id.substring(3)); - const a = $('#arr'+this.id.substring(3)); - if (l'); - // add vertical lines to other rows - $('span[class=lineno]').not(':eq(0)').append(''); - // add toggle controls to lines with fold divs - $('div[class=foldopen]').each(function() { - // extract specific id to use - const id = $(this).attr('id').replace('foldopen',''); - // extract start and end foldable fragment attributes - const start = $(this).attr('data-start'); - const end = $(this).attr('data-end'); - // replace normal fold span with controls for the first line of a foldable fragment - $(this).find('span[class=fold]:first').replaceWith(''); - // append div for folded (closed) representation - $(this).after(''); - // extract the first line from the "open" section to represent closed content - const line = $(this).children().first().clone(); - // remove any glow that might still be active on the original line - $(line).removeClass('glow'); - if (start) { - // if line already ends with a start marker (e.g. trailing {), remove it - $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); - } - // replace minus with plus symbol - $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); - // append ellipsis - $(line).append(' '+start+''+end); - // insert constructed line into closed div - $('#foldclosed'+id).html(line); - }); - }, -}; -/* @license-end */ diff --git a/docs/build/html/einsum_8h.html b/docs/build/html/einsum_8h.html deleted file mode 100644 index 373d02be..00000000 --- a/docs/build/html/einsum_8h.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: mlx/einsum.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      einsum.h File Reference
      -
      -
      -
      #include <string>
      -#include <tuple>
      -#include <vector>
      -#include "mlx/array.h"
      -#include "mlx/utils.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - -

      -Functions

      std::pair< std::vector< std::vector< int > >, std::string > mlx::core::einsum_path (const std::string &subscripts, const std::vector< array > &operands)
       
      array mlx::core::einsum (const std::string &subscripts, const std::vector< array > &operands, StreamOrDevice s={})
       
      -
      - - - - diff --git a/docs/build/html/einsum_8h_source.html b/docs/build/html/einsum_8h_source.html deleted file mode 100644 index 6eb248ef..00000000 --- a/docs/build/html/einsum_8h_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -MLX: mlx/einsum.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      einsum.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2#pragma once
      -
      3
      -
      4#include <string>
      -
      5#include <tuple>
      -
      6#include <vector>
      -
      7
      -
      8#include "mlx/array.h"
      -
      9#include "mlx/utils.h"
      -
      10
      -
      11namespace mlx::core {
      -
      12
      -
      13std::pair<std::vector<std::vector<int>>, std::string> einsum_path(
      -
      14 const std::string& subscripts,
      -
      15 const std::vector<array>& operands);
      -
      16
      - -
      18 const std::string& subscripts,
      -
      19 const std::vector<array>& operands,
      -
      20 StreamOrDevice s = {});
      -
      21
      -
      22} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Definition allocator.h:7
      -
      array einsum(const std::string &subscripts, const std::vector< array > &operands, StreamOrDevice s={})
      -
      std::variant< std::monostate, Stream, Device > StreamOrDevice
      Definition utils.h:14
      -
      std::pair< std::vector< std::vector< int > >, std::string > einsum_path(const std::string &subscripts, const std::vector< array > &operands)
      - -
      - - - - diff --git a/docs/build/html/erf_8h.html b/docs/build/html/erf_8h.html deleted file mode 100644 index 67c255b6..00000000 --- a/docs/build/html/erf_8h.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/erf.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      erf.h File Reference
      -
      -
      -
      #include <metal_math>
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Functions

      float erf (float a)
       
      float erfinv (float a)
       
      -

      Function Documentation

      - -

      ◆ erf()

      - -
      -
      - - - - - - - -
      float erf (float a)
      -
      - -
      -
      - -

      ◆ erfinv()

      - -
      -
      - - - - - - - -
      float erfinv (float a)
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/erf_8h_source.html b/docs/build/html/erf_8h_source.html deleted file mode 100644 index 7e4f5982..00000000 --- a/docs/build/html/erf_8h_source.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/erf.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      erf.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4#include <metal_math>
      -
      5
      -
      6/*
      -
      7 * Approximation to the error function.
      -
      8 * Based on code from:
      -
      9 * https://stackoverflow.com/questions/35148198/efficient-faithfully-rounded-implementation-of-error-function-erff#answer-35148199
      -
      10 */
      -
      -
      11float erf(float a) {
      -
      12 float r, s, t, u;
      -
      13 t = metal::abs(a);
      -
      14 s = a * a;
      -
      15 if (t > 0.927734375f) {
      -
      16 // maximum error 0.99527 ulp
      -
      17 r = metal::fma(
      -
      18 -1.72853470e-5f, t, 3.83197126e-4f); // -0x1.220000p-16,0x1.91cfb2p-12
      -
      19 u = metal::fma(
      -
      20 -3.88396438e-3f, t, 2.42546219e-2f); // -0x1.fd1438p-9, 0x1.8d6342p-6
      -
      21 r = metal::fma(r, s, u);
      -
      22 r = metal::fma(r, t, -1.06777877e-1f); // -0x1.b55cb8p-4
      -
      23 r = metal::fma(r, t, -6.34846687e-1f); // -0x1.450aa0p-1
      -
      24 r = metal::fma(r, t, -1.28717512e-1f); // -0x1.079d0cp-3
      -
      25 r = metal::fma(r, t, -t);
      -
      26 // TODO, replace with expm1 when implemented
      -
      27 r = 1.0f - metal::exp(r);
      -
      28 r = metal::copysign(r, a);
      -
      29 } else {
      -
      30 // maximum error 0.98929 ulp
      -
      31 r = -5.96761703e-4f; // -0x1.38e000p-11
      -
      32 r = metal::fma(r, s, 4.99119423e-3f); // 0x1.471a58p-8
      -
      33 r = metal::fma(r, s, -2.67681349e-2f); // -0x1.b691b2p-6
      -
      34 r = metal::fma(r, s, 1.12819925e-1f); // 0x1.ce1c44p-4
      -
      35 r = metal::fma(r, s, -3.76125336e-1f); // -0x1.812700p-2
      -
      36 r = metal::fma(r, s, 1.28379166e-1f); // 0x1.06eba8p-3
      -
      37 r = metal::fma(r, a, a);
      -
      38 }
      -
      39 return r;
      -
      40}
      -
      -
      41
      -
      -
      42float erfinv(float a) {
      -
      43 auto t = metal::fma(a, 0.0f - a, 1.0f);
      -
      44 t = metal::log(t);
      -
      45 float p;
      -
      46 if (metal::abs(t) > 6.125f) { // maximum ulp error = 2.35793
      -
      47 p = 3.03697567e-10f; // 0x1.4deb44p-32
      -
      48 p = metal::fma(p, t, 2.93243101e-8f); // 0x1.f7c9aep-26
      -
      49 p = metal::fma(p, t, 1.22150334e-6f); // 0x1.47e512p-20
      -
      50 p = metal::fma(p, t, 2.84108955e-5f); // 0x1.dca7dep-16
      -
      51 p = metal::fma(p, t, 3.93552968e-4f); // 0x1.9cab92p-12
      -
      52 p = metal::fma(p, t, 3.02698812e-3f); // 0x1.8cc0dep-9
      -
      53 p = metal::fma(p, t, 4.83185798e-3f); // 0x1.3ca920p-8
      -
      54 p = metal::fma(p, t, -2.64646143e-1f); // -0x1.0eff66p-2
      -
      55 p = metal::fma(p, t, 8.40016484e-1f); // 0x1.ae16a4p-1
      -
      56 } else { // maximum ulp error = 2.35002
      -
      57 p = 5.43877832e-9f; // 0x1.75c000p-28
      -
      58 p = metal::fma(p, t, 1.43285448e-7f); // 0x1.33b402p-23
      -
      59 p = metal::fma(p, t, 1.22774793e-6f); // 0x1.499232p-20
      -
      60 p = metal::fma(p, t, 1.12963626e-7f); // 0x1.e52cd2p-24
      -
      61 p = metal::fma(p, t, -5.61530760e-5f); // -0x1.d70bd0p-15
      -
      62 p = metal::fma(p, t, -1.47697632e-4f); // -0x1.35be90p-13
      -
      63 p = metal::fma(p, t, 2.31468678e-3f); // 0x1.2f6400p-9
      -
      64 p = metal::fma(p, t, 1.15392581e-2f); // 0x1.7a1e50p-7
      -
      65 p = metal::fma(p, t, -2.32015476e-1f); // -0x1.db2aeep-3
      -
      66 p = metal::fma(p, t, 8.86226892e-1f); // 0x1.c5bf88p-1
      -
      67 }
      -
      68 return a * p;
      -
      69}
      -
      -
      float erfinv(float a)
      Definition erf.h:42
      -
      float erf(float a)
      Definition erf.h:11
      -
      METAL_FUNC bfloat16_t log(bfloat16_t x)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t fma(bfloat16_t x, bfloat16_t y, bfloat16_t z)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t abs(bfloat16_t x)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t exp(bfloat16_t x)
      Definition bf16_math.h:234
      -
      uint32_t u
      Definition bf16.h:17
      -
      - - - - diff --git a/docs/build/html/event_8h.html b/docs/build/html/event_8h.html deleted file mode 100644 index 4ab48528..00000000 --- a/docs/build/html/event_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/event.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      event.h File Reference
      -
      -
      -
      #include <memory>
      -#include <stdexcept>
      -#include "mlx/stream.h"
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      class  mlx::core::Event
       
      - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      -
      - - - - diff --git a/docs/build/html/event_8h_source.html b/docs/build/html/event_8h_source.html deleted file mode 100644 index 0bf12089..00000000 --- a/docs/build/html/event_8h_source.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - -MLX: mlx/event.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      event.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2#pragma once
      -
      3
      -
      4#include <memory>
      -
      5#include <stdexcept>
      -
      6
      -
      7#include "mlx/stream.h"
      -
      8
      -
      9namespace mlx::core {
      -
      10
      -
      -
      11class Event {
      -
      12 public:
      -
      13 Event() = default;
      -
      14
      -
      15 Event(const Stream& steam);
      -
      16
      -
      17 // Wait for the event to be signaled at its current value
      -
      18 void wait();
      -
      19
      -
      20 // Signal the event at its current value
      -
      21 void signal();
      -
      22
      -
      23 // Check if the event is valid
      -
      -
      24 bool valid() const {
      -
      25 return event_ != nullptr;
      -
      26 }
      -
      -
      27
      -
      -
      28 uint64_t value() const {
      -
      29 return value_;
      -
      30 }
      -
      -
      31
      -
      -
      32 void set_value(uint64_t v) {
      -
      33 value_ = v;
      -
      34 }
      -
      -
      35
      -
      -
      36 const Stream& stream() const {
      -
      37 if (!valid()) {
      -
      38 throw std::runtime_error(
      -
      39 "[Event::stream] Cannot access stream on invalid event.");
      -
      40 }
      -
      41 return stream_;
      -
      42 }
      -
      -
      43
      -
      -
      44 const std::shared_ptr<void>& raw_event() const {
      -
      45 return event_;
      -
      46 }
      -
      -
      47
      -
      48 private:
      -
      49 // Default constructed stream should never be used
      -
      50 // since the event is not yet valid
      -
      51 Stream stream_{0, Device::cpu};
      -
      52 std::shared_ptr<void> event_;
      -
      53 uint64_t value_{0};
      -
      54};
      -
      -
      55
      -
      56} // namespace mlx::core
      -
      Definition event.h:11
      -
      void set_value(uint64_t v)
      Definition event.h:32
      -
      Event(const Stream &steam)
      -
      const Stream & stream() const
      Definition event.h:36
      - - - -
      bool valid() const
      Definition event.h:24
      -
      uint64_t value() const
      Definition event.h:28
      -
      const std::shared_ptr< void > & raw_event() const
      Definition event.h:44
      -
      Definition allocator.h:7
      - -
      static constexpr DeviceType cpu
      Definition device.h:13
      -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/examples/linear_regression.html b/docs/build/html/examples/linear_regression.html index c158a7e0..346c9c5e 100644 --- a/docs/build/html/examples/linear_regression.html +++ b/docs/build/html/examples/linear_regression.html @@ -8,7 +8,7 @@ - Linear Regression — MLX 0.17.3 documentation + Linear Regression — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -361,6 +361,7 @@
    • mlx.core.pad
    • mlx.core.power
    • mlx.core.prod
    • +
    • mlx.core.put_along_axis
    • mlx.core.quantize
    • mlx.core.quantized_matmul
    • mlx.core.radians
    • @@ -469,6 +470,7 @@
    • mlx.core.linalg.norm
    • mlx.core.linalg.cholesky
    • mlx.core.linalg.cholesky_inv
    • +
    • mlx.core.linalg.cross
    • mlx.core.linalg.qr
    • mlx.core.linalg.svd
    @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -515,6 +517,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -525,6 +528,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -536,6 +540,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -551,6 +557,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -566,6 +573,7 @@
  • Functions
  • - - + @@ -2035,11 +2059,11 @@ document.write(`
  • shape (array property)
  • sigmoid (C++ function) - -
  • +
  • Sigmoid (class in mlx.nn) +
  • +
  • sigmoid (class in mlx.nn) +
  • sigmoid() (in module mlx.core)
  • sign (C++ function) @@ -2066,7 +2090,7 @@ document.write(`
  • size (array property)
  • -
  • slice (C++ function), [1] +
  • slice (C++ function), [1]
  • slice_update (C++ function), [1]
  • @@ -2202,7 +2226,7 @@ document.write(` @@ -517,6 +519,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -527,6 +530,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -538,6 +542,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -553,6 +559,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -568,6 +575,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • diff --git a/docs/build/html/io_2load_8h.html b/docs/build/html/io_2load_8h.html deleted file mode 100644 index 54264978..00000000 --- a/docs/build/html/io_2load_8h.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -MLX: mlx/io/load.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      load.h File Reference
      -
      -
      -
      #include <fcntl.h>
      -#include <sys/stat.h>
      -#include <unistd.h>
      -#include <memory>
      -#include <sstream>
      -#include "mlx/io/threadpool.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - - - -

      -Classes

      class  mlx::core::io::Reader
       
      class  mlx::core::io::Writer
       
      class  mlx::core::io::ParallelFileReader
       
      class  mlx::core::io::FileWriter
       
      - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::io
       
      - - - -

      -Functions

      ThreadPoolmlx::core::io::thread_pool ()
       
      -
      - - - - diff --git a/docs/build/html/io_2load_8h_source.html b/docs/build/html/io_2load_8h_source.html deleted file mode 100644 index 7ddc31bc..00000000 --- a/docs/build/html/io_2load_8h_source.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -MLX: mlx/io/load.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      load.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <fcntl.h>
      -
      6#include <sys/stat.h>
      -
      7#include <unistd.h>
      -
      8#include <memory>
      -
      9#include <sstream>
      -
      10
      -
      11#include "mlx/io/threadpool.h"
      -
      12
      -
      13namespace mlx::core {
      -
      14
      -
      -
      15namespace io {
      -
      16
      - -
      18
      -
      -
      19class Reader {
      -
      20 public:
      -
      21 virtual bool is_open() const = 0;
      -
      22 virtual bool good() const = 0;
      -
      23 virtual size_t tell() = 0; // tellp is non-const in iostream
      -
      24 virtual void seek(
      -
      25 int64_t off,
      -
      26 std::ios_base::seekdir way = std::ios_base::beg) = 0;
      -
      27 virtual void read(char* data, size_t n) = 0;
      -
      28 virtual void read(char* data, size_t n, size_t offset) = 0;
      -
      29 virtual std::string label() const = 0;
      -
      30 virtual ~Reader() = default;
      -
      31};
      -
      -
      32
      -
      -
      33class Writer {
      -
      34 public:
      -
      35 virtual bool is_open() const = 0;
      -
      36 virtual bool good() const = 0;
      -
      37 virtual size_t tell() = 0;
      -
      38 virtual void seek(
      -
      39 int64_t off,
      -
      40 std::ios_base::seekdir way = std::ios_base::beg) = 0;
      -
      41 virtual void write(const char* data, size_t n) = 0;
      -
      42 virtual std::string label() const = 0;
      -
      43 virtual ~Writer() = default;
      -
      44};
      -
      -
      45
      -
      -
      46class ParallelFileReader : public Reader {
      -
      47 public:
      -
      -
      48 explicit ParallelFileReader(std::string file_path)
      -
      49 : fd_(open(file_path.c_str(), O_RDONLY)), label_(std::move(file_path)) {}
      -
      -
      50
      -
      - -
      52 close(fd_);
      -
      53 }
      -
      -
      54
      -
      -
      55 bool is_open() const override {
      -
      56 return fd_ > 0;
      -
      57 }
      -
      -
      58
      -
      -
      59 bool good() const override {
      -
      60 return is_open();
      -
      61 }
      -
      -
      62
      -
      -
      63 size_t tell() override {
      -
      64 return lseek(fd_, 0, SEEK_CUR);
      -
      65 }
      -
      -
      66
      -
      -
      67 void seek(int64_t, std::ios_base::seekdir = std::ios_base::beg) override {
      -
      68 throw std::runtime_error("[ParallelFileReader::seek] Not allowed");
      -
      69 }
      -
      -
      70
      -
      71 // Warning: do not use this function from multiple threads as
      -
      72 // it advances the file descriptor
      -
      73 void read(char* data, size_t n) override;
      -
      74
      -
      75 void read(char* data, size_t n, size_t offset) override;
      -
      76
      -
      -
      77 std::string label() const override {
      -
      78 return "file " + label_;
      -
      79 }
      -
      -
      80
      -
      81 private:
      -
      82 static constexpr size_t batch_size_ = 1 << 25;
      -
      83 static ThreadPool thread_pool_;
      -
      84 int fd_;
      -
      85 std::string label_;
      -
      86};
      -
      -
      87
      -
      -
      88class FileWriter : public Writer {
      -
      89 public:
      -
      -
      90 explicit FileWriter(std::string file_path)
      -
      91 : fd_(open(file_path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0644)),
      -
      92 label_(std::move(file_path)) {}
      -
      -
      93
      -
      -
      94 ~FileWriter() override {
      -
      95 close(fd_);
      -
      96 }
      -
      -
      97
      -
      -
      98 bool is_open() const override {
      -
      99 return fd_ >= 0;
      -
      100 }
      -
      -
      101
      -
      -
      102 bool good() const override {
      -
      103 return is_open();
      -
      104 }
      -
      -
      105
      -
      -
      106 size_t tell() override {
      -
      107 return lseek(fd_, 0, SEEK_CUR);
      -
      108 }
      -
      -
      109
      -
      -
      110 void seek(int64_t off, std::ios_base::seekdir way = std::ios_base::beg)
      -
      111 override {
      -
      112 if (way == std::ios_base::beg) {
      -
      113 lseek(fd_, off, 0);
      -
      114 } else {
      -
      115 lseek(fd_, off, SEEK_CUR);
      -
      116 }
      -
      117 }
      -
      -
      118
      -
      -
      119 void write(const char* data, size_t n) override {
      -
      120 while (n != 0) {
      -
      121 auto m = ::write(fd_, data, std::min(n, static_cast<size_t>(INT32_MAX)));
      -
      122 if (m <= 0) {
      -
      123 std::ostringstream msg;
      -
      124 msg << "[write] Unable to write " << n << " bytes to file.";
      -
      125 throw std::runtime_error(msg.str());
      -
      126 }
      -
      127 data += m;
      -
      128 n -= m;
      -
      129 }
      -
      130 }
      -
      -
      131
      -
      -
      132 std::string label() const override {
      -
      133 return "file " + label_;
      -
      134 }
      -
      -
      135
      -
      136 private:
      -
      137 int fd_;
      -
      138 std::string label_;
      -
      139};
      -
      -
      140
      -
      141} // namespace io
      -
      -
      142} // namespace mlx::core
      -
      Definition threadpool.h:35
      -
      Definition load.h:88
      -
      FileWriter(std::string file_path)
      Definition load.h:90
      -
      std::string label() const override
      Definition load.h:132
      -
      void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) override
      Definition load.h:110
      -
      bool good() const override
      Definition load.h:102
      -
      size_t tell() override
      Definition load.h:106
      -
      void write(const char *data, size_t n) override
      Definition load.h:119
      -
      ~FileWriter() override
      Definition load.h:94
      -
      bool is_open() const override
      Definition load.h:98
      - -
      void read(char *data, size_t n, size_t offset) override
      -
      size_t tell() override
      Definition load.h:63
      -
      std::string label() const override
      Definition load.h:77
      -
      bool is_open() const override
      Definition load.h:55
      -
      void read(char *data, size_t n) override
      -
      void seek(int64_t, std::ios_base::seekdir=std::ios_base::beg) override
      Definition load.h:67
      -
      ParallelFileReader(std::string file_path)
      Definition load.h:48
      -
      bool good() const override
      Definition load.h:59
      -
      ~ParallelFileReader() override
      Definition load.h:51
      -
      Definition load.h:19
      -
      virtual bool good() const =0
      -
      virtual size_t tell()=0
      -
      virtual void read(char *data, size_t n, size_t offset)=0
      -
      virtual bool is_open() const =0
      -
      virtual ~Reader()=default
      -
      virtual std::string label() const =0
      -
      virtual void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
      -
      virtual void read(char *data, size_t n)=0
      -
      Definition load.h:33
      -
      virtual bool good() const =0
      -
      virtual ~Writer()=default
      -
      virtual size_t tell()=0
      -
      virtual std::string label() const =0
      -
      virtual bool is_open() const =0
      -
      virtual void seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0
      -
      virtual void write(const char *data, size_t n)=0
      -
      array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
      Computes the standard deviation of the elements of an array.
      -
      ThreadPool & thread_pool()
      -
      Definition allocator.h:7
      - -
      - - - - diff --git a/docs/build/html/io_8h.html b/docs/build/html/io_8h.html deleted file mode 100644 index 93a52c89..00000000 --- a/docs/build/html/io_8h.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -MLX: mlx/io.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      io.h File Reference
      -
      -
      -
      #include <variant>
      -#include "mlx/array.h"
      -#include "mlx/io/load.h"
      -#include "mlx/stream.h"
      -#include "mlx/utils.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - -

      -Typedefs

      using mlx::core::GGUFMetaData
       
      using mlx::core::GGUFLoad
       
      using mlx::core::SafetensorsLoad
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      void mlx::core::save (std::shared_ptr< io::Writer > out_stream, array a)
       Save array to out stream in .npy format.
       
      void mlx::core::save (std::string file, array a)
       Save array to file in .npy format.
       
      array mlx::core::load (std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})
       Load array from reader in .npy format.
       
      array mlx::core::load (std::string file, StreamOrDevice s={})
       Load array from file in .npy format.
       
      SafetensorsLoad mlx::core::load_safetensors (std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})
       Load array map from .safetensors file format.
       
      SafetensorsLoad mlx::core::load_safetensors (const std::string &file, StreamOrDevice s={})
       
      void mlx::core::save_safetensors (std::shared_ptr< io::Writer > in_stream, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})
       
      void mlx::core::save_safetensors (std::string file, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})
       
      GGUFLoad mlx::core::load_gguf (const std::string &file, StreamOrDevice s={})
       Load array map and metadata from .gguf file format.
       
      void mlx::core::save_gguf (std::string file, std::unordered_map< std::string, array > array_map, std::unordered_map< std::string, GGUFMetaData > meta_data={})
       
      -
      - - - - diff --git a/docs/build/html/io_8h_source.html b/docs/build/html/io_8h_source.html deleted file mode 100644 index 34676b20..00000000 --- a/docs/build/html/io_8h_source.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - -MLX: mlx/io.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      io.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <variant>
      -
      6
      -
      7#include "mlx/array.h"
      -
      8#include "mlx/io/load.h"
      -
      9#include "mlx/stream.h"
      -
      10#include "mlx/utils.h"
      -
      11
      -
      12namespace mlx::core {
      - -
      14 std::variant<std::monostate, array, std::string, std::vector<std::string>>;
      -
      15using GGUFLoad = std::pair<
      -
      16 std::unordered_map<std::string, array>,
      -
      17 std::unordered_map<std::string, GGUFMetaData>>;
      -
      18using SafetensorsLoad = std::pair<
      -
      19 std::unordered_map<std::string, array>,
      -
      20 std::unordered_map<std::string, std::string>>;
      -
      21
      -
      23void save(std::shared_ptr<io::Writer> out_stream, array a);
      -
      24
      -
      26void save(std::string file, array a);
      -
      27
      -
      29array load(std::shared_ptr<io::Reader> in_stream, StreamOrDevice s = {});
      -
      30
      -
      32array load(std::string file, StreamOrDevice s = {});
      -
      33
      - -
      36 std::shared_ptr<io::Reader> in_stream,
      -
      37 StreamOrDevice s = {});
      - -
      39 const std::string& file,
      -
      40 StreamOrDevice s = {});
      -
      41
      - -
      43 std::shared_ptr<io::Writer> in_stream,
      -
      44 std::unordered_map<std::string, array>,
      -
      45 std::unordered_map<std::string, std::string> metadata = {});
      - -
      47 std::string file,
      -
      48 std::unordered_map<std::string, array>,
      -
      49 std::unordered_map<std::string, std::string> metadata = {});
      -
      50
      -
      53GGUFLoad load_gguf(const std::string& file, StreamOrDevice s = {});
      -
      54
      - -
      56 std::string file,
      -
      57 std::unordered_map<std::string, array> array_map,
      -
      58 std::unordered_map<std::string, GGUFMetaData> meta_data = {});
      -
      59
      -
      60} // namespace mlx::core
      - -
      Definition array.h:20
      - -
      Definition allocator.h:7
      -
      GGUFLoad load_gguf(const std::string &file, StreamOrDevice s={})
      Load array map and metadata from .gguf file format.
      -
      std::pair< std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > > SafetensorsLoad
      Definition io.h:18
      -
      void save_gguf(std::string file, std::unordered_map< std::string, array > array_map, std::unordered_map< std::string, GGUFMetaData > meta_data={})
      -
      std::variant< std::monostate, array, std::string, std::vector< std::string > > GGUFMetaData
      Definition io.h:13
      -
      void load(array &out, size_t offset, const std::shared_ptr< io::Reader > &reader, bool swap_endianess)
      -
      std::variant< std::monostate, Stream, Device > StreamOrDevice
      Definition utils.h:14
      -
      SafetensorsLoad load_safetensors(std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})
      Load array map from .safetensors file format.
      -
      void save_safetensors(std::shared_ptr< io::Writer > in_stream, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})
      -
      std::pair< std::unordered_map< std::string, array >, std::unordered_map< std::string, GGUFMetaData > > GGUFLoad
      Definition io.h:15
      -
      void save(std::shared_ptr< io::Writer > out_stream, array a)
      Save array to out stream in .npy format.
      - - -
      - - - - diff --git a/docs/build/html/jit_2gemv__masked_8h.html b/docs/build/html/jit_2gemv__masked_8h.html deleted file mode 100644 index d95fef6f..00000000 --- a/docs/build/html/jit_2gemv__masked_8h.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/gemv_masked.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      gemv_masked.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - -

      -Variables

      constexpr std::string_view gemv_masked_kernel
       
      -

      Variable Documentation

      - -

      ◆ gemv_masked_kernel

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view gemv_masked_kernel
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      gemv_{trans}masked<{itype}, {outm_t}, {opm_t}, {bm}, {bn}, {sm}, {sn}, {tm}, {tn}, {nc}>(
      -
      const device {itype}* mat [[buffer(0)]],
      -
      const device {itype}* in_vec [[buffer(1)]],
      -
      device {itype}* out_vec [[buffer(3)]],
      -
      const constant int& in_vec_size [[buffer(4)]],
      -
      const constant int& out_vec_size [[buffer(5)]],
      -
      const constant int& marix_ld [[buffer(6)]],
      -
      const constant int& batch_ndim [[buffer(9)]],
      -
      const constant int* batch_shape [[buffer(10)]],
      -
      const constant size_t* vector_batch_stride [[buffer(11)]],
      -
      const constant size_t* matrix_batch_stride [[buffer(12)]],
      -
      const device {outm_t}* out_mask [[buffer(20)]],
      -
      const device {opm_t}* mat_mask [[buffer(21)]],
      -
      const device {opm_t}* vec_mask [[buffer(22)]],
      -
      const constant int* mask_strides [[buffer(23)]],
      -
      const constant size_t* mask_batch_strides [[buffer(24)]],
      -
      uint3 tid [[threadgroup_position_in_grid]],
      -
      uint3 lid [[thread_position_in_threadgroup]],
      -
      uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      uint simd_lid [[thread_index_in_simdgroup]]);
      -
      )"
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/jit_2gemv__masked_8h_source.html b/docs/build/html/jit_2gemv__masked_8h_source.html deleted file mode 100644 index 3d5f8067..00000000 --- a/docs/build/html/jit_2gemv__masked_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/gemv_masked.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      gemv_masked.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view gemv_masked_kernel = R"(
      -
      4template [[host_name("{name}")]] [[kernel]] void
      -
      5gemv_{trans}masked<{itype}, {outm_t}, {opm_t}, {bm}, {bn}, {sm}, {sn}, {tm}, {tn}, {nc}>(
      -
      6 const device {itype}* mat [[buffer(0)]],
      -
      7 const device {itype}* in_vec [[buffer(1)]],
      -
      8 device {itype}* out_vec [[buffer(3)]],
      -
      9 const constant int& in_vec_size [[buffer(4)]],
      -
      10 const constant int& out_vec_size [[buffer(5)]],
      -
      11 const constant int& marix_ld [[buffer(6)]],
      -
      12 const constant int& batch_ndim [[buffer(9)]],
      -
      13 const constant int* batch_shape [[buffer(10)]],
      -
      14 const constant size_t* vector_batch_stride [[buffer(11)]],
      -
      15 const constant size_t* matrix_batch_stride [[buffer(12)]],
      -
      16 const device {outm_t}* out_mask [[buffer(20)]],
      -
      17 const device {opm_t}* mat_mask [[buffer(21)]],
      -
      18 const device {opm_t}* vec_mask [[buffer(22)]],
      -
      19 const constant int* mask_strides [[buffer(23)]],
      -
      20 const constant size_t* mask_batch_strides [[buffer(24)]],
      -
      21 uint3 tid [[threadgroup_position_in_grid]],
      -
      22 uint3 lid [[thread_position_in_threadgroup]],
      -
      23 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      24 uint simd_lid [[thread_index_in_simdgroup]]);
      -
      25)";
      -
      constexpr std::string_view gemv_masked_kernel
      Definition gemv_masked.h:3
      -
      - - - - diff --git a/docs/build/html/jit_2indexing_8h.html b/docs/build/html/jit_2indexing_8h.html deleted file mode 100644 index 41fa7133..00000000 --- a/docs/build/html/jit_2indexing_8h.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/indexing.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      indexing.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Variables

      constexpr std::string_view gather_kernels
       
      constexpr std::string_view scatter_kernels
       
      -

      Variable Documentation

      - -

      ◆ gather_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view gather_kernels
      -
      -constexpr
      -
      - -
      -
      - -

      ◆ scatter_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view scatter_kernels
      -
      -constexpr
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/jit_2indexing_8h_source.html b/docs/build/html/jit_2indexing_8h_source.html deleted file mode 100644 index 7da86ac1..00000000 --- a/docs/build/html/jit_2indexing_8h_source.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/indexing.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      indexing.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view gather_kernels = R"(
      -
      4[[kernel]] void gather{0}_{3}_{6}(
      -
      5 const device {1}* src [[buffer(0)]],
      -
      6 device {1}* out [[buffer(1)]],
      -
      7 const constant int* src_shape [[buffer(2)]],
      -
      8 const constant size_t* src_strides [[buffer(3)]],
      -
      9 const constant size_t& src_ndim [[buffer(4)]],
      -
      10 const constant int* slice_sizes [[buffer(5)]],
      -
      11 const constant int* axes [[buffer(6)]],
      -
      12 const constant int* idx_shapes [[buffer(7)]],
      -
      13 const constant size_t* idx_strides [[buffer(8)]],
      -
      14 const constant int& idx_ndim [[buffer(9)]],
      -
      15 {4}
      -
      16 uint3 index [[thread_position_in_grid]],
      -
      17 uint3 grid_dim [[threads_per_grid]]) {{
      -
      18 Indices<{2}, {3}> idxs{{
      -
      19 {{ {5} }}, idx_shapes, idx_strides, idx_ndim}};
      -
      20
      -
      21 return gather_impl<{1}, {2}, {3}, {6}>(
      -
      22 src,
      -
      23 out,
      -
      24 src_shape,
      -
      25 src_strides,
      -
      26 src_ndim,
      -
      27 slice_sizes,
      -
      28 axes,
      -
      29 idxs,
      -
      30 index,
      -
      31 grid_dim);
      -
      32}}
      -
      33)";
      -
      34
      -
      35constexpr std::string_view scatter_kernels = R"(
      -
      36[[kernel]] void scatter_1d_index{0}_{4}(
      -
      37 const device {1}* updates [[buffer(1)]],
      -
      38 device mlx_atomic<{1}>* out [[buffer(2)]],
      -
      39 const constant int* out_shape [[buffer(3)]],
      -
      40 const constant size_t* out_strides [[buffer(4)]],
      -
      41 const constant size_t& out_ndim [[buffer(5)]],
      -
      42 const constant int* upd_shape [[buffer(6)]],
      -
      43 const constant size_t& upd_ndim [[buffer(7)]],
      -
      44 const constant size_t& upd_size [[buffer(8)]],
      -
      45 {5}
      -
      46 uint2 gid [[thread_position_in_grid]]) {{
      -
      47 const array<const device {2}*, {4}> idx_buffers = {{ {6} }};
      -
      48 return scatter_1d_index_impl<{1}, {2}, {3}, {4}>(
      -
      49 updates,
      -
      50 out,
      -
      51 out_shape,
      -
      52 out_strides,
      -
      53 out_ndim,
      -
      54 upd_shape,
      -
      55 upd_ndim,
      -
      56 upd_size,
      -
      57 idx_buffers,
      -
      58 gid);
      -
      59}}
      -
      60
      -
      61[[kernel]] void scatter{0}_{4}(
      -
      62 const device {1}* updates [[buffer(1)]],
      -
      63 device mlx_atomic<{1}>* out [[buffer(2)]],
      -
      64 const constant int* upd_shape [[buffer(3)]],
      -
      65 const constant size_t* upd_strides [[buffer(4)]],
      -
      66 const constant size_t& upd_ndim [[buffer(5)]],
      -
      67 const constant size_t& upd_size [[buffer(6)]],
      -
      68 const constant int* out_shape [[buffer(7)]],
      -
      69 const constant size_t* out_strides [[buffer(8)]],
      -
      70 const constant size_t& out_ndim [[buffer(9)]],
      -
      71 const constant int* axes [[buffer(10)]],
      -
      72 const constant int* idx_shapes [[buffer(11)]],
      -
      73 const constant size_t* idx_strides [[buffer(12)]],
      -
      74 const constant int& idx_ndim [[buffer(13)]],
      -
      75 {5}
      -
      76 uint2 gid [[thread_position_in_grid]]) {{
      -
      77 Indices<{2}, {4}> idxs{{ {{ {6} }}, idx_shapes, idx_strides, idx_ndim}};
      -
      78
      -
      79 return scatter_impl<{1}, {2}, {3}, {4}>(
      -
      80 updates,
      -
      81 out,
      -
      82 upd_shape,
      -
      83 upd_strides,
      -
      84 upd_ndim,
      -
      85 upd_size,
      -
      86 out_shape,
      -
      87 out_strides,
      -
      88 out_ndim,
      -
      89 axes,
      -
      90 idxs,
      -
      91 gid);
      -
      92}}
      -
      93)";
      -
      constexpr std::string_view gather_kernels
      Definition indexing.h:3
      -
      constexpr std::string_view scatter_kernels
      Definition indexing.h:35
      -
      - - - - diff --git a/docs/build/html/jit_2scan_8h.html b/docs/build/html/jit_2scan_8h.html deleted file mode 100644 index da695864..00000000 --- a/docs/build/html/jit_2scan_8h.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/scan.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      scan.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - -

      -Variables

      constexpr std::string_view scan_kernels
       
      -

      Variable Documentation

      - -

      ◆ scan_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view scan_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("contig_{0}")]] [[kernel]] void
      -
      contiguous_scan<{1}, {2}, {3}<{2}>, 4, {4}, {5}>(
      -
      const device {1}* in [[buffer(0)]],
      -
      device {2}* out [[buffer(1)]],
      -
      const constant size_t& axis_size [[buffer(2)]],
      -
      uint gid [[thread_position_in_grid]],
      -
      uint lid [[thread_position_in_threadgroup]],
      -
      uint lsize [[threads_per_threadgroup]],
      -
      uint simd_size [[threads_per_simdgroup]],
      -
      uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      uint simd_group_id [[simdgroup_index_in_threadgroup]]);
      -
      -
      template [[host_name("strided_{0}")]] [[kernel]] void
      -
      strided_scan<{1}, {2}, {3}<{2}>, 4, {4}, {5}>(
      -
      const device {1}* in [[buffer(0)]],
      -
      device {2}* out [[buffer(1)]],
      -
      const constant size_t& axis_size [[buffer(2)]],
      -
      const constant size_t& stride [[buffer(3)]],
      -
      uint2 gid [[thread_position_in_grid]],
      -
      uint2 lid [[thread_position_in_threadgroup]],
      -
      uint2 lsize [[threads_per_threadgroup]],
      -
      uint simd_size [[threads_per_simdgroup]]);
      -
      )"
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/jit_2scan_8h_source.html b/docs/build/html/jit_2scan_8h_source.html deleted file mode 100644 index 6abe7a1c..00000000 --- a/docs/build/html/jit_2scan_8h_source.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/scan.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      scan.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view scan_kernels = R"(
      -
      4template [[host_name("contig_{0}")]] [[kernel]] void
      -
      5contiguous_scan<{1}, {2}, {3}<{2}>, 4, {4}, {5}>(
      -
      6 const device {1}* in [[buffer(0)]],
      -
      7 device {2}* out [[buffer(1)]],
      -
      8 const constant size_t& axis_size [[buffer(2)]],
      -
      9 uint gid [[thread_position_in_grid]],
      -
      10 uint lid [[thread_position_in_threadgroup]],
      -
      11 uint lsize [[threads_per_threadgroup]],
      -
      12 uint simd_size [[threads_per_simdgroup]],
      -
      13 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      14 uint simd_group_id [[simdgroup_index_in_threadgroup]]);
      -
      15
      -
      16template [[host_name("strided_{0}")]] [[kernel]] void
      -
      17strided_scan<{1}, {2}, {3}<{2}>, 4, {4}, {5}>(
      -
      18 const device {1}* in [[buffer(0)]],
      -
      19 device {2}* out [[buffer(1)]],
      -
      20 const constant size_t& axis_size [[buffer(2)]],
      -
      21 const constant size_t& stride [[buffer(3)]],
      -
      22 uint2 gid [[thread_position_in_grid]],
      -
      23 uint2 lid [[thread_position_in_threadgroup]],
      -
      24 uint2 lsize [[threads_per_threadgroup]],
      -
      25 uint simd_size [[threads_per_simdgroup]]);
      -
      26)";
      -
      constexpr std::string_view scan_kernels
      Definition scan.h:3
      -
      - - - - diff --git a/docs/build/html/jit_2softmax_8h.html b/docs/build/html/jit_2softmax_8h.html deleted file mode 100644 index 91961cba..00000000 --- a/docs/build/html/jit_2softmax_8h.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/softmax.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      softmax.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - -

      -Variables

      constexpr std::string_view softmax_kernels
       
      -

      Variable Documentation

      - -

      ◆ softmax_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view softmax_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("block_{0}")]] [[kernel]] void
      -
      softmax_single_row<{1}, {2}>(
      -
      const device {1}* in,
      -
      device {1}* out,
      -
      constant int& axis_size,
      -
      uint gid [[thread_position_in_grid]],
      -
      uint _lid [[thread_position_in_threadgroup]],
      -
      uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      uint simd_group_id [[simdgroup_index_in_threadgroup]]);
      -
      template [[host_name("looped_{0}")]] [[kernel]] void
      -
      softmax_looped<{1}, {2}>(
      -
      const device {1}* in,
      -
      device {1}* out,
      -
      constant int& axis_size,
      -
      uint gid [[threadgroup_position_in_grid]],
      -
      uint lid [[thread_position_in_threadgroup]],
      -
      uint lsize [[threads_per_threadgroup]],
      -
      uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      uint simd_group_id [[simdgroup_index_in_threadgroup]]);
      -
      )"
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/jit_2softmax_8h_source.html b/docs/build/html/jit_2softmax_8h_source.html deleted file mode 100644 index 5cd4f6cb..00000000 --- a/docs/build/html/jit_2softmax_8h_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/softmax.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      softmax.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view softmax_kernels = R"(
      -
      4template [[host_name("block_{0}")]] [[kernel]] void
      -
      5softmax_single_row<{1}, {2}>(
      -
      6 const device {1}* in,
      -
      7 device {1}* out,
      -
      8 constant int& axis_size,
      -
      9 uint gid [[thread_position_in_grid]],
      -
      10 uint _lid [[thread_position_in_threadgroup]],
      -
      11 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      12 uint simd_group_id [[simdgroup_index_in_threadgroup]]);
      -
      13template [[host_name("looped_{0}")]] [[kernel]] void
      -
      14softmax_looped<{1}, {2}>(
      -
      15 const device {1}* in,
      -
      16 device {1}* out,
      -
      17 constant int& axis_size,
      -
      18 uint gid [[threadgroup_position_in_grid]],
      -
      19 uint lid [[thread_position_in_threadgroup]],
      -
      20 uint lsize [[threads_per_threadgroup]],
      -
      21 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      22 uint simd_group_id [[simdgroup_index_in_threadgroup]]);
      -
      23)";
      -
      constexpr std::string_view softmax_kernels
      Definition softmax.h:3
      -
      - - - - diff --git a/docs/build/html/jit_2steel__conv_8h.html b/docs/build/html/jit_2steel__conv_8h.html deleted file mode 100644 index ecf5d671..00000000 --- a/docs/build/html/jit_2steel__conv_8h.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/steel_conv.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_conv.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Variables

      constexpr std::string_view steel_conv_kernels
       
      constexpr std::string_view steel_conv_general_kernels
       
      -

      Variable Documentation

      - -

      ◆ steel_conv_general_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_conv_general_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      implicit_gemm_conv_2d_general<{itype}, {bm}, {bn}, {bk}, {wm}, {wn}>(
      -
      const device {itype}* A [[buffer(0)]],
      -
      const device {itype}* B [[buffer(1)]],
      -
      device {itype}* C [[buffer(2)]],
      -
      const constant MLXConvParams<2>* params [[buffer(3)]],
      -
      const constant ImplicitGemmConv2DParams* gemm_params [[buffer(4)]],
      -
      const constant Conv2DGeneralJumpParams* jump_params [[buffer(5)]],
      -
      const constant Conv2DGeneralBaseInfo* base_h [[buffer(6)]],
      -
      const constant Conv2DGeneralBaseInfo* base_w [[buffer(7)]],
      -
      uint3 tid [[threadgroup_position_in_grid]],
      -
      uint3 lid [[thread_position_in_threadgroup]],
      -
      uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      uint simd_lid [[thread_index_in_simdgroup]]);
      -
      )"
      -
      -
      -
      - -

      ◆ steel_conv_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_conv_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      implicit_gemm_conv_2d<{itype}, {bm}, {bn}, {bk}, {wm}, {wn}, {n_channels}, {small_filter}>(
      -
      const device {itype}* A [[buffer(0)]],
      -
      const device {itype}* B [[buffer(1)]],
      -
      device {itype}* C [[buffer(2)]],
      -
      const constant MLXConvParams<2>* params [[buffer(3)]],
      -
      const constant ImplicitGemmConv2DParams* gemm_params [[buffer(4)]],
      -
      uint3 tid [[threadgroup_position_in_grid]],
      -
      uint3 lid [[thread_position_in_threadgroup]],
      -
      uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      uint simd_lid [[thread_index_in_simdgroup]]);
      -
      )"
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/jit_2steel__conv_8h_source.html b/docs/build/html/jit_2steel__conv_8h_source.html deleted file mode 100644 index e793e583..00000000 --- a/docs/build/html/jit_2steel__conv_8h_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/steel_conv.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_conv.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view steel_conv_kernels = R"(
      -
      4template [[host_name("{name}")]] [[kernel]] void
      -
      5implicit_gemm_conv_2d<{itype}, {bm}, {bn}, {bk}, {wm}, {wn}, {n_channels}, {small_filter}>(
      -
      6 const device {itype}* A [[buffer(0)]],
      -
      7 const device {itype}* B [[buffer(1)]],
      -
      8 device {itype}* C [[buffer(2)]],
      -
      9 const constant MLXConvParams<2>* params [[buffer(3)]],
      -
      10 const constant ImplicitGemmConv2DParams* gemm_params [[buffer(4)]],
      -
      11 uint3 tid [[threadgroup_position_in_grid]],
      -
      12 uint3 lid [[thread_position_in_threadgroup]],
      -
      13 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      14 uint simd_lid [[thread_index_in_simdgroup]]);
      -
      15)";
      -
      16
      -
      17constexpr std::string_view steel_conv_general_kernels = R"(
      -
      18template [[host_name("{name}")]] [[kernel]] void
      -
      19 implicit_gemm_conv_2d_general<{itype}, {bm}, {bn}, {bk}, {wm}, {wn}>(
      -
      20 const device {itype}* A [[buffer(0)]],
      -
      21 const device {itype}* B [[buffer(1)]],
      -
      22 device {itype}* C [[buffer(2)]],
      -
      23 const constant MLXConvParams<2>* params [[buffer(3)]],
      -
      24 const constant ImplicitGemmConv2DParams* gemm_params [[buffer(4)]],
      -
      25 const constant Conv2DGeneralJumpParams* jump_params [[buffer(5)]],
      -
      26 const constant Conv2DGeneralBaseInfo* base_h [[buffer(6)]],
      -
      27 const constant Conv2DGeneralBaseInfo* base_w [[buffer(7)]],
      -
      28 uint3 tid [[threadgroup_position_in_grid]],
      -
      29 uint3 lid [[thread_position_in_threadgroup]],
      -
      30 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      31 uint simd_lid [[thread_index_in_simdgroup]]);
      -
      32)";
      -
      constexpr std::string_view steel_conv_kernels
      Definition steel_conv.h:3
      -
      constexpr std::string_view steel_conv_general_kernels
      Definition steel_conv.h:17
      -
      - - - - diff --git a/docs/build/html/jquery.js b/docs/build/html/jquery.js deleted file mode 100644 index 1dffb65b..00000000 --- a/docs/build/html/jquery.js +++ /dev/null @@ -1,34 +0,0 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
      "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
      ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/build/html/kernels_2gemv__masked_8h.html b/docs/build/html/kernels_2gemv__masked_8h.html deleted file mode 100644 index c8063a08..00000000 --- a/docs/build/html/kernels_2gemv__masked_8h.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/gemv_masked.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      gemv_masked.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - -

      -Classes

      struct  _NoMask
       
      struct  ScaleOp< OutT, InT >
       
      struct  GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >
       
      struct  GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >
       Vector matrix multiplication. More...
       
      - - - - - -

      -Macros

      #define MLX_MTL_CONST   static constant constexpr const
       
      #define MLX_MTL_PRAGMA_UNROLL   _Pragma("clang loop unroll(full)")
       
      - - - -

      -Typedefs

      typedef struct _NoMask nomask_t
       
      - - - - - - - - - -

      -Functions

      template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN, const bool kDoNCBatch>
      void gemv_masked (const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const constant int &batch_ndim, const constant int *batch_shape, const constant size_t *vector_batch_stride, const constant size_t *matrix_batch_stride, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, const constant size_t *mask_batch_strides, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
       Matrix vector multiplication.
       
      template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN, const bool kDoNCBatch>
      void gemv_t_masked (const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const constant int &batch_ndim, const constant int *batch_shape, const constant size_t *vector_batch_stride, const constant size_t *matrix_batch_stride, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, const constant size_t *mask_batch_strides, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
       Vector matrix multiplication.
       
      -

      Macro Definition Documentation

      - -

      ◆ MLX_MTL_CONST

      - -
      -
      - - - - -
      #define MLX_MTL_CONST   static constant constexpr const
      -
      - -
      -
      - -

      ◆ MLX_MTL_PRAGMA_UNROLL

      - -
      -
      - - - - -
      #define MLX_MTL_PRAGMA_UNROLL   _Pragma("clang loop unroll(full)")
      -
      - -
      -
      -

      Typedef Documentation

      - -

      ◆ nomask_t

      - -
      -
      - - - - -
      typedef struct _NoMask nomask_t
      -
      - -
      -
      -

      Function Documentation

      - -

      ◆ gemv_masked()

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN, const bool kDoNCBatch>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void gemv_masked (const device T * mat,
      const device T * in_vec,
      device T * out_vec,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & marix_ld,
      const constant int & batch_ndim,
      const constant int * batch_shape,
      const constant size_t * vector_batch_stride,
      const constant size_t * matrix_batch_stride,
      const device out_mask_t * out_mask,
      const device op_mask_t * mat_mask,
      const device op_mask_t * vec_mask,
      const constant int * mask_strides,
      const constant size_t * mask_batch_strides,
      uint3 tid,
      uint3 lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -

      Matrix vector multiplication.

      - -
      -
      - -

      ◆ gemv_t_masked()

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN, const bool kDoNCBatch>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void gemv_t_masked (const device T * mat,
      const device T * in_vec,
      device T * out_vec,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & marix_ld,
      const constant int & batch_ndim,
      const constant int * batch_shape,
      const constant size_t * vector_batch_stride,
      const constant size_t * matrix_batch_stride,
      const device out_mask_t * out_mask,
      const device op_mask_t * mat_mask,
      const device op_mask_t * vec_mask,
      const constant int * mask_strides,
      const constant size_t * mask_batch_strides,
      uint3 tid,
      uint3 lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -

      Vector matrix multiplication.

      - -
      -
      -
      - - - - diff --git a/docs/build/html/kernels_2gemv__masked_8h_source.html b/docs/build/html/kernels_2gemv__masked_8h_source.html deleted file mode 100644 index f653051d..00000000 --- a/docs/build/html/kernels_2gemv__masked_8h_source.html +++ /dev/null @@ -1,972 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/gemv_masked.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      gemv_masked.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      - -
      4
      -
      5using namespace metal;
      -
      6
      -
      7#define MLX_MTL_CONST static constant constexpr const
      -
      8#define MLX_MTL_PRAGMA_UNROLL _Pragma("clang loop unroll(full)")
      -
      9
      -
      -
      10struct _NoMask {
      -
      11 char x;
      -
      12
      -
      -
      13 constexpr METAL_FUNC operator bool() {
      -
      14 return true;
      -
      15 }
      -
      -
      -
      16 constexpr METAL_FUNC operator bool() const threadgroup {
      -
      17 return true;
      -
      18 }
      -
      -
      -
      19 constexpr METAL_FUNC operator bool() const device {
      -
      20 return true;
      -
      21 }
      -
      -
      -
      22 constexpr METAL_FUNC operator bool() const constant {
      -
      23 return true;
      -
      24 }
      -
      -
      25};
      -
      -
      26
      -
      27typedef struct _NoMask nomask_t;
      -
      28
      -
      29template <typename OutT, typename InT = OutT>
      -
      -
      30struct ScaleOp {
      -
      31 OutT scale;
      -
      32
      -
      -
      33 METAL_FUNC OutT apply(InT x) const {
      -
      34 return static_cast<OutT>(x) * scale;
      -
      35 }
      -
      -
      36};
      -
      -
      37
      -
      38template <
      -
      39 typename T,
      -
      40 typename out_mask_t,
      -
      41 typename op_mask_t,
      -
      42 const int BM, /* Threadgroup rows (in simdgroups) */
      -
      43 const int BN, /* Threadgroup cols (in simdgroups) */
      -
      44 const int SM, /* Simdgroup rows (in threads) */
      -
      45 const int SN, /* Simdgroup cols (in threads) */
      -
      46 const int TM, /* Thread rows (in elements) */
      -
      47 const int TN> /* Thread cols (in elements) */
      -
      -
      48struct GEMVKernel {
      -
      49 MLX_MTL_CONST int threadsM = BM * SM;
      -
      50 MLX_MTL_CONST int threadsN = BN * SN;
      -
      51
      - - -
      54
      -
      55 static_assert(SM * SN == 32, "simdgroup can only have 32 threads");
      -
      56
      -
      57 static_assert(
      -
      58 SN == 8 || SN == 16 || SN == 32,
      -
      59 "gemv block must have a width of 8, 16, or 32");
      -
      60
      -
      61 static_assert(blockN >= blockM, "Masked gemv must have blockN >= blockM");
      -
      62
      -
      63 MLX_MTL_CONST bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>;
      -
      64 MLX_MTL_CONST bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>;
      -
      65
      - -
      67 has_operand_mask && !metal::is_same_v<op_mask_t, bool>;
      - -
      69 has_output_mask && !metal::is_same_v<out_mask_t, bool>;
      -
      70
      -
      71 // - The matrix of size (M = out_vec_size, K = in_vec_size) is divided up
      -
      72 // into blocks of (blockM, blockN) divided among threadgroups
      -
      73 // - Every thread works on a block of (TM, TN)
      -
      74 // - We assume each threadgroup has (threadsN, threadsM, 1) threads
      -
      75 //
      -
      76 // 1. A thread loads TN elements each from mat along TM rows
      -
      77 // and the corresponding scalar from the vector
      -
      78 // 2. The thread then multiplies and adds to accumulate its local result for
      -
      79 // the block
      -
      80 // 3. At the end, each thread has accumulated results over all blocks across
      -
      81 // the rows. These are then summed up across the threadgroup
      -
      82 // 4. Each threadgroup writes its accumulated blockM outputs
      -
      83 //
      -
      84 // Edge case handling:
      -
      85 // - The threadgroup with the largest tid has blocks that exceed the matrix
      -
      86 // * The blocks that start outside the matrix are never read (thread results
      -
      87 // remain zero)
      -
      88 // * The last thread that partially overlaps with the matrix is shifted
      -
      89 // inwards such that the thread block fits exactly in the matrix
      -
      90
      -
      91 MLX_MTL_CONST short tgp_mem_size = BN > 1 ? BN*(blockM + TM) : 0;
      - -
      93
      -
      94 static METAL_FUNC void
      -
      -
      95 load_unsafe(const device T* src, thread T dst[TN], const int src_offset = 0) {
      - -
      97 for (int tn = 0; tn < TN; tn++) {
      -
      98 dst[tn] = src[src_offset + tn];
      -
      99 }
      -
      100 }
      -
      -
      101
      -
      -
      102 static METAL_FUNC void load_safe(
      -
      103 const device T* src,
      -
      104 thread T dst[TN],
      -
      105 const int src_offset = 0,
      -
      106 const int src_size = TN) {
      -
      107 if (src_offset + TN <= src_size) {
      - -
      109 for (int tn = 0; tn < TN; tn++) {
      -
      110 dst[tn] = src[src_offset + tn];
      -
      111 }
      -
      112 } else { // Edgecase
      - -
      114 for (int tn = 0; tn < TN; tn++) {
      -
      115 dst[tn] = src_offset + tn < src_size ? src[src_offset + tn] : 0;
      -
      116 }
      -
      117 }
      -
      118 }
      -
      -
      119
      -
      -
      120 static METAL_FUNC void run(
      -
      121 const device T* mat [[buffer(0)]],
      -
      122 const device T* in_vec [[buffer(1)]],
      -
      123 device T* out_vec [[buffer(3)]],
      -
      124 const constant int& in_vec_size [[buffer(4)]],
      -
      125 const constant int& out_vec_size [[buffer(5)]],
      -
      126 const constant int& matrix_ld [[buffer(6)]],
      -
      127 const device out_mask_t* out_mask [[buffer(20)]],
      -
      128 const device op_mask_t* mat_mask [[buffer(21)]],
      -
      129 const device op_mask_t* vec_mask [[buffer(22)]],
      -
      130 const constant int* mask_strides [[buffer(23)]],
      -
      131 threadgroup T* tgp_memory [[threadgroup(0)]],
      -
      132 uint3 tid [[threadgroup_position_in_grid]],
      -
      133 uint3 lid [[thread_position_in_threadgroup]],
      -
      134 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      135 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      136 // Appease compiler
      -
      137 (void)lid;
      -
      138
      -
      139 // Thread local accumulation results
      -
      140 thread T result[TM] = {0};
      -
      141 thread T inter[TN];
      -
      142 thread T v_coeff[TN];
      -
      143
      -
      144 const int thrM = SN != 32 ? simd_lid / SN : 0;
      -
      145 const int thrN = SN != 32 ? simd_lid % SN : int(simd_lid);
      -
      146
      -
      147 const int sgN = BN != 1 ? (simd_gid % BN) : 0;
      -
      148
      -
      149 const int simdM = BN != 1 ? SM * (simd_gid / BN) : int(SM * simd_gid);
      -
      150 const int simdN = BN != 1 ? SN * (simd_gid % BN) : 0;
      -
      151
      -
      152 int bm = (simdM + thrM) * TM;
      -
      153 int bn = (simdN + thrN) * TN;
      -
      154
      -
      155 // Block position
      -
      156 int out_row = tid.x * blockM + bm;
      -
      157
      -
      158 // Exit simdgroup if rows out of bound
      -
      159 if (out_row >= out_vec_size)
      -
      160 return;
      -
      161
      -
      162 // Adjust tail simdgroup to ensure in bound reads
      -
      163 out_row = out_row + TM <= out_vec_size ? out_row : out_vec_size - TM;
      -
      164
      -
      165 // Prepare mask offsets
      -
      166 const constant int* out_mask_strides = mask_strides;
      -
      167 const constant int* mat_mask_strides =
      -
      168 mask_strides + (has_output_mask ? 2 : 0);
      -
      169 const constant int* vec_mask_strides =
      -
      170 mat_mask_strides + (has_operand_mask ? 2 : 0);
      -
      171
      -
      172 const int m_block_idx = blockN > blockM ? out_row / blockN : int(tid.x);
      -
      173
      -
      174 const int out_mask_offset =
      -
      175 !has_output_mask ? 0 : m_block_idx * out_mask_strides[1];
      -
      176
      -
      177 int mat_mask_offset =
      -
      178 !has_operand_mask ? 0 : m_block_idx * mat_mask_strides[1];
      -
      179 int vec_mask_offset = 0;
      -
      180 const int mat_mask_step = !has_operand_mask ? 0 : mat_mask_strides[0];
      -
      181 const int vec_mask_step = !has_operand_mask ? 0 : vec_mask_strides[1];
      -
      182
      -
      183 T out_scale{1};
      -
      184
      -
      185 // Check output mask
      -
      186 if (has_output_mask) {
      -
      187 auto mask_out = out_mask[out_mask_offset];
      -
      188
      -
      189 // Write zeros and return if mask is 0
      -
      190 if (!mask_out) {
      -
      191 if (simdN == 0 && thrN == 0) {
      - -
      193 for (int tm = 0; tm < TM; tm++) {
      -
      194 out_vec[out_row + tm] = T(0.);
      -
      195 }
      -
      196 }
      -
      197
      -
      198 return;
      -
      199 }
      -
      200
      -
      201 // Store scalar if multiplicative mask
      - -
      203 out_scale = T(mask_out);
      -
      204 }
      -
      205 }
      -
      206
      -
      207 // Advance matrix
      -
      208 mat += out_row * matrix_ld;
      -
      209
      -
      210 // Prepare for loop
      -
      211 constexpr const uniform<int> loop_stride = make_uniform(blockN);
      -
      212 const uniform<int> in_size = make_uniform(in_vec_size);
      -
      213 const uniform<int> n_iter = in_size / loop_stride;
      -
      214 const uniform<int> last_iter = loop_stride * n_iter;
      -
      215 const uniform<int> leftover = in_size - last_iter;
      -
      216
      -
      217 // Loop over in_vec in blocks of blockN
      -
      218 for (int i = 0; i < n_iter; ++i) {
      -
      219 if (!has_operand_mask ||
      -
      220 (bool(mat_mask[mat_mask_offset]) &&
      -
      221 bool(vec_mask[vec_mask_offset]))) {
      -
      222 T block_scale{1};
      - -
      224 block_scale =
      -
      225 T(mat_mask[mat_mask_offset]) * T(vec_mask[vec_mask_offset]);
      -
      226 }
      -
      227
      -
      228 load_unsafe(in_vec, v_coeff, bn);
      -
      229
      -
      230 // Apply scale
      - - -
      233 for (int tn = 0; tn < TN; tn++) {
      -
      234 v_coeff[tn] *= block_scale;
      -
      235 }
      -
      236 }
      -
      237
      -
      238 // Per thread work loop
      -
      239 int mat_offset = 0;
      - -
      241 for (int tm = 0; tm < TM; tm++) {
      -
      242 // Load for the row
      -
      243 load_unsafe(mat, inter, mat_offset + bn);
      -
      244
      -
      245 // Accumulate results
      - -
      247 for (int tn = 0; tn < TN; tn++) {
      -
      248 result[tm] += inter[tn] * v_coeff[tn];
      -
      249 }
      -
      250
      -
      251 mat_offset += matrix_ld;
      -
      252 }
      -
      253 }
      -
      254
      -
      255 bn += blockN;
      -
      256 mat_mask_offset += mat_mask_step;
      -
      257 vec_mask_offset += vec_mask_step;
      -
      258 }
      -
      259
      -
      260 if (leftover > 0 &&
      - -
      262 (bool(mat_mask[mat_mask_offset]) &&
      -
      263 bool(vec_mask[vec_mask_offset])))) {
      -
      264 T block_scale{1};
      - -
      266 block_scale =
      -
      267 T(mat_mask[mat_mask_offset]) * T(vec_mask[vec_mask_offset]);
      -
      268 }
      -
      269
      -
      270 load_safe(in_vec, v_coeff, bn, in_size);
      -
      271
      -
      272 // Apply scale
      - - -
      275 for (int tn = 0; tn < TN; tn++) {
      -
      276 v_coeff[tn] *= block_scale;
      -
      277 }
      -
      278 }
      -
      279
      -
      280 // Per thread work loop
      - -
      282 for (int tm = 0; tm < TM; tm++) {
      -
      283 // Load for the row
      -
      284 load_safe(&mat[tm * matrix_ld], inter, bn, in_size);
      -
      285
      -
      286 // Accumulate results
      - -
      288 for (int tn = 0; tn < TN; tn++) {
      -
      289 result[tm] += inter[tn] * v_coeff[tn];
      -
      290 }
      -
      291 }
      -
      292 }
      -
      293
      -
      294 // Apply out scale
      - - -
      297 for (int tm = 0; tm < TM; tm++) {
      -
      298 result[tm] *= out_scale;
      -
      299 }
      -
      300 }
      -
      301
      -
      302 // Simdgroup accumulations
      - -
      304 for (int tm = 0; tm < TM; tm++) {
      - -
      306 for (ushort sn = (SN / 2); sn >= 1; sn >>= 1) {
      -
      307 result[tm] += simd_shuffle_down(result[tm], sn);
      -
      308 }
      -
      309 }
      -
      310
      -
      311 // Threadgroup accumulation results
      - -
      313 threadgroup T* tgp_results = tgp_memory + sgN * (blockM + TM) + bm;
      -
      314 if (thrN == 0) {
      - -
      316 for (int tm = 0; tm < TM; tm++) {
      -
      317 tgp_results[tm] = result[tm];
      -
      318 }
      -
      319
      -
      320 threadgroup_barrier(mem_flags::mem_none);
      -
      321
      -
      322 if (sgN == 0) {
      - -
      324 for (int sgn = 1; sgn < BN; sgn++) {
      - -
      326 for (int tm = 0; tm < TM; tm++) {
      -
      327 result[tm] += tgp_results[sgn * (blockM + TM) + tm];
      -
      328 }
      -
      329 }
      -
      330 }
      -
      331 }
      -
      332 }
      -
      333
      -
      334 // Write outputs
      -
      335 if (simdN == 0 && thrN == 0) {
      - -
      337 for (int tm = 0; tm < TM; tm++) {
      -
      338 out_vec[out_row + tm] = result[tm];
      -
      339 }
      -
      340 }
      -
      341 }
      -
      -
      342};
      -
      -
      343
      -
      347
      -
      348template <
      -
      349 typename T,
      -
      350 typename out_mask_t,
      -
      351 typename op_mask_t,
      -
      352 const int BM, /* Threadgroup rows (in simdgroups) */
      -
      353 const int BN, /* Threadgroup cols (in simdgroups) */
      -
      354 const int SM, /* Simdgroup rows (in threads) */
      -
      355 const int SN, /* Simdgroup cols (in threads) */
      -
      356 const int TM, /* Thread rows (in elements) */
      -
      357 const int TN> /* Thread cols (in elements) */
      -
      - -
      359 MLX_MTL_CONST int threadsM = BM * SM;
      -
      360 MLX_MTL_CONST int threadsN = BN * SN;
      -
      361
      - - -
      364
      -
      365 static_assert(SM * SN == 32, "simdgroup can only have 32 threads");
      -
      366
      -
      367 MLX_MTL_CONST bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>;
      -
      368 MLX_MTL_CONST bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>;
      -
      369
      - -
      371 has_operand_mask && !metal::is_same_v<op_mask_t, bool>;
      - -
      373 has_output_mask && !metal::is_same_v<out_mask_t, bool>;
      -
      374
      -
      375 // - The matrix of size (M = in_vec_size, N = out_vec_size) is divided up
      -
      376 // into blocks of (blockM, blockN) divided among threadgroups
      -
      377 // - Every thread works on a block of (TM, TN)
      -
      378 // - We assume each threadgroup has (threadsN, threadsM, 1) threads
      -
      379 //
      -
      380 // 1. A thread loads TN elements each from mat along TM contiguous rows
      -
      381 // and the corresponding scalar from the vector
      -
      382 // 2. The thread then accumulates its local result for the block
      -
      383 // 3. At the end, each thread has accumulated results over all blocks across
      -
      384 // the rows. These are then summed up across the threadgroup
      -
      385 // 4. Each threadgroup writes its accumulated BN * TN outputs
      -
      386 //
      -
      387 // Edge case handling:
      -
      388 // - The threadgroup with the largest tid has blocks that exceed the matrix
      -
      389 // * The blocks that start outside the matrix are never read (thread results
      -
      390 // remain zero)
      -
      391 // * The last thread that partially overlaps with the matrix is shifted
      -
      392 // inwards such that the thread block fits exactly in the matrix
      -
      393
      -
      394 MLX_MTL_CONST short tgp_mem_size = BM > 1 ? BM*(blockN + TN) : 0;
      - -
      396
      -
      -
      397 static METAL_FUNC void run(
      -
      398 const device T* mat [[buffer(0)]],
      -
      399 const device T* in_vec [[buffer(1)]],
      -
      400 device T* out_vec [[buffer(3)]],
      -
      401 const constant int& in_vec_size [[buffer(4)]],
      -
      402 const constant int& out_vec_size [[buffer(5)]],
      -
      403 const constant int& marix_ld [[buffer(6)]],
      -
      404 const device out_mask_t* out_mask [[buffer(20)]],
      -
      405 const device op_mask_t* mat_mask [[buffer(21)]],
      -
      406 const device op_mask_t* vec_mask [[buffer(22)]],
      -
      407 const constant int* mask_strides [[buffer(23)]],
      -
      408 threadgroup T* tgp_memory [[threadgroup(0)]],
      -
      409 uint3 tid [[threadgroup_position_in_grid]],
      -
      410 uint3 lid [[thread_position_in_threadgroup]],
      -
      411 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      412 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      413 // Appease compiler
      -
      414 (void)lid;
      -
      415
      -
      416 // Thread local accumulation results
      -
      417 T result[TN] = {0};
      -
      418 T inter[TN];
      -
      419 T v_coeff[TM];
      -
      420
      -
      421 const int thrM = SN != 32 ? simd_lid / SN : 0;
      -
      422 const int thrN = SN != 32 ? simd_lid % SN : int(simd_lid);
      -
      423
      -
      424 const int sgM = BN != 1 ? (simd_gid / BN) : int(simd_gid);
      -
      425 const int sgN = BN != 1 ? (simd_gid % BN) : 0;
      -
      426
      -
      427 const int simdM = SM * sgM;
      -
      428 const int simdN = SN * sgN;
      -
      429
      -
      430 int cm = (simdM + thrM);
      -
      431 int cn = (simdN + thrN);
      -
      432
      -
      433 int bm = cm * TM;
      -
      434 int bn = cn * TN;
      -
      435
      -
      436 int out_col = tid.x * blockN + bn;
      -
      437
      -
      438 // Prepare mask offsets
      -
      439 const constant int* out_mask_strides = mask_strides;
      -
      440 const constant int* mat_mask_strides =
      -
      441 out_mask_strides + (has_output_mask ? 2 : 0);
      -
      442 const constant int* vec_mask_strides =
      -
      443 mat_mask_strides + (has_operand_mask ? 2 : 0);
      -
      444
      -
      445 const int n_block_idx = blockM > blockN ? out_col / blockM : int(tid.x);
      -
      446
      -
      447 const int out_mask_offset =
      -
      448 !has_output_mask ? 0 : n_block_idx; // * out_mask_strides[0];
      -
      449
      -
      450 int mat_mask_offset =
      -
      451 !has_operand_mask ? 0 : n_block_idx * mat_mask_strides[0];
      -
      452 int vec_mask_offset = 0;
      -
      453 const int mat_mask_step = !has_operand_mask ? 0 : mat_mask_strides[1];
      -
      454 const int vec_mask_step = !has_operand_mask ? 0 : vec_mask_strides[0];
      -
      455
      -
      456 T out_scale{1};
      -
      457
      -
      458 // Check output mask
      -
      459 if (has_output_mask) {
      -
      460 auto mask_out = out_mask[out_mask_offset];
      -
      461
      -
      462 // Write zeros and return if mask is 0
      -
      463 if (!mask_out) {
      -
      464 if (cm == 0 && out_col < out_vec_size) {
      -
      465 if (out_col + TN <= out_vec_size) {
      - -
      467 for (int tn = 0; tn < TN; tn++) {
      -
      468 out_vec[out_col + tn] = T(0.);
      -
      469 }
      -
      470 } else {
      -
      471 for (int tn = 0; tn < TN && (out_col + tn) < out_vec_size; tn++) {
      -
      472 out_vec[out_col + tn] = T(0.);
      -
      473 }
      -
      474 }
      -
      475 }
      -
      476
      -
      477 return;
      -
      478 }
      -
      479
      -
      480 // Store scalar if multiplicative mask
      - -
      482 out_scale = T(mask_out);
      -
      483 }
      -
      484 }
      -
      485
      -
      486 // Prepare for loop
      -
      487 constexpr const uniform<int> loop_stride = make_uniform(blockM);
      -
      488 const uniform<int> in_size = make_uniform(in_vec_size);
      -
      489 const uniform<int> n_iter = in_size / loop_stride;
      -
      490 const uniform<int> last_iter = loop_stride * n_iter;
      -
      491 const uniform<int> leftover = in_size - last_iter;
      -
      492
      -
      493 // Edgecase handling
      -
      494 if (out_col < out_vec_size) {
      -
      495 out_col = (out_col + TN) <= out_vec_size ? out_col : out_vec_size - TN;
      -
      496
      -
      497 // Per thread accumulation main loop
      -
      498 for (int i = 0; i < n_iter; ++i) {
      -
      499 // Adding a threadgroup_barrier improves performance slightly
      -
      500 // This is possibly it may help exploit cache better
      -
      501 threadgroup_barrier(mem_flags::mem_none);
      -
      502
      -
      503 if (!has_operand_mask ||
      -
      504 (bool(mat_mask[mat_mask_offset]) &&
      -
      505 bool(vec_mask[vec_mask_offset]))) {
      -
      506 T block_scale{1};
      - -
      508 block_scale =
      -
      509 T(mat_mask[mat_mask_offset]) * T(vec_mask[vec_mask_offset]);
      -
      510 }
      -
      511
      - -
      513 for (int tm = 0; tm < TM; tm++) {
      -
      514 v_coeff[tm] = in_vec[bm + tm];
      -
      515 }
      -
      516
      -
      517 // Apply scale
      - - -
      520 for (int tm = 0; tm < TM; tm++) {
      -
      521 v_coeff[tm] *= block_scale;
      -
      522 }
      -
      523 }
      -
      524
      - -
      526 for (int tm = 0; tm < TM; tm++) {
      -
      527 for (int tn = 0; tn < TN; tn++) {
      -
      528 inter[tn] = mat[(bm + tm) * marix_ld + out_col + tn];
      -
      529 }
      -
      530 for (int tn = 0; tn < TN; tn++) {
      -
      531 result[tn] += v_coeff[tm] * inter[tn];
      -
      532 }
      -
      533 }
      -
      534 }
      -
      535
      -
      536 bm += blockM;
      -
      537 mat_mask_offset += mat_mask_step;
      -
      538 vec_mask_offset += vec_mask_step;
      -
      539 }
      -
      540
      -
      541 if (leftover > 0 &&
      - -
      543 (bool(mat_mask[mat_mask_offset]) &&
      -
      544 bool(vec_mask[vec_mask_offset])))) {
      -
      545 T block_scale{1};
      - -
      547 block_scale =
      -
      548 T(mat_mask[mat_mask_offset]) * T(vec_mask[vec_mask_offset]);
      -
      549 }
      -
      550
      -
      551 for (int tm = 0; tm < TM && bm + tm < in_vec_size; tm++) {
      -
      552 v_coeff[tm] = in_vec[bm + tm];
      -
      553
      - -
      555 v_coeff[tm] *= block_scale;
      -
      556 }
      -
      557
      - -
      559 for (int tn = 0; tn < TN; tn++) {
      -
      560 inter[tn] = mat[(bm + tm) * marix_ld + out_col + tn];
      -
      561 }
      -
      562
      - -
      564 for (int tn = 0; tn < TN; tn++) {
      -
      565 result[tn] += v_coeff[tm] * inter[tn];
      -
      566 }
      -
      567 }
      -
      568 }
      -
      569 }
      -
      570
      -
      571 // Apply out scale
      - - -
      574 for (int tn = 0; tn < TN; tn++) {
      -
      575 result[tn] *= out_scale;
      -
      576 }
      -
      577 }
      -
      578
      -
      579 // Simdgroup accumulations
      - -
      581 for (int tn = 0; tn < TN; tn++) {
      - -
      583 for (ushort sm = (SM / 2); sm >= 1; sm >>= 1) {
      -
      584 result[tn] += simd_shuffle_down(result[tn], SN * sm);
      -
      585 }
      -
      586 }
      -
      587
      -
      588 // Threadgroup accumulation results
      - -
      590 threadgroup T* tgp_results = tgp_memory + sgM * (blockN + TN) + bn;
      -
      591 if (thrM == 0) {
      - -
      593 for (int tn = 0; tn < TN; tn++) {
      -
      594 tgp_results[tn] = result[tn];
      -
      595 }
      -
      596
      -
      597 threadgroup_barrier(mem_flags::mem_none);
      -
      598
      -
      599 if (sgM == 0) {
      - -
      601 for (int sgm = 1; sgm < BM; sgm++) {
      - -
      603 for (int tn = 0; tn < TN; tn++) {
      -
      604 result[tn] += tgp_results[sgm * (blockN + TN) + tn];
      -
      605 }
      -
      606 }
      -
      607 }
      -
      608 }
      -
      609 }
      -
      610
      -
      611 // Threadgroup accumulation and writing out results
      -
      612 if (cm == 0 && out_col < out_vec_size) {
      - -
      614 for (int j = 0; j < TN; j++) {
      -
      615 out_vec[out_col + j] = result[j];
      -
      616 }
      -
      617 }
      -
      618 }
      -
      -
      619};
      -
      -
      620
      -
      624
      -
      625template <
      -
      626 typename T,
      -
      627 typename out_mask_t,
      -
      628 typename op_mask_t,
      -
      629 const int BM, /* Threadgroup rows (in simdgroups) */
      -
      630 const int BN, /* Threadgroup cols (in simdgroups) */
      -
      631 const int SM, /* Simdgroup rows (in threads) */
      -
      632 const int SN, /* Simdgroup cols (in threads) */
      -
      633 const int TM, /* Thread rows (in elements) */
      -
      634 const int TN, /* Thread cols (in elements) */
      -
      635 const bool kDoNCBatch> /* Batch ndim > 1 */
      -
      -
      636[[kernel, max_total_threads_per_threadgroup(BM* BN * 32)]] void gemv_masked(
      -
      637 const device T* mat [[buffer(0)]],
      -
      638 const device T* in_vec [[buffer(1)]],
      -
      639 device T* out_vec [[buffer(3)]],
      -
      640 const constant int& in_vec_size [[buffer(4)]],
      -
      641 const constant int& out_vec_size [[buffer(5)]],
      -
      642 const constant int& marix_ld [[buffer(6)]],
      -
      643 const constant int& batch_ndim [[buffer(9)]],
      -
      644 const constant int* batch_shape [[buffer(10)]],
      -
      645 const constant size_t* vector_batch_stride [[buffer(11)]],
      -
      646 const constant size_t* matrix_batch_stride [[buffer(12)]],
      -
      647 const device out_mask_t* out_mask [[buffer(20)]],
      -
      648 const device op_mask_t* mat_mask [[buffer(21)]],
      -
      649 const device op_mask_t* vec_mask [[buffer(22)]],
      -
      650 const constant int* mask_strides [[buffer(23)]],
      -
      651 const constant size_t* mask_batch_strides [[buffer(24)]],
      -
      652 uint3 tid [[threadgroup_position_in_grid]],
      -
      653 uint3 lid [[thread_position_in_threadgroup]],
      -
      654 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      655 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      656 using gemv_kernel =
      - -
      658 threadgroup T tgp_memory
      -
      659 [gemv_kernel::tgp_mem_size == 0 ? 1 : gemv_kernel::tgp_mem_size];
      -
      660
      -
      661 constexpr bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>;
      -
      662 constexpr bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>;
      -
      663
      -
      664 // Update batch offsets
      -
      665 if (kDoNCBatch) {
      -
      666 in_vec += elem_to_loc(tid.z, batch_shape, vector_batch_stride, batch_ndim);
      -
      667 mat += elem_to_loc(tid.z, batch_shape, matrix_batch_stride, batch_ndim);
      -
      668
      -
      669 if (has_output_mask) {
      -
      670 out_mask +=
      -
      671 elem_to_loc(tid.z, batch_shape, mask_batch_strides, batch_ndim);
      -
      672 mask_batch_strides += batch_ndim;
      -
      673 }
      -
      674
      -
      675 if (has_operand_mask) {
      -
      676 const constant size_t* mask_strides_mat = mask_batch_strides;
      -
      677 const constant size_t* mask_strides_vec = mask_strides_mat + batch_ndim;
      -
      678
      -
      679 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      680 tid.z, batch_shape, mask_strides_mat, mask_strides_vec, batch_ndim);
      -
      681
      -
      682 mat_mask += batch_offsets.x;
      -
      683 vec_mask += batch_offsets.y;
      -
      684 }
      -
      685
      -
      686 } else {
      -
      687 in_vec += tid.z * vector_batch_stride[0];
      -
      688 mat += tid.z * matrix_batch_stride[0];
      -
      689
      -
      690 if (has_output_mask) {
      -
      691 out_mask += tid.z * mask_batch_strides[0];
      -
      692 mask_batch_strides += batch_ndim;
      -
      693 }
      -
      694
      -
      695 if (has_operand_mask) {
      -
      696 mat_mask += tid.z * mask_batch_strides[0];
      -
      697 vec_mask += tid.z * mask_batch_strides[batch_ndim];
      -
      698 }
      -
      699 }
      -
      700
      -
      701 out_vec += tid.z * out_vec_size;
      -
      702
      -
      703 gemv_kernel::run(
      -
      704 mat,
      -
      705 in_vec,
      -
      706 out_vec,
      -
      707 in_vec_size,
      -
      708 out_vec_size,
      -
      709 marix_ld,
      -
      710 out_mask,
      -
      711 mat_mask,
      -
      712 vec_mask,
      -
      713 mask_strides,
      -
      714 gemv_kernel::tgp_mem_size == 0 ? nullptr : tgp_memory,
      -
      715 tid,
      -
      716 lid,
      -
      717 simd_gid,
      -
      718 simd_lid);
      -
      719}
      -
      -
      720
      -
      724
      -
      725template <
      -
      726 typename T,
      -
      727 typename out_mask_t,
      -
      728 typename op_mask_t,
      -
      729 const int BM, /* Threadgroup rows (in simdgroups) */
      -
      730 const int BN, /* Threadgroup cols (in simdgroups) */
      -
      731 const int SM, /* Simdgroup rows (in threads) */
      -
      732 const int SN, /* Simdgroup cols (in threads) */
      -
      733 const int TM, /* Thread rows (in elements) */
      -
      734 const int TN, /* Thread cols (in elements) */
      -
      735 const bool kDoNCBatch> /* Batch ndim > 1 */
      -
      -
      736[[kernel, max_total_threads_per_threadgroup(BM* BN * 32)]] void gemv_t_masked(
      -
      737 const device T* mat [[buffer(0)]],
      -
      738 const device T* in_vec [[buffer(1)]],
      -
      739 device T* out_vec [[buffer(3)]],
      -
      740 const constant int& in_vec_size [[buffer(4)]],
      -
      741 const constant int& out_vec_size [[buffer(5)]],
      -
      742 const constant int& marix_ld [[buffer(6)]],
      -
      743 const constant int& batch_ndim [[buffer(9)]],
      -
      744 const constant int* batch_shape [[buffer(10)]],
      -
      745 const constant size_t* vector_batch_stride [[buffer(11)]],
      -
      746 const constant size_t* matrix_batch_stride [[buffer(12)]],
      -
      747 const device out_mask_t* out_mask [[buffer(20)]],
      -
      748 const device op_mask_t* mat_mask [[buffer(21)]],
      -
      749 const device op_mask_t* vec_mask [[buffer(22)]],
      -
      750 const constant int* mask_strides [[buffer(23)]],
      -
      751 const constant size_t* mask_batch_strides [[buffer(24)]],
      -
      752 uint3 tid [[threadgroup_position_in_grid]],
      -
      753 uint3 lid [[thread_position_in_threadgroup]],
      -
      754 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      755 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      756 using gemv_kernel =
      - -
      758 threadgroup T tgp_memory
      -
      759 [gemv_kernel::tgp_mem_size == 0 ? 1 : gemv_kernel::tgp_mem_size];
      -
      760
      -
      761 constexpr bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>;
      -
      762 constexpr bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>;
      -
      763
      -
      764 // Update batch offsets
      -
      765 if (kDoNCBatch) {
      -
      766 in_vec += elem_to_loc(tid.z, batch_shape, vector_batch_stride, batch_ndim);
      -
      767 mat += elem_to_loc(tid.z, batch_shape, matrix_batch_stride, batch_ndim);
      -
      768
      -
      769 if (has_output_mask) {
      -
      770 out_mask +=
      -
      771 elem_to_loc(tid.z, batch_shape, mask_batch_strides, batch_ndim);
      -
      772 mask_batch_strides += batch_ndim;
      -
      773 }
      -
      774
      -
      775 if (has_operand_mask) {
      -
      776 const constant size_t* mask_strides_mat = mask_batch_strides;
      -
      777 const constant size_t* mask_strides_vec = mask_strides_mat + batch_ndim;
      -
      778
      -
      779 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      780 tid.z, batch_shape, mask_strides_mat, mask_strides_vec, batch_ndim);
      -
      781
      -
      782 mat_mask += batch_offsets.x;
      -
      783 vec_mask += batch_offsets.y;
      -
      784 }
      -
      785
      -
      786 } else {
      -
      787 in_vec += tid.z * vector_batch_stride[0];
      -
      788 mat += tid.z * matrix_batch_stride[0];
      -
      789
      -
      790 if (has_output_mask) {
      -
      791 out_mask += tid.z * mask_batch_strides[0];
      -
      792 mask_batch_strides += batch_ndim;
      -
      793 }
      -
      794
      -
      795 if (has_operand_mask) {
      -
      796 mat_mask += tid.z * mask_batch_strides[0];
      -
      797 vec_mask += tid.z * mask_batch_strides[batch_ndim];
      -
      798 }
      -
      799 }
      -
      800
      -
      801 out_vec += tid.z * out_vec_size;
      -
      802
      -
      803 gemv_kernel::run(
      -
      804 mat,
      -
      805 in_vec,
      -
      806 out_vec,
      -
      807 in_vec_size,
      -
      808 out_vec_size,
      -
      809 marix_ld,
      -
      810 out_mask,
      -
      811 mat_mask,
      -
      812 vec_mask,
      -
      813 mask_strides,
      -
      814 gemv_kernel::tgp_mem_size == 0 ? nullptr : tgp_memory,
      -
      815 tid,
      -
      816 lid,
      -
      817 simd_gid,
      -
      818 simd_lid);
      -
      819}
      -
      - -
      METAL_FUNC ulong2 elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
      Definition utils.h:7
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      #define MLX_MTL_CONST
      Definition gemv_masked.h:7
      -
      #define MLX_MTL_PRAGMA_UNROLL
      Definition gemv_masked.h:8
      -
      void gemv_t_masked(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const constant int &batch_ndim, const constant int *batch_shape, const constant size_t *vector_batch_stride, const constant size_t *matrix_batch_stride, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, const constant size_t *mask_batch_strides, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
      Vector matrix multiplication.
      Definition gemv_masked.h:736
      -
      void gemv_masked(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const constant int &batch_ndim, const constant int *batch_shape, const constant size_t *vector_batch_stride, const constant size_t *matrix_batch_stride, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, const constant size_t *mask_batch_strides, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
      Matrix vector multiplication.
      Definition gemv_masked.h:636
      -
      Definition bf16.h:265
      -
      METAL_FUNC bfloat16_t simd_shuffle_down(bfloat16_t data, ushort delta)
      Definition bf16_math.h:391
      -
      Definition gemv_masked.h:10
      -
      char x
      Definition gemv_masked.h:11
      -
      Definition gemv_masked.h:48
      -
      static METAL_FUNC void load_safe(const device T *src, thread T dst[TN], const int src_offset=0, const int src_size=TN)
      Definition gemv_masked.h:102
      -
      static constant constexpr const bool has_mul_output_mask
      Definition gemv_masked.h:68
      -
      static constant constexpr const int threadsM
      Definition gemv_masked.h:49
      -
      static constant constexpr const int blockN
      Definition gemv_masked.h:53
      -
      static constant constexpr const int threadsN
      Definition gemv_masked.h:50
      -
      static METAL_FUNC void load_unsafe(const device T *src, thread T dst[TN], const int src_offset=0)
      Definition gemv_masked.h:95
      -
      static constant constexpr const int blockM
      Definition gemv_masked.h:52
      -
      static constant constexpr const short tgp_mem_size
      Definition gemv_masked.h:91
      -
      static constant constexpr const bool has_operand_mask
      Definition gemv_masked.h:63
      -
      static constant constexpr const bool has_output_mask
      Definition gemv_masked.h:64
      -
      static METAL_FUNC void run(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &matrix_ld, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, threadgroup T *tgp_memory, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
      Definition gemv_masked.h:120
      -
      static constant constexpr const bool has_mul_operand_mask
      Definition gemv_masked.h:66
      -
      static constant constexpr const bool needs_tgp_reduction
      Definition gemv_masked.h:92
      -
      Vector matrix multiplication.
      Definition gemv_masked.h:358
      -
      static constant constexpr const int blockM
      Definition gemv_masked.h:362
      -
      static constant constexpr const short tgp_mem_size
      Definition gemv_masked.h:394
      -
      static constant constexpr const int threadsM
      Definition gemv_masked.h:359
      -
      static METAL_FUNC void run(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, threadgroup T *tgp_memory, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
      Definition gemv_masked.h:397
      -
      static constant constexpr const int blockN
      Definition gemv_masked.h:363
      -
      static constant constexpr const bool has_operand_mask
      Definition gemv_masked.h:367
      -
      static constant constexpr const bool needs_tgp_reduction
      Definition gemv_masked.h:395
      -
      static constant constexpr const bool has_mul_operand_mask
      Definition gemv_masked.h:370
      -
      static constant constexpr const bool has_mul_output_mask
      Definition gemv_masked.h:372
      -
      static constant constexpr const bool has_output_mask
      Definition gemv_masked.h:368
      -
      static constant constexpr const int threadsN
      Definition gemv_masked.h:360
      -
      Definition gemv_masked.h:30
      -
      OutT scale
      Definition gemv_masked.h:31
      -
      METAL_FUNC OutT apply(InT x) const
      Definition gemv_masked.h:33
      -
      - - - - diff --git a/docs/build/html/kernels_2indexing_8h.html b/docs/build/html/kernels_2indexing_8h.html deleted file mode 100644 index e5f2ae08..00000000 --- a/docs/build/html/kernels_2indexing_8h.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/indexing.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      indexing.h File Reference
      -
      -
      -
      #include <metal_stdlib>
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      struct  Indices< IdxT, NIDX >
       
      - - - - -

      -Functions

      template<typename IdxT >
      METAL_FUNC size_t offset_neg_idx (IdxT idx, size_t size)
       
      -

      Function Documentation

      - -

      ◆ offset_neg_idx()

      - -
      -
      -
      -template<typename IdxT >
      - - - - - - - - - - - -
      METAL_FUNC size_t offset_neg_idx (IdxT idx,
      size_t size )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/kernels_2indexing_8h_source.html b/docs/build/html/kernels_2indexing_8h_source.html deleted file mode 100644 index d17b2baa..00000000 --- a/docs/build/html/kernels_2indexing_8h_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/indexing.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      indexing.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <metal_stdlib>
      -
      6
      -
      7template <typename IdxT, int NIDX>
      -
      -
      8struct Indices {
      -
      9 const array<const device IdxT*, NIDX> buffers;
      -
      10 const constant int* shapes;
      -
      11 const constant size_t* strides;
      -
      12 const int ndim;
      -
      13};
      -
      -
      14
      -
      15template <typename IdxT>
      -
      -
      16METAL_FUNC size_t offset_neg_idx(IdxT idx, size_t size) {
      -
      17 if (is_unsigned_v<IdxT>) {
      -
      18 return idx;
      -
      19 } else {
      -
      20 return (idx < 0) ? idx + size : idx;
      -
      21 }
      -
      22}
      -
      -
      METAL_FUNC size_t offset_neg_idx(IdxT idx, size_t size)
      Definition indexing.h:16
      -
      Definition indexing.h:8
      -
      const constant int * shapes
      Definition indexing.h:10
      -
      const int ndim
      Definition indexing.h:12
      -
      const constant size_t * strides
      Definition indexing.h:11
      -
      const array< const device IdxT *, NIDX > buffers
      Definition indexing.h:9
      -
      - - - - diff --git a/docs/build/html/kernels_2scan_8h.html b/docs/build/html/kernels_2scan_8h.html deleted file mode 100644 index c42de772..00000000 --- a/docs/build/html/kernels_2scan_8h.html +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/scan.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      scan.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - -

      -Classes

      struct  CumSum< U >
       
      struct  CumProd< U >
       
      struct  CumProd< bool >
       
      struct  CumMax< U >
       
      struct  CumMin< U >
       
      - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename U , int N_READS, bool reverse>
      void load_unsafe (U values[N_READS], const device T *input)
       
      template<typename T , typename U , int N_READS, bool reverse>
      void load_safe (U values[N_READS], const device T *input, int start, int total, U init)
       
      template<typename U , int N_READS, bool reverse>
      void write_unsafe (U values[N_READS], device U *out)
       
      template<typename U , int N_READS, bool reverse>
      void write_safe (U values[N_READS], device U *out, int start, int total)
       
      template<typename T , typename U , typename Op , int N_READS, bool inclusive, bool reverse>
      void contiguous_scan (const device T *in, device U *out, const constant size_t &axis_size, uint gid, uint lid, uint lsize, uint simd_size, uint simd_lane_id, uint simd_group_id)
       
      template<typename T , typename U , typename Op , int N_READS, bool inclusive, bool reverse>
      void strided_scan (const device T *in, device U *out, const constant size_t &axis_size, const constant size_t &stride, uint2 gid, uint2 lid, uint2 lsize, uint simd_size)
       
      -

      Function Documentation

      - -

      ◆ contiguous_scan()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS, bool inclusive, bool reverse>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void contiguous_scan (const device T * in,
      device U * out,
      const constant size_t & axis_size,
      uint gid,
      uint lid,
      uint lsize,
      uint simd_size,
      uint simd_lane_id,
      uint simd_group_id )
      -
      - -
      -
      - -

      ◆ load_safe()

      - -
      -
      -
      -template<typename T , typename U , int N_READS, bool reverse>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void load_safe (U values[N_READS],
      const device T * input,
      int start,
      int total,
      U init )
      -
      -inline
      -
      - -
      -
      - -

      ◆ load_unsafe()

      - -
      -
      -
      -template<typename T , typename U , int N_READS, bool reverse>
      - - - - - -
      - - - - - - - - - - - -
      void load_unsafe (U values[N_READS],
      const device T * input )
      -
      -inline
      -
      - -
      -
      - -

      ◆ strided_scan()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS, bool inclusive, bool reverse>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void strided_scan (const device T * in,
      device U * out,
      const constant size_t & axis_size,
      const constant size_t & stride,
      uint2 gid,
      uint2 lid,
      uint2 lsize,
      uint simd_size )
      -
      - -
      -
      - -

      ◆ write_safe()

      - -
      -
      -
      -template<typename U , int N_READS, bool reverse>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      void write_safe (U values[N_READS],
      device U * out,
      int start,
      int total )
      -
      -inline
      -
      - -
      -
      - -

      ◆ write_unsafe()

      - -
      -
      -
      -template<typename U , int N_READS, bool reverse>
      - - - - - -
      - - - - - - - - - - - -
      void write_unsafe (U values[N_READS],
      device U * out )
      -
      -inline
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/kernels_2scan_8h_source.html b/docs/build/html/kernels_2scan_8h_source.html deleted file mode 100644 index 2be78f1f..00000000 --- a/docs/build/html/kernels_2scan_8h_source.html +++ /dev/null @@ -1,618 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/scan.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      scan.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3template <typename U>
      -
      -
      4struct CumSum {
      -
      5 static constexpr constant U init = static_cast<U>(0);
      -
      6
      -
      7 template <typename T>
      -
      -
      8 U operator()(U a, T b) {
      -
      9 return a + b;
      -
      10 }
      -
      -
      11
      -
      -
      12 U simd_scan(U x) {
      -
      13 return simd_prefix_inclusive_sum(x);
      -
      14 }
      -
      -
      15
      -
      - -
      17 return simd_prefix_exclusive_sum(x);
      -
      18 }
      -
      -
      19};
      -
      -
      20
      -
      21template <typename U>
      -
      -
      22struct CumProd {
      -
      23 static constexpr constant U init = static_cast<U>(1.0f);
      -
      24
      -
      25 template <typename T>
      -
      -
      26 U operator()(U a, T b) {
      -
      27 return a * b;
      -
      28 }
      -
      -
      29
      -
      -
      30 U simd_scan(U x) {
      -
      31 return simd_prefix_inclusive_product(x);
      -
      32 }
      -
      -
      33
      -
      - -
      35 return simd_prefix_exclusive_product(x);
      -
      36 }
      -
      -
      37};
      -
      -
      38
      -
      39template <>
      -
      -
      40struct CumProd<bool> {
      -
      41 static constexpr constant bool init = true;
      -
      42
      -
      43 template <typename T>
      -
      -
      44 bool operator()(bool a, T b) {
      -
      45 return a & static_cast<bool>(b);
      -
      46 }
      -
      -
      47
      -
      -
      48 bool simd_scan(bool x) {
      -
      49 for (int i = 1; i <= 16; i *= 2) {
      -
      50 bool other = simd_shuffle_up(x, i);
      -
      51 x &= other;
      -
      52 }
      -
      53 return x;
      -
      54 }
      -
      -
      55
      -
      -
      56 bool simd_exclusive_scan(bool x) {
      -
      57 x = simd_scan(x);
      -
      58 return simd_shuffle_and_fill_up(x, init, 1);
      -
      59 }
      -
      -
      60};
      -
      -
      61
      -
      62template <typename U>
      -
      -
      63struct CumMax {
      -
      64 static constexpr constant U init = Limits<U>::min;
      -
      65
      -
      66 template <typename T>
      -
      -
      67 U operator()(U a, T b) {
      -
      68 return (a >= b) ? a : b;
      -
      69 }
      -
      -
      70
      -
      -
      71 U simd_scan(U x) {
      -
      72 for (int i = 1; i <= 16; i *= 2) {
      -
      73 U other = simd_shuffle_up(x, i);
      -
      74 x = (x >= other) ? x : other;
      -
      75 }
      -
      76 return x;
      -
      77 }
      -
      -
      78
      -
      - -
      80 x = simd_scan(x);
      -
      81 return simd_shuffle_and_fill_up(x, init, 1);
      -
      82 }
      -
      -
      83};
      -
      -
      84
      -
      85template <typename U>
      -
      -
      86struct CumMin {
      -
      87 static constexpr constant U init = Limits<U>::max;
      -
      88
      -
      89 template <typename T>
      -
      -
      90 U operator()(U a, T b) {
      -
      91 return (a <= b) ? a : b;
      -
      92 }
      -
      -
      93
      -
      -
      94 U simd_scan(U x) {
      -
      95 for (int i = 1; i <= 16; i *= 2) {
      -
      96 U other = simd_shuffle_up(x, i);
      -
      97 x = (x <= other) ? x : other;
      -
      98 }
      -
      99 return x;
      -
      100 }
      -
      -
      101
      -
      - -
      103 x = simd_scan(x);
      -
      104 return simd_shuffle_and_fill_up(x, init, 1);
      -
      105 }
      -
      -
      106};
      -
      -
      107
      -
      108template <typename T, typename U, int N_READS, bool reverse>
      -
      -
      109inline void load_unsafe(U values[N_READS], const device T* input) {
      -
      110 if (reverse) {
      -
      111 for (int i = 0; i < N_READS; i++) {
      -
      112 values[N_READS - i - 1] = input[i];
      -
      113 }
      -
      114 } else {
      -
      115 for (int i = 0; i < N_READS; i++) {
      -
      116 values[i] = input[i];
      -
      117 }
      -
      118 }
      -
      119}
      -
      -
      120
      -
      121template <typename T, typename U, int N_READS, bool reverse>
      -
      -
      122inline void load_safe(
      -
      123 U values[N_READS],
      -
      124 const device T* input,
      -
      125 int start,
      -
      126 int total,
      -
      127 U init) {
      -
      128 if (reverse) {
      -
      129 for (int i = 0; i < N_READS; i++) {
      -
      130 values[N_READS - i - 1] =
      -
      131 (start + N_READS - i - 1 < total) ? input[i] : init;
      -
      132 }
      -
      133 } else {
      -
      134 for (int i = 0; i < N_READS; i++) {
      -
      135 values[i] = (start + i < total) ? input[i] : init;
      -
      136 }
      -
      137 }
      -
      138}
      -
      -
      139
      -
      140template <typename U, int N_READS, bool reverse>
      -
      -
      141inline void write_unsafe(U values[N_READS], device U* out) {
      -
      142 if (reverse) {
      -
      143 for (int i = 0; i < N_READS; i++) {
      -
      144 out[i] = values[N_READS - i - 1];
      -
      145 }
      -
      146 } else {
      -
      147 for (int i = 0; i < N_READS; i++) {
      -
      148 out[i] = values[i];
      -
      149 }
      -
      150 }
      -
      151}
      -
      -
      152
      -
      153template <typename U, int N_READS, bool reverse>
      -
      -
      154inline void write_safe(U values[N_READS], device U* out, int start, int total) {
      -
      155 if (reverse) {
      -
      156 for (int i = 0; i < N_READS; i++) {
      -
      157 if (start + N_READS - i - 1 < total) {
      -
      158 out[i] = values[N_READS - i - 1];
      -
      159 }
      -
      160 }
      -
      161 } else {
      -
      162 for (int i = 0; i < N_READS; i++) {
      -
      163 if (start + i < total) {
      -
      164 out[i] = values[i];
      -
      165 }
      -
      166 }
      -
      167 }
      -
      168}
      -
      -
      169
      -
      170template <
      -
      171 typename T,
      -
      172 typename U,
      -
      173 typename Op,
      -
      174 int N_READS,
      -
      175 bool inclusive,
      -
      176 bool reverse>
      -
      -
      177[[kernel]] void contiguous_scan(
      -
      178 const device T* in [[buffer(0)]],
      -
      179 device U* out [[buffer(1)]],
      -
      180 const constant size_t& axis_size [[buffer(2)]],
      -
      181 uint gid [[thread_position_in_grid]],
      -
      182 uint lid [[thread_position_in_threadgroup]],
      -
      183 uint lsize [[threads_per_threadgroup]],
      -
      184 uint simd_size [[threads_per_simdgroup]],
      -
      185 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      186 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      187 Op op;
      -
      188
      -
      189 // Position the pointers
      -
      190 in += (gid / lsize) * axis_size;
      -
      191 out += (gid / lsize) * axis_size;
      -
      192
      -
      193 // Compute the number of simd_groups
      -
      194 uint simd_groups = lsize / simd_size;
      -
      195
      -
      196 // Allocate memory
      -
      197 U prefix = Op::init;
      -
      198 U values[N_READS];
      -
      199 threadgroup U simdgroup_sums[32];
      -
      200
      -
      201 // Loop over the reduced axis in blocks of size ceildiv(axis_size,
      -
      202 // N_READS*lsize)
      -
      203 // Read block
      -
      204 // Compute inclusive scan of the block
      -
      205 // Compute inclusive scan per thread
      -
      206 // Compute exclusive scan of thread sums in simdgroup
      -
      207 // Write simdgroup sums in SM
      -
      208 // Compute exclusive scan of simdgroup sums
      -
      209 // Compute the output by scanning prefix, prev_simdgroup, prev_thread,
      -
      210 // value
      -
      211 // Write block
      -
      212
      -
      213 for (uint r = 0; r < ceildiv(axis_size, N_READS * lsize); r++) {
      -
      214 // Compute the block offset
      -
      215 uint offset = r * lsize * N_READS + lid * N_READS;
      -
      216
      -
      217 // Read the values
      -
      218 if (reverse) {
      -
      219 if ((offset + N_READS) < axis_size) {
      -
      220 load_unsafe<T, U, N_READS, reverse>(
      -
      221 values, in + axis_size - offset - N_READS);
      -
      222 } else {
      -
      223 load_safe<T, U, N_READS, reverse>(
      -
      224 values,
      -
      225 in + axis_size - offset - N_READS,
      -
      226 offset,
      -
      227 axis_size,
      -
      228 Op::init);
      -
      229 }
      -
      230 } else {
      -
      231 if ((offset + N_READS) < axis_size) {
      -
      232 load_unsafe<T, U, N_READS, reverse>(values, in + offset);
      -
      233 } else {
      -
      234 load_safe<T, U, N_READS, reverse>(
      -
      235 values, in + offset, offset, axis_size, Op::init);
      -
      236 }
      -
      237 }
      -
      238
      -
      239 // Compute an inclusive scan per thread
      -
      240 for (int i = 1; i < N_READS; i++) {
      -
      241 values[i] = op(values[i], values[i - 1]);
      -
      242 }
      -
      243
      -
      244 // Compute exclusive scan of thread sums
      -
      245 U prev_thread = op.simd_exclusive_scan(values[N_READS - 1]);
      -
      246
      -
      247 // Write simdgroup_sums to SM
      -
      248 if (simd_lane_id == simd_size - 1) {
      -
      249 simdgroup_sums[simd_group_id] = op(prev_thread, values[N_READS - 1]);
      -
      250 }
      -
      251 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      252
      -
      253 // Compute exclusive scan of simdgroup_sums
      -
      254 if (simd_group_id == 0) {
      -
      255 U prev_simdgroup = op.simd_exclusive_scan(simdgroup_sums[simd_lane_id]);
      -
      256 simdgroup_sums[simd_lane_id] = prev_simdgroup;
      -
      257 }
      -
      258 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      259
      -
      260 // Compute the output
      -
      261 for (int i = 0; i < N_READS; i++) {
      -
      262 values[i] = op(values[i], prefix);
      -
      263 values[i] = op(values[i], simdgroup_sums[simd_group_id]);
      -
      264 values[i] = op(values[i], prev_thread);
      -
      265 }
      -
      266
      -
      267 // Write the values
      -
      268 if (reverse) {
      -
      269 if (inclusive) {
      -
      270 if ((offset + N_READS) < axis_size) {
      -
      271 write_unsafe<U, N_READS, reverse>(
      -
      272 values, out + axis_size - offset - N_READS);
      -
      273 } else {
      -
      274 write_safe<U, N_READS, reverse>(
      -
      275 values, out + axis_size - offset - N_READS, offset, axis_size);
      -
      276 }
      -
      277 } else {
      -
      278 if (lid == 0 && offset == 0) {
      -
      279 out[axis_size - 1] = Op::init;
      -
      280 }
      -
      281 if ((offset + N_READS + 1) < axis_size) {
      -
      282 write_unsafe<U, N_READS, reverse>(
      -
      283 values, out + axis_size - offset - 1 - N_READS);
      -
      284 } else {
      -
      285 write_safe<U, N_READS, reverse>(
      -
      286 values,
      -
      287 out + axis_size - offset - 1 - N_READS,
      -
      288 offset + 1,
      -
      289 axis_size);
      -
      290 }
      -
      291 }
      -
      292 } else {
      -
      293 if (inclusive) {
      -
      294 if ((offset + N_READS) < axis_size) {
      -
      295 write_unsafe<U, N_READS, reverse>(values, out + offset);
      -
      296 } else {
      -
      297 write_safe<U, N_READS, reverse>(
      -
      298 values, out + offset, offset, axis_size);
      -
      299 }
      -
      300 } else {
      -
      301 if (lid == 0 && offset == 0) {
      -
      302 out[0] = Op::init;
      -
      303 }
      -
      304 if ((offset + N_READS + 1) < axis_size) {
      -
      305 write_unsafe<U, N_READS, reverse>(values, out + offset + 1);
      -
      306 } else {
      -
      307 write_safe<U, N_READS, reverse>(
      -
      308 values, out + offset + 1, offset + 1, axis_size);
      -
      309 }
      -
      310 }
      -
      311 }
      -
      312 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      313
      -
      314 // Share the prefix
      -
      315 if (simd_group_id == simd_groups - 1 && simd_lane_id == simd_size - 1) {
      -
      316 simdgroup_sums[0] = values[N_READS - 1];
      -
      317 }
      -
      318 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      319 prefix = simdgroup_sums[0];
      -
      320 }
      -
      321}
      -
      -
      322
      -
      323template <
      -
      324 typename T,
      -
      325 typename U,
      -
      326 typename Op,
      -
      327 int N_READS,
      -
      328 bool inclusive,
      -
      329 bool reverse>
      -
      -
      330[[kernel]] void strided_scan(
      -
      331 const device T* in [[buffer(0)]],
      -
      332 device U* out [[buffer(1)]],
      -
      333 const constant size_t& axis_size [[buffer(2)]],
      -
      334 const constant size_t& stride [[buffer(3)]],
      -
      335 uint2 gid [[threadgroup_position_in_grid]],
      -
      336 uint2 lid [[thread_position_in_threadgroup]],
      -
      337 uint2 lsize [[threads_per_threadgroup]],
      -
      338 uint simd_size [[threads_per_simdgroup]]) {
      -
      339 Op op;
      -
      340
      -
      341 // Allocate memory
      -
      342 threadgroup U read_buffer[N_READS * 32 * 32 + N_READS * 32];
      -
      343 U values[N_READS];
      -
      344 U prefix[N_READS];
      -
      345 for (int i = 0; i < N_READS; i++) {
      -
      346 prefix[i] = Op::init;
      -
      347 }
      -
      348
      -
      349 // Compute offsets
      -
      350 int offset = gid.y * axis_size * stride;
      -
      351 int global_index_x = gid.x * lsize.y * N_READS;
      -
      352
      -
      353 for (uint j = 0; j < axis_size; j += simd_size) {
      -
      354 // Calculate the indices for the current thread
      -
      355 uint index_y = j + lid.y;
      -
      356 uint check_index_y = index_y;
      -
      357 uint index_x = global_index_x + lid.x * N_READS;
      -
      358 if (reverse) {
      -
      359 index_y = axis_size - 1 - index_y;
      -
      360 }
      -
      361
      -
      362 // Read in SM
      -
      363 if (check_index_y < axis_size && (index_x + N_READS) < stride) {
      -
      364 for (int i = 0; i < N_READS; i++) {
      -
      365 read_buffer[lid.y * simd_size * N_READS + lid.x * N_READS + i] =
      -
      366 in[offset + index_y * stride + index_x + i];
      -
      367 }
      -
      368 } else {
      -
      369 for (int i = 0; i < N_READS; i++) {
      -
      370 if (check_index_y < axis_size && (index_x + i) < stride) {
      -
      371 read_buffer[lid.y * simd_size * N_READS + lid.x * N_READS + i] =
      -
      372 in[offset + index_y * stride + index_x + i];
      -
      373 } else {
      -
      374 read_buffer[lid.y * simd_size * N_READS + lid.x * N_READS + i] =
      -
      375 Op::init;
      -
      376 }
      -
      377 }
      -
      378 }
      -
      379 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      380
      -
      381 // Read strided into registers
      -
      382 for (int i = 0; i < N_READS; i++) {
      -
      383 values[i] =
      -
      384 read_buffer[lid.x * simd_size * N_READS + lid.y * N_READS + i];
      -
      385 }
      -
      386 // Do we need the following barrier? Shouldn't all simd threads execute
      -
      387 // simultaneously?
      -
      388 simdgroup_barrier(mem_flags::mem_threadgroup);
      -
      389
      -
      390 // Perform the scan
      -
      391 for (int i = 0; i < N_READS; i++) {
      -
      392 values[i] = op.simd_scan(values[i]);
      -
      393 values[i] = op(values[i], prefix[i]);
      -
      394 prefix[i] = simd_shuffle(values[i], simd_size - 1);
      -
      395 }
      -
      396
      -
      397 // Write to SM
      -
      398 for (int i = 0; i < N_READS; i++) {
      -
      399 read_buffer[lid.x * simd_size * N_READS + lid.y * N_READS + i] =
      -
      400 values[i];
      -
      401 }
      -
      402 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      403
      -
      404 // Write to device memory
      -
      405 if (!inclusive) {
      -
      406 if (check_index_y == 0) {
      -
      407 if ((index_x + N_READS) < stride) {
      -
      408 for (int i = 0; i < N_READS; i++) {
      -
      409 out[offset + index_y * stride + index_x + i] = Op::init;
      -
      410 }
      -
      411 } else {
      -
      412 for (int i = 0; i < N_READS; i++) {
      -
      413 if ((index_x + i) < stride) {
      -
      414 out[offset + index_y * stride + index_x + i] = Op::init;
      -
      415 }
      -
      416 }
      -
      417 }
      -
      418 }
      -
      419 if (reverse) {
      -
      420 index_y -= 1;
      -
      421 check_index_y += 1;
      -
      422 } else {
      -
      423 index_y += 1;
      -
      424 check_index_y += 1;
      -
      425 }
      -
      426 }
      -
      427 if (check_index_y < axis_size && (index_x + N_READS) < stride) {
      -
      428 for (int i = 0; i < N_READS; i++) {
      -
      429 out[offset + index_y * stride + index_x + i] =
      -
      430 read_buffer[lid.y * simd_size * N_READS + lid.x * N_READS + i];
      -
      431 }
      -
      432 } else {
      -
      433 for (int i = 0; i < N_READS; i++) {
      -
      434 if (check_index_y < axis_size && (index_x + i) < stride) {
      -
      435 out[offset + index_y * stride + index_x + i] =
      -
      436 read_buffer[lid.y * simd_size * N_READS + lid.x * N_READS + i];
      -
      437 }
      -
      438 }
      -
      439 }
      -
      440 }
      -
      441}
      -
      -
      static constant constexpr const uint8_t simd_size
      Definition ops.h:22
      -
      T ceildiv(T N, U M)
      Compute ceil((float)N/(float)M)
      Definition utils.h:409
      -
      Op op
      Definition binary.h:141
      -
      void contiguous_scan(const device T *in, device U *out, const constant size_t &axis_size, uint gid, uint lid, uint lsize, uint simd_size, uint simd_lane_id, uint simd_group_id)
      Definition scan.h:177
      -
      void write_unsafe(U values[N_READS], device U *out)
      Definition scan.h:141
      -
      void load_unsafe(U values[N_READS], const device T *input)
      Definition scan.h:109
      -
      void write_safe(U values[N_READS], device U *out, int start, int total)
      Definition scan.h:154
      -
      void load_safe(U values[N_READS], const device T *input, int start, int total, U init)
      Definition scan.h:122
      -
      void strided_scan(const device T *in, device U *out, const constant size_t &axis_size, const constant size_t &stride, uint2 gid, uint2 lid, uint2 lsize, uint simd_size)
      Definition scan.h:330
      -
      Definition scan.h:63
      -
      static constexpr constant U init
      Definition scan.h:64
      -
      U operator()(U a, T b)
      Definition scan.h:67
      -
      U simd_scan(U x)
      Definition scan.h:71
      -
      U simd_exclusive_scan(U x)
      Definition scan.h:79
      -
      Definition scan.h:86
      -
      U simd_scan(U x)
      Definition scan.h:94
      -
      U simd_exclusive_scan(U x)
      Definition scan.h:102
      -
      static constexpr constant U init
      Definition scan.h:87
      -
      U operator()(U a, T b)
      Definition scan.h:90
      -
      bool simd_exclusive_scan(bool x)
      Definition scan.h:56
      -
      bool simd_scan(bool x)
      Definition scan.h:48
      -
      bool operator()(bool a, T b)
      Definition scan.h:44
      -
      Definition scan.h:22
      -
      U simd_exclusive_scan(U x)
      Definition scan.h:34
      -
      U simd_scan(U x)
      Definition scan.h:30
      -
      static constexpr constant U init
      Definition scan.h:23
      -
      U operator()(U a, T b)
      Definition scan.h:26
      -
      Definition scan.h:4
      -
      U simd_exclusive_scan(U x)
      Definition scan.h:16
      -
      U simd_scan(U x)
      Definition scan.h:12
      -
      static constexpr constant U init
      Definition scan.h:5
      -
      U operator()(U a, T b)
      Definition scan.h:8
      -
      Definition utils.h:17
      -
      - - - - diff --git a/docs/build/html/kernels_2softmax_8h.html b/docs/build/html/kernels_2softmax_8h.html deleted file mode 100644 index 288e2512..00000000 --- a/docs/build/html/kernels_2softmax_8h.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/softmax.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      softmax.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - -

      -Functions

      template<typename T >
      softmax_exp (T x)
       
      template<typename T , typename AccT = T, int N_READS = SOFTMAX_N_READS>
      void softmax_single_row (const device T *in, device T *out, constant int &axis_size, uint gid, uint _lid, uint simd_lane_id, uint simd_group_id)
       
      template<typename T , typename AccT = T, int N_READS = SOFTMAX_N_READS>
      void softmax_looped (const device T *in, device T *out, constant int &axis_size, uint gid, uint lid, uint lsize, uint simd_lane_id, uint simd_group_id)
       
      -

      Function Documentation

      - -

      ◆ softmax_exp()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T softmax_exp (T x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ softmax_looped()

      - -
      -
      -
      -template<typename T , typename AccT = T, int N_READS = SOFTMAX_N_READS>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void softmax_looped (const device T * in,
      device T * out,
      constant int & axis_size,
      uint gid,
      uint lid,
      uint lsize,
      uint simd_lane_id,
      uint simd_group_id )
      -
      - -
      -
      - -

      ◆ softmax_single_row()

      - -
      -
      -
      -template<typename T , typename AccT = T, int N_READS = SOFTMAX_N_READS>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void softmax_single_row (const device T * in,
      device T * out,
      constant int & axis_size,
      uint gid,
      uint _lid,
      uint simd_lane_id,
      uint simd_group_id )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/kernels_2softmax_8h_source.html b/docs/build/html/kernels_2softmax_8h_source.html deleted file mode 100644 index f761667b..00000000 --- a/docs/build/html/kernels_2softmax_8h_source.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/softmax.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      softmax.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3template <typename T>
      -
      -
      4inline T softmax_exp(T x) {
      -
      5 // Softmax doesn't need high precision exponential cause x is gonna be in
      -
      6 // (-oo, 0] anyway and subsequently it will be divided by sum(exp(x_i)).
      -
      7 return fast::exp(x);
      -
      8}
      -
      -
      9
      -
      10template <typename T, typename AccT = T, int N_READS = SOFTMAX_N_READS>
      -
      -
      11[[kernel]] void softmax_single_row(
      -
      12 const device T* in,
      -
      13 device T* out,
      -
      14 constant int& axis_size,
      -
      15 uint gid [[threadgroup_position_in_grid]],
      -
      16 uint _lid [[thread_position_in_threadgroup]],
      -
      17 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      18 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      19 int lid = _lid;
      -
      20
      -
      21 constexpr int SIMD_SIZE = 32;
      -
      22
      -
      23 threadgroup AccT local_max[SIMD_SIZE];
      -
      24 threadgroup AccT local_normalizer[SIMD_SIZE];
      -
      25
      -
      26 AccT ld[N_READS];
      -
      27
      -
      28 in += gid * size_t(axis_size) + lid * N_READS;
      -
      29 if (lid * N_READS + N_READS <= axis_size) {
      -
      30 for (int i = 0; i < N_READS; i++) {
      -
      31 ld[i] = AccT(in[i]);
      -
      32 }
      -
      33 } else {
      -
      34 for (int i = 0; i < N_READS; i++) {
      -
      35 ld[i] = ((lid * N_READS + i) < axis_size) ? AccT(in[i])
      - -
      37 }
      -
      38 }
      -
      39 if (simd_group_id == 0) {
      -
      40 local_max[simd_lane_id] = Limits<AccT>::finite_min;
      -
      41 local_normalizer[simd_lane_id] = 0;
      -
      42 }
      -
      43 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      44
      -
      45 // Get the max
      -
      46 AccT maxval = Limits<AccT>::finite_min;
      -
      47 for (int i = 0; i < N_READS; i++) {
      -
      48 maxval = (maxval < ld[i]) ? ld[i] : maxval;
      -
      49 }
      -
      50 maxval = simd_max(maxval);
      -
      51 if (simd_lane_id == 0) {
      -
      52 local_max[simd_group_id] = maxval;
      -
      53 }
      -
      54 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      55 if (simd_group_id == 0) {
      -
      56 maxval = simd_max(local_max[simd_lane_id]);
      -
      57 if (simd_lane_id == 0) {
      -
      58 local_max[0] = maxval;
      -
      59 }
      -
      60 }
      -
      61 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      62 maxval = local_max[0];
      -
      63
      -
      64 // Compute exp(x_i - maxval) and store the partial sums in local_normalizer
      -
      65 AccT normalizer = 0;
      -
      66 for (int i = 0; i < N_READS; i++) {
      -
      67 AccT exp_x = softmax_exp(ld[i] - maxval);
      -
      68 ld[i] = exp_x;
      -
      69 normalizer += exp_x;
      -
      70 }
      -
      71 normalizer = simd_sum(normalizer);
      -
      72 if (simd_lane_id == 0) {
      -
      73 local_normalizer[simd_group_id] = normalizer;
      -
      74 }
      -
      75 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      76 if (simd_group_id == 0) {
      -
      77 normalizer = simd_sum(local_normalizer[simd_lane_id]);
      -
      78 if (simd_lane_id == 0) {
      -
      79 local_normalizer[0] = normalizer;
      -
      80 }
      -
      81 }
      -
      82 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      83 normalizer = 1 / local_normalizer[0];
      -
      84
      -
      85 // Normalize and write to the output
      -
      86 out += gid * size_t(axis_size) + lid * N_READS;
      -
      87 if (lid * N_READS + N_READS <= axis_size) {
      -
      88 for (int i = 0; i < N_READS; i++) {
      -
      89 out[i] = T(ld[i] * normalizer);
      -
      90 }
      -
      91 } else {
      -
      92 for (int i = 0; i < N_READS; i++) {
      -
      93 if ((lid * N_READS + i) < axis_size) {
      -
      94 out[i] = T(ld[i] * normalizer);
      -
      95 }
      -
      96 }
      -
      97 }
      -
      98}
      -
      -
      99
      -
      100template <typename T, typename AccT = T, int N_READS = SOFTMAX_N_READS>
      -
      -
      101[[kernel]] void softmax_looped(
      -
      102 const device T* in,
      -
      103 device T* out,
      -
      104 constant int& axis_size,
      -
      105 uint gid [[threadgroup_position_in_grid]],
      -
      106 uint lid [[thread_position_in_threadgroup]],
      -
      107 uint lsize [[threads_per_threadgroup]],
      -
      108 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      109 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      110 in += gid * size_t(axis_size);
      -
      111
      -
      112 constexpr int SIMD_SIZE = 32;
      -
      113
      -
      114 threadgroup AccT local_max[SIMD_SIZE];
      -
      115 threadgroup AccT local_normalizer[SIMD_SIZE];
      -
      116
      -
      117 // Get the max and the normalizer in one go
      -
      118 AccT prevmax;
      -
      119 AccT maxval = Limits<AccT>::finite_min;
      -
      120 AccT normalizer = 0;
      -
      121 for (int r = 0; r < static_cast<int>(ceildiv(axis_size, N_READS * lsize));
      -
      122 r++) {
      -
      123 int offset = r * lsize * N_READS + lid * N_READS;
      -
      124 AccT vals[N_READS];
      -
      125 if (offset + N_READS <= axis_size) {
      -
      126 for (int i = 0; i < N_READS; i++) {
      -
      127 vals[i] = AccT(in[offset + i]);
      -
      128 }
      -
      129 } else {
      -
      130 for (int i = 0; i < N_READS; i++) {
      -
      131 vals[i] = (offset + i < axis_size) ? AccT(in[offset + i])
      - -
      133 }
      -
      134 }
      -
      135 prevmax = maxval;
      -
      136 for (int i = 0; i < N_READS; i++) {
      -
      137 maxval = (maxval < vals[i]) ? vals[i] : maxval;
      -
      138 }
      -
      139 normalizer *= softmax_exp(prevmax - maxval);
      -
      140 for (int i = 0; i < N_READS; i++) {
      -
      141 normalizer += softmax_exp(vals[i] - maxval);
      -
      142 }
      -
      143 }
      -
      144 // Now we got partial normalizer of N_READS * ceildiv(axis_size, N_READS *
      -
      145 // lsize) parts. We need to combine them.
      -
      146 // 1. We start by finding the max across simd groups
      -
      147 // 2. We then change the partial normalizers to account for a possible
      -
      148 // change in max
      -
      149 // 3. We sum all normalizers
      -
      150 prevmax = maxval;
      -
      151 maxval = simd_max(maxval);
      -
      152 normalizer *= softmax_exp(prevmax - maxval);
      -
      153 normalizer = simd_sum(normalizer);
      -
      154
      -
      155 // Now the normalizer and max value is correct for each simdgroup. We write
      -
      156 // them shared memory and combine them.
      -
      157 prevmax = maxval;
      -
      158 if (simd_lane_id == 0) {
      -
      159 local_max[simd_group_id] = maxval;
      -
      160 }
      -
      161 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      162 maxval = simd_max(local_max[simd_lane_id]);
      -
      163 normalizer *= softmax_exp(prevmax - maxval);
      -
      164 if (simd_lane_id == 0) {
      -
      165 local_normalizer[simd_group_id] = normalizer;
      -
      166 }
      -
      167 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      168 normalizer = simd_sum(local_normalizer[simd_lane_id]);
      -
      169 normalizer = 1 / normalizer;
      -
      170
      -
      171 // Finally given the normalizer and max value we can directly write the
      -
      172 // softmax output
      -
      173 out += gid * size_t(axis_size);
      -
      174 for (int r = 0; r < static_cast<int>(ceildiv(axis_size, N_READS * lsize));
      -
      175 r++) {
      -
      176 int offset = r * lsize * N_READS + lid * N_READS;
      -
      177 if (offset + N_READS <= axis_size) {
      -
      178 for (int i = 0; i < N_READS; i++) {
      -
      179 out[offset + i] = T(softmax_exp(in[offset + i] - maxval) * normalizer);
      -
      180 }
      -
      181 } else {
      -
      182 for (int i = 0; i < N_READS; i++) {
      -
      183 if (offset + i < axis_size) {
      -
      184 out[offset + i] =
      -
      185 T(softmax_exp(in[offset + i] - maxval) * normalizer);
      -
      186 }
      -
      187 }
      -
      188 }
      -
      189 }
      -
      190}
      -
      -
      T ceildiv(T N, U M)
      Compute ceil((float)N/(float)M)
      Definition utils.h:409
      -
      T softmax_exp(T x)
      Definition softmax.h:4
      -
      void softmax_single_row(const device T *in, device T *out, constant int &axis_size, uint gid, uint _lid, uint simd_lane_id, uint simd_group_id)
      Definition softmax.h:11
      -
      void softmax_looped(const device T *in, device T *out, constant int &axis_size, uint gid, uint lid, uint lsize, uint simd_lane_id, uint simd_group_id)
      Definition softmax.h:101
      -
      static constant constexpr const int SIMD_SIZE
      Definition quantized.h:10
      -
      Definition utils.h:17
      -
      - - - - diff --git a/docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h.html b/docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h.html deleted file mode 100644 index d6772dc2..00000000 --- a/docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/kernels/steel_conv.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_conv.h File Reference
      -
      -
      -
      #include <metal_stdlib>
      -
      -

      Go to the source code of this file.

      - - - - - -

      -Functions

      template<typename T , int BM, int BN, int BK, int WM, int WN, int N_CHANNELS = 0, bool SMALL_FILTER = false>
      void implicit_gemm_conv_2d (const device T *A, const device T *B, device T *C, const constant MLXConvParams< 2 > *params, const constant ImplicitGemmConv2DParams *gemm_params, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
       
      -

      Function Documentation

      - -

      ◆ implicit_gemm_conv_2d()

      - -
      -
      -
      -template<typename T , int BM, int BN, int BK, int WM, int WN, int N_CHANNELS = 0, bool SMALL_FILTER = false>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void implicit_gemm_conv_2d (const device T * A,
      const device T * B,
      device T * C,
      const constant MLXConvParams< 2 > * params,
      const constant ImplicitGemmConv2DParams * gemm_params,
      uint3 tid,
      uint3 lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h_source.html b/docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h_source.html deleted file mode 100644 index b178dfa9..00000000 --- a/docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h_source.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/kernels/steel_conv.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_conv.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#include <metal_stdlib>
      -
      4
      -
      5using namespace metal;
      -
      6
      -
      7template <
      -
      8 typename T,
      -
      9 int BM,
      -
      10 int BN,
      -
      11 int BK,
      -
      12 int WM,
      -
      13 int WN,
      -
      14 int N_CHANNELS = 0,
      -
      15 bool SMALL_FILTER = false>
      -
      16[[kernel, max_total_threads_per_threadgroup(WM* WN * 32)]] void
      -
      - -
      18 const device T* A [[buffer(0)]],
      -
      19 const device T* B [[buffer(1)]],
      -
      20 device T* C [[buffer(2)]],
      -
      21 const constant MLXConvParams<2>* params [[buffer(3)]],
      -
      22 const constant ImplicitGemmConv2DParams* gemm_params [[buffer(4)]],
      -
      23 uint3 tid [[threadgroup_position_in_grid]],
      -
      24 uint3 lid [[thread_position_in_threadgroup]],
      -
      25 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      26 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      27 using namespace mlx::steel;
      -
      28
      -
      29 (void)lid;
      -
      30
      -
      31 constexpr bool transpose_a = false;
      -
      32 constexpr bool transpose_b = true;
      -
      33 constexpr short tgp_padding_a = 16 / sizeof(T);
      -
      34 constexpr short tgp_padding_b = 16 / sizeof(T);
      -
      35
      -
      36 constexpr short shape_a_cols = (transpose_a ? BM : BK) + tgp_padding_a;
      -
      37 constexpr short shape_b_cols = (transpose_b ? BK : BN) + tgp_padding_b;
      -
      38 constexpr short shape_a_rows = (transpose_a ? BK : BM);
      -
      39 constexpr short shape_b_rows = (transpose_b ? BN : BK);
      -
      40 constexpr short tgp_mem_size_a = shape_a_cols * shape_a_rows;
      -
      41 constexpr short tgp_mem_size_b = shape_b_cols * shape_b_rows;
      -
      42
      -
      43 constexpr short tgp_size = WM * WN * 32;
      -
      44
      -
      45 // Input loader
      -
      46
      -
      47 using loader_a_t = typename metal::conditional_t<
      -
      48 // Check for small channel specialization
      -
      49 N_CHANNELS != 0 && N_CHANNELS <= 4,
      -
      50
      -
      51 // Go to small channel specialization
      - -
      53 T,
      -
      54 BM,
      -
      55 BN,
      -
      56 BK,
      -
      57 tgp_size,
      -
      58 N_CHANNELS,
      -
      59 tgp_padding_a>,
      -
      60
      -
      61 // Else go to general loader
      -
      62 typename metal::conditional_t<
      -
      63 // Check if filter size is small enough
      -
      64 SMALL_FILTER,
      -
      65
      -
      66 // Go to small filter specialization
      - -
      68 T,
      -
      69 BM,
      -
      70 BN,
      -
      71 BK,
      -
      72 tgp_size,
      -
      73 tgp_padding_a>,
      -
      74
      -
      75 // Else go to large filter generalization
      - -
      77 T,
      -
      78 BM,
      -
      79 BN,
      -
      80 BK,
      -
      81 tgp_size,
      -
      82 tgp_padding_a>>>;
      -
      83
      -
      84 // Weight loader
      -
      85 using loader_b_t = typename metal::conditional_t<
      -
      86 // Check for small channel specialization
      -
      87 N_CHANNELS != 0 && N_CHANNELS <= 4,
      -
      88
      -
      89 // Go to small channel specialization
      - -
      91 T,
      -
      92 BM,
      -
      93 BN,
      -
      94 BK,
      -
      95 tgp_size,
      -
      96 N_CHANNELS,
      -
      97 tgp_padding_b>,
      -
      98
      -
      99 // Else go to general loader
      - -
      101
      -
      102 using mma_t = BlockMMA<
      -
      103 T,
      -
      104 T,
      -
      105 BM,
      -
      106 BN,
      -
      107 BK,
      -
      108 WM,
      -
      109 WN,
      -
      110 transpose_a,
      -
      111 transpose_b,
      -
      112 shape_a_cols,
      -
      113 shape_b_cols>;
      -
      114
      -
      115 threadgroup T As[tgp_mem_size_a];
      -
      116 threadgroup T Bs[tgp_mem_size_b];
      -
      117
      -
      118 const int tid_y = ((tid.y) << gemm_params->swizzle_log) +
      -
      119 ((tid.x) & ((1 << gemm_params->swizzle_log) - 1));
      -
      120 const int tid_x = (tid.x) >> gemm_params->swizzle_log;
      -
      121
      -
      122 if (gemm_params->tiles_n <= tid_x || gemm_params->tiles_m <= tid_y) {
      -
      123 return;
      -
      124 }
      -
      125
      -
      126 const int c_row = tid_y * BM;
      -
      127 const int c_col = tid_x * BN;
      -
      128 const int K = gemm_params->K;
      -
      129 const int N = gemm_params->N;
      -
      130 const int C_per_group = params->C / params->groups;
      -
      131
      -
      132 // Groups
      -
      133 A += tid.z * C_per_group;
      -
      134 B += tid.z * N * K;
      -
      135 C += tid.z * N;
      -
      136
      -
      137 B += c_col * K;
      -
      138 C += c_row * (N * params->groups) + c_col;
      -
      139
      -
      140 const int2 offsets_a(0, c_row);
      -
      141 const int2 offsets_b(0, c_col);
      -
      142
      -
      143 // Prepare threadgroup loading operations
      -
      144 loader_a_t loader_a(
      -
      145 A, As, offsets_a, params, gemm_params, simd_gid, simd_lid);
      -
      146 loader_b_t loader_b(
      -
      147 B, Bs, offsets_b, params, gemm_params, simd_gid, simd_lid);
      -
      148
      -
      149 // Prepare threadgroup mma operation
      -
      150 mma_t mma_op(simd_gid, simd_lid);
      -
      151
      -
      152 int gemm_k_iterations = gemm_params->gemm_k_iterations;
      -
      153 for (int k = 0; k < gemm_k_iterations; k++) {
      -
      154 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      155 // Load elements into threadgroup
      -
      156 loader_a.load_unsafe();
      -
      157 loader_b.load_unsafe();
      -
      158
      -
      159 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      160
      -
      161 // Multiply and accumulate threadgroup elements
      -
      162 mma_op.mma(As, Bs);
      -
      163
      -
      164 // Prepare for next iteration
      -
      165 loader_a.next();
      -
      166 loader_b.next();
      -
      167 }
      -
      168
      -
      169 threadgroup_barrier(mem_flags::mem_none);
      -
      170
      -
      171 // Store results to device memory
      -
      172 short tgp_bm = min(BM, gemm_params->M - c_row);
      -
      173 short tgp_bn = min(BN, gemm_params->N - c_col);
      -
      174 const int ldc = N * params->groups;
      -
      175 mma_op.store_result_safe(C, ldc, short2(tgp_bn, tgp_bm));
      -
      176}
      -
      -
      void implicit_gemm_conv_2d(const device T *A, const device T *B, device T *C, const constant MLXConvParams< 2 > *params, const constant ImplicitGemmConv2DParams *gemm_params, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
      Definition steel_conv.h:17
      -
      Definition bf16.h:265
      -
      METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      -
      Definition loader_channel_l.h:14
      -
      Definition params.h:6
      -
      Definition mma.h:35
      -
      Definition loader_channel_l.h:23
      -
      Definition loader_channel_n.h:59
      -
      Definition loader_channel_l.h:171
      -
      Definition loader_channel_l.h:352
      -
      Definition loader_channel_n.h:203
      -
      - - - - diff --git a/docs/build/html/kernels_8h.html b/docs/build/html/kernels_8h.html deleted file mode 100644 index 2e523b70..00000000 --- a/docs/build/html/kernels_8h.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      kernels.h File Reference
      -
      -
      -
      #include <fmt/format.h>
      -#include "mlx/array.h"
      -#include "mlx/backend/metal/device.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      MTL::ComputePipelineState * mlx::core::get_arange_kernel (metal::Device &d, const std::string &kernel_name, const array &out)
       
      MTL::ComputePipelineState * mlx::core::get_unary_kernel (metal::Device &d, const std::string &kernel_name, Dtype out_type, const std::string op)
       
      MTL::ComputePipelineState * mlx::core::get_binary_kernel (metal::Device &d, const std::string &kernel_name, Dtype in_type, Dtype out_type, const std::string op)
       
      MTL::ComputePipelineState * mlx::core::get_binary_two_kernel (metal::Device &d, const std::string &kernel_name, Dtype in_type, Dtype out_type, const std::string op)
       
      MTL::ComputePipelineState * mlx::core::get_ternary_kernel (metal::Device &d, const std::string &kernel_name, Dtype type, const std::string op)
       
      MTL::ComputePipelineState * mlx::core::get_copy_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out)
       
      MTL::ComputePipelineState * mlx::core::get_softmax_kernel (metal::Device &d, const std::string &kernel_name, bool precise, const array &out)
       
      MTL::ComputePipelineState * mlx::core::get_scan_kernel (metal::Device &d, const std::string &kernel_name, bool reverse, bool inclusive, const std::string &reduce_type, const array &in, const array &out)
       
      MTL::ComputePipelineState * mlx::core::get_sort_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out, int bn, int tn)
       
      MTL::ComputePipelineState * mlx::core::get_mb_sort_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &idx, int bn, int tn)
       
      MTL::ComputePipelineState * mlx::core::get_reduce_init_kernel (metal::Device &d, const std::string &kernel_name, const array &out)
       
      MTL::ComputePipelineState * mlx::core::get_reduce_kernel (metal::Device &d, const std::string &kernel_name, const std::string &func_name, const std::string &op_name, const array &in, const array &out, int ndim=-1, int bm=-1, int bn=-1)
       
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_fused_kernel (metal::Device &d, const std::string &kernel_name, const std::string &hash_name, const metal::MTLFCList &func_consts, const array &out, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn)
       
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_splitk_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn, bool mn_aligned, bool k_aligned)
       
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_splitk_accum_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out, bool axbpy)
       
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_masked_kernel (metal::Device &d, const std::string &kernel_name, const array &out, const std::optional< array > &mask_out, const std::optional< array > &mask_op, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn, bool mn_aligned, bool k_aligned)
       
      MTL::ComputePipelineState * mlx::core::get_steel_conv_kernel (metal::Device &d, const std::string &kernel_name, const array &out, int bm, int bn, int bk, int wm, int wn, int n_channel_specialization, bool small_filter)
       
      MTL::ComputePipelineState * mlx::core::get_gemv_masked_kernel (metal::Device &d, const std::string &kernel_name, const array &out, const std::optional< array > &mask_out, const std::optional< array > &mask_op, bool transpose_mat, int bm, int bn, int sm, int sn, int tm, int tn, bool contiguous)
       
      MTL::ComputePipelineState * mlx::core::get_steel_conv_general_kernel (metal::Device &d, const std::string &kernel_name, const array &out, int bm, int bn, int bk, int wm, int wn)
       
      MTL::ComputePipelineState * mlx::core::get_fft_kernel (metal::Device &d, const std::string &kernel_name, const std::string &hash_name, const metal::MTLFCList &func_consts, const std::string &template_def)
       
      MTL::ComputePipelineState * mlx::core::get_quantized_kernel (metal::Device &d, const std::string &kernel_name, const std::string &template_def)
       
      template<typename... Args>
      std::string mlx::core::get_template_definition (std::string name, std::string func, Args... args)
       
      -
      - - - - diff --git a/docs/build/html/kernels_8h_source.html b/docs/build/html/kernels_8h_source.html deleted file mode 100644 index 282fc90e..00000000 --- a/docs/build/html/kernels_8h_source.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      kernels.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#include <fmt/format.h>
      -
      4
      -
      5#include "mlx/array.h"
      - -
      7
      -
      8namespace mlx::core {
      -
      9
      -
      10MTL::ComputePipelineState* get_arange_kernel(
      - -
      12 const std::string& kernel_name,
      -
      13 const array& out);
      -
      14
      -
      15MTL::ComputePipelineState* get_unary_kernel(
      - -
      17 const std::string& kernel_name,
      -
      18 Dtype out_type,
      -
      19 const std::string op);
      -
      20
      -
      21MTL::ComputePipelineState* get_binary_kernel(
      - -
      23 const std::string& kernel_name,
      -
      24 Dtype in_type,
      -
      25 Dtype out_type,
      -
      26 const std::string op);
      -
      27
      -
      28MTL::ComputePipelineState* get_binary_two_kernel(
      - -
      30 const std::string& kernel_name,
      -
      31 Dtype in_type,
      -
      32 Dtype out_type,
      -
      33 const std::string op);
      -
      34
      -
      35MTL::ComputePipelineState* get_ternary_kernel(
      - -
      37 const std::string& kernel_name,
      -
      38 Dtype type,
      -
      39 const std::string op);
      -
      40
      -
      41MTL::ComputePipelineState* get_copy_kernel(
      - -
      43 const std::string& kernel_name,
      -
      44 const array& in,
      -
      45 const array& out);
      -
      46
      -
      47MTL::ComputePipelineState* get_softmax_kernel(
      - -
      49 const std::string& kernel_name,
      -
      50 bool precise,
      -
      51 const array& out);
      -
      52
      -
      53MTL::ComputePipelineState* get_scan_kernel(
      - -
      55 const std::string& kernel_name,
      -
      56 bool reverse,
      -
      57 bool inclusive,
      -
      58 const std::string& reduce_type,
      -
      59 const array& in,
      -
      60 const array& out);
      -
      61
      -
      62MTL::ComputePipelineState* get_sort_kernel(
      - -
      64 const std::string& kernel_name,
      -
      65 const array& in,
      -
      66 const array& out,
      -
      67 int bn,
      -
      68 int tn);
      -
      69
      -
      70MTL::ComputePipelineState* get_mb_sort_kernel(
      - -
      72 const std::string& kernel_name,
      -
      73 const array& in,
      -
      74 const array& idx,
      -
      75 int bn,
      -
      76 int tn);
      -
      77
      -
      78MTL::ComputePipelineState* get_reduce_init_kernel(
      - -
      80 const std::string& kernel_name,
      -
      81 const array& out);
      -
      82
      -
      83MTL::ComputePipelineState* get_reduce_kernel(
      - -
      85 const std::string& kernel_name,
      -
      86 const std::string& func_name,
      -
      87 const std::string& op_name,
      -
      88 const array& in,
      -
      89 const array& out,
      -
      90 int ndim = -1,
      -
      91 int bm = -1,
      -
      92 int bn = -1);
      -
      93
      -
      94MTL::ComputePipelineState* get_steel_gemm_fused_kernel(
      - -
      96 const std::string& kernel_name,
      -
      97 const std::string& hash_name,
      -
      98 const metal::MTLFCList& func_consts,
      -
      99 const array& out,
      -
      100 bool transpose_a,
      -
      101 bool transpose_b,
      -
      102 int bm,
      -
      103 int bn,
      -
      104 int bk,
      -
      105 int wm,
      -
      106 int wn);
      -
      107
      -
      108MTL::ComputePipelineState* get_steel_gemm_splitk_kernel(
      -
      109 metal::Device& d,
      -
      110 const std::string& kernel_name,
      -
      111 const array& in,
      -
      112 const array& out,
      -
      113 bool transpose_a,
      -
      114 bool transpose_b,
      -
      115 int bm,
      -
      116 int bn,
      -
      117 int bk,
      -
      118 int wm,
      -
      119 int wn,
      -
      120 bool mn_aligned,
      -
      121 bool k_aligned);
      -
      122
      -
      123MTL::ComputePipelineState* get_steel_gemm_splitk_accum_kernel(
      -
      124 metal::Device& d,
      -
      125 const std::string& kernel_name,
      -
      126 const array& in,
      -
      127 const array& out,
      -
      128 bool axbpy);
      -
      129
      -
      130MTL::ComputePipelineState* get_steel_gemm_masked_kernel(
      -
      131 metal::Device& d,
      -
      132 const std::string& kernel_name,
      -
      133 const array& out,
      -
      134 const std::optional<array>& mask_out,
      -
      135 const std::optional<array>& mask_op,
      -
      136 bool transpose_a,
      -
      137 bool transpose_b,
      -
      138 int bm,
      -
      139 int bn,
      -
      140 int bk,
      -
      141 int wm,
      -
      142 int wn,
      -
      143 bool mn_aligned,
      -
      144 bool k_aligned);
      -
      145
      -
      146MTL::ComputePipelineState* get_steel_conv_kernel(
      -
      147 metal::Device& d,
      -
      148 const std::string& kernel_name,
      -
      149 const array& out,
      -
      150 int bm,
      -
      151 int bn,
      -
      152 int bk,
      -
      153 int wm,
      -
      154 int wn,
      -
      155 int n_channel_specialization,
      -
      156 bool small_filter);
      -
      157
      -
      158MTL::ComputePipelineState* get_gemv_masked_kernel(
      -
      159 metal::Device& d,
      -
      160 const std::string& kernel_name,
      -
      161 const array& out,
      -
      162 const std::optional<array>& mask_out,
      -
      163 const std::optional<array>& mask_op,
      -
      164 bool transpose_mat,
      -
      165 int bm,
      -
      166 int bn,
      -
      167 int sm,
      -
      168 int sn,
      -
      169 int tm,
      -
      170 int tn,
      -
      171 bool contiguous);
      -
      172
      -
      173MTL::ComputePipelineState* get_steel_conv_general_kernel(
      -
      174 metal::Device& d,
      -
      175 const std::string& kernel_name,
      -
      176 const array& out,
      -
      177 int bm,
      -
      178 int bn,
      -
      179 int bk,
      -
      180 int wm,
      -
      181 int wn);
      -
      182
      -
      183MTL::ComputePipelineState* get_fft_kernel(
      -
      184 metal::Device& d,
      -
      185 const std::string& kernel_name,
      -
      186 const std::string& hash_name,
      -
      187 const metal::MTLFCList& func_consts,
      -
      188 const std::string& template_def);
      -
      189
      -
      190MTL::ComputePipelineState* get_quantized_kernel(
      -
      191 metal::Device& d,
      -
      192 const std::string& kernel_name,
      -
      193 const std::string& template_def);
      -
      194
      -
      195// Create a GPU kernel template definition for JIT compilation
      -
      196template <typename... Args>
      -
      197std::string
      -
      -
      198get_template_definition(std::string name, std::string func, Args... args) {
      -
      199 std::ostringstream s;
      -
      200 s << func << "<";
      -
      201 bool first = true;
      -
      202 auto add_arg = [&s, &first](const auto& arg) {
      -
      203 if (!first) {
      -
      204 s << ", ";
      -
      205 }
      -
      206 first = false;
      -
      207 s << arg;
      -
      208 };
      -
      209 (add_arg(args), ...);
      -
      210 s << ">";
      -
      211 std::string base_string = R"(
      -
      212template [[host_name("{0}")]] [[kernel]] decltype({1}) {1};
      -
      213 )";
      -
      214 return fmt::format(base_string, name, s.str());
      -
      215}
      -
      -
      216
      -
      217} // namespace mlx::core
      - - -
      Definition array.h:20
      -
      Definition device.h:86
      -
      Op op
      Definition binary.h:141
      -
      std::vector< std::tuple< const void *, MTL::DataType, NS::UInteger > > MTLFCList
      Definition device.h:37
      -
      Definition allocator.h:7
      -
      MTL::ComputePipelineState * get_copy_kernel(metal::Device &d, const std::string &kernel_name, const array &in, const array &out)
      -
      MTL::ComputePipelineState * get_unary_kernel(metal::Device &d, const std::string &kernel_name, Dtype out_type, const std::string op)
      -
      MTL::ComputePipelineState * get_steel_gemm_splitk_accum_kernel(metal::Device &d, const std::string &kernel_name, const array &in, const array &out, bool axbpy)
      -
      MTL::ComputePipelineState * get_fft_kernel(metal::Device &d, const std::string &kernel_name, const std::string &hash_name, const metal::MTLFCList &func_consts, const std::string &template_def)
      -
      MTL::ComputePipelineState * get_softmax_kernel(metal::Device &d, const std::string &kernel_name, bool precise, const array &out)
      -
      MTL::ComputePipelineState * get_binary_kernel(metal::Device &d, const std::string &kernel_name, Dtype in_type, Dtype out_type, const std::string op)
      -
      MTL::ComputePipelineState * get_binary_two_kernel(metal::Device &d, const std::string &kernel_name, Dtype in_type, Dtype out_type, const std::string op)
      -
      MTL::ComputePipelineState * get_reduce_init_kernel(metal::Device &d, const std::string &kernel_name, const array &out)
      -
      MTL::ComputePipelineState * get_ternary_kernel(metal::Device &d, const std::string &kernel_name, Dtype type, const std::string op)
      -
      MTL::ComputePipelineState * get_arange_kernel(metal::Device &d, const std::string &kernel_name, const array &out)
      -
      MTL::ComputePipelineState * get_reduce_kernel(metal::Device &d, const std::string &kernel_name, const std::string &func_name, const std::string &op_name, const array &in, const array &out, int ndim=-1, int bm=-1, int bn=-1)
      -
      MTL::ComputePipelineState * get_sort_kernel(metal::Device &d, const std::string &kernel_name, const array &in, const array &out, int bn, int tn)
      -
      MTL::ComputePipelineState * get_steel_gemm_fused_kernel(metal::Device &d, const std::string &kernel_name, const std::string &hash_name, const metal::MTLFCList &func_consts, const array &out, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn)
      -
      MTL::ComputePipelineState * get_gemv_masked_kernel(metal::Device &d, const std::string &kernel_name, const array &out, const std::optional< array > &mask_out, const std::optional< array > &mask_op, bool transpose_mat, int bm, int bn, int sm, int sn, int tm, int tn, bool contiguous)
      -
      MTL::ComputePipelineState * get_quantized_kernel(metal::Device &d, const std::string &kernel_name, const std::string &template_def)
      -
      std::string get_template_definition(std::string name, std::string func, Args... args)
      Definition kernels.h:198
      -
      MTL::ComputePipelineState * get_steel_gemm_masked_kernel(metal::Device &d, const std::string &kernel_name, const array &out, const std::optional< array > &mask_out, const std::optional< array > &mask_op, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn, bool mn_aligned, bool k_aligned)
      -
      MTL::ComputePipelineState * get_steel_conv_general_kernel(metal::Device &d, const std::string &kernel_name, const array &out, int bm, int bn, int bk, int wm, int wn)
      -
      MTL::ComputePipelineState * get_steel_conv_kernel(metal::Device &d, const std::string &kernel_name, const array &out, int bm, int bn, int bk, int wm, int wn, int n_channel_specialization, bool small_filter)
      -
      MTL::ComputePipelineState * get_scan_kernel(metal::Device &d, const std::string &kernel_name, bool reverse, bool inclusive, const std::string &reduce_type, const array &in, const array &out)
      -
      MTL::ComputePipelineState * get_steel_gemm_splitk_kernel(metal::Device &d, const std::string &kernel_name, const array &in, const array &out, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn, bool mn_aligned, bool k_aligned)
      -
      MTL::ComputePipelineState * get_mb_sort_kernel(metal::Device &d, const std::string &kernel_name, const array &in, const array &idx, int bn, int tn)
      -
      Definition dtype.h:13
      -
      - - - - diff --git a/docs/build/html/lapack__helper_8h.html b/docs/build/html/lapack__helper_8h.html deleted file mode 100644 index 063c81e6..00000000 --- a/docs/build/html/lapack__helper_8h.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/lapack_helper.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      lapack_helper.h File Reference
      -
      -
      -
      #include <lapack.h>
      -
      -

      Go to the source code of this file.

      - - - - -

      -Macros

      #define MLX_LAPACK_FUNC(f)   f##_
       
      -

      Macro Definition Documentation

      - -

      ◆ MLX_LAPACK_FUNC

      - -
      -
      - - - - - - - -
      #define MLX_LAPACK_FUNC( f)   f##_
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/lapack__helper_8h_source.html b/docs/build/html/lapack__helper_8h_source.html deleted file mode 100644 index 255f5b65..00000000 --- a/docs/build/html/lapack__helper_8h_source.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/lapack_helper.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      lapack_helper.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#ifdef ACCELERATE_NEW_LAPACK
      -
      6#include <Accelerate/Accelerate.h>
      -
      7#else
      -
      8#include <lapack.h>
      -
      9#endif
      -
      10
      -
      11#if defined(LAPACK_GLOBAL) || defined(LAPACK_NAME)
      -
      12
      -
      13// This is to work around a change in the function signatures of lapack >= 3.9.1
      -
      14// where functions taking char* also include a strlen argument, see a similar
      -
      15// change in OpenCV:
      -
      16// https://github.com/opencv/opencv/blob/1eb061f89de0fb85c4c75a2deeb0f61a961a63ad/cmake/OpenCVFindLAPACK.cmake#L57
      -
      17#define MLX_LAPACK_FUNC(f) LAPACK_##f
      -
      18
      -
      19#else
      -
      20
      -
      21#define MLX_LAPACK_FUNC(f) f##_
      -
      22
      -
      23#endif
      -
      - - - - diff --git a/docs/build/html/linalg_8h.html b/docs/build/html/linalg_8h.html deleted file mode 100644 index 7d4c88c7..00000000 --- a/docs/build/html/linalg_8h.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -MLX: mlx/linalg.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      linalg.h File Reference
      -
      -
      -
      #include <optional>
      -#include "mlx/array.h"
      -#include "mlx/device.h"
      -#include "mlx/ops.h"
      -#include "mlx/stream.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::linalg
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      array mlx::core::linalg::norm (const array &a, const double ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
       Compute vector or matrix norms.
       
      array mlx::core::linalg::norm (const array &a, const double ord, int axis, bool keepdims=false, StreamOrDevice s={})
       
      array mlx::core::linalg::norm (const array &a, const std::string &ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
       
      array mlx::core::linalg::norm (const array &a, const std::string &ord, int axis, bool keepdims=false, StreamOrDevice s={})
       
      array mlx::core::linalg::norm (const array &a, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
       
      array mlx::core::linalg::norm (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       
      std::pair< array, arraymlx::core::linalg::qr (const array &a, StreamOrDevice s={})
       
      std::vector< arraymlx::core::linalg::svd (const array &a, StreamOrDevice s={})
       
      array mlx::core::linalg::inv (const array &a, StreamOrDevice s={})
       
      array mlx::core::linalg::tri_inv (const array &a, bool upper=false, StreamOrDevice s={})
       
      array mlx::core::linalg::cholesky (const array &a, bool upper=false, StreamOrDevice s={})
       
      array mlx::core::linalg::pinv (const array &a, StreamOrDevice s={})
       
      array mlx::core::linalg::cholesky_inv (const array &a, bool upper=false, StreamOrDevice s={})
       
      -
      - - - - diff --git a/docs/build/html/linalg_8h_source.html b/docs/build/html/linalg_8h_source.html deleted file mode 100644 index fa23c246..00000000 --- a/docs/build/html/linalg_8h_source.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -MLX: mlx/linalg.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      linalg.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <optional>
      -
      6
      -
      7#include "mlx/array.h"
      -
      8#include "mlx/device.h"
      -
      9#include "mlx/ops.h"
      -
      10#include "mlx/stream.h"
      -
      11
      -
      - -
      13
      - -
      26 const array& a,
      -
      27 const double ord,
      -
      28 const std::optional<std::vector<int>>& axis = std::nullopt,
      -
      29 bool keepdims = false,
      -
      30 StreamOrDevice s = {});
      -
      -
      31inline array norm(
      -
      32 const array& a,
      -
      33 const double ord,
      -
      34 int axis,
      -
      35 bool keepdims = false,
      -
      36 StreamOrDevice s = {}) {
      -
      37 return norm(a, ord, std::vector<int>{axis}, keepdims, s);
      -
      38}
      -
      - -
      40 const array& a,
      -
      41 const std::string& ord,
      -
      42 const std::optional<std::vector<int>>& axis = std::nullopt,
      -
      43 bool keepdims = false,
      -
      44 StreamOrDevice s = {});
      -
      -
      45inline array norm(
      -
      46 const array& a,
      -
      47 const std::string& ord,
      -
      48 int axis,
      -
      49 bool keepdims = false,
      -
      50 StreamOrDevice s = {}) {
      -
      51 return norm(a, ord, std::vector<int>{axis}, keepdims, s);
      -
      52}
      -
      - -
      54 const array& a,
      -
      55 const std::optional<std::vector<int>>& axis = std::nullopt,
      -
      56 bool keepdims = false,
      -
      57 StreamOrDevice s = {});
      -
      58inline array
      -
      -
      59norm(const array& a, int axis, bool keepdims = false, StreamOrDevice s = {}) {
      -
      60 return norm(a, std::vector<int>{axis}, keepdims, s);
      -
      61}
      -
      -
      62
      -
      63std::pair<array, array> qr(const array& a, StreamOrDevice s = {});
      -
      64
      -
      65std::vector<array> svd(const array& a, StreamOrDevice s = {});
      -
      66
      -
      67array inv(const array& a, StreamOrDevice s = {});
      -
      68
      -
      69array tri_inv(const array& a, bool upper = false, StreamOrDevice s = {});
      -
      70
      -
      71array cholesky(const array& a, bool upper = false, StreamOrDevice s = {});
      -
      72
      -
      73array pinv(const array& a, StreamOrDevice s = {});
      -
      74
      -
      75array cholesky_inv(const array& a, bool upper = false, StreamOrDevice s = {});
      -
      76
      -
      77} // namespace mlx::core::linalg
      -
      - -
      Definition array.h:20
      - -
      Definition linalg.h:12
      -
      array cholesky(const array &a, bool upper=false, StreamOrDevice s={})
      -
      std::vector< array > svd(const array &a, StreamOrDevice s={})
      -
      array tri_inv(const array &a, bool upper=false, StreamOrDevice s={})
      -
      array norm(const array &a, const double ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
      Compute vector or matrix norms.
      -
      array inv(const array &a, StreamOrDevice s={})
      -
      array pinv(const array &a, StreamOrDevice s={})
      -
      std::pair< array, array > qr(const array &a, StreamOrDevice s={})
      -
      array cholesky_inv(const array &a, bool upper=false, StreamOrDevice s={})
      -
      std::variant< std::monostate, Stream, Device > StreamOrDevice
      Definition utils.h:14
      - - -
      - - - - diff --git a/docs/build/html/loader__channel__l_8h.html b/docs/build/html/loader__channel__l_8h.html deleted file mode 100644 index 7f9a8d4d..00000000 --- a/docs/build/html/loader__channel__l_8h.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders/loader_channel_l.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      loader_channel_l.h File Reference
      -
      - - - - - diff --git a/docs/build/html/loader__channel__l_8h_source.html b/docs/build/html/loader__channel__l_8h_source.html deleted file mode 100644 index 4b7808e2..00000000 --- a/docs/build/html/loader__channel__l_8h_source.html +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders/loader_channel_l.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      loader_channel_l.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - -
      6
      - -
      8
      -
      10// Loading helper
      -
      12
      -
      13namespace mlx {
      -
      -
      14namespace steel {
      -
      15
      -
      16template <
      -
      17 typename T,
      -
      18 short BM,
      -
      19 short BN,
      -
      20 short BK,
      -
      21 short tgp_size,
      -
      22 short tgp_padding = 0>
      -
      - -
      24 // Destination dimensions
      -
      25 STEEL_CONST short BROWS = BM;
      -
      26 STEEL_CONST short BCOLS = BK;
      -
      27
      -
      28 // Read dimensions
      -
      29 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      -
      30 STEEL_CONST short vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4;
      -
      31
      -
      32 // Thread read shape
      - -
      34 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      35
      -
      36 // Rows / strided reads within the block
      - -
      38
      -
      39 // Thread location indices
      -
      40 const short thread_idx;
      -
      41 const short bi;
      -
      42 const short bj;
      -
      43
      -
      44 // threadgroup and device memory
      -
      45 threadgroup T* dst;
      -
      46
      -
      47 const constant MLXConvParams<2>* params;
      - -
      49
      -
      50 short weight_h;
      -
      51 short weight_w;
      -
      52
      -
      53 const device T* src[n_rows];
      -
      54
      - - - -
      58
      -
      59 /* Constructor */
      -
      - -
      61 const device T* src_,
      -
      62 threadgroup T* dst_,
      -
      63 const int2 offsets,
      -
      64 const constant MLXConvParams<2>* params_,
      -
      65 const constant ImplicitGemmConv2DParams* gemm_params_,
      -
      66 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      67 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      68 : thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      71 dst(dst_ + bi * dst_ld + bj),
      -
      72 params(params_),
      -
      73 gemm_params(gemm_params_),
      -
      74 weight_h(0),
      -
      75 weight_w(0) {
      -
      76 int out_n_pixels = params->oS[0] * params->oS[1];
      -
      77
      - -
      79 for (short i = 0; i < n_rows; ++i) {
      -
      80 int offset_nhw = offsets.y + bi + i * TROWS;
      -
      81 int n = offset_nhw / out_n_pixels;
      -
      82 int hw = offset_nhw % out_n_pixels;
      -
      83 int oh = hw / params->oS[1];
      -
      84 int ow = hw % params->oS[1];
      -
      85
      -
      86 int ih = oh * params->str[0] - params->pad[0];
      -
      87 int iw = ow * params->str[1] - params->pad[1];
      -
      88
      -
      89 read_n[i] = n;
      -
      90 read_ih[i] = ih;
      -
      91 read_iw[i] = iw;
      -
      92
      -
      93 // Adjust for flip
      -
      94 if (params->flip) {
      -
      95 ih += (params->wS[0] - 1) * params->kdil[0];
      -
      96 iw += (params->wS[1] - 1) * params->kdil[1];
      -
      97 }
      -
      98
      -
      99 // Read from input if in bounds
      -
      100 src[i] = src_ + n * params->in_strides[0] + ih * params->in_strides[1] +
      -
      101 iw * params->in_strides[2] + bj;
      -
      102 }
      -
      103 }
      -
      -
      104
      -
      105 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      106 METAL_FUNC void load_unsafe() const {
      - -
      108 for (short i = 0, is = 0; i < n_rows; ++i, is += TROWS) {
      -
      109 // Find bounds
      -
      110 int n = read_n[i];
      -
      111 int ih = read_ih[i] + weight_h * params->kdil[0];
      -
      112 int iw = read_iw[i] + weight_w * params->kdil[1];
      -
      113
      -
      114 // Read from input if in bounds
      -
      115 if ((n < params->N) && (ih >= 0 && ih < params->iS[0]) &&
      -
      116 (iw >= 0 && iw < params->iS[1])) {
      - -
      118 for (short j = 0; j < vec_size; ++j) {
      -
      119 dst[is * dst_ld + j] = src[i][j];
      -
      120 }
      -
      121 }
      -
      122
      -
      123 // Zero pad otherwise
      -
      124 else {
      - -
      126 for (short j = 0; j < vec_size; ++j) {
      -
      127 dst[is * dst_ld + j] = T(0);
      -
      128 }
      -
      129 }
      -
      130 }
      -
      131 }
      -
      -
      132
      -
      133 /* Iteration helper */
      -
      -
      134 METAL_FUNC void next() {
      -
      135 if (++weight_w < params->wS[1]) {
      - -
      137 for (short i = 0; i < n_rows; i++) {
      - -
      139 }
      -
      140
      -
      141 return;
      -
      142 }
      -
      143
      -
      144 weight_w = 0;
      -
      145
      -
      146 if (++weight_h < params->wS[0]) {
      - -
      148 for (short i = 0; i < n_rows; i++) {
      - -
      150 }
      -
      151
      -
      152 return;
      -
      153 }
      -
      154
      -
      155 weight_h = 0;
      -
      156
      - -
      158 for (short i = 0; i < n_rows; i++) {
      - -
      160 }
      -
      161 }
      -
      -
      162};
      -
      -
      163
      -
      164template <
      -
      165 typename T,
      -
      166 short BM,
      -
      167 short BN,
      -
      168 short BK,
      -
      169 short tgp_size,
      -
      170 short tgp_padding = 0>
      -
      - -
      172 // Destination dimensions
      -
      173 STEEL_CONST short BROWS = BM;
      -
      174 STEEL_CONST short BCOLS = BK;
      -
      175
      -
      176 // Read dimensions
      -
      177 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      -
      178 STEEL_CONST short vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4;
      -
      179
      -
      180 // Thread read shape
      - -
      182 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      183
      -
      184 // Rows / strided reads within the block
      - -
      186
      -
      187 using mask_t = short;
      -
      188
      -
      189 // Thread location indices
      -
      190 const short thread_idx;
      -
      191 const short bi;
      -
      192 const short bj;
      -
      193
      -
      194 // threadgroup and device memory
      -
      195 threadgroup T* dst;
      -
      196
      -
      197 const constant MLXConvParams<2>* params;
      - -
      199
      -
      200 short weight_h;
      -
      201 short weight_w;
      -
      202
      -
      203 const device T* src[n_rows];
      -
      204
      - - -
      207
      -
      208 /* Constructor */
      -
      - -
      210 const device T* src_,
      -
      211 threadgroup T* dst_,
      -
      212 const int2 offsets,
      -
      213 const constant MLXConvParams<2>* params_,
      -
      214 const constant ImplicitGemmConv2DParams* gemm_params_,
      -
      215 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      216 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      217 : thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      220 dst(dst_ + bi * dst_ld + bj),
      -
      221 params(params_),
      -
      222 gemm_params(gemm_params_),
      -
      223 weight_h(0),
      -
      224 weight_w(0) {
      -
      225 int out_n_pixels = params->oS[0] * params->oS[1];
      -
      226
      -
      227 int read_n[n_rows];
      -
      228 int read_ih[n_rows];
      -
      229 int read_iw[n_rows];
      -
      230
      - -
      232 for (short i = 0; i < n_rows; ++i) {
      -
      233 int offset_nhw = offsets.y + bi + i * TROWS;
      -
      234 int n = offset_nhw / out_n_pixels;
      -
      235 int hw = offset_nhw % out_n_pixels;
      -
      236 int oh = hw / params->oS[1];
      -
      237 int ow = hw % params->oS[1];
      -
      238
      -
      239 int ih = oh * params->str[0] - params->pad[0];
      -
      240 int iw = ow * params->str[1] - params->pad[1];
      -
      241
      -
      242 read_n[i] = n;
      -
      243 read_ih[i] = ih;
      -
      244 read_iw[i] = iw;
      -
      245
      -
      246 // Adjust for flip
      -
      247 if (params->flip) {
      -
      248 ih += (params->wS[0] - 1) * params->kdil[0];
      -
      249 iw += (params->wS[1] - 1) * params->kdil[1];
      -
      250 }
      -
      251
      -
      252 // Read from input if in bounds
      -
      253 src[i] = src_ + n * params->in_strides[0] + ih * params->in_strides[1] +
      -
      254 iw * params->in_strides[2] + bj;
      -
      255 }
      -
      256
      - -
      258 for (short i = 0; i < n_rows; ++i) {
      -
      259 mask_h[i] = 0;
      -
      260 mask_w[i] = 0;
      -
      261 }
      -
      262
      -
      263 for (short kh = 0; kh < params->wS[0]; kh++) {
      -
      264 short flip_h = params->flip ? params->wS[0] - kh - 1 : kh;
      - -
      266 for (short i = 0; i < n_rows; ++i) {
      -
      267 int n = read_n[i];
      -
      268 int ih = read_ih[i] + flip_h * params->kdil[0];
      -
      269
      -
      270 bool in_bounds = n < params->N && ih >= 0 && ih < params->iS[0];
      -
      271
      -
      272 mask_h[i] |= (in_bounds << kh);
      -
      273 }
      -
      274 }
      -
      275
      -
      276 for (short kw = 0; kw < params->wS[1]; kw++) {
      -
      277 short flip_w = params->flip ? params->wS[1] - kw - 1 : kw;
      - -
      279 for (short i = 0; i < n_rows; ++i) {
      -
      280 int iw = read_iw[i] + flip_w * params->kdil[1];
      -
      281
      -
      282 bool in_bounds = iw >= 0 && iw < params->iS[1];
      -
      283
      -
      284 mask_w[i] |= (in_bounds << kw);
      -
      285 }
      -
      286 }
      -
      287 }
      -
      -
      288
      -
      289 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      290 METAL_FUNC void load_unsafe() const {
      -
      291 mask_t h_mask = mask_t(1) << weight_h;
      -
      292 mask_t w_mask = mask_t(1) << weight_w;
      -
      293
      - -
      295 for (short i = 0, is = 0; i < n_rows; ++i, is += TROWS) {
      -
      296 // Read from input if in bounds
      -
      297 if ((mask_h[i] & h_mask) && (mask_w[i] & w_mask)) {
      - -
      299 for (short j = 0; j < vec_size; ++j) {
      -
      300 dst[is * dst_ld + j] = src[i][j];
      -
      301 }
      -
      302 }
      -
      303
      -
      304 // Zero pad otherwise
      -
      305 else {
      - -
      307 for (short j = 0; j < vec_size; ++j) {
      -
      308 dst[is * dst_ld + j] = T(0);
      -
      309 }
      -
      310 }
      -
      311 }
      -
      312 }
      -
      -
      313
      -
      314 /* Iteration helper */
      -
      -
      315 METAL_FUNC void next() {
      -
      316 if (++weight_w < params->wS[1]) {
      - -
      318 for (short i = 0; i < n_rows; i++) {
      - -
      320 }
      -
      321
      -
      322 return;
      -
      323 }
      -
      324
      -
      325 weight_w = 0;
      -
      326
      -
      327 if (++weight_h < params->wS[0]) {
      - -
      329 for (short i = 0; i < n_rows; i++) {
      - -
      331 }
      -
      332
      -
      333 return;
      -
      334 }
      -
      335
      -
      336 weight_h = 0;
      -
      337
      - -
      339 for (short i = 0; i < n_rows; i++) {
      - -
      341 }
      -
      342 }
      -
      -
      343};
      -
      -
      344
      -
      345template <
      -
      346 typename T,
      -
      347 short BM,
      -
      348 short BN,
      -
      349 short BK,
      -
      350 short tgp_size,
      -
      351 short tgp_padding = 0>
      -
      - -
      353 // Destination dimensions
      -
      354 STEEL_CONST short BROWS = BN;
      -
      355 STEEL_CONST short BCOLS = BK;
      -
      356
      -
      357 // Read dimensions
      -
      358 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      - -
      360 (BN == 8) ? 1 : (tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4);
      -
      361
      -
      362 // Thread read shape
      - -
      364 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      365
      -
      366 // Rows / strided reads within the block
      - -
      368
      -
      369 // Leading dimension for src
      -
      370 const int src_ld;
      -
      371
      -
      372 // Thread location indices
      -
      373 const short thread_idx;
      -
      374 const short bi;
      -
      375 const short bj;
      -
      376
      -
      377 // threadgroup and device memory
      -
      378 threadgroup T* dst;
      -
      379 const device T* src;
      -
      380
      -
      381 const constant MLXConvParams<2>* params;
      -
      382
      - -
      384
      -
      385 const int read_n;
      -
      386 const bool do_read;
      -
      387
      -
      388 /* Constructor */
      -
      - -
      390 const device T* src_,
      -
      391 threadgroup T* dst_,
      -
      392 const int2 offsets,
      -
      393 const constant MLXConvParams<2>* params_,
      -
      394 const constant ImplicitGemmConv2DParams* gemm_params_,
      -
      395 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      396 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      397 : src_ld(params_->wt_strides[0]),
      -
      398 thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      401 dst(dst_ + bi * dst_ld + bj),
      -
      402 src(src_ + bi * src_ld + bj),
      -
      403 params(params_),
      -
      404 weight_hw(0),
      -
      405 read_n(offsets.y + bi),
      -
      406 do_read(read_n + n_rows * TROWS <= gemm_params_->N) {}
      -
      -
      407
      -
      408 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      409 METAL_FUNC void load_unsafe() const {
      -
      410 if (BN != 8 || do_read) {
      - -
      412 for (short i = 0; i < BN; i += TROWS) {
      - -
      414 for (short j = 0; j < vec_size; j++) {
      -
      415 dst[i * dst_ld + j] = src[i * src_ld + j];
      -
      416 }
      -
      417 }
      -
      418 } else {
      -
      419 for (short i = 0; i < BN; i += TROWS) {
      -
      420 if ((read_n + i) < params->O) {
      - -
      422 for (short j = 0; j < vec_size; j++) {
      -
      423 dst[i * dst_ld + j] = src[i * src_ld + j];
      -
      424 }
      -
      425 } else {
      - -
      427 for (short j = 0; j < vec_size; j++) {
      -
      428 dst[i * dst_ld + j] = T(0);
      -
      429 }
      -
      430 }
      -
      431 }
      -
      432 }
      -
      433 }
      -
      -
      434
      -
      435 /* Iteration helper */
      -
      -
      436 METAL_FUNC void next() {
      -
      437 if (++weight_hw < (params->wS[1] * params->wS[0])) {
      -
      438 src += params->wt_strides[2];
      -
      439 return;
      -
      440 }
      -
      441
      -
      442 weight_hw = 0;
      -
      443
      -
      444 src += BK - (params->wS[1] * params->wS[0] - 1) * params->wt_strides[2];
      -
      445 }
      -
      -
      446};
      -
      -
      447
      -
      448} // namespace steel
      -
      -
      449} // namespace mlx
      - - -
      Definition allocator.h:7
      -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      #define STEEL_CONST
      Definition defines.h:3
      -
      Definition params.h:6
      -
      const int oS[NDIM]
      Definition params.h:12
      -
      const int iS[NDIM]
      Definition params.h:10
      -
      const int kdil[NDIM]
      Definition params.h:15
      -
      const int str[NDIM]
      Definition params.h:13
      -
      const size_t wt_strides[NDIM+2]
      Definition params.h:18
      -
      const bool flip
      Definition params.h:21
      -
      const size_t in_strides[NDIM+2]
      Definition params.h:17
      -
      const int wS[NDIM]
      Definition params.h:11
      -
      const int O
      Definition params.h:9
      -
      const int N
      Definition params.h:7
      -
      const int pad[NDIM]
      Definition params.h:14
      -
      Definition loader_channel_l.h:23
      -
      STEEL_CONST short n_rows
      Definition loader_channel_l.h:37
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_channel_l.h:47
      -
      STEEL_CONST short TCOLS
      Definition loader_channel_l.h:33
      -
      int read_iw[n_rows]
      Definition loader_channel_l.h:57
      -
      STEEL_CONST short TROWS
      Definition loader_channel_l.h:34
      -
      STEEL_CONST short BCOLS
      Definition loader_channel_l.h:26
      -
      METAL_FUNC void next()
      Definition loader_channel_l.h:134
      -
      short weight_h
      Definition loader_channel_l.h:50
      -
      const device T * src[n_rows]
      Definition loader_channel_l.h:53
      -
      const short thread_idx
      Definition loader_channel_l.h:40
      -
      const short bj
      Definition loader_channel_l.h:42
      -
      int read_ih[n_rows]
      Definition loader_channel_l.h:56
      -
      METAL_FUNC Conv2DInputBlockLoaderLargeFilter(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
      Definition loader_channel_l.h:60
      -
      const short bi
      Definition loader_channel_l.h:41
      -
      STEEL_CONST short dst_ld
      Definition loader_channel_l.h:29
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_channel_l.h:106
      -
      const constant ImplicitGemmConv2DParams * gemm_params
      Definition loader_channel_l.h:48
      -
      STEEL_CONST short BROWS
      Definition loader_channel_l.h:25
      -
      STEEL_CONST short vec_size
      Definition loader_channel_l.h:30
      -
      short weight_w
      Definition loader_channel_l.h:51
      -
      threadgroup T * dst
      Definition loader_channel_l.h:45
      -
      int read_n[n_rows]
      Definition loader_channel_l.h:55
      -
      Definition loader_channel_l.h:171
      -
      METAL_FUNC Conv2DInputBlockLoaderSmallFilter(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
      Definition loader_channel_l.h:209
      -
      mask_t mask_h[n_rows]
      Definition loader_channel_l.h:205
      -
      STEEL_CONST short BROWS
      Definition loader_channel_l.h:173
      -
      mask_t mask_w[n_rows]
      Definition loader_channel_l.h:206
      -
      short mask_t
      Definition loader_channel_l.h:187
      -
      short weight_h
      Definition loader_channel_l.h:200
      -
      STEEL_CONST short TROWS
      Definition loader_channel_l.h:182
      -
      STEEL_CONST short n_rows
      Definition loader_channel_l.h:185
      -
      short weight_w
      Definition loader_channel_l.h:201
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_channel_l.h:197
      -
      const device T * src[n_rows]
      Definition loader_channel_l.h:203
      -
      STEEL_CONST short TCOLS
      Definition loader_channel_l.h:181
      -
      const short bj
      Definition loader_channel_l.h:192
      -
      STEEL_CONST short vec_size
      Definition loader_channel_l.h:178
      -
      METAL_FUNC void next()
      Definition loader_channel_l.h:315
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_channel_l.h:290
      -
      threadgroup T * dst
      Definition loader_channel_l.h:195
      -
      STEEL_CONST short dst_ld
      Definition loader_channel_l.h:177
      -
      const short thread_idx
      Definition loader_channel_l.h:190
      -
      STEEL_CONST short BCOLS
      Definition loader_channel_l.h:174
      -
      const constant ImplicitGemmConv2DParams * gemm_params
      Definition loader_channel_l.h:198
      -
      const short bi
      Definition loader_channel_l.h:191
      -
      Definition loader_channel_l.h:352
      -
      STEEL_CONST short dst_ld
      Definition loader_channel_l.h:358
      -
      STEEL_CONST short vec_size
      Definition loader_channel_l.h:359
      -
      const bool do_read
      Definition loader_channel_l.h:386
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_channel_l.h:381
      -
      STEEL_CONST short n_rows
      Definition loader_channel_l.h:367
      -
      const int read_n
      Definition loader_channel_l.h:385
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_channel_l.h:409
      -
      const short bj
      Definition loader_channel_l.h:375
      -
      const int src_ld
      Definition loader_channel_l.h:370
      -
      const device T * src
      Definition loader_channel_l.h:379
      -
      STEEL_CONST short TCOLS
      Definition loader_channel_l.h:363
      -
      STEEL_CONST short BCOLS
      Definition loader_channel_l.h:355
      -
      const short bi
      Definition loader_channel_l.h:374
      -
      STEEL_CONST short TROWS
      Definition loader_channel_l.h:364
      -
      METAL_FUNC Conv2DWeightBlockLoader(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
      Definition loader_channel_l.h:389
      -
      METAL_FUNC void next()
      Definition loader_channel_l.h:436
      -
      const short thread_idx
      Definition loader_channel_l.h:373
      -
      int weight_hw
      Definition loader_channel_l.h:383
      -
      STEEL_CONST short BROWS
      Definition loader_channel_l.h:354
      -
      threadgroup T * dst
      Definition loader_channel_l.h:378
      - -
      const int inp_jump_h
      Definition params.h:35
      -
      const int inp_jump_c
      Definition params.h:36
      -
      const int inp_jump_w
      Definition params.h:34
      -
      - - - - diff --git a/docs/build/html/loader__channel__n_8h.html b/docs/build/html/loader__channel__n_8h.html deleted file mode 100644 index 0837a77e..00000000 --- a/docs/build/html/loader__channel__n_8h.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders/loader_channel_n.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      loader_channel_n.h File Reference
      -
      - - - - - diff --git a/docs/build/html/loader__channel__n_8h_source.html b/docs/build/html/loader__channel__n_8h_source.html deleted file mode 100644 index 897cf93b..00000000 --- a/docs/build/html/loader__channel__n_8h_source.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders/loader_channel_n.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      loader_channel_n.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - -
      6
      - -
      8
      -
      10// Loading helper
      -
      12
      -
      13namespace mlx {
      -
      14namespace steel {
      -
      15
      -
      16template <short n_channels_>
      -
      - -
      18 STEEL_CONST short n_channels = n_channels_;
      -
      19 STEEL_CONST short vec_size = n_channels_ <= 4 ? 4 : 8;
      -
      20 STEEL_CONST short excess = vec_size - n_channels_;
      -
      21};
      -
      -
      22
      -
      23template <>
      -
      -
      24struct ChannelHelper<1> {
      - - - -
      28};
      -
      -
      29
      -
      30template <>
      -
      -
      31struct ChannelHelper<2> {
      - - - -
      35};
      -
      -
      36
      -
      37template <>
      -
      -
      38struct ChannelHelper<3> {
      - - - -
      42};
      -
      -
      43
      -
      44template <>
      -
      -
      45struct ChannelHelper<4> {
      - - - -
      49};
      -
      -
      50
      -
      51template <
      -
      52 typename T,
      -
      53 short BM,
      -
      54 short BN,
      -
      55 short BK,
      -
      56 short tgp_size,
      -
      57 short n_channels,
      -
      58 short tgp_padding = 0>
      -
      - -
      60 // Destination dimensions
      -
      61 STEEL_CONST short BROWS = BM;
      -
      62 STEEL_CONST short BCOLS = BK;
      -
      63
      -
      64 // Read dimensions
      -
      65 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      - -
      67
      -
      68 // Thread read shape
      - -
      70 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      71
      -
      72 // Rows / strided reads within the block
      - -
      74
      -
      75 // Thread location indices
      -
      76 const short thread_idx;
      -
      77 const short bi;
      -
      78 const short bj;
      -
      79
      -
      80 // threadgroup and device memory
      -
      81 threadgroup T* dst;
      -
      82
      -
      83 const constant MLXConvParams<2>* params;
      - -
      85
      -
      86 short weight_hw;
      -
      87
      -
      88 const device T* src[n_rows];
      -
      89
      - - - -
      93
      -
      94 /* Constructor */
      -
      - -
      96 const device T* src_,
      -
      97 threadgroup T* dst_,
      -
      98 const int2 offsets,
      -
      99 const constant MLXConvParams<2>* params_,
      -
      100 const constant ImplicitGemmConv2DParams* gemm_params_,
      -
      101 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      102 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      103 : thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      106 dst(dst_ + bi * dst_ld + bj),
      -
      107 params(params_),
      -
      108 gemm_params(gemm_params_),
      - -
      110 int out_n_pixels = params->oS[0] * params->oS[1];
      -
      111
      - -
      113 for (short i = 0; i < n_rows; ++i) {
      -
      114 int offset_nhw = offsets.y + bi + i * TROWS;
      -
      115 int n = offset_nhw / out_n_pixels;
      -
      116 int hw = offset_nhw % out_n_pixels;
      -
      117 int oh = hw / params->oS[1];
      -
      118 int ow = hw % params->oS[1];
      -
      119
      -
      120 int ih = oh * params->str[0] - params->pad[0];
      -
      121 int iw = ow * params->str[1] - params->pad[1];
      -
      122
      -
      123 // Read from input if in bounds
      -
      124 src[i] = src_ + n * params->in_strides[0] + ih * params->in_strides[1] +
      -
      125 iw * params->in_strides[2];
      -
      126
      -
      127 read_n[i] = n;
      -
      128 read_ih[i] = ih;
      -
      129 read_iw[i] = iw;
      -
      130 }
      -
      131 }
      -
      -
      132
      -
      133 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      134 METAL_FUNC void load_unsafe() const {
      -
      135 if (weight_hw >= params->wS[1] * params->wS[0]) {
      - -
      137 for (short i = 0; i < BROWS; i += TROWS) {
      - -
      139 for (short j = 0; j < vec_size; j++) {
      -
      140 dst[i * dst_ld + j] = T(0);
      -
      141 }
      -
      142 }
      -
      143 return;
      -
      144 }
      -
      145
      -
      146 int wh = (weight_hw / params->wS[1]);
      -
      147 int ww = (weight_hw % params->wS[1]);
      -
      148
      -
      149 int flip_h = params->flip ? params->wS[0] - wh - 1 : wh;
      -
      150 int flip_w = params->flip ? params->wS[1] - ww - 1 : ww;
      -
      151
      -
      152 int weight_h = flip_h * params->kdil[0];
      -
      153 int weight_w = flip_w * params->kdil[1];
      -
      154
      - -
      156 for (short i = 0, is = 0; i < n_rows; ++i, is += TROWS) {
      -
      157 // Find bounds
      -
      158 int n = read_n[i];
      -
      159 int ih = read_ih[i] + weight_h;
      -
      160 int iw = read_iw[i] + weight_w;
      -
      161
      -
      162 // Read from input if in bounds
      -
      163 if ((n < params->N) && (ih >= 0 && ih < params->iS[0]) &&
      -
      164 (iw >= 0 && iw < params->iS[1])) {
      -
      165 const device T* curr_src = src[i] + weight_h * params->in_strides[1] +
      -
      166 weight_w * params->in_strides[2];
      -
      167
      - -
      169 for (short j = 0; j < n_channels; ++j) {
      -
      170 dst[is * dst_ld + j] = curr_src[j];
      -
      171 }
      -
      172
      - -
      174 for (short j = n_channels; j < vec_size; ++j) {
      -
      175 dst[is * dst_ld + j] = T(0);
      -
      176 }
      -
      177 }
      -
      178
      -
      179 // Zero pad otherwise
      -
      180 else {
      - -
      182 for (short j = 0; j < vec_size; ++j) {
      -
      183 dst[is * dst_ld + j] = T(0);
      -
      184 }
      -
      185 }
      -
      186 }
      -
      187 }
      -
      -
      188
      -
      189 /* Iteration helper */
      -
      -
      190 METAL_FUNC void next() {
      -
      191 weight_hw += TCOLS;
      -
      192 }
      -
      -
      193};
      -
      -
      194
      -
      195template <
      -
      196 typename T,
      -
      197 short BM,
      -
      198 short BN,
      -
      199 short BK,
      -
      200 short tgp_size,
      -
      201 short n_channels,
      -
      202 short tgp_padding = 0>
      -
      - -
      204 // Destination dimensions
      -
      205 STEEL_CONST short BROWS = BN;
      -
      206 STEEL_CONST short BCOLS = BK;
      -
      207
      -
      208 // Read dimensions
      -
      209 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      - -
      211
      -
      212 // Thread read shape
      - -
      214 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      215
      -
      216 // Rows / strided reads within the block
      - -
      218
      -
      219 // Leading dimension for src
      -
      220 const int src_ld;
      -
      221
      -
      222 // Thread location indices
      -
      223 const short thread_idx;
      -
      224 const short bi;
      -
      225 const short bj;
      -
      226
      -
      227 // threadgroup and device memory
      -
      228 threadgroup T* dst;
      -
      229 const device T* src;
      -
      230
      -
      231 const constant MLXConvParams<2>* params;
      -
      232
      - -
      234
      -
      235 const int read_n;
      -
      236 const bool do_read;
      -
      237
      -
      238 /* Constructor */
      -
      - -
      240 const device T* src_,
      -
      241 threadgroup T* dst_,
      -
      242 const int2 offsets,
      -
      243 const constant MLXConvParams<2>* params_,
      -
      244 const constant ImplicitGemmConv2DParams* gemm_params_,
      -
      245 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      246 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      247 : src_ld(params_->wt_strides[0]),
      -
      248 thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      251 dst(dst_ + bi * dst_ld + bj),
      -
      252 src(src_ + bi * src_ld),
      -
      253 params(params_),
      - -
      255 read_n(offsets.y + bi),
      -
      256 do_read(read_n + BN <= gemm_params_->N) {}
      -
      -
      257
      -
      258 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      259 METAL_FUNC void load_unsafe() const {
      -
      260 if (bi >= BROWS || bj >= BCOLS)
      -
      261 return;
      -
      262
      -
      263 if (read_n >= params->O || weight_hw >= params->wS[1] * params->wS[0]) {
      - -
      265 for (short i = 0; i < BROWS; i += TROWS) {
      - -
      267 for (short j = 0; j < vec_size; j++) {
      -
      268 dst[i * dst_ld + j] = T(0);
      -
      269 }
      -
      270 }
      -
      271
      -
      272 return;
      -
      273 }
      -
      274
      -
      275 const device T* curr_src = src + weight_hw * params->wt_strides[2];
      -
      276
      -
      277 if (BN != 8 || do_read) {
      - -
      279 for (short i = 0; i < BROWS; i += TROWS) {
      - -
      281 for (short j = 0; j < n_channels; j++) {
      -
      282 dst[i * dst_ld + j] = curr_src[i * src_ld + j];
      -
      283 }
      -
      284
      - -
      286 for (short j = n_channels; j < vec_size; j++) {
      -
      287 dst[i * dst_ld + j] = T(0);
      -
      288 }
      -
      289 }
      -
      290 } else {
      -
      291 for (short i = 0; i < BROWS; i += TROWS) {
      -
      292 if (((read_n + i) < params->O)) {
      - -
      294 for (short j = 0; j < n_channels; j++) {
      -
      295 dst[i * dst_ld + j] = curr_src[i * src_ld + j];
      -
      296 }
      -
      297
      - -
      299 for (short j = n_channels; j < vec_size; j++) {
      -
      300 dst[i * dst_ld + j] = T(0);
      -
      301 }
      -
      302 } else {
      - -
      304 for (short j = 0; j < vec_size; j++) {
      -
      305 dst[i * dst_ld + j] = T(0);
      -
      306 }
      -
      307 }
      -
      308 }
      -
      309 }
      -
      310 }
      -
      -
      311
      -
      312 /* Iteration helper */
      -
      -
      313 METAL_FUNC void next() {
      -
      314 weight_hw += TCOLS;
      -
      315 }
      -
      -
      316};
      -
      -
      317
      -
      318} // namespace steel
      -
      319} // namespace mlx
      - - -
      Definition allocator.h:7
      -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      #define STEEL_CONST
      Definition defines.h:3
      -
      Definition params.h:6
      -
      const int oS[NDIM]
      Definition params.h:12
      -
      const int iS[NDIM]
      Definition params.h:10
      -
      const int kdil[NDIM]
      Definition params.h:15
      -
      const int str[NDIM]
      Definition params.h:13
      -
      const size_t wt_strides[NDIM+2]
      Definition params.h:18
      -
      const bool flip
      Definition params.h:21
      -
      const size_t in_strides[NDIM+2]
      Definition params.h:17
      -
      const int wS[NDIM]
      Definition params.h:11
      -
      const int O
      Definition params.h:9
      -
      const int pad[NDIM]
      Definition params.h:14
      -
      Definition loader_channel_n.h:17
      -
      STEEL_CONST short vec_size
      Definition loader_channel_n.h:19
      -
      STEEL_CONST short n_channels
      Definition loader_channel_n.h:18
      -
      STEEL_CONST short excess
      Definition loader_channel_n.h:20
      -
      Definition loader_channel_n.h:59
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_channel_n.h:83
      -
      STEEL_CONST short BROWS
      Definition loader_channel_n.h:61
      -
      threadgroup T * dst
      Definition loader_channel_n.h:81
      -
      int read_ih[n_rows]
      Definition loader_channel_n.h:91
      -
      STEEL_CONST short vec_size
      Definition loader_channel_n.h:66
      -
      STEEL_CONST short TROWS
      Definition loader_channel_n.h:70
      -
      const short bj
      Definition loader_channel_n.h:78
      -
      short weight_hw
      Definition loader_channel_n.h:86
      -
      STEEL_CONST short n_rows
      Definition loader_channel_n.h:73
      -
      STEEL_CONST short BCOLS
      Definition loader_channel_n.h:62
      -
      const short thread_idx
      Definition loader_channel_n.h:76
      -
      const short bi
      Definition loader_channel_n.h:77
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_channel_n.h:134
      -
      int read_iw[n_rows]
      Definition loader_channel_n.h:92
      -
      METAL_FUNC Conv2DInputBlockLoaderSmallChannels(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
      Definition loader_channel_n.h:95
      -
      STEEL_CONST short TCOLS
      Definition loader_channel_n.h:69
      -
      int read_n[n_rows]
      Definition loader_channel_n.h:90
      -
      STEEL_CONST short dst_ld
      Definition loader_channel_n.h:65
      -
      const constant ImplicitGemmConv2DParams * gemm_params
      Definition loader_channel_n.h:84
      -
      METAL_FUNC void next()
      Definition loader_channel_n.h:190
      -
      const device T * src[n_rows]
      Definition loader_channel_n.h:88
      -
      Definition loader_channel_n.h:203
      -
      STEEL_CONST short vec_size
      Definition loader_channel_n.h:210
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_channel_n.h:259
      -
      threadgroup T * dst
      Definition loader_channel_n.h:228
      -
      METAL_FUNC void next()
      Definition loader_channel_n.h:313
      -
      int weight_hw
      Definition loader_channel_n.h:233
      -
      STEEL_CONST short TROWS
      Definition loader_channel_n.h:214
      -
      const bool do_read
      Definition loader_channel_n.h:236
      -
      const device T * src
      Definition loader_channel_n.h:229
      -
      STEEL_CONST short BCOLS
      Definition loader_channel_n.h:206
      -
      const int read_n
      Definition loader_channel_n.h:235
      -
      const int src_ld
      Definition loader_channel_n.h:220
      -
      STEEL_CONST short dst_ld
      Definition loader_channel_n.h:209
      -
      const short thread_idx
      Definition loader_channel_n.h:223
      -
      STEEL_CONST short BROWS
      Definition loader_channel_n.h:205
      -
      STEEL_CONST short TCOLS
      Definition loader_channel_n.h:213
      -
      const short bj
      Definition loader_channel_n.h:225
      -
      METAL_FUNC Conv2DWeightBlockLoaderSmallChannels(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
      Definition loader_channel_n.h:239
      -
      const short bi
      Definition loader_channel_n.h:224
      -
      STEEL_CONST short n_rows
      Definition loader_channel_n.h:217
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_channel_n.h:231
      - -
      - - - - diff --git a/docs/build/html/loader__general_8h.html b/docs/build/html/loader__general_8h.html deleted file mode 100644 index a74c36d0..00000000 --- a/docs/build/html/loader__general_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders/loader_general.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      loader_general.h File Reference
      -
      - - - - - diff --git a/docs/build/html/loader__general_8h_source.html b/docs/build/html/loader__general_8h_source.html deleted file mode 100644 index fe03295d..00000000 --- a/docs/build/html/loader__general_8h_source.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/loaders/loader_general.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      loader_general.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - -
      6
      -
      8// Loading helper
      -
      10
      -
      11namespace mlx {
      -
      12namespace steel {
      -
      13
      -
      14template <
      -
      15 typename T,
      -
      16 short BM,
      -
      17 short BN,
      -
      18 short BK,
      -
      19 short tgp_size,
      -
      20 short tgp_padding = 0>
      -
      - -
      22 // Destination dimensions
      -
      23 STEEL_CONST short BROWS = BM;
      -
      24 STEEL_CONST short BCOLS = BK;
      -
      25
      -
      26 // Read dimensions
      -
      27 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      -
      28 STEEL_CONST short vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4;
      -
      29
      -
      30 // Thread read shape
      - -
      32 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      33
      -
      34 // Rows / strided reads within the block
      - -
      36
      -
      37 // Thread location indices
      -
      38 const short thread_idx;
      -
      39 const short bi;
      -
      40 const short bj;
      -
      41
      -
      42 // threadgroup and device memory
      -
      43 threadgroup T* dst;
      -
      44
      -
      45 const constant MLXConvParams<2>* params;
      - -
      47
      -
      48 const short base_wh;
      -
      49 const short base_ww;
      -
      50
      -
      51 short weight_h;
      -
      52 short weight_w;
      -
      53
      -
      54 const device T* src[n_rows];
      -
      55
      - - - -
      59
      -
      60 /* Constructor */
      -
      - -
      62 const device T* src_,
      -
      63 threadgroup T* dst_,
      -
      64 const int4 offsets,
      -
      65 const constant MLXConvParams<2>* params_,
      -
      66 const constant Conv2DGeneralJumpParams* jump_params_,
      -
      67 const short base_wh_,
      -
      68 const short base_ww_,
      -
      69 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      70 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      71 : thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      74 dst(dst_ + bi * dst_ld + bj),
      -
      75 params(params_),
      -
      76 jump_params(jump_params_),
      -
      77 base_wh(base_wh_),
      -
      78 base_ww(base_ww_),
      -
      79 weight_h(base_wh_),
      -
      80 weight_w(base_ww_) {
      - -
      82 for (short i = 0; i < n_rows; ++i) {
      -
      83 int offset_nhw = offsets.y + bi + i * TROWS;
      -
      84 int n = offset_nhw / jump_params->adj_out_hw;
      -
      85 int hw = offset_nhw % jump_params->adj_out_hw;
      -
      86 int oh =
      -
      87 (hw / jump_params->adj_out_w) * jump_params->f_out_jump_h + offsets.z;
      -
      88 int ow =
      -
      89 (hw % jump_params->adj_out_w) * jump_params->f_out_jump_w + offsets.w;
      -
      90
      -
      91 int ih = oh * params->str[0] - params->pad[0];
      -
      92 int iw = ow * params->str[1] - params->pad[1];
      -
      93
      -
      94 read_n[i] = n;
      -
      95 read_ih[i] = ih;
      -
      96 read_iw[i] = iw;
      -
      97
      -
      98 // Read from input if in bounds
      -
      99 src[i] = src_ + n * params->in_strides[0] + bj;
      -
      100 }
      -
      101 }
      -
      -
      102
      -
      103 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      104 METAL_FUNC void load_unsafe() const {
      - -
      106 for (short i = 0, is = 0; i < n_rows; ++i, is += TROWS) {
      -
      107 // Find bounds
      -
      108 int n = read_n[i];
      -
      109
      -
      110 int h_flip = params->flip ? params->wS[0] - weight_h - 1 : weight_h;
      -
      111 int w_flip = params->flip ? params->wS[1] - weight_w - 1 : weight_w;
      -
      112
      -
      113 int ih_dil = read_ih[i] + h_flip * params->kdil[0];
      -
      114 int iw_dil = read_iw[i] + w_flip * params->kdil[1];
      -
      115
      -
      116 int ih = ih_dil / params->idil[0];
      -
      117 int iw = iw_dil / params->idil[1];
      -
      118
      -
      119 size_t offset = ih * params->in_strides[1] + iw * params->in_strides[2];
      -
      120
      -
      121 // Read from input if in bounds
      -
      122 if ((n < params->N) && (ih_dil >= 0 && ih < params->iS[0]) &&
      -
      123 (iw_dil >= 0 && iw < params->iS[1])) {
      - -
      125 for (short j = 0; j < vec_size; ++j) {
      -
      126 dst[is * dst_ld + j] = (src[i])[offset + j];
      -
      127 }
      -
      128 }
      -
      129
      -
      130 // Zero pad otherwise
      -
      131 else {
      - -
      133 for (short j = 0; j < vec_size; ++j) {
      -
      134 dst[is * dst_ld + j] = T(0);
      -
      135 }
      -
      136 }
      -
      137 }
      -
      138 }
      -
      -
      139
      -
      140 /* Iteration helper */
      -
      -
      141 METAL_FUNC void next() {
      - -
      143 if (weight_w < params->wS[1]) {
      -
      144 return;
      -
      145 }
      -
      146
      - -
      148
      - -
      150 if (weight_h < params->wS[0]) {
      -
      151 return;
      -
      152 }
      -
      153
      - -
      155
      - -
      157 for (short i = 0; i < n_rows; i++) {
      -
      158 src[i] += BK;
      -
      159 }
      -
      160 }
      -
      -
      161};
      -
      -
      162
      -
      163template <
      -
      164 typename T,
      -
      165 short BM,
      -
      166 short BN,
      -
      167 short BK,
      -
      168 short tgp_size,
      -
      169 short tgp_padding = 0>
      -
      - -
      171 // Destination dimensions
      -
      172 STEEL_CONST short BROWS = BN;
      -
      173 STEEL_CONST short BCOLS = BK;
      -
      174
      -
      175 // Read dimensions
      -
      176 STEEL_CONST short dst_ld = BCOLS + tgp_padding;
      - -
      178 (BN == 8) ? 1 : (tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4);
      -
      179
      -
      180 // Thread read shape
      - -
      182 STEEL_CONST short TROWS = tgp_size / TCOLS;
      -
      183
      -
      184 // Rows / strided reads within the block
      - -
      186
      -
      187 // Leading dimension for src
      -
      188 const int src_ld;
      -
      189
      -
      190 // Thread location indices
      -
      191 const short thread_idx;
      -
      192 const short bi;
      -
      193 const short bj;
      -
      194
      -
      195 // threadgroup and device memory
      -
      196 threadgroup T* dst;
      -
      197 const device T* src;
      -
      198
      -
      199 const constant MLXConvParams<2>* params;
      - -
      201
      -
      202 const short base_wh;
      -
      203 const short base_ww;
      -
      204
      -
      205 short weight_h;
      -
      206 short weight_w;
      -
      207
      -
      208 const int start_row;
      -
      209
      -
      210 /* Constructor */
      -
      - -
      212 const device T* src_,
      -
      213 threadgroup T* dst_,
      -
      214 const int2 offsets,
      -
      215 const constant MLXConvParams<2>* params_,
      -
      216 const constant Conv2DGeneralJumpParams* jump_params_,
      -
      217 const short base_wh_,
      -
      218 const short base_ww_,
      -
      219 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      220 uint simd_lane_id [[thread_index_in_simdgroup]])
      -
      221 : src_ld(params_->wt_strides[0]),
      -
      222 thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      225 dst(dst_ + bi * dst_ld + bj),
      -
      226 src(src_ + bi * src_ld + bj),
      -
      227 params(params_),
      -
      228 jump_params(jump_params_),
      -
      229 base_wh(base_wh_),
      -
      230 base_ww(base_ww_),
      -
      231 weight_h(base_wh_),
      -
      232 weight_w(base_ww_),
      -
      233 start_row(offsets.y + bi) {}
      -
      -
      234
      -
      235 /* Load from device memory into threadgroup memory - without bound checking */
      -
      -
      236 METAL_FUNC void load_unsafe() const {
      -
      237 const device T* curr_src = src + weight_h * params->wt_strides[1] +
      - -
      239
      -
      240 if ((start_row + BN <= params->O)) {
      - -
      242 for (short i = 0; i < BN; i += TROWS) {
      - -
      244 for (short j = 0; j < vec_size; j++) {
      -
      245 dst[i * dst_ld + j] = curr_src[i * src_ld + j];
      -
      246 }
      -
      247 }
      -
      248 } else {
      -
      249 for (short i = 0; i < BN; i += TROWS) {
      -
      250 if ((start_row + i) < params->O) {
      - -
      252 for (short j = 0; j < vec_size; j++) {
      -
      253 dst[i * dst_ld + j] = curr_src[i * src_ld + j];
      -
      254 }
      -
      255 } else {
      - -
      257 for (short j = 0; j < vec_size; j++) {
      -
      258 dst[i * dst_ld + j] = T(0);
      -
      259 }
      -
      260 }
      -
      261 }
      -
      262 }
      -
      263 }
      -
      -
      264
      -
      265 /* Iteration helper */
      -
      -
      266 METAL_FUNC void next() {
      - -
      268 if (weight_w < params->wS[1]) {
      -
      269 return;
      -
      270 }
      -
      271
      - -
      273
      - -
      275 if (weight_h < params->wS[0]) {
      -
      276 return;
      -
      277 }
      -
      278
      - -
      280
      -
      281 src += BK;
      -
      282 }
      -
      -
      283};
      -
      -
      284
      -
      285} // namespace steel
      -
      286} // namespace mlx
      -
      Definition allocator.h:7
      - -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      #define STEEL_CONST
      Definition defines.h:3
      -
      Definition params.h:6
      -
      const int kdil[NDIM]
      Definition params.h:15
      -
      const int str[NDIM]
      Definition params.h:13
      -
      const size_t wt_strides[NDIM+2]
      Definition params.h:18
      -
      const bool flip
      Definition params.h:21
      -
      const size_t in_strides[NDIM+2]
      Definition params.h:17
      -
      const int wS[NDIM]
      Definition params.h:11
      -
      const int O
      Definition params.h:9
      -
      const int pad[NDIM]
      Definition params.h:14
      -
      const int idil[NDIM]
      Definition params.h:16
      - -
      const int f_out_jump_w
      Definition params.h:48
      -
      const int f_wgt_jump_h
      Definition params.h:44
      -
      const int f_wgt_jump_w
      Definition params.h:45
      -
      const int f_out_jump_h
      Definition params.h:47
      -
      const int adj_out_w
      Definition params.h:51
      -
      const int adj_out_hw
      Definition params.h:52
      -
      Definition loader_general.h:21
      -
      short weight_w
      Definition loader_general.h:52
      -
      STEEL_CONST short dst_ld
      Definition loader_general.h:27
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_general.h:45
      -
      STEEL_CONST short vec_size
      Definition loader_general.h:28
      -
      METAL_FUNC Conv2DInputBlockLoaderGeneral(const device T *src_, threadgroup T *dst_, const int4 offsets, const constant MLXConvParams< 2 > *params_, const constant Conv2DGeneralJumpParams *jump_params_, const short base_wh_, const short base_ww_, uint simd_group_id, uint simd_lane_id)
      Definition loader_general.h:61
      -
      const device T * src[n_rows]
      Definition loader_general.h:54
      -
      const constant Conv2DGeneralJumpParams * jump_params
      Definition loader_general.h:46
      -
      STEEL_CONST short TROWS
      Definition loader_general.h:32
      -
      const short bi
      Definition loader_general.h:39
      -
      const short base_ww
      Definition loader_general.h:49
      -
      int read_ih[n_rows]
      Definition loader_general.h:57
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_general.h:104
      -
      short weight_h
      Definition loader_general.h:51
      -
      STEEL_CONST short BCOLS
      Definition loader_general.h:24
      -
      METAL_FUNC void next()
      Definition loader_general.h:141
      -
      const short thread_idx
      Definition loader_general.h:38
      -
      int read_iw[n_rows]
      Definition loader_general.h:58
      -
      threadgroup T * dst
      Definition loader_general.h:43
      -
      STEEL_CONST short BROWS
      Definition loader_general.h:23
      -
      STEEL_CONST short n_rows
      Definition loader_general.h:35
      -
      const short base_wh
      Definition loader_general.h:48
      -
      const short bj
      Definition loader_general.h:40
      -
      STEEL_CONST short TCOLS
      Definition loader_general.h:31
      -
      int read_n[n_rows]
      Definition loader_general.h:56
      -
      Definition loader_general.h:170
      -
      STEEL_CONST short BROWS
      Definition loader_general.h:172
      -
      const short thread_idx
      Definition loader_general.h:191
      -
      STEEL_CONST short vec_size
      Definition loader_general.h:177
      -
      METAL_FUNC void next()
      Definition loader_general.h:266
      -
      STEEL_CONST short BCOLS
      Definition loader_general.h:173
      -
      const int start_row
      Definition loader_general.h:208
      -
      const short base_ww
      Definition loader_general.h:203
      -
      const short bi
      Definition loader_general.h:192
      -
      const device T * src
      Definition loader_general.h:197
      -
      short weight_h
      Definition loader_general.h:205
      -
      const int src_ld
      Definition loader_general.h:188
      -
      const short base_wh
      Definition loader_general.h:202
      -
      short weight_w
      Definition loader_general.h:206
      -
      threadgroup T * dst
      Definition loader_general.h:196
      -
      METAL_FUNC void load_unsafe() const
      Definition loader_general.h:236
      -
      const constant Conv2DGeneralJumpParams * jump_params
      Definition loader_general.h:200
      -
      STEEL_CONST short dst_ld
      Definition loader_general.h:176
      -
      STEEL_CONST short n_rows
      Definition loader_general.h:185
      -
      STEEL_CONST short TROWS
      Definition loader_general.h:182
      -
      const short bj
      Definition loader_general.h:193
      -
      METAL_FUNC Conv2DWeightBlockLoaderGeneral(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant Conv2DGeneralJumpParams *jump_params_, const short base_wh_, const short base_ww_, uint simd_group_id, uint simd_lane_id)
      Definition loader_general.h:211
      -
      const constant MLXConvParams< 2 > * params
      Definition loader_general.h:199
      -
      STEEL_CONST short TCOLS
      Definition loader_general.h:181
      -
      - - - - diff --git a/docs/build/html/matmul_8h.html b/docs/build/html/matmul_8h.html deleted file mode 100644 index 4c0c73d3..00000000 --- a/docs/build/html/matmul_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/matmul.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      matmul.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - -

      -Functions

      void mlx::core::steel_matmul_conv_groups (const Stream &s, metal::Device &d, const array &a, const array &b, array &out, int M, int N, int K, int lda, int ldb, int ldd, bool transpose_a, bool transpose_b, int groups, std::vector< array > &copies)
       
      void mlx::core::steel_matmul (const Stream &s, metal::Device &d, const array &a, const array &b, array &out, int M, int N, int K, int batch_size_out, int lda, int ldb, bool transpose_a, bool transpose_b, std::vector< array > &copies, std::vector< int > batch_shape={}, std::vector< size_t > A_batch_stride={}, std::vector< size_t > B_batch_stride={})
       
      -
      - - - - diff --git a/docs/build/html/matmul_8h_source.html b/docs/build/html/matmul_8h_source.html deleted file mode 100644 index 0f21351d..00000000 --- a/docs/build/html/matmul_8h_source.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/matmul.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      matmul.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      - -
      4
      -
      5namespace mlx::core {
      -
      6
      - -
      8 const Stream& s,
      - -
      10 const array& a,
      -
      11 const array& b,
      -
      12 array& out,
      -
      13 int M,
      -
      14 int N,
      -
      15 int K,
      -
      16 int lda,
      -
      17 int ldb,
      -
      18 int ldd,
      -
      19 bool transpose_a,
      -
      20 bool transpose_b,
      -
      21 int groups,
      -
      22 std::vector<array>& copies);
      -
      23
      - -
      25 const Stream& s,
      - -
      27 const array& a,
      -
      28 const array& b,
      -
      29 array& out,
      -
      30 int M,
      -
      31 int N,
      -
      32 int K,
      -
      33 int batch_size_out,
      -
      34 int lda,
      -
      35 int ldb,
      -
      36 bool transpose_a,
      -
      37 bool transpose_b,
      -
      38 std::vector<array>& copies,
      -
      39 std::vector<int> batch_shape = {},
      -
      40 std::vector<size_t> A_batch_stride = {},
      -
      41 std::vector<size_t> B_batch_stride = {});
      -
      42
      -
      43} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Definition device.h:86
      -
      Definition allocator.h:7
      -
      void steel_matmul(const Stream &s, metal::Device &d, const array &a, const array &b, array &out, int M, int N, int K, int batch_size_out, int lda, int ldb, bool transpose_a, bool transpose_b, std::vector< array > &copies, std::vector< int > batch_shape={}, std::vector< size_t > A_batch_stride={}, std::vector< size_t > B_batch_stride={})
      -
      void steel_matmul_conv_groups(const Stream &s, metal::Device &d, const array &a, const array &b, array &out, int M, int N, int K, int lda, int ldb, int ldd, bool transpose_a, bool transpose_b, int groups, std::vector< array > &copies)
      -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/menu.js b/docs/build/html/menu.js deleted file mode 100644 index 717761d0..00000000 --- a/docs/build/html/menu.js +++ /dev/null @@ -1,134 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - let result=''; - if ('children' in data) { - result+='
        '; - for (let i in data.children) { - let url; - const link = data.children[i].url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - } else { - url = relPath+link; - } - result+='
      • '+ - data.children[i].text+''+ - makeTree(data.children[i],relPath)+'
      • '; - } - result+='
      '; - } - return result; - } - let searchBoxHtml; - if (searchEnabled) { - if (serverSide) { - searchBoxHtml='
      '+ - '
      '+ - '
       '+ - ''+ - '
      '+ - '
      '+ - '
      '+ - '
      '; - } else { - searchBoxHtml='
      '+ - ''+ - ' '+ - ''+ - ''+ - ''+ - ''+ - ''+ - '
      '; - } - } - - $('#main-nav').before('
      '+ - ''+ - ''+ - '
      '); - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchBoxHtml) { - $('#main-menu').append('
    • '); - } - const $mainMenuState = $('#main-menu-state'); - let prevWidth = 0; - if ($mainMenuState.length) { - const initResizableIfExists = function() { - if (typeof initResizable==='function') initResizable(); - } - // animate mobile menu - $mainMenuState.change(function() { - const $menu = $('#main-menu'); - let options = { duration: 250, step: initResizableIfExists }; - if (this.checked) { - options['complete'] = () => $menu.css('display', 'block'); - $menu.hide().slideDown(options); - } else { - options['complete'] = () => $menu.css('display', 'none'); - $menu.show().slideUp(options); - } - }); - // set default menu visibility - const resetState = function() { - const $menu = $('#main-menu'); - const newWidth = $(window).outerWidth(); - if (newWidth!=prevWidth) { - if ($(window).outerWidth()<768) { - $mainMenuState.prop('checked',false); $menu.hide(); - $('#searchBoxPos1').html(searchBoxHtml); - $('#searchBoxPos2').hide(); - } else { - $menu.show(); - $('#searchBoxPos1').empty(); - $('#searchBoxPos2').html(searchBoxHtml); - $('#searchBoxPos2').show(); - } - if (typeof searchBox!=='undefined') { - searchBox.CloseResultsWindow(); - } - prevWidth = newWidth; - } - } - $(window).ready(function() { resetState(); initResizableIfExists(); }); - $(window).resize(resetState); - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/docs/build/html/menudata.js b/docs/build/html/menudata.js deleted file mode 100644 index 4e6a80b9..00000000 --- a/docs/build/html/menudata.js +++ /dev/null @@ -1,272 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Topics",url:"topics.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html",children:[ -{text:"a",url:"namespacemembers.html#index_a"}, -{text:"b",url:"namespacemembers_b.html#index_b"}, -{text:"c",url:"namespacemembers_c.html#index_c"}, -{text:"d",url:"namespacemembers_d.html#index_d"}, -{text:"e",url:"namespacemembers_e.html#index_e"}, -{text:"f",url:"namespacemembers_f.html#index_f"}, -{text:"g",url:"namespacemembers_g.html#index_g"}, -{text:"h",url:"namespacemembers_h.html#index_h"}, -{text:"i",url:"namespacemembers_i.html#index_i"}, -{text:"j",url:"namespacemembers_j.html#index_j"}, -{text:"k",url:"namespacemembers_k.html#index_k"}, -{text:"l",url:"namespacemembers_l.html#index_l"}, -{text:"m",url:"namespacemembers_m.html#index_m"}, -{text:"n",url:"namespacemembers_n.html#index_n"}, -{text:"o",url:"namespacemembers_o.html#index_o"}, -{text:"p",url:"namespacemembers_p.html#index_p"}, -{text:"q",url:"namespacemembers_q.html#index_q"}, -{text:"r",url:"namespacemembers_r.html#index_r"}, -{text:"s",url:"namespacemembers_s.html#index_s"}, -{text:"t",url:"namespacemembers_t.html#index_t"}, -{text:"u",url:"namespacemembers_u.html#index_u"}, -{text:"v",url:"namespacemembers_v.html#index_v"}, -{text:"w",url:"namespacemembers_w.html#index_w"}, -{text:"z",url:"namespacemembers_z.html#index_z"}]}, -{text:"Functions",url:"namespacemembers_func.html",children:[ -{text:"a",url:"namespacemembers_func.html#index_a"}, -{text:"b",url:"namespacemembers_func_b.html#index_b"}, -{text:"c",url:"namespacemembers_func_c.html#index_c"}, -{text:"d",url:"namespacemembers_func_d.html#index_d"}, -{text:"e",url:"namespacemembers_func_e.html#index_e"}, -{text:"f",url:"namespacemembers_func_f.html#index_f"}, -{text:"g",url:"namespacemembers_func_g.html#index_g"}, -{text:"h",url:"namespacemembers_func_h.html#index_h"}, -{text:"i",url:"namespacemembers_func_i.html#index_i"}, -{text:"j",url:"namespacemembers_func_j.html#index_j"}, -{text:"k",url:"namespacemembers_func_k.html#index_k"}, -{text:"l",url:"namespacemembers_func_l.html#index_l"}, -{text:"m",url:"namespacemembers_func_m.html#index_m"}, -{text:"n",url:"namespacemembers_func_n.html#index_n"}, -{text:"o",url:"namespacemembers_func_o.html#index_o"}, -{text:"p",url:"namespacemembers_func_p.html#index_p"}, -{text:"q",url:"namespacemembers_func_q.html#index_q"}, -{text:"r",url:"namespacemembers_func_r.html#index_r"}, -{text:"s",url:"namespacemembers_func_s.html#index_s"}, -{text:"t",url:"namespacemembers_func_t.html#index_t"}, -{text:"u",url:"namespacemembers_func_u.html#index_u"}, -{text:"v",url:"namespacemembers_func_v.html#index_v"}, -{text:"w",url:"namespacemembers_func_w.html#index_w"}, -{text:"z",url:"namespacemembers_func_z.html#index_z"}]}, -{text:"Variables",url:"namespacemembers_vars.html",children:[ -{text:"b",url:"namespacemembers_vars.html#index_b"}, -{text:"c",url:"namespacemembers_vars.html#index_c"}, -{text:"f",url:"namespacemembers_vars.html#index_f"}, -{text:"g",url:"namespacemembers_vars.html#index_g"}, -{text:"h",url:"namespacemembers_vars.html#index_h"}, -{text:"i",url:"namespacemembers_vars.html#index_i"}, -{text:"m",url:"namespacemembers_vars.html#index_m"}, -{text:"n",url:"namespacemembers_vars.html#index_n"}, -{text:"s",url:"namespacemembers_vars.html#index_s"}, -{text:"u",url:"namespacemembers_vars.html#index_u"}, -{text:"v",url:"namespacemembers_vars.html#index_v"}]}, -{text:"Typedefs",url:"namespacemembers_type.html"}, -{text:"Enumerations",url:"namespacemembers_enum.html"}, -{text:"Enumerator",url:"namespacemembers_eval.html"}]}]}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"hierarchy.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"_",url:"functions.html#index__5F"}, -{text:"a",url:"functions_a.html#index_a"}, -{text:"b",url:"functions_b.html#index_b"}, -{text:"c",url:"functions_c.html#index_c"}, -{text:"d",url:"functions_d.html#index_d"}, -{text:"e",url:"functions_e.html#index_e"}, -{text:"f",url:"functions_f.html#index_f"}, -{text:"g",url:"functions_g.html#index_g"}, -{text:"h",url:"functions_h.html#index_h"}, -{text:"i",url:"functions_i.html#index_i"}, -{text:"j",url:"functions_j.html#index_j"}, -{text:"k",url:"functions_k.html#index_k"}, -{text:"l",url:"functions_l.html#index_l"}, -{text:"m",url:"functions_m.html#index_m"}, -{text:"n",url:"functions_n.html#index_n"}, -{text:"o",url:"functions_o.html#index_o"}, -{text:"p",url:"functions_p.html#index_p"}, -{text:"q",url:"functions_q.html#index_q"}, -{text:"r",url:"functions_r.html#index_r"}, -{text:"s",url:"functions_s.html#index_s"}, -{text:"t",url:"functions_t.html#index_t"}, -{text:"u",url:"functions_u.html#index_u"}, -{text:"v",url:"functions_v.html#index_v"}, -{text:"w",url:"functions_w.html#index_w"}, -{text:"x",url:"functions_x.html#index_x"}, -{text:"~",url:"functions_~.html#index__7E"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"_",url:"functions_func.html#index__5F"}, -{text:"a",url:"functions_func_a.html#index_a"}, -{text:"b",url:"functions_func_b.html#index_b"}, -{text:"c",url:"functions_func_c.html#index_c"}, -{text:"d",url:"functions_func_d.html#index_d"}, -{text:"e",url:"functions_func_e.html#index_e"}, -{text:"f",url:"functions_func_f.html#index_f"}, -{text:"g",url:"functions_func_g.html#index_g"}, -{text:"h",url:"functions_func_h.html#index_h"}, -{text:"i",url:"functions_func_i.html#index_i"}, -{text:"j",url:"functions_func_j.html#index_j"}, -{text:"k",url:"functions_func_k.html#index_k"}, -{text:"l",url:"functions_func_l.html#index_l"}, -{text:"m",url:"functions_func_m.html#index_m"}, -{text:"n",url:"functions_func_n.html#index_n"}, -{text:"o",url:"functions_func_o.html#index_o"}, -{text:"p",url:"functions_func_p.html#index_p"}, -{text:"q",url:"functions_func_q.html#index_q"}, -{text:"r",url:"functions_func_r.html#index_r"}, -{text:"s",url:"functions_func_s.html#index_s"}, -{text:"t",url:"functions_func_t.html#index_t"}, -{text:"u",url:"functions_func_u.html#index_u"}, -{text:"v",url:"functions_func_v.html#index_v"}, -{text:"w",url:"functions_func_w.html#index_w"}, -{text:"~",url:"functions_func_~.html#index__7E"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars_b.html#index_b"}, -{text:"c",url:"functions_vars_c.html#index_c"}, -{text:"d",url:"functions_vars_d.html#index_d"}, -{text:"e",url:"functions_vars_e.html#index_e"}, -{text:"f",url:"functions_vars_f.html#index_f"}, -{text:"g",url:"functions_vars_g.html#index_g"}, -{text:"h",url:"functions_vars_h.html#index_h"}, -{text:"i",url:"functions_vars_i.html#index_i"}, -{text:"j",url:"functions_vars_j.html#index_j"}, -{text:"k",url:"functions_vars_k.html#index_k"}, -{text:"l",url:"functions_vars_l.html#index_l"}, -{text:"m",url:"functions_vars_m.html#index_m"}, -{text:"n",url:"functions_vars_n.html#index_n"}, -{text:"o",url:"functions_vars_o.html#index_o"}, -{text:"p",url:"functions_vars_p.html#index_p"}, -{text:"q",url:"functions_vars_q.html#index_q"}, -{text:"r",url:"functions_vars_r.html#index_r"}, -{text:"s",url:"functions_vars_s.html#index_s"}, -{text:"t",url:"functions_vars_t.html#index_t"}, -{text:"v",url:"functions_vars_v.html#index_v"}, -{text:"w",url:"functions_vars_w.html#index_w"}, -{text:"x",url:"functions_vars_x.html#index_x"}]}, -{text:"Typedefs",url:"functions_type.html"}, -{text:"Enumerations",url:"functions_enum.html"}, -{text:"Enumerator",url:"functions_eval.html",children:[ -{text:"a",url:"functions_eval.html#index_a"}, -{text:"e",url:"functions_eval.html#index_e"}, -{text:"l",url:"functions_eval.html#index_l"}, -{text:"m",url:"functions_eval.html#index_m"}, -{text:"n",url:"functions_eval.html#index_n"}, -{text:"o",url:"functions_eval.html#index_o"}, -{text:"p",url:"functions_eval.html#index_p"}, -{text:"r",url:"functions_eval.html#index_r"}, -{text:"s",url:"functions_eval.html#index_s"}, -{text:"t",url:"functions_eval.html#index_t"}, -{text:"u",url:"functions_eval.html#index_u"}, -{text:"x",url:"functions_eval.html#index_x"}]}, -{text:"Related Symbols",url:"functions_rela.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"_",url:"globals.html#index__5F"}, -{text:"a",url:"globals_a.html#index_a"}, -{text:"b",url:"globals_b.html#index_b"}, -{text:"c",url:"globals_c.html#index_c"}, -{text:"d",url:"globals_d.html#index_d"}, -{text:"e",url:"globals_e.html#index_e"}, -{text:"f",url:"globals_f.html#index_f"}, -{text:"g",url:"globals_g.html#index_g"}, -{text:"h",url:"globals_h.html#index_h"}, -{text:"i",url:"globals_i.html#index_i"}, -{text:"l",url:"globals_l.html#index_l"}, -{text:"m",url:"globals_m.html#index_m"}, -{text:"n",url:"globals_n.html#index_n"}, -{text:"o",url:"globals_o.html#index_o"}, -{text:"p",url:"globals_p.html#index_p"}, -{text:"q",url:"globals_q.html#index_q"}, -{text:"r",url:"globals_r.html#index_r"}, -{text:"s",url:"globals_s.html#index_s"}, -{text:"t",url:"globals_t.html#index_t"}, -{text:"u",url:"globals_u.html#index_u"}, -{text:"w",url:"globals_w.html#index_w"}, -{text:"z",url:"globals_z.html#index_z"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"a",url:"globals_func.html#index_a"}, -{text:"b",url:"globals_func_b.html#index_b"}, -{text:"c",url:"globals_func_c.html#index_c"}, -{text:"d",url:"globals_func_d.html#index_d"}, -{text:"e",url:"globals_func_e.html#index_e"}, -{text:"f",url:"globals_func_f.html#index_f"}, -{text:"g",url:"globals_func_g.html#index_g"}, -{text:"h",url:"globals_func_h.html#index_h"}, -{text:"i",url:"globals_func_i.html#index_i"}, -{text:"l",url:"globals_func_l.html#index_l"}, -{text:"m",url:"globals_func_m.html#index_m"}, -{text:"o",url:"globals_func_o.html#index_o"}, -{text:"p",url:"globals_func_p.html#index_p"}, -{text:"q",url:"globals_func_q.html#index_q"}, -{text:"r",url:"globals_func_r.html#index_r"}, -{text:"s",url:"globals_func_s.html#index_s"}, -{text:"t",url:"globals_func_t.html#index_t"}, -{text:"u",url:"globals_func_u.html#index_u"}, -{text:"w",url:"globals_func_w.html#index_w"}]}, -{text:"Variables",url:"globals_vars.html",children:[ -{text:"a",url:"globals_vars.html#index_a"}, -{text:"b",url:"globals_vars.html#index_b"}, -{text:"c",url:"globals_vars.html#index_c"}, -{text:"d",url:"globals_vars.html#index_d"}, -{text:"e",url:"globals_vars.html#index_e"}, -{text:"f",url:"globals_vars.html#index_f"}, -{text:"g",url:"globals_vars.html#index_g"}, -{text:"h",url:"globals_vars.html#index_h"}, -{text:"i",url:"globals_vars.html#index_i"}, -{text:"m",url:"globals_vars.html#index_m"}, -{text:"n",url:"globals_vars.html#index_n"}, -{text:"o",url:"globals_vars.html#index_o"}, -{text:"p",url:"globals_vars.html#index_p"}, -{text:"r",url:"globals_vars.html#index_r"}, -{text:"s",url:"globals_vars.html#index_s"}, -{text:"u",url:"globals_vars.html#index_u"}, -{text:"z",url:"globals_vars.html#index_z"}]}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Macros",url:"globals_defs.html",children:[ -{text:"_",url:"globals_defs.html#index__5F"}, -{text:"a",url:"globals_defs.html#index_a"}, -{text:"b",url:"globals_defs.html#index_b"}, -{text:"c",url:"globals_defs.html#index_c"}, -{text:"d",url:"globals_defs.html#index_d"}, -{text:"f",url:"globals_defs.html#index_f"}, -{text:"h",url:"globals_defs.html#index_h"}, -{text:"i",url:"globals_defs.html#index_i"}, -{text:"m",url:"globals_defs.html#index_m"}, -{text:"p",url:"globals_defs.html#index_p"}, -{text:"r",url:"globals_defs.html#index_r"}, -{text:"s",url:"globals_defs.html#index_s"}, -{text:"u",url:"globals_defs.html#index_u"}]}]}]}]} diff --git a/docs/build/html/metal_2binary_8h.html b/docs/build/html/metal_2binary_8h.html deleted file mode 100644 index efe203c5..00000000 --- a/docs/build/html/metal_2binary_8h.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/binary.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      binary.h File Reference
      -
      -
      -
      #include "mlx/array.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - -

      -Functions

      void mlx::core::binary_op_gpu (const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)
       
      void mlx::core::binary_op_gpu (const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)
       
      void mlx::core::binary_op_gpu_inplace (const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)
       
      void mlx::core::binary_op_gpu_inplace (const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)
       
      -
      - - - - diff --git a/docs/build/html/metal_2binary_8h_source.html b/docs/build/html/metal_2binary_8h_source.html deleted file mode 100644 index 87cf14e4..00000000 --- a/docs/build/html/metal_2binary_8h_source.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/binary.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      binary.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include "mlx/array.h"
      -
      6
      -
      7namespace mlx::core {
      -
      8
      - -
      10 const std::vector<array>& inputs,
      -
      11 std::vector<array>& outputs,
      -
      12 const std::string& op,
      -
      13 const Stream& s);
      -
      14
      - -
      16 const std::vector<array>& inputs,
      -
      17 array& out,
      -
      18 const std::string& op,
      -
      19 const Stream& s);
      -
      20
      - -
      22 const std::vector<array>& inputs,
      -
      23 std::vector<array>& outputs,
      -
      24 const std::string& op,
      -
      25 const Stream& s);
      -
      26
      - -
      28 const std::vector<array>& inputs,
      -
      29 array& out,
      -
      30 const std::string& op,
      -
      31 const Stream& s);
      -
      32
      -
      33} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Op op
      Definition binary.h:141
      -
      Definition allocator.h:7
      -
      void binary_op_gpu_inplace(const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)
      -
      void binary_op_gpu(const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)
      -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/metal_2copy_8h.html b/docs/build/html/metal_2copy_8h.html deleted file mode 100644 index cf20a1d8..00000000 --- a/docs/build/html/metal_2copy_8h.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/copy.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      copy.h File Reference
      -
      -
      -
      #include "mlx/backend/common/copy.h"
      -#include "mlx/stream.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - - - - - - -

      -Functions

      template<typename stride_t >
      void mlx::core::copy_gpu_inplace (const array &in, array &out, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype, const Stream &s)
       
      void mlx::core::copy_gpu (const array &src, array &out, CopyType ctype, const Stream &s)
       
      void mlx::core::copy_gpu (const array &src, array &out, CopyType ctype)
       
      void mlx::core::copy_gpu_inplace (const array &src, array &out, CopyType ctype, const Stream &s)
       
      void mlx::core::copy_gpu_inplace (const array &in, array &out, const std::vector< int64_t > &istride, int64_t ioffset, CopyType ctype, const Stream &s)
       
      void mlx::core::fill_gpu (const array &val, array &out, const Stream &s)
       
      -
      - - - - diff --git a/docs/build/html/metal_2copy_8h_source.html b/docs/build/html/metal_2copy_8h_source.html deleted file mode 100644 index ef955c7e..00000000 --- a/docs/build/html/metal_2copy_8h_source.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/copy.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      copy.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - -
      6#include "mlx/stream.h"
      -
      7
      -
      8namespace mlx::core {
      -
      9
      -
      10// Generic copy inplace
      -
      11template <typename stride_t>
      - -
      13 const array& in,
      -
      14 array& out,
      -
      15 const std::vector<int>& data_shape,
      -
      16 const std::vector<stride_t>& i_strides,
      -
      17 const std::vector<stride_t>& o_strides,
      -
      18 int64_t i_offset,
      -
      19 int64_t o_offset,
      -
      20 CopyType ctype,
      -
      21 const Stream& s);
      -
      22
      -
      23void copy_gpu(const array& src, array& out, CopyType ctype, const Stream& s);
      -
      24void copy_gpu(const array& src, array& out, CopyType ctype);
      -
      25
      - -
      27 const array& src,
      -
      28 array& out,
      -
      29 CopyType ctype,
      -
      30 const Stream& s);
      -
      31
      - -
      33 const array& in,
      -
      34 array& out,
      -
      35 const std::vector<int64_t>& istride,
      -
      36 int64_t ioffset,
      -
      37 CopyType ctype,
      -
      38 const Stream& s);
      -
      39
      -
      40// Fill the output with the scalar val
      -
      41void fill_gpu(const array& val, array& out, const Stream& s);
      -
      42
      -
      43} // namespace mlx::core
      -
      Definition array.h:20
      - -
      Definition allocator.h:7
      -
      void copy_gpu_inplace(const array &in, array &out, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype, const Stream &s)
      -
      CopyType
      Definition copy.h:10
      -
      void copy_gpu(const array &src, array &out, CopyType ctype, const Stream &s)
      -
      void fill_gpu(const array &val, array &out, const Stream &s)
      - -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/metal_2jit_2arange_8h.html b/docs/build/html/metal_2jit_2arange_8h.html deleted file mode 100644 index 6967f4b3..00000000 --- a/docs/build/html/metal_2jit_2arange_8h.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/arange.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      arange.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - -

      -Variables

      constexpr std::string_view arange_kernels
       
      -

      Variable Documentation

      - -

      ◆ arange_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view arange_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{0}")]] [[kernel]] void arange<{1}>(
      -
      constant const {1}& start,
      -
      constant const {1}& step,
      -
      device {1}* out,
      -
      uint index [[thread_position_in_grid]]);
      -
      )"
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2jit_2arange_8h_source.html b/docs/build/html/metal_2jit_2arange_8h_source.html deleted file mode 100644 index c28c7acd..00000000 --- a/docs/build/html/metal_2jit_2arange_8h_source.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/arange.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      arange.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view arange_kernels = R"(
      -
      4template [[host_name("{0}")]] [[kernel]] void arange<{1}>(
      -
      5 constant const {1}& start,
      -
      6 constant const {1}& step,
      -
      7 device {1}* out,
      -
      8 uint index [[thread_position_in_grid]]);
      -
      9)";
      -
      constexpr std::string_view arange_kernels
      Definition arange.h:3
      -
      - - - - diff --git a/docs/build/html/metal_2jit_2copy_8h.html b/docs/build/html/metal_2jit_2copy_8h.html deleted file mode 100644 index 33b50f42..00000000 --- a/docs/build/html/metal_2jit_2copy_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/copy.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      copy.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - -

      -Variables

      constexpr std::string_view copy_kernels
       
      -

      Variable Documentation

      - -

      ◆ copy_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view copy_kernels
      -
      -constexpr
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2jit_2copy_8h_source.html b/docs/build/html/metal_2jit_2copy_8h_source.html deleted file mode 100644 index 26b79e9b..00000000 --- a/docs/build/html/metal_2jit_2copy_8h_source.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/copy.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      copy.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view copy_kernels = R"(
      -
      4template [[host_name("s_{0}")]] [[kernel]] void copy_s<{1}, {2}>(
      -
      5 device const {1}* src [[buffer(0)]],
      -
      6 device {2}* dst [[buffer(1)]],
      -
      7 uint index [[thread_position_in_grid]]);
      -
      8template [[host_name("v_{0}")]] [[kernel]] void copy_v<{1}, {2}>(
      -
      9 device const {1}* src [[buffer(0)]],
      -
      10 device {2}* dst [[buffer(1)]],
      -
      11 uint index [[thread_position_in_grid]]);
      -
      12
      -
      13template [[host_name("g4_{0}")]] [[kernel]] void
      -
      14copy_g_nd<{1}, {2}, 4>(
      -
      15 device const {1}* src [[buffer(0)]],
      -
      16 device {2}* dst [[buffer(1)]],
      -
      17 constant const int* src_shape [[buffer(2)]],
      -
      18 constant const int64_t* src_strides [[buffer(3)]],
      -
      19 uint3 index [[thread_position_in_grid]],
      -
      20 uint3 grid_dim [[threads_per_grid]]);
      -
      21template [[host_name("gg4_{0}")]] [[kernel]] void
      -
      22copy_gg_nd<{1}, {2}, 4>(
      -
      23 device const {1}* src [[buffer(0)]],
      -
      24 device {2}* dst [[buffer(1)]],
      -
      25 constant const int* src_shape [[buffer(2)]],
      -
      26 constant const int64_t* src_strides [[buffer(3)]],
      -
      27 constant const int64_t* dst_strides [[buffer(4)]],
      -
      28 uint3 index [[thread_position_in_grid]]);
      -
      29template [[host_name("g5_{0}")]] [[kernel]] void
      -
      30copy_g_nd<{1}, {2}, 5>(
      -
      31 device const {1}* src [[buffer(0)]],
      -
      32 device {2}* dst [[buffer(1)]],
      -
      33 constant const int* src_shape [[buffer(2)]],
      -
      34 constant const int64_t* src_strides [[buffer(3)]],
      -
      35 uint3 index [[thread_position_in_grid]],
      -
      36 uint3 grid_dim [[threads_per_grid]]);
      -
      37template [[host_name("gg5_{0}")]] [[kernel]] void
      -
      38copy_gg_nd<{1}, {2}, 5>(
      -
      39 device const {1}* src [[buffer(0)]],
      -
      40 device {2}* dst [[buffer(1)]],
      -
      41 constant const int* src_shape [[buffer(2)]],
      -
      42 constant const int64_t* src_strides [[buffer(3)]],
      -
      43 constant const int64_t* dst_strides [[buffer(4)]],
      -
      44 uint3 index [[thread_position_in_grid]]);
      -
      45template [[host_name("g1_{0}")]] [[kernel]] void copy_g_nd1<{1}, {2}>(
      -
      46 device const {1}* src [[buffer(0)]],
      -
      47 device {2}* dst [[buffer(1)]],
      -
      48 constant const int64_t& src_stride [[buffer(3)]],
      -
      49 uint index [[thread_position_in_grid]]);
      -
      50template [[host_name("g2_{0}")]] [[kernel]] void copy_g_nd2<{1}, {2}>(
      -
      51 device const {1}* src [[buffer(0)]],
      -
      52 device {2}* dst [[buffer(1)]],
      -
      53 constant const int64_t* src_strides [[buffer(3)]],
      -
      54 uint2 index [[thread_position_in_grid]],
      -
      55 uint2 grid_dim [[threads_per_grid]]);
      -
      56template [[host_name("g3_{0}")]] [[kernel]] void copy_g_nd3<{1}, {2}>(
      -
      57 device const {1}* src [[buffer(0)]],
      -
      58 device {2}* dst [[buffer(1)]],
      -
      59 constant const int64_t* src_strides [[buffer(3)]],
      -
      60 uint3 index [[thread_position_in_grid]],
      -
      61 uint3 grid_dim [[threads_per_grid]]);
      -
      62template [[host_name("gg1_{0}")]] [[kernel]] void
      -
      63copy_gg_nd1<{1}, {2}>(
      -
      64 device const {1}* src [[buffer(0)]],
      -
      65 device {2}* dst [[buffer(1)]],
      -
      66 constant const int64_t& src_stride [[buffer(3)]],
      -
      67 constant const int64_t& dst_stride [[buffer(4)]],
      -
      68 uint index [[thread_position_in_grid]]);
      -
      69template [[host_name("gg2_{0}")]] [[kernel]] void
      -
      70copy_gg_nd2<{1}, {2}>(
      -
      71 device const {1}* src [[buffer(0)]],
      -
      72 device {2}* dst [[buffer(1)]],
      -
      73 constant const int64_t* src_strides [[buffer(3)]],
      -
      74 constant const int64_t* dst_strides [[buffer(4)]],
      -
      75 uint2 index [[thread_position_in_grid]]);
      -
      76template [[host_name("gg3_{0}")]] [[kernel]] void
      -
      77copy_gg_nd3<{1}, {2}>(
      -
      78 device const {1}* src [[buffer(0)]],
      -
      79 device {2}* dst [[buffer(1)]],
      -
      80 constant const int64_t* src_strides [[buffer(3)]],
      -
      81 constant const int64_t* dst_strides [[buffer(4)]],
      -
      82 uint3 index [[thread_position_in_grid]]);
      -
      83
      -
      84template [[host_name("g_{0}")]] [[kernel]] void copy_g<{1}, {2}>(
      -
      85 device const {1}* src [[buffer(0)]],
      -
      86 device {2}* dst [[buffer(1)]],
      -
      87 constant const int* src_shape [[buffer(2)]],
      -
      88 constant const int64_t* src_strides [[buffer(3)]],
      -
      89 constant const int& ndim [[buffer(5)]],
      -
      90 uint3 index [[thread_position_in_grid]],
      -
      91 uint3 grid_dim [[threads_per_grid]]);
      -
      92template [[host_name("gg_{0}")]] [[kernel]] void copy_gg<{1}, {2}>(
      -
      93 device const {1}* src [[buffer(0)]],
      -
      94 device {2}* dst [[buffer(1)]],
      -
      95 constant const int* src_shape [[buffer(2)]],
      -
      96 constant const int64_t* src_strides [[buffer(3)]],
      -
      97 constant const int64_t* dst_strides [[buffer(4)]],
      -
      98 constant const int& ndim [[buffer(5)]],
      -
      99 uint3 index [[thread_position_in_grid]]);
      -
      100)";
      -
      constexpr std::string_view copy_kernels
      Definition copy.h:3
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2arange_8h.html b/docs/build/html/metal_2kernels_2arange_8h.html deleted file mode 100644 index 62e4ae1b..00000000 --- a/docs/build/html/metal_2kernels_2arange_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/arange.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      arange.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - -

      -Functions

      template<typename T >
      void arange (constant const T &start, constant const T &step, device T *out, uint index)
       
      -

      Function Documentation

      - -

      ◆ arange()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - -
      void arange (constant const T & start,
      constant const T & step,
      device T * out,
      uint index )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2arange_8h_source.html b/docs/build/html/metal_2kernels_2arange_8h_source.html deleted file mode 100644 index 1c22bf7d..00000000 --- a/docs/build/html/metal_2kernels_2arange_8h_source.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/arange.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      arange.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2template <typename T>
      -
      -
      3[[kernel]] void arange(
      -
      4 constant const T& start,
      -
      5 constant const T& step,
      -
      6 device T* out,
      -
      7 uint index [[thread_position_in_grid]]) {
      -
      8 out[index] = start + index * step;
      -
      9}
      -
      -
      void arange(constant const T &start, constant const T &step, device T *out, uint index)
      Definition arange.h:3
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2binary_8h.html b/docs/build/html/metal_2kernels_2binary_8h.html deleted file mode 100644 index 8a0c2c8c..00000000 --- a/docs/build/html/metal_2kernels_2binary_8h.html +++ /dev/null @@ -1,628 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/binary.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      binary.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename U , typename Op >
      void binary_ss (device const T *a, device const T *b, device U *c, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_sv (device const T *a, device const T *b, device U *c, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_vs (device const T *a, device const T *b, device U *c, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_vv (device const T *a, device const T *b, device U *c, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_sv2 (device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_vs2 (device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_vv2 (device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_g_nd1 (device const T *a, device const T *b, device U *c, constant const size_t &a_stride, constant const size_t &b_stride, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_g_nd2 (device const T *a, device const T *b, device U *c, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_g_nd3 (device const T *a, device const T *b, device U *c, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim)
       
      template<typename T , typename U , typename Op , int DIM>
      void binary_g_nd (device const T *a, device const T *b, device U *c, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_g (device const T *a, device const T *b, device U *c, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
       
      -

      Function Documentation

      - -

      ◆ binary_g()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g (device const T * a,
      device const T * b,
      device U * c,
      constant const int * shape,
      constant const size_t * a_strides,
      constant const size_t * b_strides,
      constant const int & ndim,
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_g_nd()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int DIM>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd (device const T * a,
      device const T * b,
      device U * c,
      constant const int shape[DIM],
      constant const size_t a_strides[DIM],
      constant const size_t b_strides[DIM],
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_g_nd1()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd1 (device const T * a,
      device const T * b,
      device U * c,
      constant const size_t & a_stride,
      constant const size_t & b_stride,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_g_nd2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd2 (device const T * a,
      device const T * b,
      device U * c,
      constant const size_t a_strides[2],
      constant const size_t b_strides[2],
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_g_nd3()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd3 (device const T * a,
      device const T * b,
      device U * c,
      constant const size_t a_strides[3],
      constant const size_t b_strides[3],
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_ss()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - -
      void binary_ss (device const T * a,
      device const T * b,
      device U * c,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_sv()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - -
      void binary_sv (device const T * a,
      device const T * b,
      device U * c,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_sv2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_sv2 (device const T * a,
      device const T * b,
      device U * c,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_vs()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - -
      void binary_vs (device const T * a,
      device const T * b,
      device U * c,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_vs2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_vs2 (device const T * a,
      device const T * b,
      device U * c,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_vv()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - -
      void binary_vv (device const T * a,
      device const T * b,
      device U * c,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_vv2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_vv2 (device const T * a,
      device const T * b,
      device U * c,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2binary_8h_source.html b/docs/build/html/metal_2kernels_2binary_8h_source.html deleted file mode 100644 index 9a9a9336..00000000 --- a/docs/build/html/metal_2kernels_2binary_8h_source.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/binary.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      binary.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename U, typename Op>
      -
      -
      4[[kernel]] void binary_ss(
      -
      5 device const T* a,
      -
      6 device const T* b,
      -
      7 device U* c,
      -
      8 uint index [[thread_position_in_grid]]) {
      -
      9 c[index] = Op()(a[0], b[0]);
      -
      10}
      -
      -
      11
      -
      12template <typename T, typename U, typename Op>
      -
      -
      13[[kernel]] void binary_sv(
      -
      14 device const T* a,
      -
      15 device const T* b,
      -
      16 device U* c,
      -
      17 uint index [[thread_position_in_grid]]) {
      -
      18 c[index] = Op()(a[0], b[index]);
      -
      19}
      -
      -
      20
      -
      21template <typename T, typename U, typename Op>
      -
      -
      22[[kernel]] void binary_vs(
      -
      23 device const T* a,
      -
      24 device const T* b,
      -
      25 device U* c,
      -
      26 uint index [[thread_position_in_grid]]) {
      -
      27 c[index] = Op()(a[index], b[0]);
      -
      28}
      -
      -
      29
      -
      30template <typename T, typename U, typename Op>
      -
      -
      31[[kernel]] void binary_vv(
      -
      32 device const T* a,
      -
      33 device const T* b,
      -
      34 device U* c,
      -
      35 uint index [[thread_position_in_grid]]) {
      -
      36 c[index] = Op()(a[index], b[index]);
      -
      37}
      -
      -
      38
      -
      39template <typename T, typename U, typename Op>
      -
      -
      40[[kernel]] void binary_sv2(
      -
      41 device const T* a,
      -
      42 device const T* b,
      -
      43 device U* c,
      -
      44 uint2 index [[thread_position_in_grid]],
      -
      45 uint2 grid_dim [[threads_per_grid]]) {
      -
      46 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      47 c[offset] = Op()(a[0], b[offset]);
      -
      48}
      -
      -
      49
      -
      50template <typename T, typename U, typename Op>
      -
      -
      51[[kernel]] void binary_vs2(
      -
      52 device const T* a,
      -
      53 device const T* b,
      -
      54 device U* c,
      -
      55 uint2 index [[thread_position_in_grid]],
      -
      56 uint2 grid_dim [[threads_per_grid]]) {
      -
      57 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      58 c[offset] = Op()(a[offset], b[0]);
      -
      59}
      -
      -
      60
      -
      61template <typename T, typename U, typename Op>
      -
      -
      62[[kernel]] void binary_vv2(
      -
      63 device const T* a,
      -
      64 device const T* b,
      -
      65 device U* c,
      -
      66 uint2 index [[thread_position_in_grid]],
      -
      67 uint2 grid_dim [[threads_per_grid]]) {
      -
      68 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      69 c[offset] = Op()(a[offset], b[offset]);
      -
      70}
      -
      -
      71
      -
      72template <typename T, typename U, typename Op>
      -
      -
      73[[kernel]] void binary_g_nd1(
      -
      74 device const T* a,
      -
      75 device const T* b,
      -
      76 device U* c,
      -
      77 constant const size_t& a_stride,
      -
      78 constant const size_t& b_stride,
      -
      79 uint index [[thread_position_in_grid]]) {
      -
      80 auto a_idx = elem_to_loc_1(index, a_stride);
      -
      81 auto b_idx = elem_to_loc_1(index, b_stride);
      -
      82 c[index] = Op()(a[a_idx], b[b_idx]);
      -
      83}
      -
      -
      84
      -
      85template <typename T, typename U, typename Op>
      -
      -
      86[[kernel]] void binary_g_nd2(
      -
      87 device const T* a,
      -
      88 device const T* b,
      -
      89 device U* c,
      -
      90 constant const size_t a_strides[2],
      -
      91 constant const size_t b_strides[2],
      -
      92 uint2 index [[thread_position_in_grid]],
      -
      93 uint2 grid_dim [[threads_per_grid]]) {
      -
      94 auto a_idx = elem_to_loc_2(index, a_strides);
      -
      95 auto b_idx = elem_to_loc_2(index, b_strides);
      -
      96 size_t out_idx = index.x + (size_t)grid_dim.x * index.y;
      -
      97 c[out_idx] = Op()(a[a_idx], b[b_idx]);
      -
      98}
      -
      -
      99
      -
      100template <typename T, typename U, typename Op>
      -
      -
      101[[kernel]] void binary_g_nd3(
      -
      102 device const T* a,
      -
      103 device const T* b,
      -
      104 device U* c,
      -
      105 constant const size_t a_strides[3],
      -
      106 constant const size_t b_strides[3],
      -
      107 uint3 index [[thread_position_in_grid]],
      -
      108 uint3 grid_dim [[threads_per_grid]]) {
      -
      109 auto a_idx = elem_to_loc_3(index, a_strides);
      -
      110 auto b_idx = elem_to_loc_3(index, b_strides);
      -
      111 size_t out_idx =
      -
      112 index.x + (size_t)grid_dim.x * (index.y + (size_t)grid_dim.y * index.z);
      -
      113 c[out_idx] = Op()(a[a_idx], b[b_idx]);
      -
      114}
      -
      -
      115
      -
      116template <typename T, typename U, typename Op, int DIM>
      -
      -
      117[[kernel]] void binary_g_nd(
      -
      118 device const T* a,
      -
      119 device const T* b,
      -
      120 device U* c,
      -
      121 constant const int shape[DIM],
      -
      122 constant const size_t a_strides[DIM],
      -
      123 constant const size_t b_strides[DIM],
      -
      124 uint3 index [[thread_position_in_grid]],
      -
      125 uint3 grid_dim [[threads_per_grid]]) {
      -
      126 auto idx = elem_to_loc_2_nd<DIM>(index, shape, a_strides, b_strides);
      -
      127 size_t out_idx =
      -
      128 index.x + (size_t)grid_dim.x * (index.y + (size_t)grid_dim.y * index.z);
      -
      129 c[out_idx] = Op()(a[idx.x], b[idx.y]);
      -
      130}
      -
      -
      131
      -
      132template <typename T, typename U, typename Op>
      -
      -
      133[[kernel]] void binary_g(
      -
      134 device const T* a,
      -
      135 device const T* b,
      -
      136 device U* c,
      -
      137 constant const int* shape,
      -
      138 constant const size_t* a_strides,
      -
      139 constant const size_t* b_strides,
      -
      140 constant const int& ndim,
      -
      141 uint3 index [[thread_position_in_grid]],
      -
      142 uint3 grid_dim [[threads_per_grid]]) {
      -
      143 auto idx = elem_to_loc_2_nd(index, shape, a_strides, b_strides, ndim);
      -
      144 size_t out_idx = index.x + grid_dim.x * (index.y + grid_dim.y * index.z);
      -
      145 c[out_idx] = Op()(a[idx.x], b[idx.y]);
      -
      146}
      -
      -
      METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t &stride)
      Definition utils.h:161
      -
      METAL_FUNC stride_t elem_to_loc_3(uint3 elem, constant const stride_t strides[3])
      Definition utils.h:173
      -
      METAL_FUNC uint2 elem_to_loc_2_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
      Definition utils.h:238
      -
      METAL_FUNC stride_t elem_to_loc_2(uint2 elem, constant const stride_t strides[2])
      Definition utils.h:167
      -
      void binary_vv2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim)
      Definition binary.h:62
      -
      void binary_ss(device const T *a, device const T *b, device U *c, uint index)
      Definition binary.h:4
      -
      void binary_sv(device const T *a, device const T *b, device U *c, uint index)
      Definition binary.h:13
      -
      void binary_vs2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim)
      Definition binary.h:51
      -
      void binary_g_nd(device const T *a, device const T *b, device U *c, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim)
      Definition binary.h:117
      -
      void binary_vs(device const T *a, device const T *b, device U *c, uint index)
      Definition binary.h:22
      -
      void binary_g_nd1(device const T *a, device const T *b, device U *c, constant const size_t &a_stride, constant const size_t &b_stride, uint index)
      Definition binary.h:73
      -
      void binary_g(device const T *a, device const T *b, device U *c, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
      Definition binary.h:133
      -
      void binary_g_nd2(device const T *a, device const T *b, device U *c, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim)
      Definition binary.h:86
      -
      void binary_sv2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim)
      Definition binary.h:40
      -
      void binary_g_nd3(device const T *a, device const T *b, device U *c, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim)
      Definition binary.h:101
      -
      void binary_vv(device const T *a, device const T *b, device U *c, uint index)
      Definition binary.h:31
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2binary__two_8h.html b/docs/build/html/metal_2kernels_2binary__two_8h.html deleted file mode 100644 index ac2be5e8..00000000 --- a/docs/build/html/metal_2kernels_2binary__two_8h.html +++ /dev/null @@ -1,688 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/binary_two.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      binary_two.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename U , typename Op >
      void binary_ss (device const T *a, device const T *b, device U *c, device U *d, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_sv (device const T *a, device const T *b, device U *c, device U *d, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_vs (device const T *a, device const T *b, device U *c, device U *d, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_vv (device const T *a, device const T *b, device U *c, device U *d, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_sv2 (device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_vs2 (device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_vv2 (device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_g_nd1 (device const T *a, device const T *b, device U *c, device U *d, constant const size_t &a_stride, constant const size_t &b_stride, uint index)
       
      template<typename T , typename U , typename Op >
      void binary_g_nd2 (device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_g_nd3 (device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim)
       
      template<typename T , typename U , typename Op , int DIM>
      void binary_g_nd (device const T *a, device const T *b, device U *c, device U *d, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim)
       
      template<typename T , typename U , typename Op >
      void binary_g (device const T *a, device const T *b, device U *c, device U *d, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
       
      -

      Function Documentation

      - -

      ◆ binary_g()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      constant const int * shape,
      constant const size_t * a_strides,
      constant const size_t * b_strides,
      constant const int & ndim,
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_g_nd()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int DIM>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      constant const int shape[DIM],
      constant const size_t a_strides[DIM],
      constant const size_t b_strides[DIM],
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_g_nd1()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd1 (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      constant const size_t & a_stride,
      constant const size_t & b_stride,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_g_nd2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd2 (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      constant const size_t a_strides[2],
      constant const size_t b_strides[2],
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_g_nd3()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_g_nd3 (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      constant const size_t a_strides[3],
      constant const size_t b_strides[3],
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_ss()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_ss (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_sv()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_sv (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_sv2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_sv2 (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_vs()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_vs (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_vs2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_vs2 (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ binary_vv()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_vv (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint index )
      -
      - -
      -
      - -

      ◆ binary_vv2()

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void binary_vv2 (device const T * a,
      device const T * b,
      device U * c,
      device U * d,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2binary__two_8h_source.html b/docs/build/html/metal_2kernels_2binary__two_8h_source.html deleted file mode 100644 index 4f45bd53..00000000 --- a/docs/build/html/metal_2kernels_2binary__two_8h_source.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/binary_two.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      binary_two.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename U, typename Op>
      -
      -
      4[[kernel]] void binary_ss(
      -
      5 device const T* a,
      -
      6 device const T* b,
      -
      7 device U* c,
      -
      8 device U* d,
      -
      9 uint index [[thread_position_in_grid]]) {
      -
      10 auto out = Op()(a[0], b[0]);
      -
      11 c[index] = out[0];
      -
      12 d[index] = out[1];
      -
      13}
      -
      -
      14
      -
      15template <typename T, typename U, typename Op>
      -
      -
      16[[kernel]] void binary_sv(
      -
      17 device const T* a,
      -
      18 device const T* b,
      -
      19 device U* c,
      -
      20 device U* d,
      -
      21 uint index [[thread_position_in_grid]]) {
      -
      22 auto out = Op()(a[0], b[index]);
      -
      23 c[index] = out[0];
      -
      24 d[index] = out[1];
      -
      25}
      -
      -
      26
      -
      27template <typename T, typename U, typename Op>
      -
      -
      28[[kernel]] void binary_vs(
      -
      29 device const T* a,
      -
      30 device const T* b,
      -
      31 device U* c,
      -
      32 device U* d,
      -
      33 uint index [[thread_position_in_grid]]) {
      -
      34 auto out = Op()(a[index], b[0]);
      -
      35 c[index] = out[0];
      -
      36 d[index] = out[1];
      -
      37}
      -
      -
      38
      -
      39template <typename T, typename U, typename Op>
      -
      -
      40[[kernel]] void binary_vv(
      -
      41 device const T* a,
      -
      42 device const T* b,
      -
      43 device U* c,
      -
      44 device U* d,
      -
      45 uint index [[thread_position_in_grid]]) {
      -
      46 auto out = Op()(a[index], b[index]);
      -
      47 c[index] = out[0];
      -
      48 d[index] = out[1];
      -
      49}
      -
      -
      50
      -
      51template <typename T, typename U, typename Op>
      -
      -
      52[[kernel]] void binary_sv2(
      -
      53 device const T* a,
      -
      54 device const T* b,
      -
      55 device U* c,
      -
      56 device U* d,
      -
      57 uint2 index [[thread_position_in_grid]],
      -
      58 uint2 grid_dim [[threads_per_grid]]) {
      -
      59 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      60 auto out = Op()(a[0], b[offset]);
      -
      61 c[offset] = out[0];
      -
      62 d[offset] = out[1];
      -
      63}
      -
      -
      64
      -
      65template <typename T, typename U, typename Op>
      -
      -
      66[[kernel]] void binary_vs2(
      -
      67 device const T* a,
      -
      68 device const T* b,
      -
      69 device U* c,
      -
      70 device U* d,
      -
      71 uint2 index [[thread_position_in_grid]],
      -
      72 uint2 grid_dim [[threads_per_grid]]) {
      -
      73 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      74 auto out = Op()(a[offset], b[0]);
      -
      75 c[offset] = out[0];
      -
      76 d[offset] = out[1];
      -
      77}
      -
      -
      78
      -
      79template <typename T, typename U, typename Op>
      -
      -
      80[[kernel]] void binary_vv2(
      -
      81 device const T* a,
      -
      82 device const T* b,
      -
      83 device U* c,
      -
      84 device U* d,
      -
      85 uint2 index [[thread_position_in_grid]],
      -
      86 uint2 grid_dim [[threads_per_grid]]) {
      -
      87 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      88 auto out = Op()(a[offset], b[offset]);
      -
      89 c[offset] = out[0];
      -
      90 d[offset] = out[1];
      -
      91}
      -
      -
      92
      -
      93template <typename T, typename U, typename Op>
      -
      -
      94[[kernel]] void binary_g_nd1(
      -
      95 device const T* a,
      -
      96 device const T* b,
      -
      97 device U* c,
      -
      98 device U* d,
      -
      99 constant const size_t& a_stride,
      -
      100 constant const size_t& b_stride,
      -
      101 uint index [[thread_position_in_grid]]) {
      -
      102 auto a_idx = elem_to_loc_1(index, a_stride);
      -
      103 auto b_idx = elem_to_loc_1(index, b_stride);
      -
      104 auto out = Op()(a[a_idx], b[b_idx]);
      -
      105 c[index] = out[0];
      -
      106 d[index] = out[1];
      -
      107}
      -
      -
      108
      -
      109template <typename T, typename U, typename Op>
      -
      -
      110[[kernel]] void binary_g_nd2(
      -
      111 device const T* a,
      -
      112 device const T* b,
      -
      113 device U* c,
      -
      114 device U* d,
      -
      115 constant const size_t a_strides[2],
      -
      116 constant const size_t b_strides[2],
      -
      117 uint2 index [[thread_position_in_grid]],
      -
      118 uint2 grid_dim [[threads_per_grid]]) {
      -
      119 auto a_idx = elem_to_loc_2(index, a_strides);
      -
      120 auto b_idx = elem_to_loc_2(index, b_strides);
      -
      121 size_t out_idx = index.x + (size_t)grid_dim.x * index.y;
      -
      122 auto out = Op()(a[a_idx], b[b_idx]);
      -
      123 c[out_idx] = out[0];
      -
      124 d[out_idx] = out[1];
      -
      125}
      -
      -
      126
      -
      127template <typename T, typename U, typename Op>
      -
      -
      128[[kernel]] void binary_g_nd3(
      -
      129 device const T* a,
      -
      130 device const T* b,
      -
      131 device U* c,
      -
      132 device U* d,
      -
      133 constant const size_t a_strides[3],
      -
      134 constant const size_t b_strides[3],
      -
      135 uint3 index [[thread_position_in_grid]],
      -
      136 uint3 grid_dim [[threads_per_grid]]) {
      -
      137 auto a_idx = elem_to_loc_3(index, a_strides);
      -
      138 auto b_idx = elem_to_loc_3(index, b_strides);
      -
      139 size_t out_idx =
      -
      140 index.x + (size_t)grid_dim.x * (index.y + (size_t)grid_dim.y * index.z);
      -
      141 auto out = Op()(a[a_idx], b[b_idx]);
      -
      142 c[out_idx] = out[0];
      -
      143 d[out_idx] = out[1];
      -
      144}
      -
      -
      145
      -
      146template <typename T, typename U, typename Op, int DIM>
      -
      -
      147[[kernel]] void binary_g_nd(
      -
      148 device const T* a,
      -
      149 device const T* b,
      -
      150 device U* c,
      -
      151 device U* d,
      -
      152 constant const int shape[DIM],
      -
      153 constant const size_t a_strides[DIM],
      -
      154 constant const size_t b_strides[DIM],
      -
      155 uint3 index [[thread_position_in_grid]],
      -
      156 uint3 grid_dim [[threads_per_grid]]) {
      -
      157 auto idx = elem_to_loc_2_nd<DIM>(index, shape, a_strides, b_strides);
      -
      158 size_t out_idx =
      -
      159 index.x + (size_t)grid_dim.x * (index.y + (size_t)grid_dim.y * index.z);
      -
      160 auto out = Op()(a[idx.x], b[idx.y]);
      -
      161 c[out_idx] = out[0];
      -
      162 d[out_idx] = out[1];
      -
      163}
      -
      -
      164
      -
      165template <typename T, typename U, typename Op>
      -
      -
      166[[kernel]] void binary_g(
      -
      167 device const T* a,
      -
      168 device const T* b,
      -
      169 device U* c,
      -
      170 device U* d,
      -
      171 constant const int* shape,
      -
      172 constant const size_t* a_strides,
      -
      173 constant const size_t* b_strides,
      -
      174 constant const int& ndim,
      -
      175 uint3 index [[thread_position_in_grid]],
      -
      176 uint3 grid_dim [[threads_per_grid]]) {
      -
      177 auto idx = elem_to_loc_2_nd(index, shape, a_strides, b_strides, ndim);
      -
      178 size_t out_idx = index.x + grid_dim.x * (index.y + grid_dim.y * index.z);
      -
      179 auto out = Op()(a[idx.x], b[idx.y]);
      -
      180 c[out_idx] = out[0];
      -
      181 d[out_idx] = out[1];
      -
      182}
      -
      -
      METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t &stride)
      Definition utils.h:161
      -
      METAL_FUNC stride_t elem_to_loc_3(uint3 elem, constant const stride_t strides[3])
      Definition utils.h:173
      -
      METAL_FUNC uint2 elem_to_loc_2_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
      Definition utils.h:238
      -
      METAL_FUNC stride_t elem_to_loc_2(uint2 elem, constant const stride_t strides[2])
      Definition utils.h:167
      -
      void binary_g_nd2(device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim)
      Definition binary_two.h:110
      -
      void binary_sv2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim)
      Definition binary_two.h:52
      -
      void binary_vs(device const T *a, device const T *b, device U *c, device U *d, uint index)
      Definition binary_two.h:28
      -
      void binary_vv2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim)
      Definition binary_two.h:80
      -
      void binary_vs2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim)
      Definition binary_two.h:66
      -
      void binary_g_nd3(device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim)
      Definition binary_two.h:128
      -
      void binary_g_nd(device const T *a, device const T *b, device U *c, device U *d, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim)
      Definition binary_two.h:147
      -
      void binary_sv(device const T *a, device const T *b, device U *c, device U *d, uint index)
      Definition binary_two.h:16
      -
      void binary_vv(device const T *a, device const T *b, device U *c, device U *d, uint index)
      Definition binary_two.h:40
      -
      void binary_g(device const T *a, device const T *b, device U *c, device U *d, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
      Definition binary_two.h:166
      -
      void binary_g_nd1(device const T *a, device const T *b, device U *c, device U *d, constant const size_t &a_stride, constant const size_t &b_stride, uint index)
      Definition binary_two.h:94
      -
      void binary_ss(device const T *a, device const T *b, device U *c, device U *d, uint index)
      Definition binary_two.h:4
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2copy_8h.html b/docs/build/html/metal_2kernels_2copy_8h.html deleted file mode 100644 index bf840126..00000000 --- a/docs/build/html/metal_2kernels_2copy_8h.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/copy.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      copy.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename U >
      void copy_s (device const T *src, device U *dst, uint index)
       
      template<typename T , typename U >
      void copy_v (device const T *src, device U *dst, uint index)
       
      template<typename T , typename U >
      void copy_s2 (device const T *src, device U *dst, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U >
      void copy_v2 (device const T *src, device U *dst, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U >
      void copy_g_nd1 (device const T *src, device U *dst, constant const int64_t &src_stride, uint index)
       
      template<typename T , typename U >
      void copy_g_nd2 (device const T *src, device U *dst, constant const int64_t *src_strides, uint2 index, uint2 grid_dim)
       
      template<typename T , typename U >
      void copy_g_nd3 (device const T *src, device U *dst, constant const int64_t *src_strides, uint3 index, uint3 grid_dim)
       
      template<typename T , typename U , int DIM>
      void copy_g_nd (device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, uint3 index, uint3 grid_dim)
       
      template<typename T , typename U >
      void copy_g (device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
       
      template<typename T , typename U >
      void copy_gg_nd1 (device const T *src, device U *dst, constant const int64_t &src_stride, constant const int64_t &dst_stride, uint index)
       
      template<typename T , typename U >
      void copy_gg_nd2 (device const T *src, device U *dst, constant const int64_t *src_strides, constant const int64_t *dst_strides, uint2 index)
       
      template<typename T , typename U >
      void copy_gg_nd3 (device const T *src, device U *dst, constant const int64_t *src_strides, constant const int64_t *dst_strides, uint3 index)
       
      template<typename T , typename U , int DIM>
      void copy_gg_nd (device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, constant const int64_t *dst_strides, uint3 index)
       
      template<typename T , typename U >
      void copy_gg (device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, constant const int64_t *dst_strides, constant const int &ndim, uint3 index)
       
      -

      Function Documentation

      - -

      ◆ copy_g()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_g (device const T * src,
      device U * dst,
      constant const int * src_shape,
      constant const int64_t * src_strides,
      constant const int & ndim,
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ copy_g_nd()

      - -
      -
      -
      -template<typename T , typename U , int DIM>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_g_nd (device const T * src,
      device U * dst,
      constant const int * src_shape,
      constant const int64_t * src_strides,
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ copy_g_nd1()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - -
      void copy_g_nd1 (device const T * src,
      device U * dst,
      constant const int64_t & src_stride,
      uint index )
      -
      - -
      -
      - -

      ◆ copy_g_nd2()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_g_nd2 (device const T * src,
      device U * dst,
      constant const int64_t * src_strides,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ copy_g_nd3()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_g_nd3 (device const T * src,
      device U * dst,
      constant const int64_t * src_strides,
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ copy_gg()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_gg (device const T * src,
      device U * dst,
      constant const int * src_shape,
      constant const int64_t * src_strides,
      constant const int64_t * dst_strides,
      constant const int & ndim,
      uint3 index )
      -
      - -
      -
      - -

      ◆ copy_gg_nd()

      - -
      -
      -
      -template<typename T , typename U , int DIM>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_gg_nd (device const T * src,
      device U * dst,
      constant const int * src_shape,
      constant const int64_t * src_strides,
      constant const int64_t * dst_strides,
      uint3 index )
      -
      - -
      -
      - -

      ◆ copy_gg_nd1()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_gg_nd1 (device const T * src,
      device U * dst,
      constant const int64_t & src_stride,
      constant const int64_t & dst_stride,
      uint index )
      -
      - -
      -
      - -

      ◆ copy_gg_nd2()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_gg_nd2 (device const T * src,
      device U * dst,
      constant const int64_t * src_strides,
      constant const int64_t * dst_strides,
      uint2 index )
      -
      - -
      -
      - -

      ◆ copy_gg_nd3()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void copy_gg_nd3 (device const T * src,
      device U * dst,
      constant const int64_t * src_strides,
      constant const int64_t * dst_strides,
      uint3 index )
      -
      - -
      -
      - -

      ◆ copy_s()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - -
      void copy_s (device const T * src,
      device U * dst,
      uint index )
      -
      - -
      -
      - -

      ◆ copy_s2()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - -
      void copy_s2 (device const T * src,
      device U * dst,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ copy_v()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - -
      void copy_v (device const T * src,
      device U * dst,
      uint index )
      -
      - -
      -
      - -

      ◆ copy_v2()

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - -
      void copy_v2 (device const T * src,
      device U * dst,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2copy_8h_source.html b/docs/build/html/metal_2kernels_2copy_8h_source.html deleted file mode 100644 index f6783a06..00000000 --- a/docs/build/html/metal_2kernels_2copy_8h_source.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/copy.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      copy.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename U>
      -
      -
      4[[kernel]] void copy_s(
      -
      5 device const T* src [[buffer(0)]],
      -
      6 device U* dst [[buffer(1)]],
      -
      7 uint index [[thread_position_in_grid]]) {
      -
      8 dst[index] = static_cast<U>(src[0]);
      -
      9}
      -
      -
      10
      -
      11template <typename T, typename U>
      -
      -
      12[[kernel]] void copy_v(
      -
      13 device const T* src [[buffer(0)]],
      -
      14 device U* dst [[buffer(1)]],
      -
      15 uint index [[thread_position_in_grid]]) {
      -
      16 dst[index] = static_cast<U>(src[index]);
      -
      17}
      -
      -
      18
      -
      19template <typename T, typename U>
      -
      -
      20[[kernel]] void copy_s2(
      -
      21 device const T* src [[buffer(0)]],
      -
      22 device U* dst [[buffer(1)]],
      -
      23 uint2 index [[thread_position_in_grid]],
      -
      24 uint2 grid_dim [[threads_per_grid]]) {
      -
      25 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      26 dst[offset] = static_cast<U>(src[0]);
      -
      27}
      -
      -
      28
      -
      29template <typename T, typename U>
      -
      -
      30[[kernel]] void copy_v2(
      -
      31 device const T* src [[buffer(0)]],
      -
      32 device U* dst [[buffer(1)]],
      -
      33 uint2 index [[thread_position_in_grid]],
      -
      34 uint2 grid_dim [[threads_per_grid]]) {
      -
      35 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      36 dst[offset] = static_cast<U>(src[offset]);
      -
      37}
      -
      -
      38
      -
      39template <typename T, typename U>
      -
      -
      40[[kernel]] void copy_g_nd1(
      -
      41 device const T* src [[buffer(0)]],
      -
      42 device U* dst [[buffer(1)]],
      -
      43 constant const int64_t& src_stride [[buffer(3)]],
      -
      44 uint index [[thread_position_in_grid]]) {
      -
      45 auto src_idx = elem_to_loc_1(index, src_stride);
      -
      46 dst[index] = static_cast<U>(src[src_idx]);
      -
      47}
      -
      -
      48
      -
      49template <typename T, typename U>
      -
      -
      50[[kernel]] void copy_g_nd2(
      -
      51 device const T* src [[buffer(0)]],
      -
      52 device U* dst [[buffer(1)]],
      -
      53 constant const int64_t* src_strides [[buffer(3)]],
      -
      54 uint2 index [[thread_position_in_grid]],
      -
      55 uint2 grid_dim [[threads_per_grid]]) {
      -
      56 auto src_idx = elem_to_loc_2(index, src_strides);
      -
      57 int64_t dst_idx = index.x + (int64_t)grid_dim.x * index.y;
      -
      58 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      59}
      -
      -
      60
      -
      61template <typename T, typename U>
      -
      -
      62[[kernel]] void copy_g_nd3(
      -
      63 device const T* src [[buffer(0)]],
      -
      64 device U* dst [[buffer(1)]],
      -
      65 constant const int64_t* src_strides [[buffer(3)]],
      -
      66 uint3 index [[thread_position_in_grid]],
      -
      67 uint3 grid_dim [[threads_per_grid]]) {
      -
      68 auto src_idx = elem_to_loc_3(index, src_strides);
      -
      69 int64_t dst_idx =
      -
      70 index.x + (int64_t)grid_dim.x * (index.y + (int64_t)grid_dim.y * index.z);
      -
      71 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      72}
      -
      -
      73
      -
      74template <typename T, typename U, int DIM>
      -
      -
      75[[kernel]] void copy_g_nd(
      -
      76 device const T* src [[buffer(0)]],
      -
      77 device U* dst [[buffer(1)]],
      -
      78 constant const int* src_shape [[buffer(2)]],
      -
      79 constant const int64_t* src_strides [[buffer(3)]],
      -
      80 uint3 index [[thread_position_in_grid]],
      -
      81 uint3 grid_dim [[threads_per_grid]]) {
      -
      82 auto src_idx = elem_to_loc_nd<DIM>(index, src_shape, src_strides);
      -
      83 int64_t dst_idx =
      -
      84 index.x + (int64_t)grid_dim.x * (index.y + (int64_t)grid_dim.y * index.z);
      -
      85 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      86}
      -
      -
      87
      -
      88template <typename T, typename U>
      -
      -
      89[[kernel]] void copy_g(
      -
      90 device const T* src [[buffer(0)]],
      -
      91 device U* dst [[buffer(1)]],
      -
      92 constant const int* src_shape [[buffer(2)]],
      -
      93 constant const int64_t* src_strides [[buffer(3)]],
      -
      94 constant const int& ndim [[buffer(5)]],
      -
      95 uint3 index [[thread_position_in_grid]],
      -
      96 uint3 grid_dim [[threads_per_grid]]) {
      -
      97 auto src_idx = elem_to_loc(index, src_shape, src_strides, ndim);
      -
      98 int64_t dst_idx =
      -
      99 index.x + (int64_t)grid_dim.x * (index.y + (int64_t)grid_dim.y * index.z);
      -
      100 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      101}
      -
      -
      102
      -
      103template <typename T, typename U>
      -
      -
      104[[kernel]] void copy_gg_nd1(
      -
      105 device const T* src [[buffer(0)]],
      -
      106 device U* dst [[buffer(1)]],
      -
      107 constant const int64_t& src_stride [[buffer(3)]],
      -
      108 constant const int64_t& dst_stride [[buffer(4)]],
      -
      109 uint index [[thread_position_in_grid]]) {
      -
      110 auto src_idx = elem_to_loc_1(index, src_stride);
      -
      111 auto dst_idx = elem_to_loc_1(index, dst_stride);
      -
      112 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      113}
      -
      -
      114
      -
      115template <typename T, typename U>
      -
      -
      116[[kernel]] void copy_gg_nd2(
      -
      117 device const T* src [[buffer(0)]],
      -
      118 device U* dst [[buffer(1)]],
      -
      119 constant const int64_t* src_strides [[buffer(3)]],
      -
      120 constant const int64_t* dst_strides [[buffer(4)]],
      -
      121 uint2 index [[thread_position_in_grid]]) {
      -
      122 auto src_idx = elem_to_loc_2(index, src_strides);
      -
      123 auto dst_idx = elem_to_loc_2(index, dst_strides);
      -
      124 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      125}
      -
      -
      126
      -
      127template <typename T, typename U>
      -
      -
      128[[kernel]] void copy_gg_nd3(
      -
      129 device const T* src [[buffer(0)]],
      -
      130 device U* dst [[buffer(1)]],
      -
      131 constant const int64_t* src_strides [[buffer(3)]],
      -
      132 constant const int64_t* dst_strides [[buffer(4)]],
      -
      133 uint3 index [[thread_position_in_grid]]) {
      -
      134 auto src_idx = elem_to_loc_3(index, src_strides);
      -
      135 auto dst_idx = elem_to_loc_3(index, dst_strides);
      -
      136 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      137}
      -
      -
      138
      -
      139template <typename T, typename U, int DIM>
      -
      -
      140[[kernel]] void copy_gg_nd(
      -
      141 device const T* src [[buffer(0)]],
      -
      142 device U* dst [[buffer(1)]],
      -
      143 constant const int* src_shape [[buffer(2)]],
      -
      144 constant const int64_t* src_strides [[buffer(3)]],
      -
      145 constant const int64_t* dst_strides [[buffer(4)]],
      -
      146 uint3 index [[thread_position_in_grid]]) {
      -
      147 auto src_idx = elem_to_loc_nd<DIM>(index, src_shape, src_strides);
      -
      148 auto dst_idx = elem_to_loc_nd<DIM>(index, src_shape, dst_strides);
      -
      149 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      150}
      -
      -
      151
      -
      152template <typename T, typename U>
      -
      -
      153[[kernel]] void copy_gg(
      -
      154 device const T* src [[buffer(0)]],
      -
      155 device U* dst [[buffer(1)]],
      -
      156 constant const int* src_shape [[buffer(2)]],
      -
      157 constant const int64_t* src_strides [[buffer(3)]],
      -
      158 constant const int64_t* dst_strides [[buffer(4)]],
      -
      159 constant const int& ndim [[buffer(5)]],
      -
      160 uint3 index [[thread_position_in_grid]]) {
      -
      161 auto src_idx = elem_to_loc(index, src_shape, src_strides, ndim);
      -
      162 auto dst_idx = elem_to_loc(index, src_shape, dst_strides, ndim);
      -
      163 dst[dst_idx] = static_cast<U>(src[src_idx]);
      -
      164}
      -
      -
      METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t &stride)
      Definition utils.h:161
      -
      METAL_FUNC stride_t elem_to_loc_3(uint3 elem, constant const stride_t strides[3])
      Definition utils.h:173
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      METAL_FUNC stride_t elem_to_loc_2(uint2 elem, constant const stride_t strides[2])
      Definition utils.h:167
      -
      void copy_g_nd(device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, uint3 index, uint3 grid_dim)
      Definition copy.h:75
      -
      void copy_g(device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
      Definition copy.h:89
      -
      void copy_gg_nd(device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, constant const int64_t *dst_strides, uint3 index)
      Definition copy.h:140
      -
      void copy_gg_nd1(device const T *src, device U *dst, constant const int64_t &src_stride, constant const int64_t &dst_stride, uint index)
      Definition copy.h:104
      -
      void copy_gg_nd2(device const T *src, device U *dst, constant const int64_t *src_strides, constant const int64_t *dst_strides, uint2 index)
      Definition copy.h:116
      -
      void copy_gg_nd3(device const T *src, device U *dst, constant const int64_t *src_strides, constant const int64_t *dst_strides, uint3 index)
      Definition copy.h:128
      -
      void copy_s2(device const T *src, device U *dst, uint2 index, uint2 grid_dim)
      Definition copy.h:20
      -
      void copy_g_nd3(device const T *src, device U *dst, constant const int64_t *src_strides, uint3 index, uint3 grid_dim)
      Definition copy.h:62
      -
      void copy_gg(device const T *src, device U *dst, constant const int *src_shape, constant const int64_t *src_strides, constant const int64_t *dst_strides, constant const int &ndim, uint3 index)
      Definition copy.h:153
      -
      void copy_g_nd1(device const T *src, device U *dst, constant const int64_t &src_stride, uint index)
      Definition copy.h:40
      -
      void copy_v(device const T *src, device U *dst, uint index)
      Definition copy.h:12
      -
      void copy_v2(device const T *src, device U *dst, uint2 index, uint2 grid_dim)
      Definition copy.h:30
      -
      void copy_g_nd2(device const T *src, device U *dst, constant const int64_t *src_strides, uint2 index, uint2 grid_dim)
      Definition copy.h:50
      -
      void copy_s(device const T *src, device U *dst, uint index)
      Definition copy.h:4
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2hadamard_8h.html b/docs/build/html/metal_2kernels_2hadamard_8h.html deleted file mode 100644 index d0496b5d..00000000 --- a/docs/build/html/metal_2kernels_2hadamard_8h.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/hadamard.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      hadamard.h File Reference
      -
      -
      -
      #include <metal_common>
      -#include <metal_compute>
      -#include "mlx/backend/metal/kernels/steel/defines.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - - - - -

      -Functions

      template<short R>
      METAL_FUNC void radix_func (thread float *x)
       
      template<typename T , int N, int max_radix, int read_width>
      void hadamard_n (const device T *in, device T *out, constant const float &scale, uint3 elem, uint3 grid)
       
      template<typename T , int N, int M, int read_width>
      void hadamard_m (const device T *in, device T *out, constant const float &scale, uint3 elem, uint3 grid)
       
      -

      Function Documentation

      - -

      ◆ hadamard_m()

      - -
      -
      -
      -template<typename T , int N, int M, int read_width>
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void hadamard_m (const device T * in,
      device T * out,
      constant const float & scale,
      uint3 elem,
      uint3 grid )
      -
      - -
      -
      - -

      ◆ hadamard_n()

      - -
      -
      -
      -template<typename T , int N, int max_radix, int read_width>
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void hadamard_n (const device T * in,
      device T * out,
      constant const float & scale,
      uint3 elem,
      uint3 grid )
      -
      - -
      -
      - -

      ◆ radix_func()

      - -
      -
      -
      -template<short R>
      - - - - - - - -
      METAL_FUNC void radix_func (thread float * x)
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2hadamard_8h_source.html b/docs/build/html/metal_2kernels_2hadamard_8h_source.html deleted file mode 100644 index 2a767566..00000000 --- a/docs/build/html/metal_2kernels_2hadamard_8h_source.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/hadamard.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      hadamard.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2#include <metal_common>
      -
      3#include <metal_compute>
      -
      4
      - -
      6
      -
      7using namespace metal;
      -
      8
      -
      9// Thread local Hadamard transform for 2^R
      -
      10template <short R>
      -
      -
      11METAL_FUNC void radix_func(thread float* x) {
      -
      12 constexpr short logR = __builtin_ctz(R);
      -
      13 short h = 1;
      - -
      15 for (short s = 0; s < logR; s++) {
      - -
      17 for (short i = 0; i < R / 2; i++) {
      -
      18 short k = i & (h - 1);
      -
      19 short j = ((i - k) << 1) + k;
      -
      20 float a = x[j];
      -
      21 float b = x[j + h];
      -
      22 x[j] = a + b;
      -
      23 x[j + h] = a - b;
      -
      24 }
      -
      25 h <<= 1;
      -
      26 }
      -
      27}
      -
      -
      28
      -
      29template <typename T, int N, int max_radix, int read_width>
      -
      -
      30[[kernel]] void hadamard_n(
      -
      31 const device T* in [[buffer(0)]],
      -
      32 device T* out [[buffer(1)]],
      -
      33 constant const float& scale,
      -
      34 uint3 elem [[thread_position_in_grid]],
      -
      35 uint3 grid [[threads_per_grid]]) {
      -
      36 // Compute a Hadamard transform of size N = 2^k
      -
      37 //
      -
      38 // Equivalent to:
      -
      39 // from scipy.linalg import hadamard
      -
      40 // y = hadamard(len(x)) @ x
      -
      41
      -
      42 constexpr short num_threads = N / max_radix;
      -
      43 constexpr short logN = __builtin_ctz(N);
      -
      44 constexpr short logR = __builtin_ctz(max_radix);
      -
      45 constexpr short num_steps = logN / logR;
      -
      46 constexpr short logFinal = logN % logR;
      -
      47 constexpr short final_radix = 1 << (logFinal);
      -
      48
      -
      49 int batch_idx = elem.x * N;
      -
      50 short i = elem.y;
      -
      51
      -
      52 threadgroup T buf[N];
      -
      53
      -
      54 // Read values from device
      - -
      56 for (short j = 0; j < max_radix / read_width; j++) {
      -
      57 short index = j * read_width * num_threads + i * read_width;
      - -
      59 for (short r = 0; r < read_width; r++) {
      -
      60 buf[index + r] = in[batch_idx + index + r];
      -
      61 }
      -
      62 }
      -
      63
      -
      64 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      65
      -
      66 float x[max_radix];
      -
      67 short h = 1;
      -
      68
      - -
      70 for (short s = 0; s < num_steps; s++) {
      -
      71 short k = i & (h - 1);
      -
      72 short j = ((i - k) << logR) + k;
      -
      73
      - -
      75 for (short r = 0; r < max_radix; r++) {
      -
      76 x[r] = buf[j + h * r];
      -
      77 }
      -
      78
      -
      79 radix_func<max_radix>(x);
      -
      80
      - -
      82 for (short r = 0; r < max_radix; r++) {
      -
      83 buf[j + h * r] = T(x[r]);
      -
      84 }
      -
      85
      -
      86 h <<= logR;
      -
      87 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      88 }
      -
      89
      -
      90 // Do the final radix
      -
      91 // e.g. max_radix = 16
      -
      92 // N = 1024 = 16 * 16 * 4
      -
      93 if (final_radix > 1) {
      -
      94 // Each thread does multiple butterflies
      - -
      96 for (int t = 0; t < max_radix / final_radix; t++) {
      -
      97 short index = i + t * num_threads;
      -
      98 short k = index & (h - 1);
      -
      99 short j = ((index - k) << logFinal) + k;
      - -
      101 for (short r = 0; r < final_radix; r++) {
      -
      102 x[r] = buf[j + h * r];
      -
      103 }
      -
      104
      -
      105 radix_func<final_radix>(x);
      -
      106
      - -
      108 for (short r = 0; r < final_radix; r++) {
      -
      109 buf[j + h * r] = T(x[r]);
      -
      110 }
      -
      111 }
      -
      112 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      113 }
      -
      114
      -
      115 // Write values to device
      - -
      117 for (short j = 0; j < max_radix / read_width; j++) {
      -
      118 short index = j * read_width * num_threads + i * read_width;
      - -
      120 for (short r = 0; r < read_width; r++) {
      -
      121 out[batch_idx + index + r] = T(buf[index + r] * scale);
      -
      122 }
      -
      123 }
      -
      124}
      -
      -
      125
      -
      126template <typename T, int N, int M, int read_width>
      -
      -
      127[[kernel]] void hadamard_m(
      -
      128 const device T* in [[buffer(0)]],
      -
      129 device T* out [[buffer(1)]],
      -
      130 constant const float& scale,
      -
      131 uint3 elem [[thread_position_in_grid]],
      -
      132 uint3 grid [[threads_per_grid]]) {
      -
      133 // Compute a Hadamard transform of size M
      -
      134 // using a naive O(M^2) codelet.
      -
      135 //
      -
      136 // This kernel is the second stage in the computation
      -
      137 // of a Hadamard transform of size M*N where N = 2^k.
      -
      138
      -
      139 int index = elem.x * grid.y + elem.y;
      -
      140 short i = index % (N / read_width);
      -
      141 int batch_idx = index / (N / read_width) * M * N;
      -
      142
      -
      143 float x[read_width][M];
      - -
      145 for (short c = 0; c < M; c++) {
      - -
      147 for (short r = 0; r < read_width; r++) {
      -
      148 x[r][c] = in[batch_idx + c * N + i * read_width + r];
      -
      149 }
      -
      150 }
      -
      151
      - -
      153 for (short r = 0; r < read_width; r++) {
      -
      154 // This function is JIT compiled for M
      -
      155 // using the Hadamard matrix strings in `metal/hadamard.cpp`
      -
      156 hadamard_radix_m(x[r]);
      -
      157 }
      -
      158
      -
      159 // Write back to device
      - -
      161 for (short c = 0; c < M; c++) {
      - -
      163 for (short r = 0; r < read_width; r++) {
      -
      164 out[batch_idx + c * N + i * read_width + r] = T(x[r][c] * scale);
      -
      165 }
      -
      166 }
      -
      167}
      -
      -
      MTL::Buffer * buf
      Definition allocator.h:38
      -
      METAL_FUNC void radix_func(thread float *x)
      Definition hadamard.h:11
      -
      void hadamard_n(const device T *in, device T *out, constant const float &scale, uint3 elem, uint3 grid)
      Definition hadamard.h:30
      -
      void hadamard_m(const device T *in, device T *out, constant const float &scale, uint3 elem, uint3 grid)
      Definition hadamard.h:127
      -
      Definition bf16.h:265
      - -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2reduce_8h.html b/docs/build/html/metal_2kernels_2reduce_8h.html deleted file mode 100644 index ca826f5a..00000000 --- a/docs/build/html/metal_2kernels_2reduce_8h.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduce.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce.h File Reference
      -
      - - - - - diff --git a/docs/build/html/metal_2kernels_2reduce_8h_source.html b/docs/build/html/metal_2kernels_2reduce_8h_source.html deleted file mode 100644 index 490bd06c..00000000 --- a/docs/build/html/metal_2kernels_2reduce_8h_source.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduce.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce.h
      -
      - - - - - diff --git a/docs/build/html/metal_2kernels_2ternary_8h.html b/docs/build/html/metal_2kernels_2ternary_8h.html deleted file mode 100644 index 45f8bb75..00000000 --- a/docs/build/html/metal_2kernels_2ternary_8h.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/ternary.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      ternary.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename Op >
      void ternary_v (device const bool *a, device const T *b, device const T *c, device T *d, uint index)
       
      template<typename T , typename Op >
      void ternary_v2 (device const bool *a, device const T *b, device const T *c, device T *d, uint2 index, uint2 grid_dim)
       
      template<typename T , typename Op >
      void ternary_g_nd1 (device const bool *a, device const T *b, device const T *c, device T *d, constant const size_t &a_strides, constant const size_t &b_strides, constant const size_t &c_strides, uint index)
       
      template<typename T , typename Op >
      void ternary_g_nd2 (device const bool *a, device const T *b, device const T *c, device T *d, constant const size_t a_strides[2], constant const size_t b_strides[2], constant const size_t c_strides[2], uint2 index, uint2 grid_dim)
       
      template<typename T , typename Op >
      void ternary_g_nd3 (device const bool *a, device const T *b, device const T *c, device T *d, constant const size_t a_strides[3], constant const size_t b_strides[3], constant const size_t c_strides[3], uint3 index, uint3 grid_dim)
       
      template<typename T , typename Op , int DIM>
      void ternary_g_nd (device const bool *a, device const T *b, device const T *c, device T *d, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], constant const size_t c_strides[DIM], uint3 index, uint3 grid_dim)
       
      template<typename T , typename Op >
      void ternary_g (device const bool *a, device const T *b, device const T *c, device T *d, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
       
      -

      Function Documentation

      - -

      ◆ ternary_g()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_g (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      constant const int * shape,
      constant const size_t * a_strides,
      constant const size_t * b_strides,
      constant const size_t * c_strides,
      constant const int & ndim,
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ ternary_g_nd()

      - -
      -
      -
      -template<typename T , typename Op , int DIM>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_g_nd (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      constant const int shape[DIM],
      constant const size_t a_strides[DIM],
      constant const size_t b_strides[DIM],
      constant const size_t c_strides[DIM],
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ ternary_g_nd1()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_g_nd1 (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      constant const size_t & a_strides,
      constant const size_t & b_strides,
      constant const size_t & c_strides,
      uint index )
      -
      - -
      -
      - -

      ◆ ternary_g_nd2()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_g_nd2 (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      constant const size_t a_strides[2],
      constant const size_t b_strides[2],
      constant const size_t c_strides[2],
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ ternary_g_nd3()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_g_nd3 (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      constant const size_t a_strides[3],
      constant const size_t b_strides[3],
      constant const size_t c_strides[3],
      uint3 index,
      uint3 grid_dim )
      -
      - -
      -
      - -

      ◆ ternary_v()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_v (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      uint index )
      -
      - -
      -
      - -

      ◆ ternary_v2()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void ternary_v2 (device const bool * a,
      device const T * b,
      device const T * c,
      device T * d,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2ternary_8h_source.html b/docs/build/html/metal_2kernels_2ternary_8h_source.html deleted file mode 100644 index 817c6771..00000000 --- a/docs/build/html/metal_2kernels_2ternary_8h_source.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/ternary.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      ternary.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename Op>
      -
      -
      4[[kernel]] void ternary_v(
      -
      5 device const bool* a,
      -
      6 device const T* b,
      -
      7 device const T* c,
      -
      8 device T* d,
      -
      9 uint index [[thread_position_in_grid]]) {
      -
      10 d[index] = Op()(a[index], b[index], c[index]);
      -
      11}
      -
      -
      12
      -
      13template <typename T, typename Op>
      -
      -
      14[[kernel]] void ternary_v2(
      -
      15 device const bool* a,
      -
      16 device const T* b,
      -
      17 device const T* c,
      -
      18 device T* d,
      -
      19 uint2 index [[thread_position_in_grid]],
      -
      20 uint2 grid_dim [[threads_per_grid]]) {
      -
      21 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      22 d[offset] = Op()(a[offset], b[offset], c[offset]);
      -
      23}
      -
      -
      24
      -
      25template <typename T, typename Op>
      -
      -
      26[[kernel]] void ternary_g_nd1(
      -
      27 device const bool* a,
      -
      28 device const T* b,
      -
      29 device const T* c,
      -
      30 device T* d,
      -
      31 constant const size_t& a_strides,
      -
      32 constant const size_t& b_strides,
      -
      33 constant const size_t& c_strides,
      -
      34 uint index [[thread_position_in_grid]]) {
      -
      35 auto a_idx = elem_to_loc_1(index, a_strides);
      -
      36 auto b_idx = elem_to_loc_1(index, b_strides);
      -
      37 auto c_idx = elem_to_loc_1(index, c_strides);
      -
      38 d[index] = Op()(a[a_idx], b[b_idx], c[c_idx]);
      -
      39}
      -
      -
      40
      -
      41template <typename T, typename Op>
      -
      -
      42[[kernel]] void ternary_g_nd2(
      -
      43 device const bool* a,
      -
      44 device const T* b,
      -
      45 device const T* c,
      -
      46 device T* d,
      -
      47 constant const size_t a_strides[2],
      -
      48 constant const size_t b_strides[2],
      -
      49 constant const size_t c_strides[2],
      -
      50 uint2 index [[thread_position_in_grid]],
      -
      51 uint2 grid_dim [[threads_per_grid]]) {
      -
      52 auto a_idx = elem_to_loc_2(index, a_strides);
      -
      53 auto b_idx = elem_to_loc_2(index, b_strides);
      -
      54 auto c_idx = elem_to_loc_2(index, c_strides);
      -
      55 size_t out_idx = index.x + (size_t)grid_dim.x * index.y;
      -
      56 d[out_idx] = Op()(a[a_idx], b[b_idx], c[c_idx]);
      -
      57}
      -
      -
      58
      -
      59template <typename T, typename Op>
      -
      -
      60[[kernel]] void ternary_g_nd3(
      -
      61 device const bool* a,
      -
      62 device const T* b,
      -
      63 device const T* c,
      -
      64 device T* d,
      -
      65 constant const size_t a_strides[3],
      -
      66 constant const size_t b_strides[3],
      -
      67 constant const size_t c_strides[3],
      -
      68 uint3 index [[thread_position_in_grid]],
      -
      69 uint3 grid_dim [[threads_per_grid]]) {
      -
      70 auto a_idx = elem_to_loc_3(index, a_strides);
      -
      71 auto b_idx = elem_to_loc_3(index, b_strides);
      -
      72 auto c_idx = elem_to_loc_3(index, c_strides);
      -
      73 size_t out_idx =
      -
      74 index.x + (size_t)grid_dim.x * (index.y + (size_t)grid_dim.y * index.z);
      -
      75 d[out_idx] = Op()(a[a_idx], b[b_idx], c[c_idx]);
      -
      76}
      -
      -
      77
      -
      78template <typename T, typename Op, int DIM>
      -
      -
      79[[kernel]] void ternary_g_nd(
      -
      80 device const bool* a,
      -
      81 device const T* b,
      -
      82 device const T* c,
      -
      83 device T* d,
      -
      84 constant const int shape[DIM],
      -
      85 constant const size_t a_strides[DIM],
      -
      86 constant const size_t b_strides[DIM],
      -
      87 constant const size_t c_strides[DIM],
      -
      88 uint3 index [[thread_position_in_grid]],
      -
      89 uint3 grid_dim [[threads_per_grid]]) {
      -
      90 auto idx =
      -
      91 elem_to_loc_3_nd<DIM>(index, shape, a_strides, b_strides, c_strides);
      -
      92 size_t out_idx =
      -
      93 index.x + (size_t)grid_dim.x * (index.y + (size_t)grid_dim.y * index.z);
      -
      94 d[out_idx] = Op()(a[idx.x], b[idx.y], c[idx.z]);
      -
      95}
      -
      -
      96
      -
      97template <typename T, typename Op>
      -
      -
      98[[kernel]] void ternary_g(
      -
      99 device const bool* a,
      -
      100 device const T* b,
      -
      101 device const T* c,
      -
      102 device T* d,
      -
      103 constant const int* shape,
      -
      104 constant const size_t* a_strides,
      -
      105 constant const size_t* b_strides,
      -
      106 constant const size_t* c_strides,
      -
      107 constant const int& ndim,
      -
      108 uint3 index [[thread_position_in_grid]],
      -
      109 uint3 grid_dim [[threads_per_grid]]) {
      -
      110 auto idx =
      -
      111 elem_to_loc_3_nd(index, shape, a_strides, b_strides, c_strides, ndim);
      -
      112 size_t out_idx = index.x + grid_dim.x * (index.y + grid_dim.y * index.z);
      -
      113 d[out_idx] = Op()(a[idx.x], b[idx.y], c[idx.z]);
      -
      114}
      -
      -
      METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t &stride)
      Definition utils.h:161
      -
      METAL_FUNC stride_t elem_to_loc_3(uint3 elem, constant const stride_t strides[3])
      Definition utils.h:173
      -
      METAL_FUNC uint3 elem_to_loc_3_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim)
      Definition utils.h:258
      -
      METAL_FUNC stride_t elem_to_loc_2(uint2 elem, constant const stride_t strides[2])
      Definition utils.h:167
      -
      void ternary_g_nd3(device const bool *a, device const T *b, device const T *c, device T *d, constant const size_t a_strides[3], constant const size_t b_strides[3], constant const size_t c_strides[3], uint3 index, uint3 grid_dim)
      Definition ternary.h:60
      -
      void ternary_g_nd1(device const bool *a, device const T *b, device const T *c, device T *d, constant const size_t &a_strides, constant const size_t &b_strides, constant const size_t &c_strides, uint index)
      Definition ternary.h:26
      -
      void ternary_v2(device const bool *a, device const T *b, device const T *c, device T *d, uint2 index, uint2 grid_dim)
      Definition ternary.h:14
      -
      void ternary_v(device const bool *a, device const T *b, device const T *c, device T *d, uint index)
      Definition ternary.h:4
      -
      void ternary_g_nd(device const bool *a, device const T *b, device const T *c, device T *d, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], constant const size_t c_strides[DIM], uint3 index, uint3 grid_dim)
      Definition ternary.h:79
      -
      void ternary_g(device const bool *a, device const T *b, device const T *c, device T *d, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, constant const int &ndim, uint3 index, uint3 grid_dim)
      Definition ternary.h:98
      -
      void ternary_g_nd2(device const bool *a, device const T *b, device const T *c, device T *d, constant const size_t a_strides[2], constant const size_t b_strides[2], constant const size_t c_strides[2], uint2 index, uint2 grid_dim)
      Definition ternary.h:42
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2unary_8h.html b/docs/build/html/metal_2kernels_2unary_8h.html deleted file mode 100644 index 291da68a..00000000 --- a/docs/build/html/metal_2kernels_2unary_8h.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/unary.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      unary.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - -

      -Functions

      template<typename T , typename Op >
      void unary_v (device const T *in, device T *out, uint index)
       
      template<typename T , typename Op >
      void unary_v2 (device const T *in, device T *out, uint2 index, uint2 grid_dim)
       
      template<typename T , typename Op >
      void unary_g (device const T *in, device T *out, device const int *in_shape, device const size_t *in_strides, device const int &ndim, uint index)
       
      -

      Function Documentation

      - -

      ◆ unary_g()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void unary_g (device const T * in,
      device T * out,
      device const int * in_shape,
      device const size_t * in_strides,
      device const int & ndim,
      uint index )
      -
      - -
      -
      - -

      ◆ unary_v()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - -
      void unary_v (device const T * in,
      device T * out,
      uint index )
      -
      - -
      -
      - -

      ◆ unary_v2()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - - - - - - - - - - - -
      void unary_v2 (device const T * in,
      device T * out,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/metal_2kernels_2unary_8h_source.html b/docs/build/html/metal_2kernels_2unary_8h_source.html deleted file mode 100644 index 0d933460..00000000 --- a/docs/build/html/metal_2kernels_2unary_8h_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/unary.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      unary.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename Op>
      -
      -
      4[[kernel]] void unary_v(
      -
      5 device const T* in,
      -
      6 device T* out,
      -
      7 uint index [[thread_position_in_grid]]) {
      -
      8 out[index] = Op()(in[index]);
      -
      9}
      -
      -
      10
      -
      11template <typename T, typename Op>
      -
      -
      12[[kernel]] void unary_v2(
      -
      13 device const T* in,
      -
      14 device T* out,
      -
      15 uint2 index [[thread_position_in_grid]],
      -
      16 uint2 grid_dim [[threads_per_grid]]) {
      -
      17 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      18 out[offset] = Op()(in[offset]);
      -
      19}
      -
      -
      20
      -
      21template <typename T, typename Op>
      -
      -
      22[[kernel]] void unary_g(
      -
      23 device const T* in,
      -
      24 device T* out,
      -
      25 device const int* in_shape,
      -
      26 device const size_t* in_strides,
      -
      27 device const int& ndim,
      -
      28 uint index [[thread_position_in_grid]]) {
      -
      29 auto idx = elem_to_loc(index, in_shape, in_strides, ndim);
      -
      30 out[index] = Op()(in[idx]);
      -
      31}
      -
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      void unary_g(device const T *in, device T *out, device const int *in_shape, device const size_t *in_strides, device const int &ndim, uint index)
      Definition unary.h:22
      -
      void unary_v2(device const T *in, device T *out, uint2 index, uint2 grid_dim)
      Definition unary.h:12
      -
      void unary_v(device const T *in, device T *out, uint index)
      Definition unary.h:4
      -
      - - - - diff --git a/docs/build/html/metal_2reduce_8h.html b/docs/build/html/metal_2reduce_8h.html deleted file mode 100644 index ef821740..00000000 --- a/docs/build/html/metal_2reduce_8h.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/reduce.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      reduce.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - -

      -Functions

      void mlx::core::all_reduce_dispatch (const array &in, array &out, const std::string &op_name, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s, std::vector< array > &copies)
       
      void mlx::core::row_reduce_general_dispatch (const array &in, array &out, const std::string &op_name, const ReductionPlan &plan, const std::vector< int > &axes, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s)
       
      void mlx::core::strided_reduce_general_dispatch (const array &in, array &out, const std::string &op_name, const ReductionPlan &plan, const std::vector< int > &axes, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s)
       
      -
      - - - - diff --git a/docs/build/html/metal_2reduce_8h_source.html b/docs/build/html/metal_2reduce_8h_source.html deleted file mode 100644 index 55e6aad4..00000000 --- a/docs/build/html/metal_2reduce_8h_source.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/reduce.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright @ 2023 - 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - - -
      7#include "mlx/stream.h"
      -
      8
      -
      9namespace mlx::core {
      -
      10
      -
      11using metal::CommandEncoder;
      -
      12
      - -
      14 const array& in,
      -
      15 array& out,
      -
      16 const std::string& op_name,
      -
      17 CommandEncoder& compute_encoder,
      - -
      19 const Stream& s,
      -
      20 std::vector<array>& copies);
      -
      21
      - -
      23 const array& in,
      -
      24 array& out,
      -
      25 const std::string& op_name,
      -
      26 const ReductionPlan& plan,
      -
      27 const std::vector<int>& axes,
      -
      28 CommandEncoder& compute_encoder,
      - -
      30 const Stream& s);
      -
      31
      - -
      33 const array& in,
      -
      34 array& out,
      -
      35 const std::string& op_name,
      -
      36 const ReductionPlan& plan,
      -
      37 const std::vector<int>& axes,
      -
      38 CommandEncoder& compute_encoder,
      - -
      40 const Stream& s);
      -
      41
      -
      42} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Definition device.h:86
      - -
      Definition allocator.h:7
      -
      void strided_reduce_general_dispatch(const array &in, array &out, const std::string &op_name, const ReductionPlan &plan, const std::vector< int > &axes, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s)
      -
      void row_reduce_general_dispatch(const array &in, array &out, const std::string &op_name, const ReductionPlan &plan, const std::vector< int > &axes, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s)
      -
      void all_reduce_dispatch(const array &in, array &out, const std::string &op_name, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s, std::vector< array > &copies)
      - -
      Definition reduce.h:39
      -
      Definition stream.h:9
      -
      Definition device.h:40
      -
      - - - - diff --git a/docs/build/html/metal_2slicing_8h.html b/docs/build/html/metal_2slicing_8h.html deleted file mode 100644 index b584c6f8..00000000 --- a/docs/build/html/metal_2slicing_8h.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/slicing.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      slicing.h File Reference
      -
      -
      -
      #include "mlx/array.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - -

      -Functions

      void mlx::core::slice_gpu (const array &in, array &out, const std::vector< int > &start_indices, const std::vector< int > &strides, const Stream &s)
       
      void mlx::core::concatenate_gpu (const std::vector< array > &inputs, array &out, int axis, const Stream &s)
       
      void mlx::core::pad_gpu (const array &in, const array &val, array &out, std::vector< int > axes, std::vector< int > low_pad_size, const Stream &s)
       
      -
      - - - - diff --git a/docs/build/html/metal_2slicing_8h_source.html b/docs/build/html/metal_2slicing_8h_source.html deleted file mode 100644 index e5b80a43..00000000 --- a/docs/build/html/metal_2slicing_8h_source.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/slicing.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      slicing.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include "mlx/array.h"
      -
      6
      -
      7namespace mlx::core {
      -
      8
      - -
      10 const array& in,
      -
      11 array& out,
      -
      12 const std::vector<int>& start_indices,
      -
      13 const std::vector<int>& strides,
      -
      14 const Stream& s);
      -
      15
      - -
      17 const std::vector<array>& inputs,
      -
      18 array& out,
      -
      19 int axis,
      -
      20 const Stream& s);
      -
      21
      - -
      23 const array& in,
      -
      24 const array& val,
      -
      25 array& out,
      -
      26 std::vector<int> axes,
      -
      27 std::vector<int> low_pad_size,
      -
      28 const Stream& s);
      -
      29
      -
      30} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Definition allocator.h:7
      -
      void concatenate_gpu(const std::vector< array > &inputs, array &out, int axis, const Stream &s)
      -
      void slice_gpu(const array &in, array &out, const std::vector< int > &start_indices, const std::vector< int > &strides, const Stream &s)
      -
      void pad_gpu(const array &in, const array &val, array &out, std::vector< int > axes, std::vector< int > low_pad_size, const Stream &s)
      -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/metal_2ternary_8h.html b/docs/build/html/metal_2ternary_8h.html deleted file mode 100644 index b1874894..00000000 --- a/docs/build/html/metal_2ternary_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/ternary.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      ternary.h File Reference
      -
      -
      -
      #include "mlx/array.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - -

      -Functions

      void mlx::core::ternary_op_gpu (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      void mlx::core::ternary_op_gpu_inplace (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      -
      - - - - diff --git a/docs/build/html/metal_2ternary_8h_source.html b/docs/build/html/metal_2ternary_8h_source.html deleted file mode 100644 index 207978dd..00000000 --- a/docs/build/html/metal_2ternary_8h_source.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/ternary.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      ternary.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include "mlx/array.h"
      -
      6
      -
      7namespace mlx::core {
      -
      8
      - -
      10 const std::vector<array>& inputs,
      -
      11 array& out,
      -
      12 const std::string op,
      -
      13 const Stream& s);
      -
      14
      - -
      16 const std::vector<array>& inputs,
      -
      17 array& out,
      -
      18 const std::string op,
      -
      19 const Stream& s);
      -
      20
      -
      21} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Op op
      Definition binary.h:141
      -
      Definition allocator.h:7
      -
      void ternary_op_gpu_inplace(const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
      -
      void ternary_op_gpu(const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
      -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/metal_2unary_8h.html b/docs/build/html/metal_2unary_8h.html deleted file mode 100644 index de1ad03b..00000000 --- a/docs/build/html/metal_2unary_8h.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/unary.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      unary.h File Reference
      -
      -
      -
      #include "mlx/array.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - -

      -Functions

      void mlx::core::unary_op_gpu (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      void mlx::core::unary_op_gpu_inplace (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      -
      - - - - diff --git a/docs/build/html/metal_2unary_8h_source.html b/docs/build/html/metal_2unary_8h_source.html deleted file mode 100644 index 2bdd1e56..00000000 --- a/docs/build/html/metal_2unary_8h_source.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/unary.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      unary.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include "mlx/array.h"
      -
      6
      -
      7namespace mlx::core {
      -
      8
      - -
      10 const std::vector<array>& inputs,
      -
      11 array& out,
      -
      12 const std::string op,
      -
      13 const Stream& s);
      -
      14
      - -
      16 const std::vector<array>& inputs,
      -
      17 array& out,
      -
      18 const std::string op,
      -
      19 const Stream& s);
      -
      20
      -
      21} // namespace mlx::core
      - -
      Definition array.h:20
      -
      Op op
      Definition binary.h:141
      -
      Definition allocator.h:7
      -
      void unary_op_gpu_inplace(const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
      -
      void unary_op_gpu(const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
      -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/metal_8h.html b/docs/build/html/metal_8h.html deleted file mode 100644 index 53911afb..00000000 --- a/docs/build/html/metal_8h.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/metal.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      metal.h File Reference
      -
      -
      -
      #include <variant>
      -#include "mlx/array.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::metal
       
      - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      bool mlx::core::metal::is_available ()
       
      size_t mlx::core::metal::get_active_memory ()
       
      size_t mlx::core::metal::get_peak_memory ()
       
      void mlx::core::metal::reset_peak_memory ()
       
      size_t mlx::core::metal::get_cache_memory ()
       
      size_t mlx::core::metal::set_memory_limit (size_t limit, bool relaxed=true)
       
      size_t mlx::core::metal::set_cache_limit (size_t limit)
       
      void mlx::core::metal::clear_cache ()
       
      void mlx::core::metal::start_capture (std::string path="")
       Capture a GPU trace, saving it to an absolute file path
       
      void mlx::core::metal::stop_capture ()
       
      std::unordered_map< std::string, std::variant< std::string, size_t > > mlx::core::metal::device_info ()
       Get information about the GPU and system settings.
       
      -
      - - - - diff --git a/docs/build/html/metal_8h_source.html b/docs/build/html/metal_8h_source.html deleted file mode 100644 index 04c2a29f..00000000 --- a/docs/build/html/metal_8h_source.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/metal.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      metal.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <variant>
      -
      6
      -
      7#include "mlx/array.h"
      -
      8
      -
      9namespace mlx::core::metal {
      -
      10
      -
      11/* Check if the Metal backend is available. */
      - -
      13
      -
      14/* Get the actively used memory in bytes.
      -
      15 *
      -
      16 * Note, this will not always match memory use reported by the system because
      -
      17 * it does not include cached memory buffers.
      -
      18 * */
      - -
      20
      -
      21/* Get the peak amount of used memory in bytes.
      -
      22 *
      -
      23 * The maximum memory used recorded from the beginning of the program
      -
      24 * execution or since the last call to reset_peak_memory.
      -
      25 * */
      - -
      27
      -
      28/* Reset the peak memory to zero.
      -
      29 * */
      - -
      31
      -
      32/* Get the cache size in bytes.
      -
      33 *
      -
      34 * The cache includes memory not currently used that has not been returned
      -
      35 * to the system allocator.
      -
      36 * */
      - -
      38
      -
      39/* Set the memory limit.
      -
      40 * Calls to malloc will wait on scheduled tasks if the limit is exceeded. If
      -
      41 * there are no more scheduled tasks an error will be raised if relaxed
      -
      42 * is false or memory will be allocated (including the potential for
      -
      43 * swap) if relaxed is true.
      -
      44 *
      -
      45 * The memory limit defaults to 1.5 times the maximum recommended working set
      -
      46 * size reported by the device.
      -
      47 *
      -
      48 * Returns the previous memory limit.
      -
      49 * */
      -
      50size_t set_memory_limit(size_t limit, bool relaxed = true);
      -
      51
      -
      52/* Set the free cache limit.
      -
      53 * If using more than the given limit, free memory will be reclaimed
      -
      54 * from the cache on the next allocation. To disable the cache,
      -
      55 * set the limit to 0.
      -
      56 *
      -
      57 * The cache limit defaults to the memory limit.
      -
      58 *
      -
      59 * Returns the previous cache limit.
      -
      60 * */
      -
      61size_t set_cache_limit(size_t limit);
      -
      62
      -
      63/* Clear the memory cache. */
      - -
      65
      -
      67void start_capture(std::string path = "");
      - -
      69
      -
      71std::unordered_map<std::string, std::variant<std::string, size_t>>
      - -
      73
      -
      74} // namespace mlx::core::metal
      - -
      Definition allocator.h:12
      - - -
      size_t set_memory_limit(size_t limit, bool relaxed=true)
      -
      size_t get_cache_memory()
      -
      size_t get_peak_memory()
      -
      std::unordered_map< std::string, std::variant< std::string, size_t > > device_info()
      Get information about the GPU and system settings.
      -
      size_t get_active_memory()
      -
      void start_capture(std::string path="")
      Capture a GPU trace, saving it to an absolute file path
      -
      size_t set_cache_limit(size_t limit)
      - -
      void reset_peak_memory()
      -
      - - - - diff --git a/docs/build/html/metal__impl_8h.html b/docs/build/html/metal__impl_8h.html deleted file mode 100644 index 0c0f4f09..00000000 --- a/docs/build/html/metal__impl_8h.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/metal_impl.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      metal_impl.h File Reference
      -
      -
      -
      #include <future>
      -#include <memory>
      -#include "mlx/array.h"
      -#include "mlx/stream.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::metal
       
      - - - - - - - -

      -Functions

      void mlx::core::metal::new_stream (Stream stream)
       
      std::function< void()> mlx::core::metal::make_task (array arr, bool signal)
       
      std::function< void()> mlx::core::metal::make_synchronize_task (Stream s, std::shared_ptr< std::promise< void > > p)
       
      - - - -

      -Variables

      std::unique_ptr< void, std::function< void(void *)> mlx::core::metal::new_scoped_memory_pool )()
       
      -
      - - - - diff --git a/docs/build/html/metal__impl_8h_source.html b/docs/build/html/metal__impl_8h_source.html deleted file mode 100644 index cc4bceac..00000000 --- a/docs/build/html/metal__impl_8h_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/metal_impl.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      metal_impl.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <future>
      -
      6#include <memory>
      -
      7
      -
      8#include "mlx/array.h"
      -
      9#include "mlx/stream.h"
      -
      10
      -
      11namespace mlx::core::metal {
      -
      12
      -
      13void new_stream(Stream stream);
      -
      14
      -
      15std::unique_ptr<void, std::function<void(void*)>> new_scoped_memory_pool();
      -
      16
      -
      17std::function<void()> make_task(array arr, bool signal);
      -
      18
      -
      19std::function<void()> make_synchronize_task(
      -
      20 Stream s,
      -
      21 std::shared_ptr<std::promise<void>> p);
      -
      22
      -
      23} // namespace mlx::core::metal
      - -
      Definition array.h:20
      -
      Definition allocator.h:12
      -
      std::function< void()> make_task(array arr, bool signal)
      -
      std::unique_ptr< void, std::function< void(void *)> new_scoped_memory_pool)()
      -
      void new_stream(Stream stream)
      -
      std::function< void()> make_synchronize_task(Stream s, std::shared_ptr< std::promise< void > > p)
      - -
      Definition stream.h:9
      -
      - - - - diff --git a/docs/build/html/minus.svg b/docs/build/html/minus.svg deleted file mode 100644 index f70d0c1a..00000000 --- a/docs/build/html/minus.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/build/html/minusd.svg b/docs/build/html/minusd.svg deleted file mode 100644 index 5f8e8796..00000000 --- a/docs/build/html/minusd.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/build/html/mlx_8h.html b/docs/build/html/mlx_8h.html deleted file mode 100644 index 6a8d7c7f..00000000 --- a/docs/build/html/mlx_8h.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -MLX: mlx/mlx.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      mlx.h File Reference
      -
      -
      -
      #include "mlx/array.h"
      -#include "mlx/backend/metal/metal.h"
      -#include "mlx/compile.h"
      -#include "mlx/device.h"
      -#include "mlx/distributed/distributed.h"
      -#include "mlx/distributed/ops.h"
      -#include "mlx/einsum.h"
      -#include "mlx/fast.h"
      -#include "mlx/fft.h"
      -#include "mlx/io.h"
      -#include "mlx/linalg.h"
      -#include "mlx/ops.h"
      -#include "mlx/random.h"
      -#include "mlx/stream.h"
      -#include "mlx/transforms.h"
      -#include "mlx/utils.h"
      -
      -

      Go to the source code of this file.

      -
      - - - - diff --git a/docs/build/html/mlx_8h_source.html b/docs/build/html/mlx_8h_source.html deleted file mode 100644 index 546b60ab..00000000 --- a/docs/build/html/mlx_8h_source.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -MLX: mlx/mlx.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      mlx.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include "mlx/array.h"
      - -
      7#include "mlx/compile.h"
      -
      8#include "mlx/device.h"
      - -
      10#include "mlx/distributed/ops.h"
      -
      11#include "mlx/einsum.h"
      -
      12#include "mlx/fast.h"
      -
      13#include "mlx/fft.h"
      -
      14#include "mlx/io.h"
      -
      15#include "mlx/linalg.h"
      -
      16#include "mlx/ops.h"
      -
      17#include "mlx/random.h"
      -
      18#include "mlx/stream.h"
      -
      19#include "mlx/transforms.h"
      -
      20#include "mlx/utils.h"
      - - - - - - - - - - - - - - - - -
      - - - - diff --git a/docs/build/html/mma_8h.html b/docs/build/html/mma_8h.html deleted file mode 100644 index b3c439dc..00000000 --- a/docs/build/html/mma_8h.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/mma.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mma.h File Reference
      -
      -
      -
      #include <metal_simdgroup>
      -#include <metal_simdgroup_matrix>
      -#include <metal_stdlib>
      -#include "mlx/backend/metal/kernels/steel/defines.h"
      -#include "mlx/backend/metal/kernels/steel/gemm/transforms.h"
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      struct  mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
       
      - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::steel
       
      -
      - - - - diff --git a/docs/build/html/mma_8h_source.html b/docs/build/html/mma_8h_source.html deleted file mode 100644 index 51384c49..00000000 --- a/docs/build/html/mma_8h_source.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/mma.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      mma.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <metal_simdgroup>
      -
      6#include <metal_simdgroup_matrix>
      -
      7#include <metal_stdlib>
      -
      8
      - - -
      11
      -
      12using namespace metal;
      -
      13
      -
      15// MMA helper
      -
      17
      -
      18namespace mlx {
      -
      19namespace steel {
      -
      20
      -
      21template <
      -
      22 typename T,
      -
      23 typename U,
      -
      24 int BM,
      -
      25 int BN,
      -
      26 int BK,
      -
      27 int WM,
      -
      28 int WN,
      -
      29 bool transpose_a,
      -
      30 bool transpose_b,
      -
      31 short lda_tgp,
      -
      32 short ldb_tgp,
      -
      33 typename AccumType = float,
      -
      34 typename Epilogue = TransformNone<U, AccumType>>
      -
      -
      35struct BlockMMA {
      -
      36 // Warp tile simdgroup matrix strides along M
      -
      37 STEEL_CONST short TM_stride = 8 * WM;
      -
      38 // Warp tile simdgroup matrix strides along M
      -
      39 STEEL_CONST short TN_stride = 8 * WN;
      -
      40
      -
      41 // Warp tile size along M
      -
      42 STEEL_CONST short TM = BM / TM_stride;
      -
      43 // Warp tile size along N
      -
      44 STEEL_CONST short TN = BN / TN_stride;
      -
      45
      -
      46 // Strides of A, B along reduction axis
      -
      - -
      48 transpose_a ? TM_stride : TM_stride * lda_tgp};
      -
      -
      - -
      50 transpose_b ? TN_stride * ldb_tgp : TN_stride};
      -
      -
      51
      -
      52 // Jump between elements
      -
      53 STEEL_CONST short jump_a = {transpose_a ? lda_tgp : 1};
      -
      54 STEEL_CONST short jump_b = {transpose_b ? ldb_tgp : 1};
      -
      55
      -
      56 STEEL_CONST short tile_stride_a = {transpose_a ? 8 * lda_tgp : 8};
      -
      57 STEEL_CONST short tile_stride_b = {transpose_b ? 8 : 8 * ldb_tgp};
      -
      58
      -
      59 // Simdgroup matrices
      -
      60 simdgroup_matrix<AccumType, 8, 8> Asimd[TM];
      -
      61 simdgroup_matrix<AccumType, 8, 8> Bsimd[TN];
      -
      -
      62 simdgroup_matrix<AccumType, 8, 8> results[TM * TN] = {
      -
      63 simdgroup_matrix<AccumType, 8, 8>(0)};
      -
      -
      64
      -
      65 // Offsets within threadgroup
      -
      66 const short tm;
      -
      67 const short tn;
      -
      68
      -
      69 short sm;
      -
      70 short sn;
      -
      71
      -
      72 short As_offset;
      -
      73 short Bs_offset;
      -
      74
      -
      75 /* Constructor */
      -
      -
      76 METAL_FUNC BlockMMA(
      -
      77 ushort simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      78 ushort simd_lane_id [[thread_index_in_simdgroup]])
      -
      79 : tm(8 * (simd_group_id / WN)), tn(8 * (simd_group_id % WN)) {
      -
      80 // Determine thread position in simdgroup matrix
      -
      81 short qid = simd_lane_id / 4;
      -
      82 sm = (qid & 4) + (simd_lane_id / 2) % 4;
      -
      83 sn = (qid & 2) * 2 + (simd_lane_id % 2) * 2;
      -
      84
      -
      85 // Determine thread and simdgroup offset
      -
      86 As_offset =
      -
      87 transpose_a ? ((sn)*lda_tgp + (tm + sm)) : ((sn) + (tm + sm) * lda_tgp);
      -
      88 Bs_offset =
      -
      89 transpose_b ? ((tn + sn) * ldb_tgp + (sm)) : ((sm)*ldb_tgp + (tn + sn));
      -
      90 }
      -
      -
      91
      -
      92 /* (BM, BK) X (BK, BN) multiply accumulate function */
      -
      -
      93 METAL_FUNC void mma(const threadgroup T* As, const threadgroup T* Bs) {
      -
      94 // Adjust for simdgroup and thread location
      -
      95 As += As_offset;
      -
      96 Bs += Bs_offset;
      -
      97
      -
      98 // Iterate over BK in blocks of 8
      - -
      100 for (short kk = 0; kk < BK; kk += 8) {
      -
      101 simdgroup_barrier(mem_flags::mem_none);
      -
      102
      -
      103 // Load elements from threadgroup A as simdgroup matrices
      - -
      105 for (short i = 0; i < TM; i++) {
      -
      106 Asimd[i].thread_elements()[0] =
      -
      107 static_cast<AccumType>(As[i * simd_stride_a + 0]);
      -
      108 Asimd[i].thread_elements()[1] =
      -
      109 static_cast<AccumType>(As[i * simd_stride_a + jump_a]);
      -
      110 }
      -
      111
      -
      112 simdgroup_barrier(mem_flags::mem_none);
      -
      113
      -
      114 // Load elements from threadgroup B as simdgroup matrices
      - -
      116 for (short j = 0; j < TN; j++) {
      -
      117 Bsimd[j].thread_elements()[0] =
      -
      118 static_cast<AccumType>(Bs[j * simd_stride_b + 0]);
      -
      119 Bsimd[j].thread_elements()[1] =
      -
      120 static_cast<AccumType>(Bs[j * simd_stride_b + jump_b]);
      -
      121 }
      -
      122
      -
      123 simdgroup_barrier(mem_flags::mem_none);
      -
      124
      -
      125 // Multiply and accumulate into result simdgroup matrices
      - -
      127 for (short i = 0; i < TM; i++) {
      - -
      129 for (short j = 0; j < TN; j++) {
      -
      130 short j_serp = (i % 2) ? (TN - 1 - j) : j;
      -
      131
      -
      132 simdgroup_multiply_accumulate(
      -
      133 results[i * TN + j_serp],
      -
      134 Asimd[i],
      -
      135 Bsimd[j_serp],
      -
      136 results[i * TN + j_serp]);
      -
      137 }
      -
      138 }
      -
      139
      -
      140 // Progress to next simdgroup tile
      -
      141 As += tile_stride_a;
      -
      142 Bs += tile_stride_b;
      -
      143 }
      -
      144 }
      -
      -
      145
      -
      146 /* Store results from simdgroup_matrix results into device memory */
      -
      -
      147 METAL_FUNC void store_result(device U* D, const int ldd) const {
      -
      148 // Adjust for simdgroup and thread location
      -
      149 D += (sm + tm) * ldd + tn + sn;
      -
      150
      -
      151 // Loop over all simdgroup tiles
      - -
      153 for (short i = 0; i < TM; i++) {
      - -
      155 for (short j = 0; j < TN; j++) {
      -
      156 // Get accumulated result and associated offset in C
      -
      157 thread const auto& accum = results[i * TN + j].thread_elements();
      -
      158 int offset = (i * TM_stride) * ldd + (j * TN_stride);
      -
      159
      -
      160 // Apply epilogue
      -
      161 U outs[2] = {Epilogue::apply(accum[0]), Epilogue::apply(accum[1])};
      -
      162
      -
      163 // Write out D
      -
      164 D[offset] = outs[0];
      -
      165 D[offset + 1] = outs[1];
      -
      166 }
      -
      167 }
      -
      168 }
      -
      -
      169
      -
      170 METAL_FUNC void
      -
      -
      171 store_result_safe(device U* D, const int ldd, short2 dst_tile_dims) const {
      -
      172 // Adjust for simdgroup and thread location
      -
      173 D += (sm + tm) * ldd + (tn + sn);
      -
      174 dst_tile_dims -= short2(tn + sn, sm + tm);
      -
      175
      -
      176 if (dst_tile_dims.x <= 0 || dst_tile_dims.y <= 0)
      -
      177 return;
      -
      178
      - -
      180 for (int i = 0; i < TM; i++) {
      -
      181 if (i * TM_stride < dst_tile_dims.y) {
      - -
      183 for (int j = 0; j < TN; j++) {
      -
      184 // Get accumulated result and associated offset in C
      -
      185 thread const auto& accum = results[i * TN + j].thread_elements();
      -
      186 int offset = (i * TM_stride) * ldd + (j * TN_stride);
      -
      187
      -
      188 // Apply epilogue and output C
      -
      189 if (j * TN_stride < dst_tile_dims.x) {
      -
      190 D[offset] = Epilogue::apply(accum[0]);
      -
      191 }
      -
      192
      -
      193 if (j * TN_stride + 1 < dst_tile_dims.x) {
      -
      194 D[offset + 1] = Epilogue::apply(accum[1]);
      -
      195 }
      -
      196 }
      -
      197 }
      -
      198 }
      -
      199 }
      -
      -
      200
      -
      201 /* Apply epilogue */
      -
      202 template <typename UnaryEpilogue>
      -
      -
      203 METAL_FUNC void apply_epilogue(thread const UnaryEpilogue& epilogue_op) {
      -
      204 // Loop over all simdgroup tiles
      - -
      206 for (short i = 0; i < TM; i++) {
      - -
      208 for (short j = 0; j < TN; j++) {
      -
      209 // Get accumulated result and associated offset in C
      -
      210 thread auto& accum = results[i * TN + j].thread_elements();
      -
      211
      -
      212 // Apply epilogue
      -
      213 accum[0] = epilogue_op.apply(accum[0]);
      -
      214 accum[1] = epilogue_op.apply(accum[1]);
      -
      215 }
      -
      216 }
      -
      217 }
      -
      -
      218
      -
      219 /* Apply epilogue */
      -
      220 template <typename BinaryEpilogue>
      -
      -
      221 METAL_FUNC void apply_epilogue(
      -
      222 const device U* C,
      -
      223 const int ldc,
      -
      224 const int fdc,
      -
      225 thread const BinaryEpilogue& epilogue_op) {
      -
      226 // Adjust for simdgroup and thread location
      -
      227 C += (sm + tm) * ldc + (tn + sn) * fdc;
      -
      228
      -
      229 // Loop over all simdgroup tiles
      - -
      231 for (short i = 0; i < TM; i++) {
      - -
      233 for (short j = 0; j < TN; j++) {
      -
      234 // Get accumulated result and associated offset in C
      -
      235 thread auto& accum = results[i * TN + j].thread_elements();
      -
      236 int offset_c = (i * TM_stride) * ldc + (j * TN_stride) * fdc;
      -
      237
      -
      238 // Apply epilogue
      -
      239 accum[0] = epilogue_op.apply(accum[0], C[offset_c]);
      -
      240 accum[1] = epilogue_op.apply(accum[1], C[offset_c + fdc]);
      -
      241 }
      -
      242 }
      -
      243 }
      -
      -
      244
      -
      245 /* Apply epilogue */
      -
      246 template <typename BinaryEpilogue>
      -
      -
      247 METAL_FUNC void apply_epilogue_safe(
      -
      248 const device U* C,
      -
      249 const int ldc,
      -
      250 const int fdc,
      -
      251 short2 dst_tile_dims,
      -
      252 thread const BinaryEpilogue& epilogue_op) {
      -
      253 // Adjust for simdgroup and thread location
      -
      254 C += (sm + tm) * ldc + (tn + sn) * fdc;
      -
      255 dst_tile_dims -= short2(tn + sn, sm + tm);
      -
      256
      -
      257 if (dst_tile_dims.x <= 0 || dst_tile_dims.y <= 0)
      -
      258 return;
      -
      259
      -
      260 // Loop over all simdgroup tiles
      - -
      262 for (short i = 0; i < TM; i++) {
      - -
      264 for (short j = 0; j < TN; j++) {
      -
      265 // Get accumulated result and associated offset in C
      -
      266 thread auto& accum = results[i * TN + j].thread_elements();
      -
      267 int offset_c = (i * TM_stride) * ldc + (j * TN_stride) * fdc;
      -
      268
      -
      269 // Read C
      -
      270 U c_elems[2] = {0};
      -
      271
      -
      272 if ((j * TN_stride + 1) < dst_tile_dims.x) {
      -
      273 c_elems[0] = C[offset_c];
      -
      274 c_elems[1] = C[offset_c + fdc];
      -
      275 } else if ((j * TN_stride) < dst_tile_dims.x) {
      -
      276 c_elems[0] = C[offset_c];
      -
      277 }
      -
      278
      -
      279 // Apply epilogue
      -
      280 accum[0] = epilogue_op.apply(accum[0], c_elems[0]);
      -
      281 accum[1] = epilogue_op.apply(accum[1], c_elems[1]);
      -
      282 }
      -
      283 }
      -
      284 }
      -
      -
      285
      -
      286 /* Store results from simdgroup_matrix results into device memory */
      -
      -
      287 METAL_FUNC void store_result(
      -
      288 device U* D,
      -
      289 const int ldd,
      -
      290 const device U* C,
      -
      291 const int ldc,
      -
      292 const int fdc,
      -
      293 thread const Epilogue& epilogue_op) const {
      -
      294 // Adjust for simdgroup and thread location
      -
      295 C += (sm + tm) * ldc + (tn + sn) * fdc;
      -
      296 D += (sm + tm) * ldd + tn + sn;
      -
      297
      -
      298 // Loop over all simdgroup tiles
      - -
      300 for (short i = 0; i < TM; i++) {
      - -
      302 for (short j = 0; j < TN; j++) {
      -
      303 // Get accumulated result and associated offset in C
      -
      304 thread const auto& accum = results[i * TN + j].thread_elements();
      -
      305 int offset_c = (i * TM_stride) * ldc + (j * TN_stride) * fdc;
      -
      306 int offset_d = (i * TM_stride) * ldd + (j * TN_stride);
      -
      307
      -
      308 // Apply epilogue
      -
      309 U outs[2] = {
      -
      310 epilogue_op.apply(accum[0], C[offset_c]),
      -
      311 epilogue_op.apply(accum[1], C[offset_c + fdc])};
      -
      312
      -
      313 // Write out D
      -
      314 D[offset_d] = outs[0];
      -
      315 D[offset_d + 1] = outs[1];
      -
      316 }
      -
      317 }
      -
      318 }
      -
      -
      319
      -
      -
      320 METAL_FUNC void store_result_safe(
      -
      321 device U* D,
      -
      322 const int ldd,
      -
      323 const device U* C,
      -
      324 const int ldc,
      -
      325 const int fdc,
      -
      326 short2 dst_tile_dims,
      -
      327 thread const Epilogue& epilogue_op) const {
      -
      328 // Adjust for simdgroup and thread location
      -
      329 C += (sm + tm) * ldc + (tn + sn) * fdc;
      -
      330 D += (sm + tm) * ldd + tn + sn;
      -
      331 dst_tile_dims -= short2(tn + sn, sm + tm);
      -
      332
      -
      333 if (dst_tile_dims.x <= 0 || dst_tile_dims.y <= 0)
      -
      334 return;
      -
      335
      - -
      337 for (int i = 0; i < TM; i++) {
      -
      338 if (i * TM_stride < dst_tile_dims.y) {
      - -
      340 for (int j = 0; j < TN; j++) {
      -
      341 // Get accumulated result and associated offset in C
      -
      342 thread const auto& accum = results[i * TN + j].thread_elements();
      -
      343 int offset_c = (i * TM_stride) * ldc + (j * TN_stride) * fdc;
      -
      344 int offset_d = (i * TM_stride) * ldd + (j * TN_stride);
      -
      345
      -
      346 // Apply epilogue and output C
      -
      347 if (j * TN_stride < dst_tile_dims.x) {
      -
      348 D[offset_d] = epilogue_op.apply(accum[0], C[offset_c]);
      -
      349 }
      -
      350
      -
      351 if (j * TN_stride + 1 < dst_tile_dims.x) {
      -
      352 D[offset_d + 1] = epilogue_op.apply(accum[1], C[offset_c + fdc]);
      -
      353 }
      -
      354 }
      -
      355 }
      -
      356 }
      -
      357 }
      -
      -
      358};
      -
      -
      359
      -
      360} // namespace steel
      -
      361} // namespace mlx
      - -
      Definition bf16.h:265
      -
      Definition allocator.h:7
      - -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      #define STEEL_CONST
      Definition defines.h:3
      -
      Definition mma.h:35
      -
      short As_offset
      Definition mma.h:72
      -
      STEEL_CONST short jump_b
      Definition mma.h:54
      -
      simdgroup_matrix< AccumType, 8, 8 > Bsimd[TN]
      Definition mma.h:61
      -
      STEEL_CONST short TM_stride
      Definition mma.h:37
      -
      METAL_FUNC void mma(const threadgroup T *As, const threadgroup T *Bs)
      Definition mma.h:93
      -
      simdgroup_matrix< AccumType, 8, 8 > results[TM *TN]
      Definition mma.h:62
      -
      STEEL_CONST short TN
      Definition mma.h:44
      -
      METAL_FUNC void store_result_safe(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const Epilogue &epilogue_op) const
      Definition mma.h:320
      -
      METAL_FUNC void store_result(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, thread const Epilogue &epilogue_op) const
      Definition mma.h:287
      -
      METAL_FUNC void apply_epilogue(const device U *C, const int ldc, const int fdc, thread const BinaryEpilogue &epilogue_op)
      Definition mma.h:221
      -
      METAL_FUNC void store_result(device U *D, const int ldd) const
      Definition mma.h:147
      -
      STEEL_CONST short TN_stride
      Definition mma.h:39
      -
      STEEL_CONST short tile_stride_a
      Definition mma.h:56
      -
      simdgroup_matrix< AccumType, 8, 8 > Asimd[TM]
      Definition mma.h:60
      -
      short Bs_offset
      Definition mma.h:73
      -
      METAL_FUNC void apply_epilogue_safe(const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const BinaryEpilogue &epilogue_op)
      Definition mma.h:247
      -
      METAL_FUNC BlockMMA(ushort simd_group_id, ushort simd_lane_id)
      Definition mma.h:76
      -
      short sm
      Definition mma.h:69
      -
      STEEL_CONST short simd_stride_a
      Definition mma.h:47
      -
      const short tm
      Definition mma.h:66
      -
      STEEL_CONST short TM
      Definition mma.h:42
      -
      const short tn
      Definition mma.h:67
      -
      STEEL_CONST short jump_a
      Definition mma.h:53
      -
      short sn
      Definition mma.h:70
      -
      STEEL_CONST short tile_stride_b
      Definition mma.h:57
      -
      STEEL_CONST short simd_stride_b
      Definition mma.h:49
      -
      METAL_FUNC void apply_epilogue(thread const UnaryEpilogue &epilogue_op)
      Definition mma.h:203
      -
      METAL_FUNC void store_result_safe(device U *D, const int ldd, short2 dst_tile_dims) const
      Definition mma.h:171
      -
      - - - - diff --git a/docs/build/html/namespacemembers.html b/docs/build/html/namespacemembers.html deleted file mode 100644 index 8e86945c..00000000 --- a/docs/build/html/namespacemembers.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - a -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_b.html b/docs/build/html/namespacemembers_b.html deleted file mode 100644 index 7392c31c..00000000 --- a/docs/build/html/namespacemembers_b.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - b -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_c.html b/docs/build/html/namespacemembers_c.html deleted file mode 100644 index de6afaef..00000000 --- a/docs/build/html/namespacemembers_c.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - c -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_d.html b/docs/build/html/namespacemembers_d.html deleted file mode 100644 index d55554e5..00000000 --- a/docs/build/html/namespacemembers_d.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - d -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_e.html b/docs/build/html/namespacemembers_e.html deleted file mode 100644 index 88a4454c..00000000 --- a/docs/build/html/namespacemembers_e.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - e -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_enum.html b/docs/build/html/namespacemembers_enum.html deleted file mode 100644 index cd9598a2..00000000 --- a/docs/build/html/namespacemembers_enum.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace enums with links to the namespace documentation for each enum:
      -
      - - - - diff --git a/docs/build/html/namespacemembers_eval.html b/docs/build/html/namespacemembers_eval.html deleted file mode 100644 index 2dd42ff3..00000000 --- a/docs/build/html/namespacemembers_eval.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace enum values with links to the namespace documentation for each enum value:
      -
      - - - - diff --git a/docs/build/html/namespacemembers_f.html b/docs/build/html/namespacemembers_f.html deleted file mode 100644 index 0f1d8d66..00000000 --- a/docs/build/html/namespacemembers_f.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - f -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func.html b/docs/build/html/namespacemembers_func.html deleted file mode 100644 index 01072122..00000000 --- a/docs/build/html/namespacemembers_func.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - a -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_b.html b/docs/build/html/namespacemembers_func_b.html deleted file mode 100644 index f23f31f8..00000000 --- a/docs/build/html/namespacemembers_func_b.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - b -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_c.html b/docs/build/html/namespacemembers_func_c.html deleted file mode 100644 index 3349157a..00000000 --- a/docs/build/html/namespacemembers_func_c.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - c -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_d.html b/docs/build/html/namespacemembers_func_d.html deleted file mode 100644 index 764ae044..00000000 --- a/docs/build/html/namespacemembers_func_d.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - d -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_e.html b/docs/build/html/namespacemembers_func_e.html deleted file mode 100644 index 3f679b34..00000000 --- a/docs/build/html/namespacemembers_func_e.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - e -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_f.html b/docs/build/html/namespacemembers_func_f.html deleted file mode 100644 index 34015aa3..00000000 --- a/docs/build/html/namespacemembers_func_f.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - f -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_g.html b/docs/build/html/namespacemembers_func_g.html deleted file mode 100644 index 15c6bef5..00000000 --- a/docs/build/html/namespacemembers_func_g.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - g -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_h.html b/docs/build/html/namespacemembers_func_h.html deleted file mode 100644 index 7bfab90d..00000000 --- a/docs/build/html/namespacemembers_func_h.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - h -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_i.html b/docs/build/html/namespacemembers_func_i.html deleted file mode 100644 index c51e4dda..00000000 --- a/docs/build/html/namespacemembers_func_i.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - i -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_j.html b/docs/build/html/namespacemembers_func_j.html deleted file mode 100644 index 478310fc..00000000 --- a/docs/build/html/namespacemembers_func_j.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - j -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_k.html b/docs/build/html/namespacemembers_func_k.html deleted file mode 100644 index c17597ff..00000000 --- a/docs/build/html/namespacemembers_func_k.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - k -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_l.html b/docs/build/html/namespacemembers_func_l.html deleted file mode 100644 index eead15cc..00000000 --- a/docs/build/html/namespacemembers_func_l.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - l -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_m.html b/docs/build/html/namespacemembers_func_m.html deleted file mode 100644 index ca6b2508..00000000 --- a/docs/build/html/namespacemembers_func_m.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - m -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_n.html b/docs/build/html/namespacemembers_func_n.html deleted file mode 100644 index 1705a3a9..00000000 --- a/docs/build/html/namespacemembers_func_n.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - n -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_o.html b/docs/build/html/namespacemembers_func_o.html deleted file mode 100644 index 8583a420..00000000 --- a/docs/build/html/namespacemembers_func_o.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - o -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_p.html b/docs/build/html/namespacemembers_func_p.html deleted file mode 100644 index c9878853..00000000 --- a/docs/build/html/namespacemembers_func_p.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - p -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_q.html b/docs/build/html/namespacemembers_func_q.html deleted file mode 100644 index e6038459..00000000 --- a/docs/build/html/namespacemembers_func_q.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - q -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_r.html b/docs/build/html/namespacemembers_func_r.html deleted file mode 100644 index 27662780..00000000 --- a/docs/build/html/namespacemembers_func_r.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - r -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_s.html b/docs/build/html/namespacemembers_func_s.html deleted file mode 100644 index 9cc04080..00000000 --- a/docs/build/html/namespacemembers_func_s.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - s -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_t.html b/docs/build/html/namespacemembers_func_t.html deleted file mode 100644 index 632361b5..00000000 --- a/docs/build/html/namespacemembers_func_t.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - t -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_u.html b/docs/build/html/namespacemembers_func_u.html deleted file mode 100644 index da9a70fe..00000000 --- a/docs/build/html/namespacemembers_func_u.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - u -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_v.html b/docs/build/html/namespacemembers_func_v.html deleted file mode 100644 index 61ea376a..00000000 --- a/docs/build/html/namespacemembers_func_v.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - v -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_w.html b/docs/build/html/namespacemembers_func_w.html deleted file mode 100644 index ea0d0d3a..00000000 --- a/docs/build/html/namespacemembers_func_w.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - w -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_func_z.html b/docs/build/html/namespacemembers_func_z.html deleted file mode 100644 index 18bea3a4..00000000 --- a/docs/build/html/namespacemembers_func_z.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace functions with links to the namespace documentation for each function:
      - -

      - z -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_g.html b/docs/build/html/namespacemembers_g.html deleted file mode 100644 index ab723a47..00000000 --- a/docs/build/html/namespacemembers_g.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - g -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_h.html b/docs/build/html/namespacemembers_h.html deleted file mode 100644 index 12b9094a..00000000 --- a/docs/build/html/namespacemembers_h.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - h -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_i.html b/docs/build/html/namespacemembers_i.html deleted file mode 100644 index 5bc84fab..00000000 --- a/docs/build/html/namespacemembers_i.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - i -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_j.html b/docs/build/html/namespacemembers_j.html deleted file mode 100644 index a94493ee..00000000 --- a/docs/build/html/namespacemembers_j.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - j -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_k.html b/docs/build/html/namespacemembers_k.html deleted file mode 100644 index a224ff24..00000000 --- a/docs/build/html/namespacemembers_k.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - k -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_l.html b/docs/build/html/namespacemembers_l.html deleted file mode 100644 index 2f882b37..00000000 --- a/docs/build/html/namespacemembers_l.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - l -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_m.html b/docs/build/html/namespacemembers_m.html deleted file mode 100644 index 9d4d8b9c..00000000 --- a/docs/build/html/namespacemembers_m.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - m -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_n.html b/docs/build/html/namespacemembers_n.html deleted file mode 100644 index 5f3dad60..00000000 --- a/docs/build/html/namespacemembers_n.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - n -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_o.html b/docs/build/html/namespacemembers_o.html deleted file mode 100644 index ec9921d5..00000000 --- a/docs/build/html/namespacemembers_o.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - o -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_p.html b/docs/build/html/namespacemembers_p.html deleted file mode 100644 index 67c75526..00000000 --- a/docs/build/html/namespacemembers_p.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - p -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_q.html b/docs/build/html/namespacemembers_q.html deleted file mode 100644 index 4457a34c..00000000 --- a/docs/build/html/namespacemembers_q.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - q -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_r.html b/docs/build/html/namespacemembers_r.html deleted file mode 100644 index 79466a0c..00000000 --- a/docs/build/html/namespacemembers_r.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - r -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_s.html b/docs/build/html/namespacemembers_s.html deleted file mode 100644 index dd686f35..00000000 --- a/docs/build/html/namespacemembers_s.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - s -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_t.html b/docs/build/html/namespacemembers_t.html deleted file mode 100644 index 58f94e70..00000000 --- a/docs/build/html/namespacemembers_t.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - t -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_type.html b/docs/build/html/namespacemembers_type.html deleted file mode 100644 index 2f1a048b..00000000 --- a/docs/build/html/namespacemembers_type.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace typedefs with links to the namespace documentation for each typedef:
      -
      - - - - diff --git a/docs/build/html/namespacemembers_u.html b/docs/build/html/namespacemembers_u.html deleted file mode 100644 index 06b2bce6..00000000 --- a/docs/build/html/namespacemembers_u.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - u -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_v.html b/docs/build/html/namespacemembers_v.html deleted file mode 100644 index b0e0caed..00000000 --- a/docs/build/html/namespacemembers_v.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - v -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_vars.html b/docs/build/html/namespacemembers_vars.html deleted file mode 100644 index f81cf8e1..00000000 --- a/docs/build/html/namespacemembers_vars.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace variables with links to the namespace documentation for each variable:
      - -

      - b -

      - - -

      - c -

      - - -

      - f -

      - - -

      - g -

      - - -

      - h -

      - - -

      - i -

      - - -

      - m -

      - - -

      - n -

      - - -

      - s -

      - - -

      - u -

      - - -

      - v -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_w.html b/docs/build/html/namespacemembers_w.html deleted file mode 100644 index 137c227c..00000000 --- a/docs/build/html/namespacemembers_w.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - w -

      -
      - - - - diff --git a/docs/build/html/namespacemembers_z.html b/docs/build/html/namespacemembers_z.html deleted file mode 100644 index 39853973..00000000 --- a/docs/build/html/namespacemembers_z.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -MLX: Namespace Members - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Here is a list of all namespace members with links to the namespace documentation for each member:
      - -

      - z -

      -
      - - - - diff --git a/docs/build/html/namespacemetal.html b/docs/build/html/namespacemetal.html deleted file mode 100644 index 5575222a..00000000 --- a/docs/build/html/namespacemetal.html +++ /dev/null @@ -1,1661 +0,0 @@ - - - - - - - -MLX: metal Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      metal Namespace Reference
      -
      -
      - - - - - - -

      -Namespaces

      namespace  fast
       
      namespace  precise
       
      - - - -

      -Classes

      struct  _numeric_limits_impl< bfloat16_t >
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      METAL_FUNC bool isnan (_MLX_BFloat16 x)
       
      METAL_FUNC bfloat16_t abs (bfloat16_t x)
       
      METAL_FUNC bfloat16_t acos (bfloat16_t x)
       
      METAL_FUNC bfloat16_t acosh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t asin (bfloat16_t x)
       
      METAL_FUNC bfloat16_t asinh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t atan (bfloat16_t y_over_x)
       
      METAL_FUNC bfloat16_t atan2 (bfloat16_t y, bfloat16_t x)
       
      METAL_FUNC bfloat16_t atanh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t ceil (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cos (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cosh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cospi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t divide (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t exp (bfloat16_t x)
       
      METAL_FUNC bfloat16_t exp10 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t exp2 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fabs (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fdim (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t floor (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fma (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmax (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fmax3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmedian3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmin (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fmin3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmod (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fract (bfloat16_t x)
       
      METAL_FUNC bfloat16_t frexp (bfloat16_t x, thread int &exp)
       
      METAL_FUNC bfloat16_t ldexp (bfloat16_t x, int k)
       
      METAL_FUNC bfloat16_t log (bfloat16_t x)
       
      METAL_FUNC bfloat16_t log10 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t log2 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t max (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t max3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t median3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t min (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t min3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t nextafter (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t pow (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t powr (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t rint (bfloat16_t x)
       
      METAL_FUNC bfloat16_t round (bfloat16_t x)
       
      METAL_FUNC bfloat16_t rsqrt (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sin (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sinh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sinpi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sqrt (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tan (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tanh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tanpi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t trunc (bfloat16_t x)
       
      METAL_FUNC bfloat16_t simd_broadcast (bfloat16_t data, ushort broadcast_lane_id)
       
      METAL_FUNC bfloat16_t simd_shuffle (bfloat16_t data, ushort simd_lane_id)
       
      METAL_FUNC bfloat16_t simd_shuffle_and_fill_down (bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)
       
      METAL_FUNC bfloat16_t simd_shuffle_and_fill_down (bfloat16_t data, bfloat16_t filling_data, ushort delta)
       
      METAL_FUNC bfloat16_t simd_shuffle_and_fill_up (bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)
       
      METAL_FUNC bfloat16_t simd_shuffle_and_fill_up (bfloat16_t data, bfloat16_t filling_data, ushort delta)
       
      METAL_FUNC bfloat16_t simd_shuffle_down (bfloat16_t data, ushort delta)
       
      METAL_FUNC bfloat16_t simd_shuffle_rotate_down (bfloat16_t data, ushort delta)
       
      METAL_FUNC bfloat16_t simd_shuffle_rotate_up (bfloat16_t data, ushort delta)
       
      METAL_FUNC bfloat16_t simd_shuffle_up (bfloat16_t data, ushort delta)
       
      METAL_FUNC bfloat16_t simd_shuffle_xor (bfloat16_t data, ushort mask)
       
      METAL_FUNC bfloat16_t simd_max (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_min (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_prefix_exclusive_product (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_prefix_exclusive_sum (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_prefix_inclusive_product (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_prefix_inclusive_sum (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_product (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_sum (bfloat16_t data)
       
      METAL_FUNC bfloat16_t simd_xor (bfloat16_t data)
       
      -

      Function Documentation

      - -

      ◆ abs()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::abs (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ acos()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::acos (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ acosh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::acosh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ asin()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::asin (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ asinh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::asinh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ atan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::atan (bfloat16_t y_over_x)
      -
      - -
      -
      - -

      ◆ atan2()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::atan2 (bfloat16_t y,
      bfloat16_t x )
      -
      - -
      -
      - -

      ◆ atanh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::atanh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ ceil()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::ceil (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cos()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::cos (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cosh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::cosh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cospi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::cospi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ divide()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::divide (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ exp()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::exp (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ exp10()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::exp10 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ exp2()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::exp2 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fabs()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fabs (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fdim()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fdim (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ floor()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::floor (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fma()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fma (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmax()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fmax (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fmax3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fmax3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmedian3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fmedian3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmin()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fmin (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fmin3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fmin3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmod()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fmod (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fract()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fract (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ frexp()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::frexp (bfloat16_t x,
      thread int & exp )
      -
      - -
      -
      - -

      ◆ isnan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bool metal::isnan (_MLX_BFloat16 x)
      -
      - -
      -
      - -

      ◆ ldexp()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::ldexp (bfloat16_t x,
      int k )
      -
      - -
      -
      - -

      ◆ log()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::log (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ log10()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::log10 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ log2()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::log2 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ max()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::max (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ max3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::max3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ median3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::median3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ min()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::min (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ min3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::min3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ nextafter()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::nextafter (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ pow()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::pow (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ powr()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::powr (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ rint()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::rint (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ round()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::round (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ rsqrt()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::rsqrt (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ simd_broadcast()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_broadcast (bfloat16_t data,
      ushort broadcast_lane_id )
      -
      - -
      -
      - -

      ◆ simd_max()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_max (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_min()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_min (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_prefix_exclusive_product()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_prefix_exclusive_product (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_prefix_exclusive_sum()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_prefix_exclusive_sum (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_prefix_inclusive_product()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_prefix_inclusive_product (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_prefix_inclusive_sum()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_prefix_inclusive_sum (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_product()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_product (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_shuffle()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle (bfloat16_t data,
      ushort simd_lane_id )
      -
      - -
      -
      - -

      ◆ simd_shuffle_and_fill_down() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_down (bfloat16_t data,
      bfloat16_t filling_data,
      ushort delta )
      -
      - -
      -
      - -

      ◆ simd_shuffle_and_fill_down() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_down (bfloat16_t data,
      bfloat16_t filling_data,
      ushort delta,
      ushort modulo )
      -
      - -
      -
      - -

      ◆ simd_shuffle_and_fill_up() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_up (bfloat16_t data,
      bfloat16_t filling_data,
      ushort delta )
      -
      - -
      -
      - -

      ◆ simd_shuffle_and_fill_up() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_and_fill_up (bfloat16_t data,
      bfloat16_t filling_data,
      ushort delta,
      ushort modulo )
      -
      - -
      -
      - -

      ◆ simd_shuffle_down()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_down (bfloat16_t data,
      ushort delta )
      -
      - -
      -
      - -

      ◆ simd_shuffle_rotate_down()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_rotate_down (bfloat16_t data,
      ushort delta )
      -
      - -
      -
      - -

      ◆ simd_shuffle_rotate_up()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_rotate_up (bfloat16_t data,
      ushort delta )
      -
      - -
      -
      - -

      ◆ simd_shuffle_up()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_up (bfloat16_t data,
      ushort delta )
      -
      - -
      -
      - -

      ◆ simd_shuffle_xor()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_shuffle_xor (bfloat16_t data,
      ushort mask )
      -
      - -
      -
      - -

      ◆ simd_sum()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_sum (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ simd_xor()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::simd_xor (bfloat16_t data)
      -
      - -
      -
      - -

      ◆ sin()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::sin (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sinh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::sinh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sinpi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::sinpi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sqrt()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::sqrt (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::tan (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tanh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::tanh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tanpi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::tanpi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ trunc()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::trunc (bfloat16_t x)
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemetal_1_1fast.html b/docs/build/html/namespacemetal_1_1fast.html deleted file mode 100644 index 94b70a7f..00000000 --- a/docs/build/html/namespacemetal_1_1fast.html +++ /dev/null @@ -1,1178 +0,0 @@ - - - - - - - -MLX: metal::fast Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      metal::fast Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      METAL_FUNC bfloat16_t abs (bfloat16_t x)
       
      METAL_FUNC bfloat16_t acos (bfloat16_t x)
       
      METAL_FUNC bfloat16_t acosh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t asin (bfloat16_t x)
       
      METAL_FUNC bfloat16_t asinh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t atan (bfloat16_t y_over_x)
       
      METAL_FUNC bfloat16_t atan2 (bfloat16_t y, bfloat16_t x)
       
      METAL_FUNC bfloat16_t atanh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t ceil (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cos (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cosh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cospi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t divide (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t exp (bfloat16_t x)
       
      METAL_FUNC bfloat16_t exp10 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t exp2 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fabs (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fdim (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t floor (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fma (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmax (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fmax3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmedian3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmin (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fmin3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmod (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fract (bfloat16_t x)
       
      METAL_FUNC bfloat16_t frexp (bfloat16_t x, thread int &exp)
       
      METAL_FUNC bfloat16_t ldexp (bfloat16_t x, int k)
       
      METAL_FUNC bfloat16_t log (bfloat16_t x)
       
      METAL_FUNC bfloat16_t log10 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t log2 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t max (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t max3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t median3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t min (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t min3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t nextafter (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t pow (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t powr (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t rint (bfloat16_t x)
       
      METAL_FUNC bfloat16_t round (bfloat16_t x)
       
      METAL_FUNC bfloat16_t rsqrt (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sin (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sinh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sinpi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sqrt (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tan (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tanh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tanpi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t trunc (bfloat16_t x)
       
      -

      Function Documentation

      - -

      ◆ abs()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::abs (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ acos()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::acos (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ acosh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::acosh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ asin()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::asin (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ asinh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::asinh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ atan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::atan (bfloat16_t y_over_x)
      -
      - -
      -
      - -

      ◆ atan2()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::atan2 (bfloat16_t y,
      bfloat16_t x )
      -
      - -
      -
      - -

      ◆ atanh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::atanh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ ceil()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::ceil (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cos()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::cos (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cosh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::cosh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cospi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::cospi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ divide()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::divide (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ exp()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::exp (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ exp10()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::exp10 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ exp2()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::exp2 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fabs()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fabs (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fdim()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fdim (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ floor()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::floor (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fma()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fma (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmax()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fmax (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fmax3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fmax3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmedian3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fmedian3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmin()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fmin (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fmin3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fmin3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmod()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fmod (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fract()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::fract (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ frexp()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::frexp (bfloat16_t x,
      thread int & exp )
      -
      - -
      -
      - -

      ◆ ldexp()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::ldexp (bfloat16_t x,
      int k )
      -
      - -
      -
      - -

      ◆ log()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::log (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ log10()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::log10 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ log2()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::log2 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ max()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::max (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ max3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::max3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ median3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::median3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ min()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::min (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ min3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::min3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ nextafter()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::nextafter (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ pow()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::pow (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ powr()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::powr (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ rint()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::rint (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ round()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::round (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ rsqrt()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::rsqrt (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sin()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::sin (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sinh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::sinh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sinpi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::sinpi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sqrt()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::sqrt (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::tan (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tanh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::tanh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tanpi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::tanpi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ trunc()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::fast::trunc (bfloat16_t x)
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemetal_1_1precise.html b/docs/build/html/namespacemetal_1_1precise.html deleted file mode 100644 index 9af2b69f..00000000 --- a/docs/build/html/namespacemetal_1_1precise.html +++ /dev/null @@ -1,1178 +0,0 @@ - - - - - - - -MLX: metal::precise Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      metal::precise Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      METAL_FUNC bfloat16_t abs (bfloat16_t x)
       
      METAL_FUNC bfloat16_t acos (bfloat16_t x)
       
      METAL_FUNC bfloat16_t acosh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t asin (bfloat16_t x)
       
      METAL_FUNC bfloat16_t asinh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t atan (bfloat16_t y_over_x)
       
      METAL_FUNC bfloat16_t atan2 (bfloat16_t y, bfloat16_t x)
       
      METAL_FUNC bfloat16_t atanh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t ceil (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cos (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cosh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t cospi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t divide (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t exp (bfloat16_t x)
       
      METAL_FUNC bfloat16_t exp10 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t exp2 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fabs (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fdim (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t floor (bfloat16_t x)
       
      METAL_FUNC bfloat16_t fma (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmax (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fmax3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmedian3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmin (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fmin3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t fmod (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t fract (bfloat16_t x)
       
      METAL_FUNC bfloat16_t frexp (bfloat16_t x, thread int &exp)
       
      METAL_FUNC bfloat16_t ldexp (bfloat16_t x, int k)
       
      METAL_FUNC bfloat16_t log (bfloat16_t x)
       
      METAL_FUNC bfloat16_t log10 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t log2 (bfloat16_t x)
       
      METAL_FUNC bfloat16_t max (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t max3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t median3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t min (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t min3 (bfloat16_t x, bfloat16_t y, bfloat16_t z)
       
      METAL_FUNC bfloat16_t nextafter (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t pow (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t powr (bfloat16_t x, bfloat16_t y)
       
      METAL_FUNC bfloat16_t rint (bfloat16_t x)
       
      METAL_FUNC bfloat16_t round (bfloat16_t x)
       
      METAL_FUNC bfloat16_t rsqrt (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sin (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sinh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sinpi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t sqrt (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tan (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tanh (bfloat16_t x)
       
      METAL_FUNC bfloat16_t tanpi (bfloat16_t x)
       
      METAL_FUNC bfloat16_t trunc (bfloat16_t x)
       
      -

      Function Documentation

      - -

      ◆ abs()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::abs (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ acos()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::acos (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ acosh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::acosh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ asin()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::asin (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ asinh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::asinh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ atan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::atan (bfloat16_t y_over_x)
      -
      - -
      -
      - -

      ◆ atan2()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::atan2 (bfloat16_t y,
      bfloat16_t x )
      -
      - -
      -
      - -

      ◆ atanh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::atanh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ ceil()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::ceil (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cos()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::cos (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cosh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::cosh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ cospi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::cospi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ divide()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::divide (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ exp()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::exp (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ exp10()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::exp10 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ exp2()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::exp2 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fabs()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fabs (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fdim()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fdim (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ floor()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::floor (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ fma()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fma (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmax()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fmax (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fmax3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fmax3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmedian3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fmedian3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmin()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fmin (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fmin3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fmin3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ fmod()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fmod (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ fract()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::fract (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ frexp()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::frexp (bfloat16_t x,
      thread int & exp )
      -
      - -
      -
      - -

      ◆ ldexp()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::ldexp (bfloat16_t x,
      int k )
      -
      - -
      -
      - -

      ◆ log()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::log (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ log10()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::log10 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ log2()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::log2 (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ max()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::max (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ max3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::max3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ median3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::median3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ min()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::min (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ min3()

      - -
      -
      - - - - - - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::min3 (bfloat16_t x,
      bfloat16_t y,
      bfloat16_t z )
      -
      - -
      -
      - -

      ◆ nextafter()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::nextafter (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ pow()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::pow (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ powr()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::powr (bfloat16_t x,
      bfloat16_t y )
      -
      - -
      -
      - -

      ◆ rint()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::rint (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ round()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::round (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ rsqrt()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::rsqrt (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sin()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::sin (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sinh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::sinh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sinpi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::sinpi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ sqrt()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::sqrt (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tan()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::tan (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tanh()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::tanh (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ tanpi()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::tanpi (bfloat16_t x)
      -
      - -
      -
      - -

      ◆ trunc()

      - -
      -
      - - - - - - - -
      METAL_FUNC bfloat16_t metal::precise::trunc (bfloat16_t x)
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx.html b/docs/build/html/namespacemlx.html deleted file mode 100644 index 85a217ef..00000000 --- a/docs/build/html/namespacemlx.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: mlx Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      mlx Namespace Reference
      -
      -
      - - - - - - -

      -Namespaces

      namespace  core
       
      namespace  steel
       
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core.html b/docs/build/html/namespacemlx_1_1core.html deleted file mode 100644 index 577efbc3..00000000 --- a/docs/build/html/namespacemlx_1_1core.html +++ /dev/null @@ -1,18678 +0,0 @@ - - - - - - - -MLX: mlx::core Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - -

      -Namespaces

      namespace  allocator
       
      namespace  detail
       
      namespace  distributed
       
      namespace  fast
       
      namespace  fft
       
      namespace  io
       
      namespace  linalg
       
      namespace  metal
       
      namespace  random
       
      namespace  scheduler
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      struct  _MLX_BFloat16
       
      struct  _MLX_Float16
       
      class  Abs
       
      class  Add
       
      class  AddMM
       
      class  Arange
       
      class  ArcCos
       
      class  ArcCosh
       
      class  ArcSin
       
      class  ArcSinh
       
      class  ArcTan
       
      class  ArcTan2
       
      class  ArcTanh
       
      class  ArgPartition
       
      class  ArgReduce
       
      class  ArgSort
       
      class  array
       
      class  AsStrided
       
      class  AsType
       
      class  BitwiseBinary
       
      class  BlockMaskedMM
       
      class  Broadcast
       
      class  Ceil
       
      class  Cholesky
       
      class  Compiled
       
      struct  complex128_t
       
      struct  complex64_t
       
      class  Concatenate
       
      class  Conjugate
       
      class  Convolution
       
      class  Copy
       
      class  Cos
       
      class  Cosh
       
      class  CustomTransforms
       
      struct  DefaultContiguousReduce
       
      struct  DefaultStridedReduce
       
      class  Depends
       
      struct  Device
       
      class  Divide
       
      class  DivMod
       
      struct  Dtype
       
      class  Equal
       
      class  Erf
       
      class  ErfInv
       
      class  Event
       
      class  Exp
       
      class  Expm1
       
      class  FFT
       
      class  Floor
       
      class  Full
       
      class  Gather
       
      class  GatherMM
       
      class  GatherQMM
       
      class  Greater
       
      class  GreaterEqual
       
      class  Hadamard
       
      class  Inverse
       
      class  Less
       
      class  LessEqual
       
      class  Load
       
      class  Log
       
      class  Log1p
       
      class  LogAddExp
       
      class  LogicalAnd
       
      class  LogicalNot
       
      class  LogicalOr
       
      class  Matmul
       
      class  Maximum
       
      class  Minimum
       
      class  Multiply
       
      class  Negative
       
      struct  NodeNamer
       
      class  NotEqual
       
      class  NumberOfElements
       
      class  Pad
       
      class  Partition
       
      class  Power
       
      class  Primitive
       
      struct  PrintFormatter
       
      class  QRF
       
      class  QuantizedMatmul
       
      class  RandomBits
       
      class  Reduce
       
      struct  ReductionPlan
       
      class  Remainder
       
      class  Reshape
       
      class  Round
       
      class  Scan
       
      class  Scatter
       
      class  Select
       
      class  Sigmoid
       
      class  Sign
       
      class  Sin
       
      class  Sinh
       
      class  Slice
       
      class  SliceUpdate
       
      class  Softmax
       
      class  Sort
       
      class  Split
       
      class  Sqrt
       
      class  Square
       
      class  StopGradient
       
      struct  Stream
       
      struct  StreamContext
       
      class  Subtract
       
      class  SVD
       
      class  Tan
       
      class  Tanh
       
      class  Transpose
       
      struct  TypeToDtype
       
      class  UnaryPrimitive
       
      class  Uniform
       
      class  View
       
      - - - - - - - - - - - - - - - - - - - - - - -

      -Typedefs

      using deleter_t = std::function<void(allocator::Buffer)>
       
      template<typename... T>
      using enable_for_arrays_t = typename std::enable_if_t<is_arrays_v<T...>>
       
      using GGUFMetaData
       
      using GGUFLoad
       
      using SafetensorsLoad
       
      using ValueAndGradFn
       
      using SimpleValueAndGradFn
       
      typedef struct _MLX_Float16 float16_t
       
      typedef struct _MLX_BFloat16 bfloat16_t
       
      using StreamOrDevice = std::variant<std::monostate, Stream, Device>
       
      - - - - - - - -

      -Enumerations

      enum class  CopyType { Scalar -, Vector -, General -, GeneralGeneral - }
       
      enum  ReductionOpType {
      -  ContiguousAllReduce -, ContiguousReduce -, ContiguousStridedReduce -, GeneralContiguousReduce -,
      -  GeneralStridedReduce -, GeneralReduce -
      - }
       
      enum class  CompileMode { disabled -, no_simplify -, no_fuse -, enabled - }
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      BNNSDataType to_bnns_dtype (Dtype mlx_dtype)
       
      void arange (const std::vector< array > &inputs, array &out, double start, double step)
       
      bool is_static_cast (const Primitive &p)
       
      std::string build_lib_name (const std::vector< array > &inputs, const std::vector< array > &outputs, const std::vector< array > &tape, const std::unordered_set< uintptr_t > &constant_ids)
       
      std::string get_type_string (Dtype d)
       
      template<typename T >
      void print_float_constant (std::ostream &os, const array &x)
       
      template<typename T >
      void print_int_constant (std::ostream &os, const array &x)
       
      template<typename T >
      void print_complex_constant (std::ostream &os, const array &x)
       
      void print_constant (std::ostream &os, const array &x)
       
      bool is_scalar (const array &x)
       
      bool compiled_check_contiguity (const std::vector< array > &inputs, const std::vector< int > &shape)
       
      void compiled_allocate_outputs (const std::vector< array > &inputs, std::vector< array > &outputs, const std::vector< array > &inputs_, const std::unordered_set< uintptr_t > &constant_ids_, bool contiguous, bool move_buffers=false)
       
      void copy (const array &src, array &dst, CopyType ctype)
       
      void copy_inplace (const array &src, array &dst, CopyType ctype)
       
      template<typename stride_t >
      void copy_inplace (const array &src, array &dst, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype)
       
      const std::map< int, std::string_view > hadamard_matrices ()
       
      std::pair< int, int > decompose_hadamard (int n)
       
      void load (array &out, size_t offset, const std::shared_ptr< io::Reader > &reader, bool swap_endianess)
       
      ReductionPlan get_reduction_plan (const array &x, const std::vector< int > &axes)
       
      void nd_loop (std::function< void(int)> callback, const std::vector< int > &shape, const std::vector< size_t > &strides)
       
      std::pair< std::vector< int >, std::vector< size_t > > shapes_without_reduction_axes (const array &x, const std::vector< int > &axes)
       
      template<typename T , typename U , typename OpS , typename OpC , typename Op >
      void reduction_op (const array &x, array &out, const std::vector< int > &axes, U init, OpS ops, OpC opc, Op op)
       
      template<typename T , typename U , typename Op >
      void reduction_op (const array &x, array &out, const std::vector< int > &axes, U init, Op op)
       
      std::tuple< bool, int64_t, std::vector< int64_t > > prepare_slice (const array &in, const std::vector< int > &start_indices, const std::vector< int > &strides)
       
      void shared_buffer_slice (const array &in, const std::vector< size_t > &out_strides, size_t data_offset, size_t data_size, array &out)
       
      template<typename stride_t >
      stride_t elem_to_loc (int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
       
      size_t elem_to_loc (int elem, const array &a)
       
      template<typename stride_t >
      std::vector< stride_t > make_contiguous_strides (const std::vector< int > &shape)
       
      template<typename stride_t >
      std::tuple< std::vector< int >, std::vector< std::vector< stride_t > > > collapse_contiguous_dims (const std::vector< int > &shape, const std::vector< std::vector< stride_t > > strides)
       
      std::tuple< std::vector< int >, std::vector< std::vector< size_t > > > collapse_contiguous_dims (const std::vector< array > &xs)
       
      template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      auto collapse_contiguous_dims (Arrays &&... xs)
       
      std::tuple< std::vector< int >, std::vector< size_t > > collapse_contiguous_dims (const std::vector< int > &shape, const std::vector< size_t > &strides)
       
      template<typename stride_t >
      auto check_contiguity (const std::vector< int > &shape, const std::vector< stride_t > &strides)
       
      bool is_donatable (const array &in, const array &out)
       
      void binary_op_gpu (const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)
       
      void binary_op_gpu (const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)
       
      void binary_op_gpu_inplace (const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)
       
      void binary_op_gpu_inplace (const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)
       
      template<typename stride_t >
      void copy_gpu_inplace (const array &in, array &out, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype, const Stream &s)
       
      void copy_gpu (const array &src, array &out, CopyType ctype, const Stream &s)
       
      void copy_gpu (const array &src, array &out, CopyType ctype)
       
      void copy_gpu_inplace (const array &src, array &out, CopyType ctype, const Stream &s)
       
      void copy_gpu_inplace (const array &in, array &out, const std::vector< int64_t > &istride, int64_t ioffset, CopyType ctype, const Stream &s)
       
      void fill_gpu (const array &val, array &out, const Stream &s)
       
      MTL::ComputePipelineState * get_arange_kernel (metal::Device &d, const std::string &kernel_name, const array &out)
       
      MTL::ComputePipelineState * get_unary_kernel (metal::Device &d, const std::string &kernel_name, Dtype out_type, const std::string op)
       
      MTL::ComputePipelineState * get_binary_kernel (metal::Device &d, const std::string &kernel_name, Dtype in_type, Dtype out_type, const std::string op)
       
      MTL::ComputePipelineState * get_binary_two_kernel (metal::Device &d, const std::string &kernel_name, Dtype in_type, Dtype out_type, const std::string op)
       
      MTL::ComputePipelineState * get_ternary_kernel (metal::Device &d, const std::string &kernel_name, Dtype type, const std::string op)
       
      MTL::ComputePipelineState * get_copy_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out)
       
      MTL::ComputePipelineState * get_softmax_kernel (metal::Device &d, const std::string &kernel_name, bool precise, const array &out)
       
      MTL::ComputePipelineState * get_scan_kernel (metal::Device &d, const std::string &kernel_name, bool reverse, bool inclusive, const std::string &reduce_type, const array &in, const array &out)
       
      MTL::ComputePipelineState * get_sort_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out, int bn, int tn)
       
      MTL::ComputePipelineState * get_mb_sort_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &idx, int bn, int tn)
       
      MTL::ComputePipelineState * get_reduce_init_kernel (metal::Device &d, const std::string &kernel_name, const array &out)
       
      MTL::ComputePipelineState * get_reduce_kernel (metal::Device &d, const std::string &kernel_name, const std::string &func_name, const std::string &op_name, const array &in, const array &out, int ndim=-1, int bm=-1, int bn=-1)
       
      MTL::ComputePipelineState * get_steel_gemm_fused_kernel (metal::Device &d, const std::string &kernel_name, const std::string &hash_name, const metal::MTLFCList &func_consts, const array &out, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn)
       
      MTL::ComputePipelineState * get_steel_gemm_splitk_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn, bool mn_aligned, bool k_aligned)
       
      MTL::ComputePipelineState * get_steel_gemm_splitk_accum_kernel (metal::Device &d, const std::string &kernel_name, const array &in, const array &out, bool axbpy)
       
      MTL::ComputePipelineState * get_steel_gemm_masked_kernel (metal::Device &d, const std::string &kernel_name, const array &out, const std::optional< array > &mask_out, const std::optional< array > &mask_op, bool transpose_a, bool transpose_b, int bm, int bn, int bk, int wm, int wn, bool mn_aligned, bool k_aligned)
       
      MTL::ComputePipelineState * get_steel_conv_kernel (metal::Device &d, const std::string &kernel_name, const array &out, int bm, int bn, int bk, int wm, int wn, int n_channel_specialization, bool small_filter)
       
      MTL::ComputePipelineState * get_gemv_masked_kernel (metal::Device &d, const std::string &kernel_name, const array &out, const std::optional< array > &mask_out, const std::optional< array > &mask_op, bool transpose_mat, int bm, int bn, int sm, int sn, int tm, int tn, bool contiguous)
       
      MTL::ComputePipelineState * get_steel_conv_general_kernel (metal::Device &d, const std::string &kernel_name, const array &out, int bm, int bn, int bk, int wm, int wn)
       
      MTL::ComputePipelineState * get_fft_kernel (metal::Device &d, const std::string &kernel_name, const std::string &hash_name, const metal::MTLFCList &func_consts, const std::string &template_def)
       
      MTL::ComputePipelineState * get_quantized_kernel (metal::Device &d, const std::string &kernel_name, const std::string &template_def)
       
      template<typename... Args>
      std::string get_template_definition (std::string name, std::string func, Args... args)
       
      void steel_matmul_conv_groups (const Stream &s, metal::Device &d, const array &a, const array &b, array &out, int M, int N, int K, int lda, int ldb, int ldd, bool transpose_a, bool transpose_b, int groups, std::vector< array > &copies)
       
      void steel_matmul (const Stream &s, metal::Device &d, const array &a, const array &b, array &out, int M, int N, int K, int batch_size_out, int lda, int ldb, bool transpose_a, bool transpose_b, std::vector< array > &copies, std::vector< int > batch_shape={}, std::vector< size_t > A_batch_stride={}, std::vector< size_t > B_batch_stride={})
       
      void all_reduce_dispatch (const array &in, array &out, const std::string &op_name, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s, std::vector< array > &copies)
       
      void row_reduce_general_dispatch (const array &in, array &out, const std::string &op_name, const ReductionPlan &plan, const std::vector< int > &axes, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s)
       
      void strided_reduce_general_dispatch (const array &in, array &out, const std::string &op_name, const ReductionPlan &plan, const std::vector< int > &axes, CommandEncoder &compute_encoder, metal::Device &d, const Stream &s)
       
      void slice_gpu (const array &in, array &out, const std::vector< int > &start_indices, const std::vector< int > &strides, const Stream &s)
       
      void concatenate_gpu (const std::vector< array > &inputs, array &out, int axis, const Stream &s)
       
      void pad_gpu (const array &in, const array &val, array &out, std::vector< int > axes, std::vector< int > low_pad_size, const Stream &s)
       
      void ternary_op_gpu (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      void ternary_op_gpu_inplace (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      void unary_op_gpu (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      void unary_op_gpu_inplace (const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)
       
      template<typename T >
      void set_vector_bytes (CommandEncoder &enc, const std::vector< T > &vec, size_t nelems, int idx)
       
      template<typename T >
      void set_vector_bytes (CommandEncoder &enc, const std::vector< T > &vec, int idx)
       
      std::string type_to_name (const array &a)
       
      MTL::Size get_block_dims (int dim0, int dim1, int dim2)
       
      MTL::Size get_2d_grid_dims (const std::vector< int > &shape, const std::vector< size_t > &strides)
       
      NS::String * make_string (std::ostringstream &os)
       
      void debug_set_stream_queue_label (MTL::CommandQueue *queue, int index)
       
      void debug_set_primitive_buffer_label (MTL::CommandBuffer *command_buffer, Primitive &primitive)
       
      std::string get_primitive_string (Primitive *primitive)
       
      void disable_compile ()
       Globally disable compilation.
       
      void enable_compile ()
       Globally enable compilation.
       
      void set_compile_mode (CompileMode mode)
       Set the compiler mode to the given value.
       
      const Devicedefault_device ()
       
      void set_default_device (const Device &d)
       
      bool operator== (const Device &lhs, const Device &rhs)
       
      bool operator!= (const Device &lhs, const Device &rhs)
       
      bool issubdtype (const Dtype &a, const Dtype &b)
       
      bool issubdtype (const Dtype::Category &a, const Dtype &b)
       
      bool issubdtype (const Dtype &a, const Dtype::Category &b)
       
      bool issubdtype (const Dtype::Category &a, const Dtype::Category &b)
       
      Dtype promote_types (const Dtype &t1, const Dtype &t2)
       
      uint8_t size_of (const Dtype &t)
       
      Dtype::Kind kindof (const Dtype &t)
       
      std::pair< std::vector< std::vector< int > >, std::string > einsum_path (const std::string &subscripts, const std::vector< array > &operands)
       
      array einsum (const std::string &subscripts, const std::vector< array > &operands, StreamOrDevice s={})
       
      void print_graph (std::ostream &os, const std::vector< array > &outputs)
       
      template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      void print_graph (std::ostream &os, Arrays &&... outputs)
       
      void export_to_dot (std::ostream &os, const std::vector< array > &outputs)
       
      template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      void export_to_dot (std::ostream &os, Arrays &&... outputs)
       
      void save (std::shared_ptr< io::Writer > out_stream, array a)
       Save array to out stream in .npy format.
       
      void save (std::string file, array a)
       Save array to file in .npy format.
       
      array load (std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})
       Load array from reader in .npy format.
       
      array load (std::string file, StreamOrDevice s={})
       Load array from file in .npy format.
       
      SafetensorsLoad load_safetensors (std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})
       Load array map from .safetensors file format.
       
      SafetensorsLoad load_safetensors (const std::string &file, StreamOrDevice s={})
       
      void save_safetensors (std::shared_ptr< io::Writer > in_stream, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})
       
      void save_safetensors (std::string file, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})
       
      GGUFLoad load_gguf (const std::string &file, StreamOrDevice s={})
       Load array map and metadata from .gguf file format.
       
      void save_gguf (std::string file, std::unordered_map< std::string, array > array_map, std::unordered_map< std::string, GGUFMetaData > meta_data={})
       
      std::vector< int > get_shape (const gguf_tensor &tensor)
       
      void gguf_load_quantized (std::unordered_map< std::string, array > &a, const gguf_tensor &tensor)
       
      array arange (double start, double stop, double step, Dtype dtype, StreamOrDevice s={})
       A 1D array of numbers starting at start (optional), stopping at stop, stepping by step (optional).
       
      array arange (double start, double stop, double step, StreamOrDevice s={})
       
      array arange (double start, double stop, Dtype dtype, StreamOrDevice s={})
       
      array arange (double start, double stop, StreamOrDevice s={})
       
      array arange (double stop, Dtype dtype, StreamOrDevice s={})
       
      array arange (double stop, StreamOrDevice s={})
       
      array arange (int start, int stop, int step, StreamOrDevice s={})
       
      array arange (int start, int stop, StreamOrDevice s={})
       
      array arange (int stop, StreamOrDevice s={})
       
      array linspace (double start, double stop, int num=50, Dtype dtype=float32, StreamOrDevice s={})
       A 1D array of num evenly spaced numbers in the range [start, stop]
       
      array astype (array a, Dtype dtype, StreamOrDevice s={})
       Convert an array to the given data type.
       
      array as_strided (array a, std::vector< int > shape, std::vector< size_t > strides, size_t offset, StreamOrDevice s={})
       Create a view of an array with the given shape and strides.
       
      array copy (array a, StreamOrDevice s={})
       Copy another array.
       
      array full (std::vector< int > shape, array vals, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape with the given value(s).
       
      array full (std::vector< int > shape, array vals, StreamOrDevice s={})
       
      template<typename T >
      array full (std::vector< int > shape, T val, Dtype dtype, StreamOrDevice s={})
       
      template<typename T >
      array full (std::vector< int > shape, T val, StreamOrDevice s={})
       
      array zeros (const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape with zeros.
       
      array zeros (const std::vector< int > &shape, StreamOrDevice s={})
       
      array zeros_like (const array &a, StreamOrDevice s={})
       
      array ones (const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape with ones.
       
      array ones (const std::vector< int > &shape, StreamOrDevice s={})
       
      array ones_like (const array &a, StreamOrDevice s={})
       
      array eye (int n, int m, int k, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape (n,m) with ones in the specified diagonal k, and zeros everywhere else.
       
      array eye (int n, Dtype dtype, StreamOrDevice s={})
       
      array eye (int n, int m, StreamOrDevice s={})
       
      array eye (int n, int m, int k, StreamOrDevice s={})
       
      array eye (int n, StreamOrDevice s={})
       
      array identity (int n, Dtype dtype, StreamOrDevice s={})
       Create a square matrix of shape (n,n) of zeros, and ones in the major diagonal.
       
      array identity (int n, StreamOrDevice s={})
       
      array tri (int n, int m, int k, Dtype type, StreamOrDevice s={})
       
      array tri (int n, Dtype type, StreamOrDevice s={})
       
      array tril (array x, int k=0, StreamOrDevice s={})
       
      array triu (array x, int k=0, StreamOrDevice s={})
       
      array reshape (const array &a, std::vector< int > shape, StreamOrDevice s={})
       Reshape an array to the given shape.
       
      array flatten (const array &a, int start_axis, int end_axis=-1, StreamOrDevice s={})
       Flatten the dimensions in the range [start_axis, end_axis] .
       
      array flatten (const array &a, StreamOrDevice s={})
       Flatten the array to 1D.
       
      array hadamard_transform (const array &a, std::optional< float > scale=std::nullopt, StreamOrDevice s={})
       Multiply the array by the Hadamard matrix of corresponding size.
       
      array squeeze (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       Remove singleton dimensions at the given axes.
       
      array squeeze (const array &a, int axis, StreamOrDevice s={})
       Remove singleton dimensions at the given axis.
       
      array squeeze (const array &a, StreamOrDevice s={})
       Remove all singleton dimensions.
       
      array expand_dims (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       Add a singleton dimension at the given axes.
       
      array expand_dims (const array &a, int axis, StreamOrDevice s={})
       Add a singleton dimension at the given axis.
       
      array slice (const array &a, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})
       Slice an array.
       
      array slice (const array &a, const std::vector< int > &start, const std::vector< int > &stop, StreamOrDevice s={})
       Slice an array with a stride of 1 in each dimension.
       
      array slice_update (const array &src, const array &update, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})
       Update a slice from the source array.
       
      array slice_update (const array &src, const array &update, std::vector< int > start, std::vector< int > stop, StreamOrDevice s={})
       Update a slice from the source array with stride 1 in each dimension.
       
      std::vector< arraysplit (const array &a, int num_splits, int axis, StreamOrDevice s={})
       Split an array into sub-arrays along a given axis.
       
      std::vector< arraysplit (const array &a, int num_splits, StreamOrDevice s={})
       
      std::vector< arraysplit (const array &a, const std::vector< int > &indices, int axis, StreamOrDevice s={})
       
      std::vector< arraysplit (const array &a, const std::vector< int > &indices, StreamOrDevice s={})
       
      std::vector< arraymeshgrid (const std::vector< array > &arrays, bool sparse=false, std::string indexing="xy", StreamOrDevice s={})
       A vector of coordinate arrays from coordinate vectors.
       
      array clip (const array &a, const std::optional< array > &a_min=std::nullopt, const std::optional< array > &a_max=std::nullopt, StreamOrDevice s={})
       Clip (limit) the values in an array.
       
      array concatenate (const std::vector< array > &arrays, int axis, StreamOrDevice s={})
       Concatenate arrays along a given axis.
       
      array concatenate (const std::vector< array > &arrays, StreamOrDevice s={})
       
      array stack (const std::vector< array > &arrays, int axis, StreamOrDevice s={})
       Stack arrays along a new axis.
       
      array stack (const std::vector< array > &arrays, StreamOrDevice s={})
       
      array repeat (const array &arr, int repeats, int axis, StreamOrDevice s={})
       Repeat an array along an axis.
       
      array repeat (const array &arr, int repeats, StreamOrDevice s={})
       
      array tile (const array &arr, std::vector< int > reps, StreamOrDevice s={})
       
      array transpose (const array &a, std::vector< int > axes, StreamOrDevice s={})
       Permutes the dimensions according to the given axes.
       
      array transpose (const array &a, std::initializer_list< int > axes, StreamOrDevice s={})
       
      array swapaxes (const array &a, int axis1, int axis2, StreamOrDevice s={})
       Swap two axes of an array.
       
      array moveaxis (const array &a, int source, int destination, StreamOrDevice s={})
       Move an axis of an array.
       
      array pad (const array &a, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       Pad an array with a constant value.
       
      array pad (const array &a, const std::vector< std::pair< int, int > > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       Pad an array with a constant value along all axes.
       
      array pad (const array &a, const std::pair< int, int > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       
      array pad (const array &a, int pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       
      array transpose (const array &a, StreamOrDevice s={})
       Permutes the dimensions in reverse order.
       
      array broadcast_to (const array &a, const std::vector< int > &shape, StreamOrDevice s={})
       Broadcast an array to a given shape.
       
      std::vector< arraybroadcast_arrays (const std::vector< array > &inputs, StreamOrDevice s={})
       Broadcast a vector of arrays against one another.
       
      array equal (const array &a, const array &b, StreamOrDevice s={})
       Returns the bool array with (a == b) element-wise.
       
      array operator== (const array &a, const array &b)
       
      template<typename T >
      array operator== (T a, const array &b)
       
      template<typename T >
      array operator== (const array &a, T b)
       
      array not_equal (const array &a, const array &b, StreamOrDevice s={})
       Returns the bool array with (a != b) element-wise.
       
      array operator!= (const array &a, const array &b)
       
      template<typename T >
      array operator!= (T a, const array &b)
       
      template<typename T >
      array operator!= (const array &a, T b)
       
      array greater (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a > b) element-wise.
       
      array operator> (const array &a, const array &b)
       
      template<typename T >
      array operator> (T a, const array &b)
       
      template<typename T >
      array operator> (const array &a, T b)
       
      array greater_equal (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a >= b) element-wise.
       
      array operator>= (const array &a, const array &b)
       
      template<typename T >
      array operator>= (T a, const array &b)
       
      template<typename T >
      array operator>= (const array &a, T b)
       
      array less (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a < b) element-wise.
       
      array operator< (const array &a, const array &b)
       
      template<typename T >
      array operator< (T a, const array &b)
       
      template<typename T >
      array operator< (const array &a, T b)
       
      array less_equal (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a <= b) element-wise.
       
      array operator<= (const array &a, const array &b)
       
      template<typename T >
      array operator<= (T a, const array &b)
       
      template<typename T >
      array operator<= (const array &a, T b)
       
      array array_equal (const array &a, const array &b, bool equal_nan, StreamOrDevice s={})
       True if two arrays have the same shape and elements.
       
      array array_equal (const array &a, const array &b, StreamOrDevice s={})
       
      array isnan (const array &a, StreamOrDevice s={})
       
      array isinf (const array &a, StreamOrDevice s={})
       
      array isfinite (const array &a, StreamOrDevice s={})
       
      array isposinf (const array &a, StreamOrDevice s={})
       
      array isneginf (const array &a, StreamOrDevice s={})
       
      array where (const array &condition, const array &x, const array &y, StreamOrDevice s={})
       Select from x or y depending on condition.
       
      array nan_to_num (const array &a, float nan=0.0f, const std::optional< float > posinf=std::nullopt, const std::optional< float > neginf=std::nullopt, StreamOrDevice s={})
       Replace NaN and infinities with finite numbers.
       
      array all (const array &a, bool keepdims, StreamOrDevice s={})
       True if all elements in the array are true (or non-zero).
       
      array all (const array &a, StreamOrDevice s={})
       
      array allclose (const array &a, const array &b, double rtol=1e-5, double atol=1e-8, bool equal_nan=false, StreamOrDevice s={})
       True if the two arrays are equal within the specified tolerance.
       
      array isclose (const array &a, const array &b, double rtol=1e-5, double atol=1e-8, bool equal_nan=false, StreamOrDevice s={})
       Returns a boolean array where two arrays are element-wise equal within the specified tolerance.
       
      array all (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axes.
       
      array all (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axis.
       
      array any (const array &a, bool keepdims, StreamOrDevice s={})
       True if any elements in the array are true (or non-zero).
       
      array any (const array &a, StreamOrDevice s={})
       
      array any (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axes.
       
      array any (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axis.
       
      array sum (const array &a, bool keepdims, StreamOrDevice s={})
       Sums the elements of an array.
       
      array sum (const array &a, StreamOrDevice s={})
       
      array sum (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Sums the elements of an array along the given axes.
       
      array sum (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Sums the elements of an array along the given axis.
       
      array mean (const array &a, bool keepdims, StreamOrDevice s={})
       Computes the mean of the elements of an array.
       
      array mean (const array &a, StreamOrDevice s={})
       
      array mean (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Computes the mean of the elements of an array along the given axes.
       
      array mean (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Computes the mean of the elements of an array along the given axis.
       
      array var (const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
       Computes the variance of the elements of an array.
       
      array var (const array &a, StreamOrDevice s={})
       
      array var (const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the variance of the elements of an array along the given axes.
       
      array var (const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the variance of the elements of an array along the given axis.
       
      array std (const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
       Computes the standard deviation of the elements of an array.
       
      array std (const array &a, StreamOrDevice s={})
       
      array std (const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the standard deviatoin of the elements of an array along the given axes.
       
      array std (const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the standard deviation of the elements of an array along the given axis.
       
      array prod (const array &a, bool keepdims, StreamOrDevice s={})
       The product of all elements of the array.
       
      array prod (const array &a, StreamOrDevice s={})
       
      array prod (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The product of the elements of an array along the given axes.
       
      array prod (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The product of the elements of an array along the given axis.
       
      array max (const array &a, bool keepdims, StreamOrDevice s={})
       The maximum of all elements of the array.
       
      array max (const array &a, StreamOrDevice s={})
       
      array max (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The maximum of the elements of an array along the given axes.
       
      array max (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The maximum of the elements of an array along the given axis.
       
      array min (const array &a, bool keepdims, StreamOrDevice s={})
       The minimum of all elements of the array.
       
      array min (const array &a, StreamOrDevice s={})
       
      array min (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The minimum of the elements of an array along the given axes.
       
      array min (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The minimum of the elements of an array along the given axis.
       
      array argmin (const array &a, bool keepdims, StreamOrDevice s={})
       Returns the index of the minimum value in the array.
       
      array argmin (const array &a, StreamOrDevice s={})
       
      array argmin (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Returns the indices of the minimum values along a given axis.
       
      array argmax (const array &a, bool keepdims, StreamOrDevice s={})
       Returns the index of the maximum value in the array.
       
      array argmax (const array &a, StreamOrDevice s={})
       
      array argmax (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Returns the indices of the maximum values along a given axis.
       
      array sort (const array &a, StreamOrDevice s={})
       Returns a sorted copy of the flattened array.
       
      array sort (const array &a, int axis, StreamOrDevice s={})
       Returns a sorted copy of the array along a given axis.
       
      array argsort (const array &a, StreamOrDevice s={})
       Returns indices that sort the flattened array.
       
      array argsort (const array &a, int axis, StreamOrDevice s={})
       Returns indices that sort the array along a given axis.
       
      array partition (const array &a, int kth, StreamOrDevice s={})
       Returns a partitioned copy of the flattened array such that the smaller kth elements are first.
       
      array partition (const array &a, int kth, int axis, StreamOrDevice s={})
       Returns a partitioned copy of the array along a given axis such that the smaller kth elements are first.
       
      array argpartition (const array &a, int kth, StreamOrDevice s={})
       Returns indices that partition the flattened array such that the smaller kth elements are first.
       
      array argpartition (const array &a, int kth, int axis, StreamOrDevice s={})
       Returns indices that partition the array along a given axis such that the smaller kth elements are first.
       
      array topk (const array &a, int k, StreamOrDevice s={})
       Returns topk elements of the flattened array.
       
      array topk (const array &a, int k, int axis, StreamOrDevice s={})
       Returns topk elements of the array along a given axis.
       
      array logsumexp (const array &a, bool keepdims, StreamOrDevice s={})
       The logsumexp of all elements of the array.
       
      array logsumexp (const array &a, StreamOrDevice s={})
       
      array logsumexp (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The logsumexp of the elements of an array along the given axes.
       
      array logsumexp (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The logsumexp of the elements of an array along the given axis.
       
      array abs (const array &a, StreamOrDevice s={})
       Absolute value of elements in an array.
       
      array negative (const array &a, StreamOrDevice s={})
       Negate an array.
       
      array operator- (const array &a)
       
      array sign (const array &a, StreamOrDevice s={})
       The sign of the elements in an array.
       
      array logical_not (const array &a, StreamOrDevice s={})
       Logical not of an array.
       
      array logical_and (const array &a, const array &b, StreamOrDevice s={})
       Logical and of two arrays.
       
      array operator&& (const array &a, const array &b)
       
      array logical_or (const array &a, const array &b, StreamOrDevice s={})
       Logical or of two arrays.
       
      array operator|| (const array &a, const array &b)
       
      array reciprocal (const array &a, StreamOrDevice s={})
       The reciprocal (1/x) of the elements in an array.
       
      array add (const array &a, const array &b, StreamOrDevice s={})
       Add two arrays.
       
      array operator+ (const array &a, const array &b)
       
      template<typename T >
      array operator+ (T a, const array &b)
       
      template<typename T >
      array operator+ (const array &a, T b)
       
      array subtract (const array &a, const array &b, StreamOrDevice s={})
       Subtract two arrays.
       
      array operator- (const array &a, const array &b)
       
      template<typename T >
      array operator- (T a, const array &b)
       
      template<typename T >
      array operator- (const array &a, T b)
       
      array multiply (const array &a, const array &b, StreamOrDevice s={})
       Multiply two arrays.
       
      array operator* (const array &a, const array &b)
       
      template<typename T >
      array operator* (T a, const array &b)
       
      template<typename T >
      array operator* (const array &a, T b)
       
      array divide (const array &a, const array &b, StreamOrDevice s={})
       Divide two arrays.
       
      array operator/ (const array &a, const array &b)
       
      array operator/ (double a, const array &b)
       
      array operator/ (const array &a, double b)
       
      std::vector< arraydivmod (const array &a, const array &b, StreamOrDevice s={})
       Compute the element-wise quotient and remainder.
       
      array floor_divide (const array &a, const array &b, StreamOrDevice s={})
       Compute integer division.
       
      array remainder (const array &a, const array &b, StreamOrDevice s={})
       Compute the element-wise remainder of division.
       
      array operator% (const array &a, const array &b)
       
      template<typename T >
      array operator% (T a, const array &b)
       
      template<typename T >
      array operator% (const array &a, T b)
       
      array maximum (const array &a, const array &b, StreamOrDevice s={})
       Element-wise maximum between two arrays.
       
      array minimum (const array &a, const array &b, StreamOrDevice s={})
       Element-wise minimum between two arrays.
       
      array floor (const array &a, StreamOrDevice s={})
       Floor the element of an array.
       
      array ceil (const array &a, StreamOrDevice s={})
       Ceil the element of an array.
       
      array square (const array &a, StreamOrDevice s={})
       Square the elements of an array.
       
      array exp (const array &a, StreamOrDevice s={})
       Exponential of the elements of an array.
       
      array sin (const array &a, StreamOrDevice s={})
       Sine of the elements of an array.
       
      array cos (const array &a, StreamOrDevice s={})
       Cosine of the elements of an array.
       
      array tan (const array &a, StreamOrDevice s={})
       Tangent of the elements of an array.
       
      array arcsin (const array &a, StreamOrDevice s={})
       Arc Sine of the elements of an array.
       
      array arccos (const array &a, StreamOrDevice s={})
       Arc Cosine of the elements of an array.
       
      array arctan (const array &a, StreamOrDevice s={})
       Arc Tangent of the elements of an array.
       
      array arctan2 (const array &a, const array &b, StreamOrDevice s={})
       Inverse tangent of the ratio of two arrays.
       
      array sinh (const array &a, StreamOrDevice s={})
       Hyperbolic Sine of the elements of an array.
       
      array cosh (const array &a, StreamOrDevice s={})
       Hyperbolic Cosine of the elements of an array.
       
      array tanh (const array &a, StreamOrDevice s={})
       Hyperbolic Tangent of the elements of an array.
       
      array arcsinh (const array &a, StreamOrDevice s={})
       Inverse Hyperbolic Sine of the elements of an array.
       
      array arccosh (const array &a, StreamOrDevice s={})
       Inverse Hyperbolic Cosine of the elements of an array.
       
      array arctanh (const array &a, StreamOrDevice s={})
       Inverse Hyperbolic Tangent of the elements of an array.
       
      array degrees (const array &a, StreamOrDevice s={})
       Convert the elements of an array from Radians to Degrees.
       
      array radians (const array &a, StreamOrDevice s={})
       Convert the elements of an array from Degrees to Radians.
       
      array log (const array &a, StreamOrDevice s={})
       Natural logarithm of the elements of an array.
       
      array log2 (const array &a, StreamOrDevice s={})
       Log base 2 of the elements of an array.
       
      array log10 (const array &a, StreamOrDevice s={})
       Log base 10 of the elements of an array.
       
      array log1p (const array &a, StreamOrDevice s={})
       Natural logarithm of one plus elements in the array: log(1 + a).
       
      array logaddexp (const array &a, const array &b, StreamOrDevice s={})
       Log-add-exp of one elements in the array: log(exp(a) + exp(b)).
       
      array sigmoid (const array &a, StreamOrDevice s={})
       Element-wise logistic sigmoid of the array: 1 / (1 + exp(-x).
       
      array erf (const array &a, StreamOrDevice s={})
       Computes the error function of the elements of an array.
       
      array erfinv (const array &a, StreamOrDevice s={})
       Computes the inverse error function of the elements of an array.
       
      array expm1 (const array &a, StreamOrDevice s={})
       Computes the expm1 function of the elements of an array.
       
      array stop_gradient (const array &a, StreamOrDevice s={})
       Stop the flow of gradients.
       
      array round (const array &a, int decimals, StreamOrDevice s={})
       Round a floating point number.
       
      array round (const array &a, StreamOrDevice s={})
       
      array matmul (const array &a, const array &b, StreamOrDevice s={})
       Matrix-matrix multiplication.
       
      array gather (const array &a, const std::vector< array > &indices, const std::vector< int > &axes, const std::vector< int > &slice_sizes, StreamOrDevice s={})
       Gather array entries given indices and slices.
       
      array gather (const array &a, const array &indices, int axis, const std::vector< int > &slice_sizes, StreamOrDevice s={})
       
      array take (const array &a, const array &indices, int axis, StreamOrDevice s={})
       Take array slices at the given indices of the specified axis.
       
      array take (const array &a, const array &indices, StreamOrDevice s={})
       Take array entries at the given indices treating the array as flattened.
       
      array take_along_axis (const array &a, const array &indices, int axis, StreamOrDevice s={})
       Take array entries given indices along the axis.
       
      array scatter (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter updates to the given indices.
       
      array scatter (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array scatter_add (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and add updates to given indices.
       
      array scatter_add (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array scatter_prod (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and prod updates to given indices.
       
      array scatter_prod (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array scatter_max (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and max updates to given linear indices.
       
      array scatter_max (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array scatter_min (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and min updates to given linear indices.
       
      array scatter_min (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array sqrt (const array &a, StreamOrDevice s={})
       Square root the elements of an array.
       
      array rsqrt (const array &a, StreamOrDevice s={})
       Square root and reciprocal the elements of an array.
       
      array softmax (const array &a, const std::vector< int > &axes, bool precise=false, StreamOrDevice s={})
       Softmax of an array.
       
      array softmax (const array &a, bool precise=false, StreamOrDevice s={})
       Softmax of an array.
       
      array softmax (const array &a, int axis, bool precise=false, StreamOrDevice s={})
       Softmax of an array.
       
      array power (const array &a, const array &b, StreamOrDevice s={})
       Raise elements of a to the power of b element-wise.
       
      array cumsum (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative sum of an array.
       
      array cumprod (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative product of an array.
       
      array cummax (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative max of an array.
       
      array cummin (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative min of an array.
       
      array conv_general (array input, array weight, std::vector< int > stride={}, std::vector< int > padding_lo={}, std::vector< int > padding_hi={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})
       General convolution with a filter.
       
      array conv_general (const array &input, const array &weight, std::vector< int > stride={}, std::vector< int > padding={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})
       General convolution with a filter.
       
      array conv1d (const array &input, const array &weight, int stride=1, int padding=0, int dilation=1, int groups=1, StreamOrDevice s={})
       1D convolution with a filter
       
      array conv2d (const array &input, const array &weight, const std::pair< int, int > &stride={1, 1}, const std::pair< int, int > &padding={0, 0}, const std::pair< int, int > &dilation={1, 1}, int groups=1, StreamOrDevice s={})
       2D convolution with a filter
       
      array conv3d (const array &input, const array &weight, const std::tuple< int, int, int > &stride={1, 1, 1}, const std::tuple< int, int, int > &padding={0, 0, 0}, const std::tuple< int, int, int > &dilation={1, 1, 1}, int groups=1, StreamOrDevice s={})
       3D convolution with a filter
       
      array conv_transpose1d (const array &input, const array &weight, int stride=1, int padding=0, int dilation=1, int groups=1, StreamOrDevice s={})
       1D transposed convolution with a filter
       
      array conv_transpose2d (const array &input, const array &weight, const std::pair< int, int > &stride={1, 1}, const std::pair< int, int > &padding={0, 0}, const std::pair< int, int > &dilation={1, 1}, int groups=1, StreamOrDevice s={})
       2D transposed convolution with a filter
       
      array conv_transpose3d (const array &input, const array &weight, const std::tuple< int, int, int > &stride={1, 1, 1}, const std::tuple< int, int, int > &padding={0, 0, 0}, const std::tuple< int, int, int > &dilation={1, 1, 1}, int groups=1, StreamOrDevice s={})
       3D transposed convolution with a filter
       
      array quantized_matmul (const array &x, const array &w, const array &scales, const array &biases, bool transpose=true, int group_size=64, int bits=4, StreamOrDevice s={})
       Quantized matmul multiplies x with a quantized matrix w.
       
      std::tuple< array, array, arrayquantize (const array &w, int group_size=64, int bits=4, StreamOrDevice s={})
       Quantize a matrix along its last axis.
       
      array dequantize (const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})
       Dequantize a matrix produced by quantize()
       
      array gather_qmm (const array &x, const array &w, const array &scales, const array &biases, std::optional< array > lhs_indices=std::nullopt, std::optional< array > rhs_indices=std::nullopt, bool transpose=true, int group_size=64, int bits=4, StreamOrDevice s={})
       Compute matrix products with matrix-level gather.
       
      array tensordot (const array &a, const array &b, const int axis=2, StreamOrDevice s={})
       Returns a contraction of a and b over multiple dimensions.
       
      array tensordot (const array &a, const array &b, const std::vector< int > &axes_a, const std::vector< int > &axes_b, StreamOrDevice s={})
       
      array outer (const array &a, const array &b, StreamOrDevice s={})
       Compute the outer product of two vectors.
       
      array inner (const array &a, const array &b, StreamOrDevice s={})
       Compute the inner product of two vectors.
       
      array addmm (array c, array a, array b, const float &alpha=1.f, const float &beta=1.f, StreamOrDevice s={})
       Compute D = beta * C + alpha * (A @ B)
       
      array block_masked_mm (array a, array b, int block_size, std::optional< array > mask_out=std::nullopt, std::optional< array > mask_lhs=std::nullopt, std::optional< array > mask_rhs=std::nullopt, StreamOrDevice s={})
       Compute matrix product with block masking.
       
      array gather_mm (array a, array b, std::optional< array > lhs_indices=std::nullopt, std::optional< array > rhs_indices=std::nullopt, StreamOrDevice s={})
       Compute matrix product with matrix-level gather.
       
      array diagonal (const array &a, int offset=0, int axis1=0, int axis2=1, StreamOrDevice s={})
       Extract a diagonal or construct a diagonal array.
       
      array diag (const array &a, int k=0, StreamOrDevice s={})
       Extract diagonal from a 2d array or create a diagonal matrix.
       
      array trace (const array &a, int offset, int axis1, int axis2, Dtype dtype, StreamOrDevice s={})
       Return the sum along a specified diagonal in the given array.
       
      array trace (const array &a, int offset, int axis1, int axis2, StreamOrDevice s={})
       
      array trace (const array &a, StreamOrDevice s={})
       
      std::vector< arraydepends (const std::vector< array > &inputs, const std::vector< array > &dependencies)
       Implements the identity function but allows injecting dependencies to other arrays.
       
      array atleast_1d (const array &a, StreamOrDevice s={})
       convert an array to an atleast ndim array
       
      std::vector< arrayatleast_1d (const std::vector< array > &a, StreamOrDevice s={})
       
      array atleast_2d (const array &a, StreamOrDevice s={})
       
      std::vector< arrayatleast_2d (const std::vector< array > &a, StreamOrDevice s={})
       
      array atleast_3d (const array &a, StreamOrDevice s={})
       
      std::vector< arrayatleast_3d (const std::vector< array > &a, StreamOrDevice s={})
       
      array number_of_elements (const array &a, std::vector< int > axes, bool inverted, Dtype dtype=int32, StreamOrDevice s={})
       Extract the number of elements along some axes as a scalar array.
       
      array conjugate (const array &a, StreamOrDevice s={})
       
      array bitwise_and (const array &a, const array &b, StreamOrDevice s={})
       Bitwise and.
       
      array operator& (const array &a, const array &b)
       
      array bitwise_or (const array &a, const array &b, StreamOrDevice s={})
       Bitwise inclusive or.
       
      array operator| (const array &a, const array &b)
       
      array bitwise_xor (const array &a, const array &b, StreamOrDevice s={})
       Bitwise exclusive or.
       
      array operator^ (const array &a, const array &b)
       
      array left_shift (const array &a, const array &b, StreamOrDevice s={})
       Shift bits to the left.
       
      array operator<< (const array &a, const array &b)
       
      array right_shift (const array &a, const array &b, StreamOrDevice s={})
       Shift bits to the right.
       
      array operator>> (const array &a, const array &b)
       
      array view (const array &a, const Dtype &dtype, StreamOrDevice s={})
       
      Stream default_stream (Device d)
       Get the default stream for the given device.
       
      void set_default_stream (Stream s)
       Make the stream the default for its device.
       
      Stream new_stream (Device d)
       Make a new stream on the given device.
       
      bool operator== (const Stream &lhs, const Stream &rhs)
       
      bool operator!= (const Stream &lhs, const Stream &rhs)
       
      void synchronize ()
       
      void synchronize (Stream)
       
      void async_eval (std::vector< array > outputs)
       
      void eval (std::vector< array > outputs)
       
      template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      void eval (Arrays &&... outputs)
       
      std::pair< std::vector< array >, std::vector< array > > vjp (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)
       Computes the output and vector-Jacobian product (VJP) of a function.
       
      std::pair< array, arrayvjp (const std::function< array(const array &)> &fun, const array &primal, const array &cotangent)
       Computes the output and vector-Jacobian product (VJP) of a unary function.
       
      std::pair< std::vector< array >, std::vector< array > > jvp (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)
       Computes the output and Jacobian-vector product (JVP) of a function.
       
      std::pair< array, arrayjvp (const std::function< array(const array &)> &fun, const array &primal, const array &tangent)
       Computes the output and Jacobian-vector product (JVP) of a unary function.
       
      ValueAndGradFn value_and_grad (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
       Returns a function which computes the value and gradient of the input function with respect to a vector of input arrays.
       
      ValueAndGradFn value_and_grad (const std::function< std::vector< array >(const std::vector< array > &)> &fun, int argnum=0)
       Returns a function which computes the value and gradient of the input function with respect to a single input array.
       
      SimpleValueAndGradFn value_and_grad (const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
       
      SimpleValueAndGradFn value_and_grad (const std::function< array(const std::vector< array > &)> &fun, int argnum=0)
       
      std::function< std::vector< array >(const std::vector< array > &)> grad (const std::function< array(const std::vector< array > &)> &fun, int argnum=0)
       Returns a function which computes the gradient of the input function with respect to a single input array.
       
      std::function< array(const array &)> grad (const std::function< array(const array &)> &fun)
       Returns a function which computes the gradient of the unary input function.
       
      std::function< array(const array &, const array &)> vmap (const std::function< array(const array &, const array &)> &fun, int in_axis_a=0, int in_axis_b=0, int out_axis=0)
       Automatically vectorize a binary function over the requested axes.
       
      std::function< std::vector< array >(const std::vector< array > &)> vmap (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &in_axes={}, const std::vector< int > &out_axes={})
       Automatically vectorize a function over the requested axes.
       
      _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      float operator+ (_MLX_BFloat16 lhs, float rhs)
       
      float operator+ (float lhs, _MLX_BFloat16 rhs)
       
      double operator+ (_MLX_BFloat16 lhs, double rhs)
       
      double operator+ (double lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, bool rhs)
       
      _MLX_BFloat16 operator+ (bool lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, int32_t rhs)
       
      _MLX_BFloat16 operator+ (int32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, uint32_t rhs)
       
      _MLX_BFloat16 operator+ (uint32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, int64_t rhs)
       
      _MLX_BFloat16 operator+ (int64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator+ (_MLX_BFloat16 lhs, uint64_t rhs)
       
      _MLX_BFloat16 operator+ (uint64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      float operator- (_MLX_BFloat16 lhs, float rhs)
       
      float operator- (float lhs, _MLX_BFloat16 rhs)
       
      double operator- (_MLX_BFloat16 lhs, double rhs)
       
      double operator- (double lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, bool rhs)
       
      _MLX_BFloat16 operator- (bool lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, int32_t rhs)
       
      _MLX_BFloat16 operator- (int32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, uint32_t rhs)
       
      _MLX_BFloat16 operator- (uint32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, int64_t rhs)
       
      _MLX_BFloat16 operator- (int64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs, uint64_t rhs)
       
      _MLX_BFloat16 operator- (uint64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      float operator* (_MLX_BFloat16 lhs, float rhs)
       
      float operator* (float lhs, _MLX_BFloat16 rhs)
       
      double operator* (_MLX_BFloat16 lhs, double rhs)
       
      double operator* (double lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, bool rhs)
       
      _MLX_BFloat16 operator* (bool lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, int32_t rhs)
       
      _MLX_BFloat16 operator* (int32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, uint32_t rhs)
       
      _MLX_BFloat16 operator* (uint32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, int64_t rhs)
       
      _MLX_BFloat16 operator* (int64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator* (_MLX_BFloat16 lhs, uint64_t rhs)
       
      _MLX_BFloat16 operator* (uint64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      float operator/ (_MLX_BFloat16 lhs, float rhs)
       
      float operator/ (float lhs, _MLX_BFloat16 rhs)
       
      double operator/ (_MLX_BFloat16 lhs, double rhs)
       
      double operator/ (double lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, bool rhs)
       
      _MLX_BFloat16 operator/ (bool lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, int32_t rhs)
       
      _MLX_BFloat16 operator/ (int32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, uint32_t rhs)
       
      _MLX_BFloat16 operator/ (uint32_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, int64_t rhs)
       
      _MLX_BFloat16 operator/ (int64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator/ (_MLX_BFloat16 lhs, uint64_t rhs)
       
      _MLX_BFloat16 operator/ (uint64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, float rhs)
       
      bool operator> (float lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, double rhs)
       
      bool operator> (double lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, int32_t rhs)
       
      bool operator> (int32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, uint32_t rhs)
       
      bool operator> (uint32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, int64_t rhs)
       
      bool operator> (int64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator> (_MLX_BFloat16 lhs, uint64_t rhs)
       
      bool operator> (uint64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, float rhs)
       
      bool operator< (float lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, double rhs)
       
      bool operator< (double lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, int32_t rhs)
       
      bool operator< (int32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, uint32_t rhs)
       
      bool operator< (uint32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, int64_t rhs)
       
      bool operator< (int64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator< (_MLX_BFloat16 lhs, uint64_t rhs)
       
      bool operator< (uint64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, float rhs)
       
      bool operator>= (float lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, double rhs)
       
      bool operator>= (double lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, int32_t rhs)
       
      bool operator>= (int32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, uint32_t rhs)
       
      bool operator>= (uint32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, int64_t rhs)
       
      bool operator>= (int64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator>= (_MLX_BFloat16 lhs, uint64_t rhs)
       
      bool operator>= (uint64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, float rhs)
       
      bool operator<= (float lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, double rhs)
       
      bool operator<= (double lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, int32_t rhs)
       
      bool operator<= (int32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, uint32_t rhs)
       
      bool operator<= (uint32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, int64_t rhs)
       
      bool operator<= (int64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator<= (_MLX_BFloat16 lhs, uint64_t rhs)
       
      bool operator<= (uint64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, float rhs)
       
      bool operator== (float lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, double rhs)
       
      bool operator== (double lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, int32_t rhs)
       
      bool operator== (int32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, uint32_t rhs)
       
      bool operator== (uint32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, int64_t rhs)
       
      bool operator== (int64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator== (_MLX_BFloat16 lhs, uint64_t rhs)
       
      bool operator== (uint64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, float rhs)
       
      bool operator!= (float lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, double rhs)
       
      bool operator!= (double lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, int32_t rhs)
       
      bool operator!= (int32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, uint32_t rhs)
       
      bool operator!= (uint32_t lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, int64_t rhs)
       
      bool operator!= (int64_t lhs, _MLX_BFloat16 rhs)
       
      bool operator!= (_MLX_BFloat16 lhs, uint64_t rhs)
       
      bool operator!= (uint64_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator- (_MLX_BFloat16 lhs)
       
      _MLX_BFloat16operator+= (_MLX_BFloat16 &lhs, const float &rhs)
       
      float & operator+= (float &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator-= (_MLX_BFloat16 &lhs, const float &rhs)
       
      float & operator-= (float &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator*= (_MLX_BFloat16 &lhs, const float &rhs)
       
      float & operator*= (float &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator/= (_MLX_BFloat16 &lhs, const float &rhs)
       
      float & operator/= (float &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator| (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator| (_MLX_BFloat16 lhs, uint16_t rhs)
       
      _MLX_BFloat16 operator| (uint16_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator& (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator& (_MLX_BFloat16 lhs, uint16_t rhs)
       
      _MLX_BFloat16 operator& (uint16_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator^ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16 operator^ (_MLX_BFloat16 lhs, uint16_t rhs)
       
      _MLX_BFloat16 operator^ (uint16_t lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator|= (_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator|= (_MLX_BFloat16 &lhs, uint16_t rhs)
       
      _MLX_BFloat16operator&= (_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator&= (_MLX_BFloat16 &lhs, uint16_t rhs)
       
      _MLX_BFloat16operator^= (_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
       
      _MLX_BFloat16operator^= (_MLX_BFloat16 &lhs, uint16_t rhs)
       
      bool operator>= (const complex64_t &a, const complex64_t &b)
       
      bool operator> (const complex64_t &a, const complex64_t &b)
       
      complex64_t operator% (complex64_t a, complex64_t b)
       
      bool operator<= (const complex64_t &a, const complex64_t &b)
       
      bool operator< (const complex64_t &a, const complex64_t &b)
       
      complex64_t operator- (const complex64_t &v)
       
      complex64_t operator+ (const std::complex< float > &x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, const std::complex< float > &y)
       
      complex64_t operator+ (const complex64_t &x, const complex64_t &y)
       
      complex64_t operator+ (bool x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, bool y)
       
      complex64_t operator+ (uint32_t x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, uint32_t y)
       
      complex64_t operator+ (uint64_t x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, uint64_t y)
       
      complex64_t operator+ (int32_t x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, int32_t y)
       
      complex64_t operator+ (int64_t x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, int64_t y)
       
      complex64_t operator+ (float16_t x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, float16_t y)
       
      complex64_t operator+ (bfloat16_t x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, bfloat16_t y)
       
      complex64_t operator+ (float x, const complex64_t &y)
       
      complex64_t operator+ (const complex64_t &x, float y)
       
      _MLX_Float16 operator+ (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      float operator+ (_MLX_Float16 lhs, float rhs)
       
      float operator+ (float lhs, _MLX_Float16 rhs)
       
      double operator+ (_MLX_Float16 lhs, double rhs)
       
      double operator+ (double lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator+ (_MLX_Float16 lhs, bool rhs)
       
      _MLX_Float16 operator+ (bool lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator+ (_MLX_Float16 lhs, int32_t rhs)
       
      _MLX_Float16 operator+ (int32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator+ (_MLX_Float16 lhs, uint32_t rhs)
       
      _MLX_Float16 operator+ (uint32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator+ (_MLX_Float16 lhs, int64_t rhs)
       
      _MLX_Float16 operator+ (int64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator+ (_MLX_Float16 lhs, uint64_t rhs)
       
      _MLX_Float16 operator+ (uint64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      float operator- (_MLX_Float16 lhs, float rhs)
       
      float operator- (float lhs, _MLX_Float16 rhs)
       
      double operator- (_MLX_Float16 lhs, double rhs)
       
      double operator- (double lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs, bool rhs)
       
      _MLX_Float16 operator- (bool lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs, int32_t rhs)
       
      _MLX_Float16 operator- (int32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs, uint32_t rhs)
       
      _MLX_Float16 operator- (uint32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs, int64_t rhs)
       
      _MLX_Float16 operator- (int64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs, uint64_t rhs)
       
      _MLX_Float16 operator- (uint64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator* (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      float operator* (_MLX_Float16 lhs, float rhs)
       
      float operator* (float lhs, _MLX_Float16 rhs)
       
      double operator* (_MLX_Float16 lhs, double rhs)
       
      double operator* (double lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator* (_MLX_Float16 lhs, bool rhs)
       
      _MLX_Float16 operator* (bool lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator* (_MLX_Float16 lhs, int32_t rhs)
       
      _MLX_Float16 operator* (int32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator* (_MLX_Float16 lhs, uint32_t rhs)
       
      _MLX_Float16 operator* (uint32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator* (_MLX_Float16 lhs, int64_t rhs)
       
      _MLX_Float16 operator* (int64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator* (_MLX_Float16 lhs, uint64_t rhs)
       
      _MLX_Float16 operator* (uint64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator/ (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      float operator/ (_MLX_Float16 lhs, float rhs)
       
      float operator/ (float lhs, _MLX_Float16 rhs)
       
      double operator/ (_MLX_Float16 lhs, double rhs)
       
      double operator/ (double lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator/ (_MLX_Float16 lhs, bool rhs)
       
      _MLX_Float16 operator/ (bool lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator/ (_MLX_Float16 lhs, int32_t rhs)
       
      _MLX_Float16 operator/ (int32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator/ (_MLX_Float16 lhs, uint32_t rhs)
       
      _MLX_Float16 operator/ (uint32_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator/ (_MLX_Float16 lhs, int64_t rhs)
       
      _MLX_Float16 operator/ (int64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator/ (_MLX_Float16 lhs, uint64_t rhs)
       
      _MLX_Float16 operator/ (uint64_t lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, float rhs)
       
      bool operator> (float lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, double rhs)
       
      bool operator> (double lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, int32_t rhs)
       
      bool operator> (int32_t lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, uint32_t rhs)
       
      bool operator> (uint32_t lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, int64_t rhs)
       
      bool operator> (int64_t lhs, _MLX_Float16 rhs)
       
      bool operator> (_MLX_Float16 lhs, uint64_t rhs)
       
      bool operator> (uint64_t lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, float rhs)
       
      bool operator< (float lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, double rhs)
       
      bool operator< (double lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, int32_t rhs)
       
      bool operator< (int32_t lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, uint32_t rhs)
       
      bool operator< (uint32_t lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, int64_t rhs)
       
      bool operator< (int64_t lhs, _MLX_Float16 rhs)
       
      bool operator< (_MLX_Float16 lhs, uint64_t rhs)
       
      bool operator< (uint64_t lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, float rhs)
       
      bool operator>= (float lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, double rhs)
       
      bool operator>= (double lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, int32_t rhs)
       
      bool operator>= (int32_t lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, uint32_t rhs)
       
      bool operator>= (uint32_t lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, int64_t rhs)
       
      bool operator>= (int64_t lhs, _MLX_Float16 rhs)
       
      bool operator>= (_MLX_Float16 lhs, uint64_t rhs)
       
      bool operator>= (uint64_t lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, float rhs)
       
      bool operator<= (float lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, double rhs)
       
      bool operator<= (double lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, int32_t rhs)
       
      bool operator<= (int32_t lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, uint32_t rhs)
       
      bool operator<= (uint32_t lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, int64_t rhs)
       
      bool operator<= (int64_t lhs, _MLX_Float16 rhs)
       
      bool operator<= (_MLX_Float16 lhs, uint64_t rhs)
       
      bool operator<= (uint64_t lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, float rhs)
       
      bool operator== (float lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, double rhs)
       
      bool operator== (double lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, int32_t rhs)
       
      bool operator== (int32_t lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, uint32_t rhs)
       
      bool operator== (uint32_t lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, int64_t rhs)
       
      bool operator== (int64_t lhs, _MLX_Float16 rhs)
       
      bool operator== (_MLX_Float16 lhs, uint64_t rhs)
       
      bool operator== (uint64_t lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, float rhs)
       
      bool operator!= (float lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, double rhs)
       
      bool operator!= (double lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, int32_t rhs)
       
      bool operator!= (int32_t lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, uint32_t rhs)
       
      bool operator!= (uint32_t lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, int64_t rhs)
       
      bool operator!= (int64_t lhs, _MLX_Float16 rhs)
       
      bool operator!= (_MLX_Float16 lhs, uint64_t rhs)
       
      bool operator!= (uint64_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator- (_MLX_Float16 lhs)
       
      _MLX_Float16operator+= (_MLX_Float16 &lhs, const float &rhs)
       
      float & operator+= (float &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator-= (_MLX_Float16 &lhs, const float &rhs)
       
      float & operator-= (float &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator*= (_MLX_Float16 &lhs, const float &rhs)
       
      float & operator*= (float &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator/= (_MLX_Float16 &lhs, const float &rhs)
       
      float & operator/= (float &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator| (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator| (_MLX_Float16 lhs, uint16_t rhs)
       
      _MLX_Float16 operator| (uint16_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator& (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator& (_MLX_Float16 lhs, uint16_t rhs)
       
      _MLX_Float16 operator& (uint16_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator^ (_MLX_Float16 lhs, _MLX_Float16 rhs)
       
      _MLX_Float16 operator^ (_MLX_Float16 lhs, uint16_t rhs)
       
      _MLX_Float16 operator^ (uint16_t lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator|= (_MLX_Float16 &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator|= (_MLX_Float16 &lhs, uint16_t rhs)
       
      _MLX_Float16operator&= (_MLX_Float16 &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator&= (_MLX_Float16 &lhs, uint16_t rhs)
       
      _MLX_Float16operator^= (_MLX_Float16 &lhs, _MLX_Float16 rhs)
       
      _MLX_Float16operator^= (_MLX_Float16 &lhs, uint16_t rhs)
       
      float operator+ (float16_t lhs, bfloat16_t rhs)
       
      float operator+ (bfloat16_t lhs, float16_t rhs)
       
      float operator- (float16_t lhs, bfloat16_t rhs)
       
      float operator- (bfloat16_t lhs, float16_t rhs)
       
      float operator* (float16_t lhs, bfloat16_t rhs)
       
      float operator* (bfloat16_t lhs, float16_t rhs)
       
      float operator/ (float16_t lhs, bfloat16_t rhs)
       
      float operator/ (bfloat16_t lhs, float16_t rhs)
       
      Stream to_stream (StreamOrDevice s)
       
      Dtype result_type (const array &a, const array &b)
       The type from promoting the arrays' types with one another.
       
      Dtype result_type (const array &a, const array &b, const array &c)
       
      Dtype result_type (const std::vector< array > &arrays)
       
      std::vector< int > broadcast_shapes (const std::vector< int > &s1, const std::vector< int > &s2)
       
      bool is_same_shape (const std::vector< array > &arrays)
       
      template<typename T >
      int check_shape_dim (const T dim)
       Returns the shape dimension if it's within allowed range.
       
      int normalize_axis (int axis, int ndim)
       Returns the axis normalized to be in the range [0, ndim).
       
      std::ostream & operator<< (std::ostream &os, const Device &d)
       
      std::ostream & operator<< (std::ostream &os, const Stream &s)
       
      std::ostream & operator<< (std::ostream &os, const Dtype &d)
       
      std::ostream & operator<< (std::ostream &os, const Dtype::Kind &k)
       
      std::ostream & operator<< (std::ostream &os, array a)
       
      std::ostream & operator<< (std::ostream &os, const std::vector< int > &v)
       
      std::ostream & operator<< (std::ostream &os, const std::vector< size_t > &v)
       
      std::ostream & operator<< (std::ostream &os, const std::vector< int64_t > &v)
       
      std::ostream & operator<< (std::ostream &os, const complex64_t &v)
       
      std::ostream & operator<< (std::ostream &os, const float16_t &v)
       
      std::ostream & operator<< (std::ostream &os, const bfloat16_t &v)
       
      bool is_power_of_2 (int n)
       
      int next_power_of_2 (int n)
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Variables

      template<typename T >
      constexpr bool is_array_v
       
      template<typename... T>
      constexpr bool is_arrays_v = (is_array_v<T> && ...)
       
      constexpr std::string_view h12
       
      constexpr std::string_view h20
       
      constexpr std::string_view h28
       
      std::function< std::vector< array >(const std::vector< array > &) compile )(const std::function< std::vector< array >(const std::vector< array > &)> &fun, bool shapeless=false)
       Compile takes a function and returns a compiled function.
       
      constexpr Dtype bool_ {Dtype::Val::bool_, sizeof(bool)}
       
      constexpr Dtype uint8 {Dtype::Val::uint8, sizeof(uint8_t)}
       
      constexpr Dtype uint16 {Dtype::Val::uint16, sizeof(uint16_t)}
       
      constexpr Dtype uint32 {Dtype::Val::uint32, sizeof(uint32_t)}
       
      constexpr Dtype uint64 {Dtype::Val::uint64, sizeof(uint64_t)}
       
      constexpr Dtype int8 {Dtype::Val::int8, sizeof(int8_t)}
       
      constexpr Dtype int16 {Dtype::Val::int16, sizeof(int16_t)}
       
      constexpr Dtype int32 {Dtype::Val::int32, sizeof(int32_t)}
       
      constexpr Dtype int64 {Dtype::Val::int64, sizeof(int64_t)}
       
      constexpr Dtype float16 {Dtype::Val::float16, sizeof(uint16_t)}
       
      constexpr Dtype float32 {Dtype::Val::float32, sizeof(float)}
       
      constexpr Dtype bfloat16 {Dtype::Val::bfloat16, sizeof(uint16_t)}
       
      constexpr Dtype complex64 {Dtype::Val::complex64, sizeof(complex64_t)}
       
      constexpr Dtype::Category complexfloating
       
      constexpr Dtype::Category floating = Dtype::Category::floating
       
      constexpr Dtype::Category inexact = Dtype::Category::inexact
       
      constexpr Dtype::Category signedinteger = Dtype::Category::signedinteger
       
      constexpr Dtype::Category unsignedinteger
       
      constexpr Dtype::Category integer = Dtype::Category::integer
       
      constexpr Dtype::Category number = Dtype::Category::number
       
      constexpr Dtype::Category generic = Dtype::Category::generic
       
      std::function< std::pair< array, array >(const array &) value_and_grad )(const std::function< array(const array &)> &fun)
       Returns a function which computes the value and gradient of the unary input function.
       
      std::function< std::vector< array >(const std::vector< array > &) grad )(const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
       Returns a function which computes the gradient of the input function with respect to a vector of input arrays.
       
      std::function< array(const array &) vmap )(const std::function< array(const array &)> &fun, int in_axis=0, int out_axis=0)
       Automatically vectorize a unary function over the requested axes.
       
      std::function< std::vector< array >(const std::vector< array > &) custom_function )(std::function< std::vector< array >(const std::vector< array > &)> fun, std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> > fun_vjp=std::nullopt, std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> > fun_jvp=std::nullopt, std::optional< std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> > fun_vmap=std::nullopt)
       Redefine the transformations of fun according to the provided functions.
       
      std::function< std::vector< array >(const std::vector< array > &) custom_vjp )(std::function< std::vector< array >(const std::vector< array > &)> fun, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun_vjp)
       Return a function that behaves exactly like fun but if the vjp of the results is computed fun_vjp will be used instead of vjp(fun, ...) .
       
      std::function< std::vector< array >(const std::vector< array > &) checkpoint )(std::function< std::vector< array >(const std::vector< array > &)> fun)
       Checkpoint the gradient of a function.
       
      template<typename T >
      constexpr bool can_convert_to_complex128
       
      template<typename T >
      constexpr bool can_convert_to_complex64
       
      PrintFormatter global_formatter
       
      -

      Typedef Documentation

      - -

      ◆ bfloat16_t

      - -
      -
      - - - - -
      typedef struct _MLX_BFloat16 mlx::core::bfloat16_t
      -
      - -
      -
      - -

      ◆ deleter_t

      - -
      -
      - - - - -
      using mlx::core::deleter_t = std::function<void(allocator::Buffer)>
      -
      - -
      -
      - -

      ◆ enable_for_arrays_t

      - -
      -
      -
      -template<typename... T>
      - - - - -
      using mlx::core::enable_for_arrays_t = typename std::enable_if_t<is_arrays_v<T...>>
      -
      - -
      -
      - -

      ◆ float16_t

      - -
      -
      - - - - -
      typedef struct _MLX_Float16 mlx::core::float16_t
      -
      - -
      -
      - -

      ◆ GGUFLoad

      - -
      -
      - - - - -
      using mlx::core::GGUFLoad
      -
      -Initial value:
      std::pair<
      -
      std::unordered_map<std::string, array>,
      -
      std::unordered_map<std::string, GGUFMetaData>>
      -
      -
      -
      - -

      ◆ GGUFMetaData

      - -
      -
      - - - - -
      using mlx::core::GGUFMetaData
      -
      -Initial value:
      -
      std::variant<std::monostate, array, std::string, std::vector<std::string>>
      -
      -
      -
      - -

      ◆ SafetensorsLoad

      - -
      -
      - - - - -
      using mlx::core::SafetensorsLoad
      -
      -Initial value:
      std::pair<
      -
      std::unordered_map<std::string, array>,
      -
      std::unordered_map<std::string, std::string>>
      -
      -
      -
      - -

      ◆ SimpleValueAndGradFn

      - -
      -
      -Initial value:
      std::function<std::pair<array, std::vector<array>>(
      -
      const std::vector<array>&)>
      -
      -
      -
      - -

      ◆ StreamOrDevice

      - -
      -
      - - - - -
      using mlx::core::StreamOrDevice = std::variant<std::monostate, Stream, Device>
      -
      - -
      -
      - -

      ◆ ValueAndGradFn

      - -
      -
      - - - - -
      using mlx::core::ValueAndGradFn
      -
      -Initial value:
      -
      std::function<std::pair<std::vector<array>, std::vector<array>>(
      -
      const std::vector<array>&)>
      -
      -
      -
      -

      Enumeration Type Documentation

      - -

      ◆ CompileMode

      - -
      -
      - - - - - -
      - - - - -
      enum class mlx::core::CompileMode
      -
      -strong
      -
      - - - - - -
      Enumerator
      disabled 
      no_simplify 
      no_fuse 
      enabled 
      - -
      -
      - -

      ◆ CopyType

      - -
      -
      - - - - - -
      - - - - -
      enum class mlx::core::CopyType
      -
      -strong
      -
      - - - - - -
      Enumerator
      Scalar 
      Vector 
      General 
      GeneralGeneral 
      - -
      -
      - -

      ◆ ReductionOpType

      - -
      -
      - - - - -
      enum mlx::core::ReductionOpType
      -
      - - - - - - - -
      Enumerator
      ContiguousAllReduce 
      ContiguousReduce 
      ContiguousStridedReduce 
      GeneralContiguousReduce 
      GeneralStridedReduce 
      GeneralReduce 
      - -
      -
      -

      Function Documentation

      - -

      ◆ all_reduce_dispatch()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::all_reduce_dispatch (const array & in,
      array & out,
      const std::string & op_name,
      CommandEncoder & compute_encoder,
      metal::Device & d,
      const Stream & s,
      std::vector< array > & copies )
      -
      - -
      -
      - -

      ◆ arange()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::arange (const std::vector< array > & inputs,
      array & out,
      double start,
      double step )
      -
      - -
      -
      - -

      ◆ async_eval()

      - -
      -
      - - - - - - - -
      void mlx::core::async_eval (std::vector< array > outputs)
      -
      - -
      -
      - -

      ◆ binary_op_gpu() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::binary_op_gpu (const std::vector< array > & inputs,
      array & out,
      const std::string & op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ binary_op_gpu() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::binary_op_gpu (const std::vector< array > & inputs,
      std::vector< array > & outputs,
      const std::string & op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ binary_op_gpu_inplace() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::binary_op_gpu_inplace (const std::vector< array > & inputs,
      array & out,
      const std::string & op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ binary_op_gpu_inplace() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::binary_op_gpu_inplace (const std::vector< array > & inputs,
      std::vector< array > & outputs,
      const std::string & op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ broadcast_shapes()

      - -
      -
      - - - - - - - - - - - -
      std::vector< int > mlx::core::broadcast_shapes (const std::vector< int > & s1,
      const std::vector< int > & s2 )
      -
      - -
      -
      - -

      ◆ build_lib_name()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      std::string mlx::core::build_lib_name (const std::vector< array > & inputs,
      const std::vector< array > & outputs,
      const std::vector< array > & tape,
      const std::unordered_set< uintptr_t > & constant_ids )
      -
      - -
      -
      - -

      ◆ check_contiguity()

      - -
      -
      -
      -template<typename stride_t >
      - - - - - -
      - - - - - - - - - - - -
      auto mlx::core::check_contiguity (const std::vector< int > & shape,
      const std::vector< stride_t > & strides )
      -
      -inline
      -
      - -
      -
      - -

      ◆ check_shape_dim()

      - -
      -
      -
      -template<typename T >
      - - - - - - - -
      int mlx::core::check_shape_dim (const T dim)
      -
      - -

      Returns the shape dimension if it's within allowed range.

      - -
      -
      - -

      ◆ collapse_contiguous_dims() [1/4]

      - -
      -
      -
      -template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      - - - - - -
      - - - - - - - -
      auto mlx::core::collapse_contiguous_dims (Arrays &&... xs)
      -
      -inline
      -
      - -
      -
      - -

      ◆ collapse_contiguous_dims() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - -
      std::tuple< std::vector< int >, std::vector< std::vector< size_t > > > mlx::core::collapse_contiguous_dims (const std::vector< array > & xs)
      -
      -inline
      -
      - -
      -
      - -

      ◆ collapse_contiguous_dims() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      std::tuple< std::vector< int >, std::vector< size_t > > mlx::core::collapse_contiguous_dims (const std::vector< int > & shape,
      const std::vector< size_t > & strides )
      -
      -inline
      -
      - -
      -
      - -

      ◆ collapse_contiguous_dims() [4/4]

      - -
      -
      -
      -template<typename stride_t >
      - - - - - -
      - - - - - - - - - - - -
      std::tuple< std::vector< int >, std::vector< std::vector< stride_t > > > mlx::core::collapse_contiguous_dims (const std::vector< int > & shape,
      const std::vector< std::vector< stride_t > > strides )
      -
      -inline
      -
      - -
      -
      - -

      ◆ compiled_allocate_outputs()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::compiled_allocate_outputs (const std::vector< array > & inputs,
      std::vector< array > & outputs,
      const std::vector< array > & inputs_,
      const std::unordered_set< uintptr_t > & constant_ids_,
      bool contiguous,
      bool move_buffers = false )
      -
      - -
      -
      - -

      ◆ compiled_check_contiguity()

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::compiled_check_contiguity (const std::vector< array > & inputs,
      const std::vector< int > & shape )
      -
      - -
      -
      - -

      ◆ concatenate_gpu()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::concatenate_gpu (const std::vector< array > & inputs,
      array & out,
      int axis,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ copy()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::copy (const array & src,
      array & dst,
      CopyType ctype )
      -
      - -
      -
      - -

      ◆ copy_gpu() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::copy_gpu (const array & src,
      array & out,
      CopyType ctype )
      -
      - -
      -
      - -

      ◆ copy_gpu() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::copy_gpu (const array & src,
      array & out,
      CopyType ctype,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ copy_gpu_inplace() [1/3]

      - -
      -
      -
      -template<typename stride_t >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::copy_gpu_inplace (const array & in,
      array & out,
      const std::vector< int > & data_shape,
      const std::vector< stride_t > & i_strides,
      const std::vector< stride_t > & o_strides,
      int64_t i_offset,
      int64_t o_offset,
      CopyType ctype,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ copy_gpu_inplace() [2/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::copy_gpu_inplace (const array & in,
      array & out,
      const std::vector< int64_t > & istride,
      int64_t ioffset,
      CopyType ctype,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ copy_gpu_inplace() [3/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::copy_gpu_inplace (const array & src,
      array & out,
      CopyType ctype,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ copy_inplace() [1/2]

      - -
      -
      -
      -template<typename stride_t >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::copy_inplace (const array & src,
      array & dst,
      const std::vector< int > & data_shape,
      const std::vector< stride_t > & i_strides,
      const std::vector< stride_t > & o_strides,
      int64_t i_offset,
      int64_t o_offset,
      CopyType ctype )
      -
      - -
      -
      - -

      ◆ copy_inplace() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::copy_inplace (const array & src,
      array & dst,
      CopyType ctype )
      -
      - -
      -
      - -

      ◆ debug_set_primitive_buffer_label()

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      void mlx::core::debug_set_primitive_buffer_label (MTL::CommandBuffer * command_buffer,
      Primitive & primitive )
      -
      -inline
      -
      - -
      -
      - -

      ◆ debug_set_stream_queue_label()

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      void mlx::core::debug_set_stream_queue_label (MTL::CommandQueue * queue,
      int index )
      -
      -inline
      -
      - -
      -
      - -

      ◆ decompose_hadamard()

      - -
      -
      - - - - - -
      - - - - - - - -
      std::pair< int, int > mlx::core::decompose_hadamard (int n)
      -
      -inline
      -
      - -
      -
      - -

      ◆ default_device()

      - -
      -
      - - - - - - - -
      const Device & mlx::core::default_device ()
      -
      - -
      -
      - -

      ◆ default_stream()

      - -
      -
      - - - - - - - -
      Stream mlx::core::default_stream (Device d)
      -
      - -

      Get the default stream for the given device.

      - -
      -
      - -

      ◆ disable_compile()

      - -
      -
      - - - - - - - -
      void mlx::core::disable_compile ()
      -
      - -

      Globally disable compilation.

      -

      Setting the environment variable MLX_DISABLE_COMPILE can also be used to disable compilation.

      - -
      -
      - -

      ◆ einsum()

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::einsum (const std::string & subscripts,
      const std::vector< array > & operands,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ einsum_path()

      - -
      -
      - - - - - - - - - - - -
      std::pair< std::vector< std::vector< int > >, std::string > mlx::core::einsum_path (const std::string & subscripts,
      const std::vector< array > & operands )
      -
      - -
      -
      - -

      ◆ elem_to_loc() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      size_t mlx::core::elem_to_loc (int elem,
      const array & a )
      -
      -inline
      -
      - -
      -
      - -

      ◆ elem_to_loc() [2/2]

      - -
      -
      -
      -template<typename stride_t >
      - - - - - -
      - - - - - - - - - - - - - - - - -
      stride_t mlx::core::elem_to_loc (int elem,
      const std::vector< int > & shape,
      const std::vector< stride_t > & strides )
      -
      -inline
      -
      - -
      -
      - -

      ◆ enable_compile()

      - -
      -
      - - - - - - - -
      void mlx::core::enable_compile ()
      -
      - -

      Globally enable compilation.

      -

      This will override the environment variable MLX_DISABLE_COMPILE.

      - -
      -
      - -

      ◆ eval() [1/2]

      - -
      -
      -
      -template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      - - - - - - - -
      void mlx::core::eval (Arrays &&... outputs)
      -
      - -
      -
      - -

      ◆ eval() [2/2]

      - -
      -
      - - - - - - - -
      void mlx::core::eval (std::vector< array > outputs)
      -
      - -
      -
      - -

      ◆ export_to_dot() [1/2]

      - -
      -
      -
      -template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      - - - - - - - - - - - -
      void mlx::core::export_to_dot (std::ostream & os,
      Arrays &&... outputs )
      -
      - -
      -
      - -

      ◆ export_to_dot() [2/2]

      - -
      -
      - - - - - - - - - - - -
      void mlx::core::export_to_dot (std::ostream & os,
      const std::vector< array > & outputs )
      -
      - -
      -
      - -

      ◆ fill_gpu()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::fill_gpu (const array & val,
      array & out,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ get_2d_grid_dims()

      - -
      -
      - - - - - - - - - - - -
      MTL::Size mlx::core::get_2d_grid_dims (const std::vector< int > & shape,
      const std::vector< size_t > & strides )
      -
      - -
      -
      - -

      ◆ get_arange_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_arange_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & out )
      -
      - -
      -
      - -

      ◆ get_binary_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_binary_kernel (metal::Device & d,
      const std::string & kernel_name,
      Dtype in_type,
      Dtype out_type,
      const std::string op )
      -
      - -
      -
      - -

      ◆ get_binary_two_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_binary_two_kernel (metal::Device & d,
      const std::string & kernel_name,
      Dtype in_type,
      Dtype out_type,
      const std::string op )
      -
      - -
      -
      - -

      ◆ get_block_dims()

      - -
      -
      - - - - - - - - - - - - - - - - -
      MTL::Size mlx::core::get_block_dims (int dim0,
      int dim1,
      int dim2 )
      -
      - -
      -
      - -

      ◆ get_copy_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_copy_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & in,
      const array & out )
      -
      - -
      -
      - -

      ◆ get_fft_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_fft_kernel (metal::Device & d,
      const std::string & kernel_name,
      const std::string & hash_name,
      const metal::MTLFCList & func_consts,
      const std::string & template_def )
      -
      - -
      -
      - -

      ◆ get_gemv_masked_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_gemv_masked_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & out,
      const std::optional< array > & mask_out,
      const std::optional< array > & mask_op,
      bool transpose_mat,
      int bm,
      int bn,
      int sm,
      int sn,
      int tm,
      int tn,
      bool contiguous )
      -
      - -
      -
      - -

      ◆ get_mb_sort_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_mb_sort_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & in,
      const array & idx,
      int bn,
      int tn )
      -
      - -
      -
      - -

      ◆ get_primitive_string()

      - -
      -
      - - - - - - - -
      std::string mlx::core::get_primitive_string (Primitive * primitive)
      -
      - -
      -
      - -

      ◆ get_quantized_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_quantized_kernel (metal::Device & d,
      const std::string & kernel_name,
      const std::string & template_def )
      -
      - -
      -
      - -

      ◆ get_reduce_init_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_reduce_init_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & out )
      -
      - -
      -
      - -

      ◆ get_reduce_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_reduce_kernel (metal::Device & d,
      const std::string & kernel_name,
      const std::string & func_name,
      const std::string & op_name,
      const array & in,
      const array & out,
      int ndim = -1,
      int bm = -1,
      int bn = -1 )
      -
      - -
      -
      - -

      ◆ get_reduction_plan()

      - -
      -
      - - - - - - - - - - - -
      ReductionPlan mlx::core::get_reduction_plan (const array & x,
      const std::vector< int > & axes )
      -
      - -
      -
      - -

      ◆ get_scan_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_scan_kernel (metal::Device & d,
      const std::string & kernel_name,
      bool reverse,
      bool inclusive,
      const std::string & reduce_type,
      const array & in,
      const array & out )
      -
      - -
      -
      - -

      ◆ get_shape()

      - -
      -
      - - - - - - - -
      std::vector< int > mlx::core::get_shape (const gguf_tensor & tensor)
      -
      - -
      -
      - -

      ◆ get_softmax_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_softmax_kernel (metal::Device & d,
      const std::string & kernel_name,
      bool precise,
      const array & out )
      -
      - -
      -
      - -

      ◆ get_sort_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_sort_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & in,
      const array & out,
      int bn,
      int tn )
      -
      - -
      -
      - -

      ◆ get_steel_conv_general_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_steel_conv_general_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & out,
      int bm,
      int bn,
      int bk,
      int wm,
      int wn )
      -
      - -
      -
      - -

      ◆ get_steel_conv_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_steel_conv_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & out,
      int bm,
      int bn,
      int bk,
      int wm,
      int wn,
      int n_channel_specialization,
      bool small_filter )
      -
      - -
      -
      - -

      ◆ get_steel_gemm_fused_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_fused_kernel (metal::Device & d,
      const std::string & kernel_name,
      const std::string & hash_name,
      const metal::MTLFCList & func_consts,
      const array & out,
      bool transpose_a,
      bool transpose_b,
      int bm,
      int bn,
      int bk,
      int wm,
      int wn )
      -
      - -
      -
      - -

      ◆ get_steel_gemm_masked_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_masked_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & out,
      const std::optional< array > & mask_out,
      const std::optional< array > & mask_op,
      bool transpose_a,
      bool transpose_b,
      int bm,
      int bn,
      int bk,
      int wm,
      int wn,
      bool mn_aligned,
      bool k_aligned )
      -
      - -
      -
      - -

      ◆ get_steel_gemm_splitk_accum_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_splitk_accum_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & in,
      const array & out,
      bool axbpy )
      -
      - -
      -
      - -

      ◆ get_steel_gemm_splitk_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_steel_gemm_splitk_kernel (metal::Device & d,
      const std::string & kernel_name,
      const array & in,
      const array & out,
      bool transpose_a,
      bool transpose_b,
      int bm,
      int bn,
      int bk,
      int wm,
      int wn,
      bool mn_aligned,
      bool k_aligned )
      -
      - -
      -
      - -

      ◆ get_template_definition()

      - -
      -
      -
      -template<typename... Args>
      - - - - - - - - - - - - - - - - -
      std::string mlx::core::get_template_definition (std::string name,
      std::string func,
      Args... args )
      -
      - -
      -
      - -

      ◆ get_ternary_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_ternary_kernel (metal::Device & d,
      const std::string & kernel_name,
      Dtype type,
      const std::string op )
      -
      - -
      -
      - -

      ◆ get_type_string()

      - -
      -
      - - - - - - - -
      std::string mlx::core::get_type_string (Dtype d)
      -
      - -
      -
      - -

      ◆ get_unary_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      MTL::ComputePipelineState * mlx::core::get_unary_kernel (metal::Device & d,
      const std::string & kernel_name,
      Dtype out_type,
      const std::string op )
      -
      - -
      -
      - -

      ◆ gguf_load_quantized()

      - -
      -
      - - - - - - - - - - - -
      void mlx::core::gguf_load_quantized (std::unordered_map< std::string, array > & a,
      const gguf_tensor & tensor )
      -
      - -
      -
      - -

      ◆ grad() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - -
      std::function< array(const array &)> mlx::core::grad (const std::function< array(const array &)> & fun)
      -
      -inline
      -
      - -

      Returns a function which computes the gradient of the unary input function.

      - -
      -
      - -

      ◆ grad() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &)> mlx::core::grad (const std::function< array(const std::vector< array > &)> & fun,
      int argnum = 0 )
      -
      -inline
      -
      - -

      Returns a function which computes the gradient of the input function with respect to a single input array.

      -

      The function being differentiated takes a vector of arrays and returns an array. The optional argnum index specifies which the argument to compute the gradient with respect to and defaults to 0.

      - -
      -
      - -

      ◆ hadamard_matrices()

      - -
      -
      - - - - - -
      - - - - - - - -
      const std::map< int, std::string_view > mlx::core::hadamard_matrices ()
      -
      -inline
      -
      - -
      -
      - -

      ◆ is_donatable()

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::is_donatable (const array & in,
      const array & out )
      -
      -inline
      -
      - -
      -
      - -

      ◆ is_power_of_2()

      - -
      -
      - - - - - -
      - - - - - - - -
      bool mlx::core::is_power_of_2 (int n)
      -
      -inline
      -
      - -
      -
      - -

      ◆ is_same_shape()

      - -
      -
      - - - - - - - -
      bool mlx::core::is_same_shape (const std::vector< array > & arrays)
      -
      - -
      -
      - -

      ◆ is_scalar()

      - -
      -
      - - - - - -
      - - - - - - - -
      bool mlx::core::is_scalar (const array & x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ is_static_cast()

      - -
      -
      - - - - - -
      - - - - - - - -
      bool mlx::core::is_static_cast (const Primitive & p)
      -
      -inline
      -
      - -
      -
      - -

      ◆ issubdtype() [1/4]

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::issubdtype (const Dtype & a,
      const Dtype & b )
      -
      - -
      -
      - -

      ◆ issubdtype() [2/4]

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::issubdtype (const Dtype & a,
      const Dtype::Category & b )
      -
      - -
      -
      - -

      ◆ issubdtype() [3/4]

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::issubdtype (const Dtype::Category & a,
      const Dtype & b )
      -
      - -
      -
      - -

      ◆ issubdtype() [4/4]

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::issubdtype (const Dtype::Category & a,
      const Dtype::Category & b )
      -
      - -
      -
      - -

      ◆ jvp() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::pair< array, array > mlx::core::jvp (const std::function< array(const array &)> & fun,
      const array & primal,
      const array & tangent )
      -
      - -

      Computes the output and Jacobian-vector product (JVP) of a unary function.

      - -
      -
      - -

      ◆ jvp() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::pair< std::vector< array >, std::vector< array > > mlx::core::jvp (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      const std::vector< array > & primals,
      const std::vector< array > & tangents )
      -
      - -

      Computes the output and Jacobian-vector product (JVP) of a function.

      -

      Computes the Jacobian-vector product of the Jacobian of the function evaluated at the primals with the vector of tangents. Returns a pair of vectors of output arrays and JVP arrays.

      - -
      -
      - -

      ◆ kindof()

      - -
      -
      - - - - - - - -
      Dtype::Kind mlx::core::kindof (const Dtype & t)
      -
      - -
      -
      - -

      ◆ load() [1/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::load (array & out,
      size_t offset,
      const std::shared_ptr< io::Reader > & reader,
      bool swap_endianess )
      -
      - -
      -
      - -

      ◆ load() [2/3]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::load (std::shared_ptr< io::Reader > in_stream,
      StreamOrDevice s = {} )
      -
      - -

      Load array from reader in .npy format.

      - -
      -
      - -

      ◆ load() [3/3]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::load (std::string file,
      StreamOrDevice s = {} )
      -
      - -

      Load array from file in .npy format.

      - -
      -
      - -

      ◆ load_gguf()

      - -
      -
      - - - - - - - - - - - -
      GGUFLoad mlx::core::load_gguf (const std::string & file,
      StreamOrDevice s = {} )
      -
      - -

      Load array map and metadata from .gguf file format.

      - -
      -
      - -

      ◆ load_safetensors() [1/2]

      - -
      -
      - - - - - - - - - - - -
      SafetensorsLoad mlx::core::load_safetensors (const std::string & file,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ load_safetensors() [2/2]

      - -
      -
      - - - - - - - - - - - -
      SafetensorsLoad mlx::core::load_safetensors (std::shared_ptr< io::Reader > in_stream,
      StreamOrDevice s = {} )
      -
      - -

      Load array map from .safetensors file format.

      - -
      -
      - -

      ◆ make_contiguous_strides()

      - -
      -
      -
      -template<typename stride_t >
      - - - - - - - -
      std::vector< stride_t > mlx::core::make_contiguous_strides (const std::vector< int > & shape)
      -
      - -
      -
      - -

      ◆ make_string()

      - -
      -
      - - - - - -
      - - - - - - - -
      NS::String * mlx::core::make_string (std::ostringstream & os)
      -
      -inline
      -
      - -
      -
      - -

      ◆ nd_loop()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::nd_loop (std::function< void(int)> callback,
      const std::vector< int > & shape,
      const std::vector< size_t > & strides )
      -
      - -
      -
      - -

      ◆ new_stream()

      - -
      -
      - - - - - - - -
      Stream mlx::core::new_stream (Device d)
      -
      - -

      Make a new stream on the given device.

      - -
      -
      - -

      ◆ next_power_of_2()

      - -
      -
      - - - - - -
      - - - - - - - -
      int mlx::core::next_power_of_2 (int n)
      -
      -inline
      -
      - -
      -
      - -

      ◆ normalize_axis()

      - -
      -
      - - - - - - - - - - - -
      int mlx::core::normalize_axis (int axis,
      int ndim )
      -
      - -

      Returns the axis normalized to be in the range [0, ndim).

      -

      Based on numpy's normalize_axis_index. See https://numpy.org/devdocs/reference/generated/numpy.lib.array_utils.normalize_axis_index.html

      - -
      -
      - -

      ◆ operator!=() [1/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [2/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [3/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [4/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [5/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [6/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [7/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [8/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [9/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [10/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [11/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [12/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [13/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [14/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [15/28]

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (const Device & lhs,
      const Device & rhs )
      -
      - -
      -
      - -

      ◆ operator!=() [16/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (const Stream & lhs,
      const Stream & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [17/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [18/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [19/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [20/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [21/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [22/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [23/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [24/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [25/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [26/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [27/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator!=() [28/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator!= (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator%()

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator% (complex64_t a,
      complex64_t b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&() [1/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator& (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&() [2/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator& (_MLX_BFloat16 lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&() [3/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator& (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&() [4/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator& (_MLX_Float16 lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&() [5/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator& (uint16_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&() [6/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator& (uint16_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator&= (_MLX_BFloat16 & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator&= (_MLX_BFloat16 & lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator&= (_MLX_Float16 & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator&=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator&= (_MLX_Float16 & lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [1/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [2/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [3/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator* (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [4/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator* (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [5/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [6/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [7/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [8/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [9/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [10/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (_MLX_Float16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [11/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator* (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [12/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator* (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [13/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [14/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [15/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [16/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [17/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator* (bfloat16_t lhs,
      float16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [18/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (bool lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [19/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (bool lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [20/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator* (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [21/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator* (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [22/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator* (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [23/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator* (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [24/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator* (float16_t lhs,
      bfloat16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [25/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [26/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [27/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [28/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [29/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [30/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [31/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator* (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*() [32/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator* (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator*= (_MLX_BFloat16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator*= (_MLX_Float16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator*= (float & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator*=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator*= (float & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [1/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [2/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [3/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator+ (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [4/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator+ (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [5/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [6/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [7/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [8/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [9/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [10/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (_MLX_Float16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [11/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator+ (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [12/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator+ (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [13/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [14/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [15/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [16/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [17/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator+ (bfloat16_t lhs,
      float16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [18/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (bfloat16_t x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [19/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (bool lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [20/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (bool lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [21/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (bool x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [22/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      bfloat16_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [23/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      bool y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [24/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [25/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      const std::complex< float > & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [26/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      float y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [27/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      float16_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [28/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      int32_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [29/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      int64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [30/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      uint32_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [31/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const complex64_t & x,
      uint64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [32/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (const std::complex< float > & x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [33/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator+ (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [34/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator+ (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [35/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator+ (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [36/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator+ (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [37/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (float x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [38/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator+ (float16_t lhs,
      bfloat16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [39/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (float16_t x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [40/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [41/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [42/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (int32_t x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [43/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [44/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [45/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (int64_t x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [46/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [47/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [48/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (uint32_t x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [49/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator+ (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [50/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator+ (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+() [51/51]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      complex64_t mlx::core::operator+ (uint64_t x,
      const complex64_t & y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator+= (_MLX_BFloat16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator+= (_MLX_Float16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator+= (float & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator+=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator+= (float & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [1/35]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [2/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [3/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [4/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator- (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [5/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator- (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [6/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [7/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [8/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [9/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [10/35]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [11/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [12/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [13/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator- (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [14/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator- (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [15/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [16/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [17/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [18/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [19/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator- (bfloat16_t lhs,
      float16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [20/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (bool lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [21/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (bool lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [22/35]

      - -
      -
      - - - - - -
      - - - - - - - -
      complex64_t mlx::core::operator- (const complex64_t & v)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [23/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator- (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [24/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator- (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [25/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator- (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [26/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator- (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [27/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator- (float16_t lhs,
      bfloat16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [28/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [29/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [30/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [31/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [32/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [33/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [34/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator- (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-() [35/35]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator- (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator-= (_MLX_BFloat16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator-= (_MLX_Float16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator-= (float & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator-=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator-= (float & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [1/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [2/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [3/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator/ (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [4/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator/ (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [5/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [6/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [7/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [8/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [9/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [10/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (_MLX_Float16 lhs,
      bool rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [11/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator/ (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [12/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator/ (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [13/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [14/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [15/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [16/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [17/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator/ (bfloat16_t lhs,
      float16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [18/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (bool lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [19/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (bool lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [20/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator/ (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [21/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      double mlx::core::operator/ (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [22/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator/ (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [23/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator/ (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [24/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float mlx::core::operator/ (float16_t lhs,
      bfloat16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [25/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [26/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [27/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [28/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [29/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [30/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [31/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator/ (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/() [32/32]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator/ (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator/= (_MLX_BFloat16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator/= (_MLX_Float16 & lhs,
      const float & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator/= (float & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator/=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      float & mlx::core::operator/= (float & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [1/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [2/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [3/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [4/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [5/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [6/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [7/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [8/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [9/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [10/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [11/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [12/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [13/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [14/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [15/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (const complex64_t & a,
      const complex64_t & b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [16/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [17/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [18/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [19/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [20/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [21/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [22/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [23/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [24/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [25/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [26/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<() [27/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator< (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<<() [1/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      array a )
      -
      - -
      -
      - -

      ◆ operator<<() [2/11]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const bfloat16_t & v )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<<() [3/11]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const complex64_t & v )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<<() [4/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const Device & d )
      -
      - -
      -
      - -

      ◆ operator<<() [5/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const Dtype & d )
      -
      - -
      -
      - -

      ◆ operator<<() [6/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const Dtype::Kind & k )
      -
      - -
      -
      - -

      ◆ operator<<() [7/11]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const float16_t & v )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<<() [8/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const std::vector< int > & v )
      -
      - -
      -
      - -

      ◆ operator<<() [9/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const std::vector< int64_t > & v )
      -
      - -
      -
      - -

      ◆ operator<<() [10/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const std::vector< size_t > & v )
      -
      - -
      -
      - -

      ◆ operator<<() [11/11]

      - -
      -
      - - - - - - - - - - - -
      std::ostream & mlx::core::operator<< (std::ostream & os,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ operator<=() [1/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [2/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [3/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [4/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [5/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [6/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [7/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [8/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [9/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [10/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [11/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [12/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [13/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [14/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [15/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (const complex64_t & a,
      const complex64_t & b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [16/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [17/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [18/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [19/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [20/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [21/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [22/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [23/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [24/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [25/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [26/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator<=() [27/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator<= (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [1/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [2/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [3/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [4/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [5/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [6/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [7/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [8/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [9/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [10/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [11/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [12/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [13/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [14/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [15/28]

      - -
      -
      - - - - - - - - - - - -
      bool mlx::core::operator== (const Device & lhs,
      const Device & rhs )
      -
      - -
      -
      - -

      ◆ operator==() [16/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (const Stream & lhs,
      const Stream & rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [17/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [18/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [19/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [20/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [21/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [22/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [23/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [24/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [25/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [26/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [27/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator==() [28/28]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator== (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [1/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [2/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [3/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [4/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [5/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [6/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [7/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [8/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [9/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [10/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [11/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [12/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [13/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [14/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [15/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (const complex64_t & a,
      const complex64_t & b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [16/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [17/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [18/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [19/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [20/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [21/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [22/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [23/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [24/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [25/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [26/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>() [27/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator> (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [1/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [2/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [3/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [4/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [5/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [6/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [7/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_BFloat16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [8/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [9/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      double rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [10/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      float rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [11/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      int32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [12/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      int64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [13/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      uint32_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [14/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (_MLX_Float16 lhs,
      uint64_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [15/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (const complex64_t & a,
      const complex64_t & b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [16/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (double lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [17/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (double lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [18/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (float lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [19/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (float lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [20/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (int32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [21/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (int32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [22/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (int64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [23/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (int64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [24/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (uint32_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [25/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (uint32_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [26/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (uint64_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator>=() [27/27]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      bool mlx::core::operator>= (uint64_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^() [1/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator^ (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^() [2/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator^ (_MLX_BFloat16 lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^() [3/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator^ (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^() [4/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator^ (_MLX_Float16 lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^() [5/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator^ (uint16_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^() [6/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator^ (uint16_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator^= (_MLX_BFloat16 & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator^= (_MLX_BFloat16 & lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator^= (_MLX_Float16 & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator^=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator^= (_MLX_Float16 & lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|() [1/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator| (_MLX_BFloat16 lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|() [2/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator| (_MLX_BFloat16 lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|() [3/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator| (_MLX_Float16 lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|() [4/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator| (_MLX_Float16 lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|() [5/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 mlx::core::operator| (uint16_t lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|() [6/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 mlx::core::operator| (uint16_t lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|=() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator|= (_MLX_BFloat16 & lhs,
      _MLX_BFloat16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|=() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_BFloat16 & mlx::core::operator|= (_MLX_BFloat16 & lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|=() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator|= (_MLX_Float16 & lhs,
      _MLX_Float16 rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator|=() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      _MLX_Float16 & mlx::core::operator|= (_MLX_Float16 & lhs,
      uint16_t rhs )
      -
      -inline
      -
      - -
      -
      - -

      ◆ pad_gpu()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::pad_gpu (const array & in,
      const array & val,
      array & out,
      std::vector< int > axes,
      std::vector< int > low_pad_size,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ prepare_slice()

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::tuple< bool, int64_t, std::vector< int64_t > > mlx::core::prepare_slice (const array & in,
      const std::vector< int > & start_indices,
      const std::vector< int > & strides )
      -
      - -
      -
      - -

      ◆ print_complex_constant()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - -
      void mlx::core::print_complex_constant (std::ostream & os,
      const array & x )
      -
      - -
      -
      - -

      ◆ print_constant()

      - -
      -
      - - - - - - - - - - - -
      void mlx::core::print_constant (std::ostream & os,
      const array & x )
      -
      - -
      -
      - -

      ◆ print_float_constant()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - -
      void mlx::core::print_float_constant (std::ostream & os,
      const array & x )
      -
      - -
      -
      - -

      ◆ print_graph() [1/2]

      - -
      -
      -
      -template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
      - - - - - - - - - - - -
      void mlx::core::print_graph (std::ostream & os,
      Arrays &&... outputs )
      -
      - -
      -
      - -

      ◆ print_graph() [2/2]

      - -
      -
      - - - - - - - - - - - -
      void mlx::core::print_graph (std::ostream & os,
      const std::vector< array > & outputs )
      -
      - -
      -
      - -

      ◆ print_int_constant()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - -
      void mlx::core::print_int_constant (std::ostream & os,
      const array & x )
      -
      - -
      -
      - -

      ◆ promote_types()

      - -
      -
      - - - - - - - - - - - -
      Dtype mlx::core::promote_types (const Dtype & t1,
      const Dtype & t2 )
      -
      - -
      -
      - -

      ◆ reduction_op() [1/2]

      - -
      -
      -
      -template<typename T , typename U , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::reduction_op (const array & x,
      array & out,
      const std::vector< int > & axes,
      U init,
      Op op )
      -
      - -
      -
      - -

      ◆ reduction_op() [2/2]

      - -
      -
      -
      -template<typename T , typename U , typename OpS , typename OpC , typename Op >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::reduction_op (const array & x,
      array & out,
      const std::vector< int > & axes,
      U init,
      OpS ops,
      OpC opc,
      Op op )
      -
      - -
      -
      - -

      ◆ result_type() [1/3]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      Dtype mlx::core::result_type (const array & a,
      const array & b )
      -
      -inline
      -
      - -

      The type from promoting the arrays' types with one another.

      - -
      -
      - -

      ◆ result_type() [2/3]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      Dtype mlx::core::result_type (const array & a,
      const array & b,
      const array & c )
      -
      -inline
      -
      - -
      -
      - -

      ◆ result_type() [3/3]

      - -
      -
      - - - - - - - -
      Dtype mlx::core::result_type (const std::vector< array > & arrays)
      -
      - -
      -
      - -

      ◆ row_reduce_general_dispatch()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::row_reduce_general_dispatch (const array & in,
      array & out,
      const std::string & op_name,
      const ReductionPlan & plan,
      const std::vector< int > & axes,
      CommandEncoder & compute_encoder,
      metal::Device & d,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ save() [1/2]

      - -
      -
      - - - - - - - - - - - -
      void mlx::core::save (std::shared_ptr< io::Writer > out_stream,
      array a )
      -
      - -

      Save array to out stream in .npy format.

      - -
      -
      - -

      ◆ save() [2/2]

      - -
      -
      - - - - - - - - - - - -
      void mlx::core::save (std::string file,
      array a )
      -
      - -

      Save array to file in .npy format.

      - -
      -
      - -

      ◆ save_gguf()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::save_gguf (std::string file,
      std::unordered_map< std::string, array > array_map,
      std::unordered_map< std::string, GGUFMetaData > meta_data = {} )
      -
      - -
      -
      - -

      ◆ save_safetensors() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::save_safetensors (std::shared_ptr< io::Writer > in_stream,
      std::unordered_map< std::string, array > ,
      std::unordered_map< std::string, std::string > metadata = {} )
      -
      - -
      -
      - -

      ◆ save_safetensors() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::save_safetensors (std::string file,
      std::unordered_map< std::string, array > ,
      std::unordered_map< std::string, std::string > metadata = {} )
      -
      - -
      -
      - -

      ◆ set_compile_mode()

      - -
      -
      - - - - - - - -
      void mlx::core::set_compile_mode (CompileMode mode)
      -
      - -

      Set the compiler mode to the given value.

      - -
      -
      - -

      ◆ set_default_device()

      - -
      -
      - - - - - - - -
      void mlx::core::set_default_device (const Device & d)
      -
      - -
      -
      - -

      ◆ set_default_stream()

      - -
      -
      - - - - - - - -
      void mlx::core::set_default_stream (Stream s)
      -
      - -

      Make the stream the default for its device.

      - -
      -
      - -

      ◆ set_vector_bytes() [1/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - - - - - - -
      void mlx::core::set_vector_bytes (CommandEncoder & enc,
      const std::vector< T > & vec,
      int idx )
      -
      -inline
      -
      - -
      -
      - -

      ◆ set_vector_bytes() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::set_vector_bytes (CommandEncoder & enc,
      const std::vector< T > & vec,
      size_t nelems,
      int idx )
      -
      -inline
      -
      - -
      -
      - -

      ◆ shapes_without_reduction_axes()

      - -
      -
      - - - - - - - - - - - -
      std::pair< std::vector< int >, std::vector< size_t > > mlx::core::shapes_without_reduction_axes (const array & x,
      const std::vector< int > & axes )
      -
      - -
      -
      - -

      ◆ shared_buffer_slice()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::shared_buffer_slice (const array & in,
      const std::vector< size_t > & out_strides,
      size_t data_offset,
      size_t data_size,
      array & out )
      -
      - -
      -
      - -

      ◆ size_of()

      - -
      -
      - - - - - -
      - - - - - - - -
      uint8_t mlx::core::size_of (const Dtype & t)
      -
      -inline
      -
      - -
      -
      - -

      ◆ slice_gpu()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::slice_gpu (const array & in,
      array & out,
      const std::vector< int > & start_indices,
      const std::vector< int > & strides,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ steel_matmul()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::steel_matmul (const Stream & s,
      metal::Device & d,
      const array & a,
      const array & b,
      array & out,
      int M,
      int N,
      int K,
      int batch_size_out,
      int lda,
      int ldb,
      bool transpose_a,
      bool transpose_b,
      std::vector< array > & copies,
      std::vector< int > batch_shape = {},
      std::vector< size_t > A_batch_stride = {},
      std::vector< size_t > B_batch_stride = {} )
      -
      - -
      -
      - -

      ◆ steel_matmul_conv_groups()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::steel_matmul_conv_groups (const Stream & s,
      metal::Device & d,
      const array & a,
      const array & b,
      array & out,
      int M,
      int N,
      int K,
      int lda,
      int ldb,
      int ldd,
      bool transpose_a,
      bool transpose_b,
      int groups,
      std::vector< array > & copies )
      -
      - -
      -
      - -

      ◆ strided_reduce_general_dispatch()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::strided_reduce_general_dispatch (const array & in,
      array & out,
      const std::string & op_name,
      const ReductionPlan & plan,
      const std::vector< int > & axes,
      CommandEncoder & compute_encoder,
      metal::Device & d,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ synchronize() [1/2]

      - -
      -
      - - - - - - - -
      void mlx::core::synchronize ()
      -
      - -
      -
      - -

      ◆ synchronize() [2/2]

      - -
      -
      - - - - - - - -
      void mlx::core::synchronize (Stream )
      -
      - -
      -
      - -

      ◆ ternary_op_gpu()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::ternary_op_gpu (const std::vector< array > & inputs,
      array & out,
      const std::string op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ ternary_op_gpu_inplace()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::ternary_op_gpu_inplace (const std::vector< array > & inputs,
      array & out,
      const std::string op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ to_bnns_dtype()

      - -
      -
      - - - - - - - -
      BNNSDataType mlx::core::to_bnns_dtype (Dtype mlx_dtype)
      -
      - -
      -
      - -

      ◆ to_stream()

      - -
      -
      - - - - - - - -
      Stream mlx::core::to_stream (StreamOrDevice s)
      -
      - -
      -
      - -

      ◆ type_to_name()

      - -
      -
      - - - - - - - -
      std::string mlx::core::type_to_name (const array & a)
      -
      - -
      -
      - -

      ◆ unary_op_gpu()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::unary_op_gpu (const std::vector< array > & inputs,
      array & out,
      const std::string op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ unary_op_gpu_inplace()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      void mlx::core::unary_op_gpu_inplace (const std::vector< array > & inputs,
      array & out,
      const std::string op,
      const Stream & s )
      -
      - -
      -
      - -

      ◆ value_and_grad() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      SimpleValueAndGradFn mlx::core::value_and_grad (const std::function< array(const std::vector< array > &)> & fun,
      const std::vector< int > & argnums )
      -
      -inline
      -
      - -
      -
      - -

      ◆ value_and_grad() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      SimpleValueAndGradFn mlx::core::value_and_grad (const std::function< array(const std::vector< array > &)> & fun,
      int argnum = 0 )
      -
      -inline
      -
      - -
      -
      - -

      ◆ value_and_grad() [3/4]

      - -
      -
      - - - - - - - - - - - -
      ValueAndGradFn mlx::core::value_and_grad (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      const std::vector< int > & argnums )
      -
      - -

      Returns a function which computes the value and gradient of the input function with respect to a vector of input arrays.

      - -
      -
      - -

      ◆ value_and_grad() [4/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      ValueAndGradFn mlx::core::value_and_grad (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      int argnum = 0 )
      -
      -inline
      -
      - -

      Returns a function which computes the value and gradient of the input function with respect to a single input array.

      - -
      -
      - -

      ◆ vjp() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::pair< array, array > mlx::core::vjp (const std::function< array(const array &)> & fun,
      const array & primal,
      const array & cotangent )
      -
      - -

      Computes the output and vector-Jacobian product (VJP) of a unary function.

      - -
      -
      - -

      ◆ vjp() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::pair< std::vector< array >, std::vector< array > > mlx::core::vjp (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      const std::vector< array > & primals,
      const std::vector< array > & cotangents )
      -
      - -

      Computes the output and vector-Jacobian product (VJP) of a function.

      -

      Computes the vector-Jacobian product of the vector of cotangents with the Jacobian of the function evaluated at the primals. Returns a pair of vectors of output arrays and VJP arrays.

      - -
      -
      - -

      ◆ vmap() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      std::function< array(const array &, const array &)> mlx::core::vmap (const std::function< array(const array &, const array &)> & fun,
      int in_axis_a = 0,
      int in_axis_b = 0,
      int out_axis = 0 )
      -
      - -

      Automatically vectorize a binary function over the requested axes.

      - -
      -
      - -

      ◆ vmap() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &)> mlx::core::vmap (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      const std::vector< int > & in_axes = {},
      const std::vector< int > & out_axes = {} )
      -
      - -

      Automatically vectorize a function over the requested axes.

      -

      The input function to vmap takes as an argument a vector of arrays and returns a vector of arrays. Optionally specify the axes to vectorize over with in_axes and out_axes, otherwise a default of 0 is used. Returns a vectorized function with the same signature as the input function.

      - -
      -
      -

      Variable Documentation

      - -

      ◆ bfloat16

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::bfloat16 {Dtype::Val::bfloat16, sizeof(uint16_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ bool_

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::bool_ {Dtype::Val::bool_, sizeof(bool)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ can_convert_to_complex128

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - -
      constexpr bool mlx::core::can_convert_to_complex128
      -
      -inlineconstexpr
      -
      -Initial value:
      =
      -
      !std::is_same_v<T, complex128_t> && std::is_convertible_v<T, double>
      -
      -
      -
      - -

      ◆ can_convert_to_complex64

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - -
      constexpr bool mlx::core::can_convert_to_complex64
      -
      -inlineconstexpr
      -
      -Initial value:
      =
      -
      !std::is_same_v<T, complex64_t> && std::is_convertible_v<T, float>
      -
      -
      -
      - -

      ◆ checkpoint

      - -
      -
      - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &) mlx::core::checkpoint) (std::function< std::vector< array >(const std::vector< array > &)> fun) (std::function< std::vector< array >(const std::vector< array > &)> fun)
      -
      - -

      Checkpoint the gradient of a function.

      -

      Namely, discard all intermediate state and recalculate it when we need to compute the gradient.

      - -
      -
      - -

      ◆ compile

      - -
      -
      - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &) mlx::core::compile) (const std::function< std::vector< array >(const std::vector< array > &)> &fun, bool shapeless=false) (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      bool shapeless = false )
      -
      - -

      Compile takes a function and returns a compiled function.

      - -
      -
      - -

      ◆ complex64

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::complex64 {Dtype::Val::complex64, sizeof(complex64_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complexfloating

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::complexfloating
      -
      -inlineconstexpr
      -
      -Initial value:
      =
      -
      Dtype::Category::complexfloating
      -
      -
      -
      - -

      ◆ custom_function

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &) mlx::core::custom_function) (std::function< std::vector< array >(const std::vector< array > &)> fun, std::optional< std::function< std::vector< array >( const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> > fun_vjp=std::nullopt, std::optional< std::function< std::vector< array >( const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> > fun_jvp=std::nullopt, std::optional< std::function< std::pair< std::vector< array >, std::vector< int > >( const std::vector< array > &, const std::vector< int > &)> > fun_vmap=std::nullopt) (std::function< std::vector< array >(const std::vector< array > &)> fun,
      std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> ,
      fun_vjp = std::nullopt,
      std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> ,
      fun_jvp = std::nullopt,
      std::optional< std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> ,
      fun_vmap = std::nullopt )
      -
      - -

      Redefine the transformations of fun according to the provided functions.

      -

      Namely when calling the vjp of fun then fun_vjp will be called, fun_jvp for the jvp and fun_vmap for vmap.

      -

      If any transformation is not provided, then a default one is created by calling vjp, jvp and vmap on the function directly.

      - -
      -
      - -

      ◆ custom_vjp

      - -
      -
      - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &) mlx::core::custom_vjp) (std::function< std::vector< array >(const std::vector< array > &)> fun, std::function< std::vector< array >( const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun_vjp) (std::function< std::vector< array >(const std::vector< array > &)> fun,
      std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun_vjp )
      -
      - -

      Return a function that behaves exactly like fun but if the vjp of the results is computed fun_vjp will be used instead of vjp(fun, ...) .

      - -
      -
      - -

      ◆ float16

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::float16 {Dtype::Val::float16, sizeof(uint16_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ float32

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::float32 {Dtype::Val::float32, sizeof(float)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ floating

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::floating = Dtype::Category::floating
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ generic

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::generic = Dtype::Category::generic
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ global_formatter

      - -
      -
      - - - - - -
      - - - - -
      PrintFormatter mlx::core::global_formatter
      -
      -extern
      -
      - -
      -
      - -

      ◆ grad

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      std::function< array(const array &) mlx::core::grad) (const std::function< array(const array &)> &fun) (const std::function< array(const std::vector< array > &)> & fun,
      const std::vector< int > & argnums )
      -
      -inline
      -
      - -

      Returns a function which computes the gradient of the input function with respect to a vector of input arrays.

      -

      Returns a function which computes the gradient of the unary input function.

      -

      Returns a function which computes the gradient of the input function with respect to a single input array.

      -

      The function being differentiated takes a vector of arrays and returns an array. The vector of argnums specifies which the arguments to compute the gradient with respect to. At least one argument must be specified.

      -

      The function being differentiated takes a vector of arrays and returns an array. The optional argnum index specifies which the argument to compute the gradient with respect to and defaults to 0.

      - -
      -
      - -

      ◆ h12

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view mlx::core::h12
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      +-++++++++++
      -
      --+-+-+-+-+-
      -
      +++-++----++
      -
      +---+--+-++-
      -
      +++++-++----
      -
      +-+---+--+-+
      -
      ++--+++-++--
      -
      +--++---+--+
      -
      ++----+++-++
      -
      +--+-++---+-
      -
      ++++----+++-
      -
      +-+--+-++---
      -
      )"
      -
      -
      -
      - -

      ◆ h20

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view mlx::core::h20
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      +----+----++--++-++-
      -
      -+----+---+++---+-++
      -
      --+----+---+++-+-+-+
      -
      ---+----+---+++++-+-
      -
      ----+----++--++-++-+
      -
      -+++++-----+--+++--+
      -
      +-+++-+---+-+--+++--
      -
      ++-++--+---+-+--+++-
      -
      +++-+---+---+-+--+++
      -
      ++++-----++--+-+--++
      -
      --++-+-++-+-----++++
      -
      ---++-+-++-+---+-+++
      -
      +---++-+-+--+--++-++
      -
      ++---++-+----+-+++-+
      -
      -++---++-+----+++++-
      -
      -+--+--++-+----+----
      -
      +-+-----++-+----+---
      -
      -+-+-+---+--+----+--
      -
      --+-+++------+----+-
      -
      +--+--++------+----+
      -
      )"
      -
      -
      -
      - -

      ◆ h28

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view mlx::core::h28
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      +------++----++-+--+-+--++--
      -
      -+-----+++-----+-+--+-+--++-
      -
      --+-----+++---+-+-+----+--++
      -
      ---+-----+++---+-+-+-+--+--+
      -
      ----+-----+++---+-+-+++--+--
      -
      -----+-----++++--+-+--++--+-
      -
      ------++----++-+--+-+--++--+
      -
      --++++-+-------++--+++-+--+-
      -
      ---++++-+-----+-++--+-+-+--+
      -
      +---+++--+----++-++--+-+-+--
      -
      ++---++---+----++-++--+-+-+-
      -
      +++---+----+----++-++--+-+-+
      -
      ++++--------+-+--++-++--+-+-
      -
      -++++--------+++--++--+--+-+
      -
      -+-++-++--++--+--------++++-
      -
      +-+-++--+--++--+--------++++
      -
      -+-+-++--+--++--+----+---+++
      -
      +-+-+-++--+--+---+---++---++
      -
      ++-+-+-++--+------+--+++---+
      -
      -++-+-+-++--+------+-++++---
      -
      +-++-+---++--+------+-++++--
      -
      -++--++-+-++-+++----++------
      -
      +-++--++-+-++-+++-----+-----
      -
      ++-++---+-+-++-+++-----+----
      -
      -++-++-+-+-+-+--+++-----+---
      -
      --++-++++-+-+----+++-----+--
      -
      +--++-+-++-+-+----+++-----+-
      -
      ++--++-+-++-+-+----++------+
      -
      )"
      -
      -
      -
      - -

      ◆ inexact

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::inexact = Dtype::Category::inexact
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ int16

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::int16 {Dtype::Val::int16, sizeof(int16_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ int32

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::int32 {Dtype::Val::int32, sizeof(int32_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ int64

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::int64 {Dtype::Val::int64, sizeof(int64_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ int8

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::int8 {Dtype::Val::int8, sizeof(int8_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ integer

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::integer = Dtype::Category::integer
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ is_array_v

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - -
      constexpr bool mlx::core::is_array_v
      -
      -inlineconstexpr
      -
      -Initial value:
      =
      -
      std::is_same_v<std::remove_cv_t<std::remove_reference_t<T>>, array>
      -
      -
      -
      - -

      ◆ is_arrays_v

      - -
      -
      -
      -template<typename... T>
      - - - - - -
      - - - - -
      constexpr bool mlx::core::is_arrays_v = (is_array_v<T> && ...)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ number

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::number = Dtype::Category::number
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ signedinteger

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::signedinteger = Dtype::Category::signedinteger
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ uint16

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::uint16 {Dtype::Val::uint16, sizeof(uint16_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ uint32

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::uint32 {Dtype::Val::uint32, sizeof(uint32_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ uint64

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::uint64 {Dtype::Val::uint64, sizeof(uint64_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ uint8

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype mlx::core::uint8 {Dtype::Val::uint8, sizeof(uint8_t)}
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ unsignedinteger

      - -
      -
      - - - - - -
      - - - - -
      constexpr Dtype::Category mlx::core::unsignedinteger
      -
      -inlineconstexpr
      -
      -Initial value:
      =
      -
      Dtype::Category::unsignedinteger
      -
      -
      -
      - -

      ◆ value_and_grad

      - -
      -
      - - - - - -
      - - - - - - - -
      std::function< std::pair< array, array >(const array &) mlx::core::value_and_grad) (const std::function< array(const array &)> &fun) (const std::function< array(const array &)> & fun)
      -
      -inline
      -
      - -

      Returns a function which computes the value and gradient of the unary input function.

      - -
      -
      - -

      ◆ vmap

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &) mlx::core::vmap) (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &in_axes={}, const std::vector< int > &out_axes={}) (const std::function< array(const array &)> & fun,
      int in_axis = 0,
      int out_axis = 0 )
      -
      - -

      Automatically vectorize a unary function over the requested axes.

      -

      Automatically vectorize a function over the requested axes.

      -

      Automatically vectorize a binary function over the requested axes.

      -

      The input function to vmap takes as an argument a vector of arrays and returns a vector of arrays. Optionally specify the axes to vectorize over with in_axes and out_axes, otherwise a default of 0 is used. Returns a vectorized function with the same signature as the input function.

      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1allocator.html b/docs/build/html/namespacemlx_1_1core_1_1allocator.html deleted file mode 100644 index 35bc4a7d..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1allocator.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - -MLX: mlx::core::allocator Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::allocator Namespace Reference
      -
      -
      - - - - - - - - -

      -Classes

      class  Allocator
       
      class  Buffer
       
      class  CommonAllocator
       
      - - - - - - - - - -

      -Functions

      Buffer malloc (size_t size)
       
      void free (Buffer buffer)
       
      Buffer malloc_or_wait (size_t size)
       
      Allocatorallocator ()
       
      -

      Function Documentation

      - -

      ◆ allocator()

      - -
      -
      - - - - - - - -
      Allocator & mlx::core::allocator::allocator ()
      -
      - -
      -
      - -

      ◆ free()

      - -
      -
      - - - - - - - -
      void mlx::core::allocator::free (Buffer buffer)
      -
      - -
      -
      - -

      ◆ malloc()

      - -
      -
      - - - - - - - -
      Buffer mlx::core::allocator::malloc (size_t size)
      -
      - -
      -
      - -

      ◆ malloc_or_wait()

      - -
      -
      - - - - - - - -
      Buffer mlx::core::allocator::malloc_or_wait (size_t size)
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1detail.html b/docs/build/html/namespacemlx_1_1core_1_1detail.html deleted file mode 100644 index 41e48bdb..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1detail.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - -MLX: mlx::core::detail Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::detail Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      struct  Abs
       
      struct  Add
       
      struct  ArcCos
       
      struct  ArcCosh
       
      struct  ArcSin
       
      struct  ArcSinh
       
      struct  ArcTan
       
      struct  ArcTan2
       
      struct  ArcTanh
       
      struct  BitwiseAnd
       
      struct  BitwiseOr
       
      struct  BitwiseXor
       
      struct  Ceil
       
      struct  Conjugate
       
      struct  Cos
       
      struct  Cosh
       
      struct  Divide
       
      struct  Equal
       
      struct  Erf
       
      struct  ErfInv
       
      struct  Exp
       
      struct  Expm1
       
      struct  Floor
       
      struct  Greater
       
      struct  GreaterEqual
       
      union  IntOrFloat
       
      struct  InTracing
       
      struct  LeftShift
       
      struct  Less
       
      struct  LessEqual
       
      struct  Log
       
      struct  Log10
       
      struct  Log1p
       
      struct  Log2
       
      struct  LogAddExp
       
      struct  LogicalAnd
       
      struct  LogicalNot
       
      struct  LogicalOr
       
      struct  Maximum
       
      struct  Minimum
       
      struct  Multiply
       
      struct  NaNEqual
       
      struct  Negative
       
      struct  NotEqual
       
      struct  Power
       
      struct  Remainder
       
      struct  RetainGraph
       
      struct  RightShift
       
      struct  Round
       
      struct  Rsqrt
       
      struct  Select
       
      struct  Sigmoid
       
      struct  Sign
       
      struct  Sin
       
      struct  Sinh
       
      struct  Sqrt
       
      struct  Square
       
      struct  Subtract
       
      struct  Tan
       
      struct  Tanh
       
      - - - - - - - - - - - - - - - - - -

      -Functions

      float fast_exp (float x)
       
      float fast_erf (float a)
       
      float fast_erfinv (float a)
       
      bool compile_available_for_device (const Device &device)
       
      std::pair< std::vector< array >, std::vector< array > > vmap_trace (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &inputs, const std::vector< int > &in_axes)
       
      std::vector< arrayvmap_replace (const std::vector< array > &inputs, const std::vector< array > &s_inputs, const std::vector< array > &s_outputs, const std::vector< int > &in_axes, const std::vector< int > &out_axes)
       
      void compile_erase (std::uintptr_t fun_id)
       
      void compile_clear_cache ()
       
      - - - -

      -Variables

      std::function< std::vector< array >(const std::vector< array > &) compile )(const std::function< std::vector< array >(const std::vector< array > &)> &fun, std::uintptr_t fun_id, bool shapeless=false, std::vector< uint64_t > constants={})
       
      -

      Function Documentation

      - -

      ◆ compile_available_for_device()

      - -
      -
      - - - - - - - -
      bool mlx::core::detail::compile_available_for_device (const Device & device)
      -
      - -
      -
      - -

      ◆ compile_clear_cache()

      - -
      -
      - - - - - - - -
      void mlx::core::detail::compile_clear_cache ()
      -
      - -
      -
      - -

      ◆ compile_erase()

      - -
      -
      - - - - - - - -
      void mlx::core::detail::compile_erase (std::uintptr_t fun_id)
      -
      - -
      -
      - -

      ◆ fast_erf()

      - -
      -
      - - - - - -
      - - - - - - - -
      float mlx::core::detail::fast_erf (float a)
      -
      -inline
      -
      - -
      -
      - -

      ◆ fast_erfinv()

      - -
      -
      - - - - - -
      - - - - - - - -
      float mlx::core::detail::fast_erfinv (float a)
      -
      -inline
      -
      - -
      -
      - -

      ◆ fast_exp()

      - -
      -
      - - - - - -
      - - - - - - - -
      float mlx::core::detail::fast_exp (float x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ vmap_replace()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      std::vector< array > mlx::core::detail::vmap_replace (const std::vector< array > & inputs,
      const std::vector< array > & s_inputs,
      const std::vector< array > & s_outputs,
      const std::vector< int > & in_axes,
      const std::vector< int > & out_axes )
      -
      - -
      -
      - -

      ◆ vmap_trace()

      - -
      -
      - - - - - - - - - - - - - - - - -
      std::pair< std::vector< array >, std::vector< array > > mlx::core::detail::vmap_trace (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      const std::vector< array > & inputs,
      const std::vector< int > & in_axes )
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ compile

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      std::function< std::vector< array >(const std::vector< array > &) mlx::core::detail::compile) (const std::function< std::vector< array >(const std::vector< array > &)> &fun, std::uintptr_t fun_id, bool shapeless=false, std::vector< uint64_t > constants={}) (const std::function< std::vector< array >(const std::vector< array > &)> & fun,
      std::uintptr_t fun_id,
      bool shapeless = false,
      std::vector< uint64_t > constants = {} )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1distributed.html b/docs/build/html/namespacemlx_1_1core_1_1distributed.html deleted file mode 100644 index a3536cf6..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1distributed.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::distributed Namespace Reference
      -
      -
      - - - - -

      -Namespaces

      namespace  detail
       
      - - - - - - - - - - - - - - -

      -Classes

      class  AllGather
       
      class  AllReduce
       
      class  DistPrimitive
       
      struct  Group
       A distributed::Group represents a group of independent mlx processes that can communicate. More...
       
      class  Recv
       
      class  Send
       
      - - - - - - - - - - - - - - - - -

      -Functions

      bool is_available ()
       
      Group init (bool strict=false)
       Initialize the distributed backend and return the group containing all discoverable processes.
       
      array all_sum (const array &x, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      array all_gather (const array &x, std::optional< Group > group=std::nullopt, StreamOrDevice S={})
       
      array send (const array &x, int dst, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      array recv (std::vector< int > shape, Dtype dtype, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      array recv_like (const array &x, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})
       
      -

      Function Documentation

      - -

      ◆ all_gather()

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::distributed::all_gather (const array & x,
      std::optional< Group > group = std::nullopt,
      StreamOrDevice S = {} )
      -
      - -
      -
      - -

      ◆ all_sum()

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::distributed::all_sum (const array & x,
      std::optional< Group > group = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ init()

      - -
      -
      - - - - - - - -
      Group mlx::core::distributed::init (bool strict = false)
      -
      - -

      Initialize the distributed backend and return the group containing all discoverable processes.

      -

      If strict is true then throw an error if we couldn't initialize the distributed subsystem. Otherwise simply return a singleton group which will render communication operations as no-op.

      - -
      -
      - -

      ◆ is_available()

      - -
      -
      - - - - - - - -
      bool mlx::core::distributed::is_available ()
      -
      - -
      -
      - -

      ◆ recv()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::distributed::recv (std::vector< int > shape,
      Dtype dtype,
      int src,
      std::optional< Group > group = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ recv_like()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::distributed::recv_like (const array & x,
      int src,
      std::optional< Group > group = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ send()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::distributed::send (const array & x,
      int dst,
      std::optional< Group > group = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1distributed_1_1detail.html b/docs/build/html/namespacemlx_1_1core_1_1distributed_1_1detail.html deleted file mode 100644 index 454f8354..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1distributed_1_1detail.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::detail Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::distributed::detail Namespace Reference
      -
      -
      - - - - - - - - - - - - - - -

      -Functions

      Stream communication_stream ()
       
      void all_sum (Group group, const array &input, array &output)
       
      void all_gather (Group group, const array &input, array &output)
       
      void send (Group group, const array &input, int dst)
       Send an array to the dst rank.
       
      void recv (Group group, array &out, int src)
       Recv an array from the src rank.
       
      -

      Function Documentation

      - -

      ◆ all_gather()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::distributed::detail::all_gather (Group group,
      const array & input,
      array & output )
      -
      - -
      -
      - -

      ◆ all_sum()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::distributed::detail::all_sum (Group group,
      const array & input,
      array & output )
      -
      - -
      -
      - -

      ◆ communication_stream()

      - -
      -
      - - - - - - - -
      Stream mlx::core::distributed::detail::communication_stream ()
      -
      - -
      -
      - -

      ◆ recv()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::distributed::detail::recv (Group group,
      array & out,
      int src )
      -
      - -

      Recv an array from the src rank.

      - -
      -
      - -

      ◆ send()

      - -
      -
      - - - - - - - - - - - - - - - - -
      void mlx::core::distributed::detail::send (Group group,
      const array & input,
      int dst )
      -
      - -

      Send an array to the dst rank.

      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1fast.html b/docs/build/html/namespacemlx_1_1core_1_1fast.html deleted file mode 100644 index 57a171a6..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1fast.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - -MLX: mlx::core::fast Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::fast Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      class  AffineQuantize
       
      class  Custom
       
      class  CustomKernel
       
      struct  CustomKernelShapeInfo
       
      class  LayerNorm
       
      class  LayerNormVJP
       
      class  RMSNorm
       
      class  RMSNormVJP
       
      class  RoPE
       
      class  ScaledDotProductAttention
       
      - - - - - -

      -Typedefs

      typedef std::variant< int, bool, DtypeTemplateArg
       
      typedef std::function< std::vector< array >(const std::vector< array > &, const std::vector< std::vector< int > > &, const std::vector< Dtype > &, std::tuple< int, int, int >, std::tuple< int, int, int >, std::vector< std::pair< std::string, TemplateArg > >, std::optional< float >, bool, StreamOrDeviceMetalKernelFunction)
       
      - - - - - - - - - - - - - - - - - - -

      -Functions

      array rms_norm (const array &x, const array &weight, float eps, StreamOrDevice s={})
       
      array layer_norm (const array &x, const std::optional< array > &weight, const std::optional< array > &bias, float eps, StreamOrDevice s={})
       
      array rope (const array &x, int dims, bool traditional, std::optional< float > base, float scale, int offset, const std::optional< array > &freqs=std::nullopt, StreamOrDevice s={})
       
      array scaled_dot_product_attention (const array &queries, const array &keys, const array &values, const float scale, const std::optional< array > &mask=std::nullopt, const std::optional< int > memory_efficient_threshold=std::nullopt, StreamOrDevice s={})
       Computes: O = softmax(Q @ K.T) @ V.
       
      std::tuple< array, array, arrayaffine_quantize (const array &w, int group_size=64, int bits=4, StreamOrDevice s={})
       
      array affine_quantize (const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})
       
      array affine_dequantize (const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})
       
      MetalKernelFunction metal_kernel (const std::string &name, const std::vector< std::string > &input_names, const std::vector< std::string > &output_names, const std::string &source, const std::string &header="", bool ensure_row_contiguous=true, bool atomic_outputs=false)
       
      -

      Typedef Documentation

      - -

      ◆ MetalKernelFunction

      - -
      -
      - - - - -
      typedef std::function<std::vector<array>( const std::vector<array>&, const std::vector<std::vector<int>>&, const std::vector<Dtype>&, std::tuple<int, int, int>, std::tuple<int, int, int>, std::vector<std::pair<std::string, TemplateArg>>, std::optional<float>, bool, StreamOrDevice) mlx::core::fast::MetalKernelFunction)
      -
      - -
      -
      - -

      ◆ TemplateArg

      - -
      -
      - - - - -
      typedef std::variant<int, bool, Dtype> mlx::core::fast::TemplateArg
      -
      - -
      -
      -

      Function Documentation

      - -

      ◆ affine_dequantize()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fast::affine_dequantize (const array & w,
      const array & scales,
      const array & biases,
      int group_size = 64,
      int bits = 4,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ affine_quantize() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fast::affine_quantize (const array & w,
      const array & scales,
      const array & biases,
      int group_size = 64,
      int bits = 4,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ affine_quantize() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      std::tuple< array, array, array > mlx::core::fast::affine_quantize (const array & w,
      int group_size = 64,
      int bits = 4,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ layer_norm()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fast::layer_norm (const array & x,
      const std::optional< array > & weight,
      const std::optional< array > & bias,
      float eps,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ metal_kernel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      MetalKernelFunction mlx::core::fast::metal_kernel (const std::string & name,
      const std::vector< std::string > & input_names,
      const std::vector< std::string > & output_names,
      const std::string & source,
      const std::string & header = "",
      bool ensure_row_contiguous = true,
      bool atomic_outputs = false )
      -
      - -
      -
      - -

      ◆ rms_norm()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fast::rms_norm (const array & x,
      const array & weight,
      float eps,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ rope()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fast::rope (const array & x,
      int dims,
      bool traditional,
      std::optional< float > base,
      float scale,
      int offset,
      const std::optional< array > & freqs = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ scaled_dot_product_attention()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fast::scaled_dot_product_attention (const array & queries,
      const array & keys,
      const array & values,
      const float scale,
      const std::optional< array > & mask = std::nullopt,
      const std::optional< int > memory_efficient_threshold = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Computes: O = softmax(Q @ K.T) @ V.

      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1fft.html b/docs/build/html/namespacemlx_1_1core_1_1fft.html deleted file mode 100644 index 4526b165..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1fft.html +++ /dev/null @@ -1,1082 +0,0 @@ - - - - - - - -MLX: mlx::core::fft Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::fft Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      array fftn (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the n-dimensional Fourier Transform.
       
      array fftn (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       
      array fftn (const array &a, StreamOrDevice s={})
       
      array ifftn (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the n-dimensional inverse Fourier Transform.
       
      array ifftn (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       
      array ifftn (const array &a, StreamOrDevice s={})
       
      array fft (const array &a, int n, int axis, StreamOrDevice s={})
       Compute the one-dimensional Fourier Transform.
       
      array fft (const array &a, int axis=-1, StreamOrDevice s={})
       
      array ifft (const array &a, int n, int axis, StreamOrDevice s={})
       Compute the one-dimensional inverse Fourier Transform.
       
      array ifft (const array &a, int axis=-1, StreamOrDevice s={})
       
      array fft2 (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the two-dimensional Fourier Transform.
       
      array fft2 (const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})
       
      array ifft2 (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the two-dimensional inverse Fourier Transform.
       
      array ifft2 (const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})
       
      array rfftn (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the n-dimensional Fourier Transform on a real input.
       
      array rfftn (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       
      array rfftn (const array &a, StreamOrDevice s={})
       
      array irfftn (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the n-dimensional inverse of rfftn.
       
      array irfftn (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       
      array irfftn (const array &a, StreamOrDevice s={})
       
      array rfft (const array &a, int n, int axis, StreamOrDevice s={})
       Compute the one-dimensional Fourier Transform on a real input.
       
      array rfft (const array &a, int axis=-1, StreamOrDevice s={})
       
      array irfft (const array &a, int n, int axis, StreamOrDevice s={})
       Compute the one-dimensional inverse of rfft.
       
      array irfft (const array &a, int axis=-1, StreamOrDevice s={})
       
      array rfft2 (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the two-dimensional Fourier Transform on a real input.
       
      array rfft2 (const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})
       
      array irfft2 (const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})
       Compute the two-dimensional inverse of rfft2.
       
      array irfft2 (const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})
       
      -

      Function Documentation

      - -

      ◆ fft() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::fft (const array & a,
      int axis = -1,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ fft() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::fft (const array & a,
      int n,
      int axis,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the one-dimensional Fourier Transform.

      - -
      -
      - -

      ◆ fft2() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::fft2 (const array & a,
      const std::vector< int > & axes = {-2, -1},
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ fft2() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::fft2 (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the two-dimensional Fourier Transform.

      - -
      -
      - -

      ◆ fftn() [1/3]

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::fftn (const array & a,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ fftn() [2/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::fftn (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -

      Compute the n-dimensional Fourier Transform.

      - -
      -
      - -

      ◆ fftn() [3/3]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::fft::fftn (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ ifft() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::ifft (const array & a,
      int axis = -1,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ ifft() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::ifft (const array & a,
      int n,
      int axis,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the one-dimensional inverse Fourier Transform.

      - -
      -
      - -

      ◆ ifft2() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::ifft2 (const array & a,
      const std::vector< int > & axes = {-2, -1},
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ ifft2() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::ifft2 (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the two-dimensional inverse Fourier Transform.

      - -
      -
      - -

      ◆ ifftn() [1/3]

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::ifftn (const array & a,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ ifftn() [2/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::ifftn (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -

      Compute the n-dimensional inverse Fourier Transform.

      - -
      -
      - -

      ◆ ifftn() [3/3]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::fft::ifftn (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ irfft() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::irfft (const array & a,
      int axis = -1,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ irfft() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::irfft (const array & a,
      int n,
      int axis,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the one-dimensional inverse of rfft.

      - -
      -
      - -

      ◆ irfft2() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::irfft2 (const array & a,
      const std::vector< int > & axes = {-2, -1},
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ irfft2() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::irfft2 (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the two-dimensional inverse of rfft2.

      - -
      -
      - -

      ◆ irfftn() [1/3]

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::irfftn (const array & a,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ irfftn() [2/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::irfftn (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -

      Compute the n-dimensional inverse of rfftn.

      - -
      -
      - -

      ◆ irfftn() [3/3]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::fft::irfftn (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ rfft() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::rfft (const array & a,
      int axis = -1,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ rfft() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::rfft (const array & a,
      int n,
      int axis,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the one-dimensional Fourier Transform on a real input.

      - -
      -
      - -

      ◆ rfft2() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::rfft2 (const array & a,
      const std::vector< int > & axes = {-2, -1},
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ rfft2() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::rfft2 (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -

      Compute the two-dimensional Fourier Transform on a real input.

      - -
      -
      - -

      ◆ rfftn() [1/3]

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::fft::rfftn (const array & a,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ rfftn() [2/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::fft::rfftn (const array & a,
      const std::vector< int > & n,
      const std::vector< int > & axes,
      StreamOrDevice s = {} )
      -
      - -

      Compute the n-dimensional Fourier Transform on a real input.

      - -
      -
      - -

      ◆ rfftn() [3/3]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::fft::rfftn (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1io.html b/docs/build/html/namespacemlx_1_1core_1_1io.html deleted file mode 100644 index 3eae55a1..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1io.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -MLX: mlx::core::io Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::io Namespace Reference
      -
      -
      - - - - - - - - - - -

      -Classes

      class  FileWriter
       
      class  ParallelFileReader
       
      class  Reader
       
      class  Writer
       
      - - - -

      -Functions

      ThreadPoolthread_pool ()
       
      -

      Function Documentation

      - -

      ◆ thread_pool()

      - -
      -
      - - - - - - - -
      ThreadPool & mlx::core::io::thread_pool ()
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1linalg.html b/docs/build/html/namespacemlx_1_1core_1_1linalg.html deleted file mode 100644 index cd1a53e6..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1linalg.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - -MLX: mlx::core::linalg Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::linalg Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      array norm (const array &a, const double ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
       Compute vector or matrix norms.
       
      array norm (const array &a, const double ord, int axis, bool keepdims=false, StreamOrDevice s={})
       
      array norm (const array &a, const std::string &ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
       
      array norm (const array &a, const std::string &ord, int axis, bool keepdims=false, StreamOrDevice s={})
       
      array norm (const array &a, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})
       
      array norm (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       
      std::pair< array, arrayqr (const array &a, StreamOrDevice s={})
       
      std::vector< arraysvd (const array &a, StreamOrDevice s={})
       
      array inv (const array &a, StreamOrDevice s={})
       
      array tri_inv (const array &a, bool upper=false, StreamOrDevice s={})
       
      array cholesky (const array &a, bool upper=false, StreamOrDevice s={})
       
      array pinv (const array &a, StreamOrDevice s={})
       
      array cholesky_inv (const array &a, bool upper=false, StreamOrDevice s={})
       
      -

      Function Documentation

      - -

      ◆ cholesky()

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::cholesky (const array & a,
      bool upper = false,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ cholesky_inv()

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::cholesky_inv (const array & a,
      bool upper = false,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ inv()

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::linalg::inv (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ norm() [1/6]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::norm (const array & a,
      const double ord,
      const std::optional< std::vector< int > > & axis = std::nullopt,
      bool keepdims = false,
      StreamOrDevice s = {} )
      -
      - -

      Compute vector or matrix norms.

      -
        -
      • If axis and ord are both unspecified, computes the 2-norm of flatten(x).
      • -
      • If axis is not provided but ord is, then x must be either 1D or 2D.
      • -
      • If axis is provided, but ord is not, then the 2-norm (or Frobenius norm for matrices) is computed along the given axes. At most 2 axes can be specified.
      • -
      • If both axis and ord are provided, then the corresponding matrix or vector norm is computed. At most 2 axes can be specified.
      • -
      - -
      -
      - -

      ◆ norm() [2/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::norm (const array & a,
      const double ord,
      int axis,
      bool keepdims = false,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ norm() [3/6]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::norm (const array & a,
      const std::optional< std::vector< int > > & axis = std::nullopt,
      bool keepdims = false,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ norm() [4/6]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::norm (const array & a,
      const std::string & ord,
      const std::optional< std::vector< int > > & axis = std::nullopt,
      bool keepdims = false,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ norm() [5/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::norm (const array & a,
      const std::string & ord,
      int axis,
      bool keepdims = false,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ norm() [6/6]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::norm (const array & a,
      int axis,
      bool keepdims = false,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ pinv()

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::linalg::pinv (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ qr()

      - -
      -
      - - - - - - - - - - - -
      std::pair< array, array > mlx::core::linalg::qr (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ svd()

      - -
      -
      - - - - - - - - - - - -
      std::vector< array > mlx::core::linalg::svd (const array & a,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ tri_inv()

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::linalg::tri_inv (const array & a,
      bool upper = false,
      StreamOrDevice s = {} )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1metal.html b/docs/build/html/namespacemlx_1_1core_1_1metal.html deleted file mode 100644 index fea6b4c3..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1metal.html +++ /dev/null @@ -1,1032 +0,0 @@ - - - - - - - -MLX: mlx::core::metal Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::metal Namespace Reference
      -
      -
      - - - - - - - - -

      -Classes

      struct  CommandEncoder
       
      class  Device
       
      class  MetalAllocator
       
      - - - -

      -Typedefs

      using MTLFCList
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      MetalAllocatorallocator ()
       
      std::string get_colocated_mtllib_path (const std::string &lib_name)
       
      Devicedevice (mlx::core::Device)
       
      const char * utils ()
       
      const char * binary_ops ()
       
      const char * unary_ops ()
       
      const char * ternary_ops ()
       
      const char * reduce_utils ()
       
      const char * gather ()
       
      const char * scatter ()
       
      const char * arange ()
       
      const char * unary ()
       
      const char * binary ()
       
      const char * binary_two ()
       
      const char * copy ()
       
      const char * fft ()
       
      const char * hadamard ()
       
      const char * quantized ()
       
      const char * ternary ()
       
      const char * scan ()
       
      const char * softmax ()
       
      const char * sort ()
       
      const char * reduce ()
       
      const char * gemm ()
       
      const char * steel_gemm_fused ()
       
      const char * steel_gemm_masked ()
       
      const char * steel_gemm_splitk ()
       
      const char * conv ()
       
      const char * steel_conv ()
       
      const char * steel_conv_general ()
       
      const char * gemv_masked ()
       
      bool is_available ()
       
      size_t get_active_memory ()
       
      size_t get_peak_memory ()
       
      void reset_peak_memory ()
       
      size_t get_cache_memory ()
       
      size_t set_memory_limit (size_t limit, bool relaxed=true)
       
      size_t set_cache_limit (size_t limit)
       
      void clear_cache ()
       
      void start_capture (std::string path="")
       Capture a GPU trace, saving it to an absolute file path
       
      void stop_capture ()
       
      std::unordered_map< std::string, std::variant< std::string, size_t > > device_info ()
       Get information about the GPU and system settings.
       
      void new_stream (Stream stream)
       
      std::function< void()> make_task (array arr, bool signal)
       
      std::function< void()> make_synchronize_task (Stream s, std::shared_ptr< std::promise< void > > p)
       
      - - - -

      -Variables

      std::unique_ptr< void, std::function< void(void *)> new_scoped_memory_pool )()
       
      -

      Typedef Documentation

      - -

      ◆ MTLFCList

      - -
      -
      - - - - -
      using mlx::core::metal::MTLFCList
      -
      -Initial value:
      -
      std::vector<std::tuple<const void*, MTL::DataType, NS::UInteger>>
      -
      -
      -
      -

      Function Documentation

      - -

      ◆ allocator()

      - -
      -
      - - - - - - - -
      MetalAllocator & mlx::core::metal::allocator ()
      -
      - -
      -
      - -

      ◆ arange()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::arange ()
      -
      - -
      -
      - -

      ◆ binary()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::binary ()
      -
      - -
      -
      - -

      ◆ binary_ops()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::binary_ops ()
      -
      - -
      -
      - -

      ◆ binary_two()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::binary_two ()
      -
      - -
      -
      - -

      ◆ clear_cache()

      - -
      -
      - - - - - - - -
      void mlx::core::metal::clear_cache ()
      -
      - -
      -
      - -

      ◆ conv()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::conv ()
      -
      - -
      -
      - -

      ◆ copy()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::copy ()
      -
      - -
      -
      - -

      ◆ device()

      - -
      -
      - - - - - - - -
      Device & mlx::core::metal::device (mlx::core::Device )
      -
      - -
      -
      - -

      ◆ device_info()

      - -
      -
      - - - - - - - -
      std::unordered_map< std::string, std::variant< std::string, size_t > > mlx::core::metal::device_info ()
      -
      - -

      Get information about the GPU and system settings.

      - -
      -
      - -

      ◆ fft()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::fft ()
      -
      - -
      -
      - -

      ◆ gather()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::gather ()
      -
      - -
      -
      - -

      ◆ gemm()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::gemm ()
      -
      - -
      -
      - -

      ◆ gemv_masked()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::gemv_masked ()
      -
      - -
      -
      - -

      ◆ get_active_memory()

      - -
      -
      - - - - - - - -
      size_t mlx::core::metal::get_active_memory ()
      -
      - -
      -
      - -

      ◆ get_cache_memory()

      - -
      -
      - - - - - - - -
      size_t mlx::core::metal::get_cache_memory ()
      -
      - -
      -
      - -

      ◆ get_colocated_mtllib_path()

      - -
      -
      - - - - - -
      - - - - - - - -
      std::string mlx::core::metal::get_colocated_mtllib_path (const std::string & lib_name)
      -
      -inline
      -
      - -
      -
      - -

      ◆ get_peak_memory()

      - -
      -
      - - - - - - - -
      size_t mlx::core::metal::get_peak_memory ()
      -
      - -
      -
      - -

      ◆ hadamard()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::hadamard ()
      -
      - -
      -
      - -

      ◆ is_available()

      - -
      -
      - - - - - - - -
      bool mlx::core::metal::is_available ()
      -
      - -
      -
      - -

      ◆ make_synchronize_task()

      - -
      -
      - - - - - - - - - - - -
      std::function< void()> mlx::core::metal::make_synchronize_task (Stream s,
      std::shared_ptr< std::promise< void > > p )
      -
      - -
      -
      - -

      ◆ make_task()

      - -
      -
      - - - - - - - - - - - -
      std::function< void()> mlx::core::metal::make_task (array arr,
      bool signal )
      -
      - -
      -
      - -

      ◆ new_stream()

      - -
      -
      - - - - - - - -
      void mlx::core::metal::new_stream (Stream stream)
      -
      - -
      -
      - -

      ◆ quantized()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::quantized ()
      -
      - -
      -
      - -

      ◆ reduce()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::reduce ()
      -
      - -
      -
      - -

      ◆ reduce_utils()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::reduce_utils ()
      -
      - -
      -
      - -

      ◆ reset_peak_memory()

      - -
      -
      - - - - - - - -
      void mlx::core::metal::reset_peak_memory ()
      -
      - -
      -
      - -

      ◆ scan()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::scan ()
      -
      - -
      -
      - -

      ◆ scatter()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::scatter ()
      -
      - -
      -
      - -

      ◆ set_cache_limit()

      - -
      -
      - - - - - - - -
      size_t mlx::core::metal::set_cache_limit (size_t limit)
      -
      - -
      -
      - -

      ◆ set_memory_limit()

      - -
      -
      - - - - - - - - - - - -
      size_t mlx::core::metal::set_memory_limit (size_t limit,
      bool relaxed = true )
      -
      - -
      -
      - -

      ◆ softmax()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::softmax ()
      -
      - -
      -
      - -

      ◆ sort()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::sort ()
      -
      - -
      -
      - -

      ◆ start_capture()

      - -
      -
      - - - - - - - -
      void mlx::core::metal::start_capture (std::string path = "")
      -
      - -

      Capture a GPU trace, saving it to an absolute file path

      - -
      -
      - -

      ◆ steel_conv()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::steel_conv ()
      -
      - -
      -
      - -

      ◆ steel_conv_general()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::steel_conv_general ()
      -
      - -
      -
      - -

      ◆ steel_gemm_fused()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::steel_gemm_fused ()
      -
      - -
      -
      - -

      ◆ steel_gemm_masked()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::steel_gemm_masked ()
      -
      - -
      -
      - -

      ◆ steel_gemm_splitk()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::steel_gemm_splitk ()
      -
      - -
      -
      - -

      ◆ stop_capture()

      - -
      -
      - - - - - - - -
      void mlx::core::metal::stop_capture ()
      -
      - -
      -
      - -

      ◆ ternary()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::ternary ()
      -
      - -
      -
      - -

      ◆ ternary_ops()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::ternary_ops ()
      -
      - -
      -
      - -

      ◆ unary()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::unary ()
      -
      - -
      -
      - -

      ◆ unary_ops()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::unary_ops ()
      -
      - -
      -
      - -

      ◆ utils()

      - -
      -
      - - - - - - - -
      const char * mlx::core::metal::utils ()
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ new_scoped_memory_pool

      - -
      -
      - - - - - - - -
      std::unique_ptr< void, std::function< void(void *)> mlx::core::metal::new_scoped_memory_pool) () ()
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1random.html b/docs/build/html/namespacemlx_1_1core_1_1random.html deleted file mode 100644 index e9720447..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1random.html +++ /dev/null @@ -1,1318 +0,0 @@ - - - - - - - -MLX: mlx::core::random Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::random Namespace Reference
      -
      -
      - - - - -

      -Classes

      class  KeySequence
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      std::pair< uint32_t, uint32_t > threefry2x32_hash (const std::pair< uint32_t, uint32_t > &key, std::pair< uint32_t, uint32_t > count)
       Applies the Threefry 2x32 hash function.
       
      array key (uint64_t seed)
       Get a PRNG key from a seed.
       
      void seed (uint64_t seed)
       Seed the default PRNG key.
       
      array bits (const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate an array with type uint32 filled with random bits.
       
      array bits (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      std::pair< array, arraysplit (const array &key, StreamOrDevice s={})
       Split the rng key into a pair of keys.
       
      array split (const array &key, int num, StreamOrDevice s={})
       Split the rng key into num keys.
       
      array uniform (const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate uniform random numbers between low and high.
       
      template<typename T , typename U >
      array uniform (T low, U high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array uniform (const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate uniform random numbers between 0 and 1.
       
      array uniform (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array normal (const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate samples from the standard normal distribution.
       
      array normal (const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array normal (const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array normal (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array multivariate_normal (const array &mean, const array &cov, const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate samples from a multivariate normal distribution.
       
      array randint (const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate integer samples uniformly at random.
       
      template<typename T , typename U >
      array randint (T low, U high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array bernoulli (const array &p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate binary variables with probability to be true equal to p.
       
      array bernoulli (const array &p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      template<typename T >
      array bernoulli (T p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      template<typename T >
      array bernoulli (T p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array bernoulli (const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array truncated_normal (const array &lower, const array &upper, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array truncated_normal (const array &lower, const array &upper, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array gumbel (const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array categorical (const array &logits, int axis, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array categorical (const array &logits_, int axis, int num_samples, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array categorical (const array &logits, int axis=-1, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array laplace (const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate samples from the laplace distribution.
       
      array laplace (const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array laplace (const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array laplace (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      -

      Function Documentation

      - -

      ◆ bernoulli() [1/5]

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::bernoulli (const array & p,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ bernoulli() [2/5]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::bernoulli (const array & p,
      const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate binary variables with probability to be true equal to p.

      - -
      -
      - -

      ◆ bernoulli() [3/5]

      - -
      -
      - - - - - - - - - - - -
      array mlx::core::random::bernoulli (const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ bernoulli() [4/5]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::bernoulli (T p,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ bernoulli() [5/5]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::bernoulli (T p,
      const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ bits() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::bits (const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ bits() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::bits (const std::vector< int > & shape,
      int width,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate an array with type uint32 filled with random bits.

      - -
      -
      - -

      ◆ categorical() [1/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::categorical (const array & logits,
      int axis,
      const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ categorical() [2/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::categorical (const array & logits,
      int axis = -1,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ categorical() [3/3]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::categorical (const array & logits_,
      int axis,
      int num_samples,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ gumbel()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::gumbel (const std::vector< int > & shape,
      Dtype dtype = float32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ key()

      - -
      -
      - - - - - - - -
      array mlx::core::random::key (uint64_t seed)
      -
      - -

      Get a PRNG key from a seed.

      - -
      -
      - -

      ◆ laplace() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::laplace (const std::vector< int > & shape,
      const Dtype dtype,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ laplace() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::laplace (const std::vector< int > & shape,
      const float loc,
      const float scale,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ laplace() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::laplace (const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ laplace() [4/4]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::laplace (const std::vector< int > & shape,
      Dtype dtype,
      const float loc,
      const float scale,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate samples from the laplace distribution.

      - -
      -
      - -

      ◆ multivariate_normal()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::multivariate_normal (const array & mean,
      const array & cov,
      const std::vector< int > & shape,
      Dtype dtype,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate samples from a multivariate normal distribution.

      - -
      -
      - -

      ◆ normal() [1/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::normal (const std::vector< int > & shape,
      const Dtype dtype,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ normal() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::normal (const std::vector< int > & shape,
      const float loc,
      const float scale,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ normal() [3/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::normal (const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ normal() [4/4]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::normal (const std::vector< int > & shape,
      Dtype dtype,
      const float loc,
      const float scale,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate samples from the standard normal distribution.

      - -
      -
      - -

      ◆ randint() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::randint (const array & low,
      const array & high,
      const std::vector< int > & shape,
      Dtype dtype = int32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate integer samples uniformly at random.

      - -
      -
      - -

      ◆ randint() [2/2]

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::randint (T low,
      U high,
      const std::vector< int > & shape,
      Dtype dtype = int32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ seed()

      - -
      -
      - - - - - - - -
      void mlx::core::random::seed (uint64_t seed)
      -
      - -

      Seed the default PRNG key.

      - -
      -
      - -

      ◆ split() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::split (const array & key,
      int num,
      StreamOrDevice s = {} )
      -
      - -

      Split the rng key into num keys.

      - -
      -
      - -

      ◆ split() [2/2]

      - -
      -
      - - - - - - - - - - - -
      std::pair< array, array > mlx::core::random::split (const array & key,
      StreamOrDevice s = {} )
      -
      - -

      Split the rng key into a pair of keys.

      - -
      -
      - -

      ◆ threefry2x32_hash()

      - -
      -
      - - - - - - - - - - - -
      std::pair< uint32_t, uint32_t > mlx::core::random::threefry2x32_hash (const std::pair< uint32_t, uint32_t > & key,
      std::pair< uint32_t, uint32_t > count )
      -
      - -

      Applies the Threefry 2x32 hash function.

      -

      This code is based on the Jax counter-based and splittable PRNG https://github.com/google/jax/blob/main/docs/jep/263-prng.md

      -

      Original Threefry reference: http://www.thesalmons.org/john/random123/papers/random123sc11.pdf

      - -
      -
      - -

      ◆ truncated_normal() [1/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::truncated_normal (const array & lower,
      const array & upper,
      const std::vector< int > & shape,
      Dtype dtype = float32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ truncated_normal() [2/2]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::truncated_normal (const array & lower,
      const array & upper,
      Dtype dtype = float32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      - -

      ◆ uniform() [1/4]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::uniform (const array & low,
      const array & high,
      const std::vector< int > & shape,
      Dtype dtype = float32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate uniform random numbers between low and high.

      - -
      -
      - -

      ◆ uniform() [2/4]

      - -
      -
      - - - - - -
      - - - - - - - - - - - - - - - - -
      array mlx::core::random::uniform (const std::vector< int > & shape,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      -inline
      -
      - -
      -
      - -

      ◆ uniform() [3/4]

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::uniform (const std::vector< int > & shape,
      Dtype dtype,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -

      Generate uniform random numbers between 0 and 1.

      - -
      -
      - -

      ◆ uniform() [4/4]

      - -
      -
      -
      -template<typename T , typename U >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      array mlx::core::random::uniform (T low,
      U high,
      const std::vector< int > & shape,
      Dtype dtype = float32,
      const std::optional< array > & key = std::nullopt,
      StreamOrDevice s = {} )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1core_1_1scheduler.html b/docs/build/html/namespacemlx_1_1core_1_1scheduler.html deleted file mode 100644 index 4e4a627f..00000000 --- a/docs/build/html/namespacemlx_1_1core_1_1scheduler.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - -MLX: mlx::core::scheduler Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::scheduler Namespace Reference
      -
      -
      - - - - - - -

      -Classes

      class  Scheduler
       
      struct  StreamThread
       
      - - - - - - - - - - - - - - -

      -Functions

      Schedulerscheduler ()
       
      template<typename F >
      void enqueue (const Stream &stream, F &&f)
       
      int n_active_tasks ()
       
      void notify_new_task (const Stream &stream)
       
      void notify_task_completion (const Stream &stream)
       
      void wait_for_one ()
       
      -

      Function Documentation

      - -

      ◆ enqueue()

      - -
      -
      -
      -template<typename F >
      - - - - - - - - - - - -
      void mlx::core::scheduler::enqueue (const Stream & stream,
      F && f )
      -
      - -
      -
      - -

      ◆ n_active_tasks()

      - -
      -
      - - - - - -
      - - - - - - - -
      int mlx::core::scheduler::n_active_tasks ()
      -
      -inline
      -
      - -
      -
      - -

      ◆ notify_new_task()

      - -
      -
      - - - - - -
      - - - - - - - -
      void mlx::core::scheduler::notify_new_task (const Stream & stream)
      -
      -inline
      -
      - -
      -
      - -

      ◆ notify_task_completion()

      - -
      -
      - - - - - -
      - - - - - - - -
      void mlx::core::scheduler::notify_task_completion (const Stream & stream)
      -
      -inline
      -
      - -
      -
      - -

      ◆ scheduler()

      - -
      -
      - - - - - - - -
      Scheduler & mlx::core::scheduler::scheduler ()
      -
      - -
      -
      - -

      ◆ wait_for_one()

      - -
      -
      - - - - - -
      - - - - - - - -
      void mlx::core::scheduler::wait_for_one ()
      -
      -inline
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacemlx_1_1steel.html b/docs/build/html/namespacemlx_1_1steel.html deleted file mode 100644 index e15e79d5..00000000 --- a/docs/build/html/namespacemlx_1_1steel.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -MLX: mlx::steel Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::steel Namespace Reference
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      struct  AccumHelper
       
      struct  BlockLoader
       
      struct  BlockMMA
       
      struct  BlockSwizzle
       
      struct  ChannelHelper
       
      struct  ChannelHelper< 1 >
       
      struct  ChannelHelper< 2 >
       
      struct  ChannelHelper< 3 >
       
      struct  ChannelHelper< 4 >
       
      struct  Conv2DGeneralBaseInfo
       
      struct  Conv2DGeneralJumpParams
       
      struct  Conv2DInputBlockLoaderGeneral
       
      struct  Conv2DInputBlockLoaderLargeFilter
       
      struct  Conv2DInputBlockLoaderSmallChannels
       
      struct  Conv2DInputBlockLoaderSmallFilter
       
      struct  Conv2DWeightBlockLoader
       
      struct  Conv2DWeightBlockLoaderGeneral
       
      struct  Conv2DWeightBlockLoaderSmallChannels
       
      struct  GEMMAddMMParams
       
      struct  GEMMKernel
       
      struct  GEMMParams
       
      struct  GEMMSpiltKParams
       
      struct  ImplicitGemmConv2DParams
       
      struct  LoopAlignment
       
      struct  TransformAdd
       
      struct  TransformAxpby
       
      struct  TransformNone
       
      -
      - - - - diff --git a/docs/build/html/namespacepocketfft.html b/docs/build/html/namespacepocketfft.html deleted file mode 100644 index c25e5c9f..00000000 --- a/docs/build/html/namespacepocketfft.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: pocketfft Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      pocketfft Namespace Reference
      -
      -
      - - - - -

      -Namespaces

      namespace  detail
       
      -
      - - - - diff --git a/docs/build/html/namespacepocketfft_1_1detail.html b/docs/build/html/namespacepocketfft_1_1detail.html deleted file mode 100644 index b4a9382a..00000000 --- a/docs/build/html/namespacepocketfft_1_1detail.html +++ /dev/null @@ -1,1725 +0,0 @@ - - - - - - - -MLX: pocketfft::detail Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      pocketfft::detail Namespace Reference
      -
      -
      - - - - -

      -Namespaces

      namespace  threading
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      struct  add_vec
       
      struct  add_vec< cmplx< T > >
       
      class  arr
       
      class  arr_info
       
      class  cfftp
       
      struct  cmplx
       
      class  cndarr
       
      struct  ExecC2C
       
      struct  ExecDcst
       
      struct  ExecHartley
       
      struct  ExecR2R
       
      class  fftblue
       
      class  multi_iter
       
      class  ndarr
       
      class  pocketfft_c
       
      class  pocketfft_r
       
      class  rev_iter
       
      class  rfftp
       
      class  simple_iter
       
      class  sincos_2pibyn
       
      class  T_dcst23
       
      class  T_dcst4
       
      class  T_dct1
       
      class  T_dst1
       
      struct  util
       
      struct  VLEN
       
      struct  VTYPE
       
      - - - - - - - - - - - -

      -Typedefs

      using shape_t = std::vector<size_t>
       
      using stride_t = std::vector<ptrdiff_t>
       
      template<typename T >
      using vtype_t = typename VTYPE<T>::type
       
      template<typename T >
      using add_vec_t = typename add_vec<T>::type
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T >
      T cos (T)=delete
       
      template<typename T >
      T sin (T)=delete
       
      template<typename T >
      T sqrt (T)=delete
       
      voidaligned_alloc (size_t align, size_t size)
       
      void aligned_dealloc (void *ptr)
       
      template<typename T >
      void PM (T &a, T &b, T c, T d)
       
      template<typename T >
      void PMINPLACE (T &a, T &b)
       
      template<typename T >
      void MPINPLACE (T &a, T &b)
       
      template<typename T >
      cmplx< Tconj (const cmplx< T > &a)
       
      template<bool fwd, typename T , typename T2 >
      void special_mul (const cmplx< T > &v1, const cmplx< T2 > &v2, cmplx< T > &res)
       
      template<typename T >
      void ROT90 (cmplx< T > &a)
       
      template<bool fwd, typename T >
      void ROTX90 (cmplx< T > &a)
       
      template<typename T >
      std::shared_ptr< Tget_plan (size_t length)
       
      template<typename T >
      arr< charalloc_tmp (const shape_t &shape, size_t axsize, size_t elemsize)
       
      template<typename T >
      arr< charalloc_tmp (const shape_t &shape, const shape_t &axes, size_t elemsize)
       
      template<typename T , size_t vlen>
      void copy_input (const multi_iter< vlen > &it, const cndarr< cmplx< T > > &src, cmplx< vtype_t< T > > *dst)
       
      template<typename T , size_t vlen>
      void copy_input (const multi_iter< vlen > &it, const cndarr< T > &src, vtype_t< T > *dst)
       
      template<typename T , size_t vlen>
      void copy_input (const multi_iter< vlen > &it, const cndarr< T > &src, T *dst)
       
      template<typename T , size_t vlen>
      void copy_output (const multi_iter< vlen > &it, const cmplx< vtype_t< T > > *src, ndarr< cmplx< T > > &dst)
       
      template<typename T , size_t vlen>
      void copy_output (const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)
       
      template<typename T , size_t vlen>
      void copy_output (const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)
       
      template<typename Tplan , typename T , typename T0 , typename Exec >
      void general_nd (const cndarr< T > &in, ndarr< T > &out, const shape_t &axes, T0 fct, size_t nthreads, const Exec &exec, const bool allow_inplace=true)
       
      template<typename T , size_t vlen>
      void copy_hartley (const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)
       
      template<typename T , size_t vlen>
      void copy_hartley (const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)
       
      template<typename T >
      void general_r2c (const cndarr< T > &in, ndarr< cmplx< T > > &out, size_t axis, bool forward, T fct, size_t nthreads)
       
      template<typename T >
      void general_c2r (const cndarr< cmplx< T > > &in, ndarr< T > &out, size_t axis, bool forward, T fct, size_t nthreads)
       
      template<typename T >
      void c2c (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const std::complex< T > *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void dct (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, int type, const T *data_in, T *data_out, T fct, bool ortho, size_t nthreads=1)
       
      template<typename T >
      void dst (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, int type, const T *data_in, T *data_out, T fct, bool ortho, size_t nthreads=1)
       
      template<typename T >
      void r2c (const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void r2c (const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void c2r (const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void c2r (const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void r2r_fftpack (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool real2hermitian, bool forward, const T *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void r2r_separable_hartley (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, const T *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void r2r_genuine_hartley (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, const T *data_in, T *data_out, T fct, size_t nthreads=1)
       
      - - - - - -

      -Variables

      constexpr bool FORWARD = true
       
      constexpr bool BACKWARD = false
       
      -

      Typedef Documentation

      - -

      ◆ add_vec_t

      - -
      -
      -
      -template<typename T >
      - - - - -
      using pocketfft::detail::add_vec_t = typename add_vec<T>::type
      -
      - -
      -
      - -

      ◆ shape_t

      - -
      -
      - - - - -
      using pocketfft::detail::shape_t = std::vector<size_t>
      -
      - -
      -
      - -

      ◆ stride_t

      - -
      -
      - - - - -
      using pocketfft::detail::stride_t = std::vector<ptrdiff_t>
      -
      - -
      -
      - -

      ◆ vtype_t

      - -
      -
      -
      -template<typename T >
      - - - - -
      using pocketfft::detail::vtype_t = typename VTYPE<T>::type
      -
      - -
      -
      -

      Function Documentation

      - -

      ◆ aligned_alloc()

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      void * pocketfft::detail::aligned_alloc (size_t align,
      size_t size )
      -
      -inline
      -
      - -
      -
      - -

      ◆ aligned_dealloc()

      - -
      -
      - - - - - -
      - - - - - - - -
      void pocketfft::detail::aligned_dealloc (void * ptr)
      -
      -inline
      -
      - -
      -
      - -

      ◆ alloc_tmp() [1/2]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - -
      arr< char > pocketfft::detail::alloc_tmp (const shape_t & shape,
      const shape_t & axes,
      size_t elemsize )
      -
      - -
      -
      - -

      ◆ alloc_tmp() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - -
      arr< char > pocketfft::detail::alloc_tmp (const shape_t & shape,
      size_t axsize,
      size_t elemsize )
      -
      - -
      -
      - -

      ◆ c2c()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::c2c (const shape_t & shape,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      bool forward,
      const std::complex< T > * data_in,
      std::complex< T > * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ c2r() [1/2]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::c2r (const shape_t & shape_out,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      bool forward,
      const std::complex< T > * data_in,
      T * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ c2r() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::c2r (const shape_t & shape_out,
      const stride_t & stride_in,
      const stride_t & stride_out,
      size_t axis,
      bool forward,
      const std::complex< T > * data_in,
      T * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ conj()

      - -
      -
      -
      -template<typename T >
      - - - - - - - -
      cmplx< T > pocketfft::detail::conj (const cmplx< T > & a)
      -
      - -
      -
      - -

      ◆ copy_hartley() [1/2]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_hartley (const multi_iter< vlen > & it,
      const T * src,
      ndarr< T > & dst )
      -
      - -
      -
      - -

      ◆ copy_hartley() [2/2]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_hartley (const multi_iter< vlen > & it,
      const vtype_t< T > * src,
      ndarr< T > & dst )
      -
      - -
      -
      - -

      ◆ copy_input() [1/3]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_input (const multi_iter< vlen > & it,
      const cndarr< cmplx< T > > & src,
      cmplx< vtype_t< T > > * dst )
      -
      - -
      -
      - -

      ◆ copy_input() [2/3]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_input (const multi_iter< vlen > & it,
      const cndarr< T > & src,
      T * dst )
      -
      - -
      -
      - -

      ◆ copy_input() [3/3]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_input (const multi_iter< vlen > & it,
      const cndarr< T > & src,
      vtype_t< T > * dst )
      -
      - -
      -
      - -

      ◆ copy_output() [1/3]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_output (const multi_iter< vlen > & it,
      const cmplx< vtype_t< T > > * src,
      ndarr< cmplx< T > > & dst )
      -
      - -
      -
      - -

      ◆ copy_output() [2/3]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_output (const multi_iter< vlen > & it,
      const T * src,
      ndarr< T > & dst )
      -
      - -
      -
      - -

      ◆ copy_output() [3/3]

      - -
      -
      -
      -template<typename T , size_t vlen>
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::copy_output (const multi_iter< vlen > & it,
      const vtype_t< T > * src,
      ndarr< T > & dst )
      -
      - -
      -
      - -

      ◆ cos()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T pocketfft::detail::cos (T )
      -
      -delete
      -
      - -
      -
      - -

      ◆ dct()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::dct (const shape_t & shape,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      int type,
      const T * data_in,
      T * data_out,
      T fct,
      bool ortho,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ dst()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::dst (const shape_t & shape,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      int type,
      const T * data_in,
      T * data_out,
      T fct,
      bool ortho,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ general_c2r()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::general_c2r (const cndarr< cmplx< T > > & in,
      ndarr< T > & out,
      size_t axis,
      bool forward,
      T fct,
      size_t nthreads )
      -
      - -
      -
      - -

      ◆ general_nd()

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::general_nd (const cndarr< T > & in,
      ndarr< T > & out,
      const shape_t & axes,
      T0 fct,
      size_t nthreads,
      const Exec & exec,
      const bool allow_inplace = true )
      -
      - -
      -
      - -

      ◆ general_r2c()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::general_r2c (const cndarr< T > & in,
      ndarr< cmplx< T > > & out,
      size_t axis,
      bool forward,
      T fct,
      size_t nthreads )
      -
      - -
      -
      - -

      ◆ get_plan()

      - -
      -
      -
      -template<typename T >
      - - - - - - - -
      std::shared_ptr< T > pocketfft::detail::get_plan (size_t length)
      -
      - -
      -
      - -

      ◆ MPINPLACE()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      void pocketfft::detail::MPINPLACE (T & a,
      T & b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ PM()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::PM (T & a,
      T & b,
      T c,
      T d )
      -
      -inline
      -
      - -
      -
      - -

      ◆ PMINPLACE()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      void pocketfft::detail::PMINPLACE (T & a,
      T & b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ r2c() [1/2]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::r2c (const shape_t & shape_in,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      bool forward,
      const T * data_in,
      std::complex< T > * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ r2c() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::r2c (const shape_t & shape_in,
      const stride_t & stride_in,
      const stride_t & stride_out,
      size_t axis,
      bool forward,
      const T * data_in,
      std::complex< T > * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ r2r_fftpack()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::r2r_fftpack (const shape_t & shape,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      bool real2hermitian,
      bool forward,
      const T * data_in,
      T * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ r2r_genuine_hartley()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::r2r_genuine_hartley (const shape_t & shape,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      const T * data_in,
      T * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ r2r_separable_hartley()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void pocketfft::detail::r2r_separable_hartley (const shape_t & shape,
      const stride_t & stride_in,
      const stride_t & stride_out,
      const shape_t & axes,
      const T * data_in,
      T * data_out,
      T fct,
      size_t nthreads = 1 )
      -
      - -
      -
      - -

      ◆ ROT90()

      - -
      -
      -
      -template<typename T >
      - - - - - - - -
      void pocketfft::detail::ROT90 (cmplx< T > & a)
      -
      - -
      -
      - -

      ◆ ROTX90()

      - -
      -
      -
      -template<bool fwd, typename T >
      - - - - - - - -
      void pocketfft::detail::ROTX90 (cmplx< T > & a)
      -
      - -
      -
      - -

      ◆ sin()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T pocketfft::detail::sin (T )
      -
      -delete
      -
      - -
      -
      - -

      ◆ special_mul()

      - -
      -
      -
      -template<bool fwd, typename T , typename T2 >
      - - - - - - - - - - - - - - - - -
      void pocketfft::detail::special_mul (const cmplx< T > & v1,
      const cmplx< T2 > & v2,
      cmplx< T > & res )
      -
      - -
      -
      - -

      ◆ sqrt()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T pocketfft::detail::sqrt (T )
      -
      -delete
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ BACKWARD

      - -
      -
      - - - - -
      constexpr bool pocketfft::detail::BACKWARD = false
      -
      - -
      -
      - -

      ◆ FORWARD

      - -
      -
      - - - - - -
      - - - - -
      constexpr bool pocketfft::detail::FORWARD = true
      -
      -constexpr
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespacepocketfft_1_1detail_1_1threading.html b/docs/build/html/namespacepocketfft_1_1detail_1_1threading.html deleted file mode 100644 index a8f72093..00000000 --- a/docs/build/html/namespacepocketfft_1_1detail_1_1threading.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::threading Namespace Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      pocketfft::detail::threading Namespace Reference
      -
      -
      - - - - - - - - - - -

      -Classes

      struct  aligned_allocator
       
      class  concurrent_queue
       
      class  latch
       
      class  thread_pool
       
      - - - - - - - - - - - -

      -Functions

      size_t & thread_id ()
       
      size_t & num_threads ()
       
      thread_poolget_pool ()
       
      template<typename Func >
      void thread_map (size_t nthreads, Func f)
       Map a function f over nthreads.
       
      - - - -

      -Variables

      static const size_t max_threads = std::max(1u, std::thread::hardware_concurrency())
       
      -

      Function Documentation

      - -

      ◆ get_pool()

      - -
      -
      - - - - - -
      - - - - - - - -
      thread_pool & pocketfft::detail::threading::get_pool ()
      -
      -inline
      -
      - -
      -
      - -

      ◆ num_threads()

      - -
      -
      - - - - - -
      - - - - - - - -
      size_t & pocketfft::detail::threading::num_threads ()
      -
      -inline
      -
      - -
      -
      - -

      ◆ thread_id()

      - -
      -
      - - - - - -
      - - - - - - - -
      size_t & pocketfft::detail::threading::thread_id ()
      -
      -inline
      -
      - -
      -
      - -

      ◆ thread_map()

      - -
      -
      -
      -template<typename Func >
      - - - - - - - - - - - -
      void pocketfft::detail::threading::thread_map (size_t nthreads,
      Func f )
      -
      - -

      Map a function f over nthreads.

      - -
      -
      -

      Variable Documentation

      - -

      ◆ max_threads

      - -
      -
      - - - - - -
      - - - - -
      const size_t pocketfft::detail::threading::max_threads = std::max(1u, std::thread::hardware_concurrency())
      -
      -static
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/namespaces.html b/docs/build/html/namespaces.html deleted file mode 100644 index 653af8f9..00000000 --- a/docs/build/html/namespaces.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - -MLX: Namespace List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      Namespace List
      -
      -
      -
      Here is a list of all namespaces with brief descriptions:
      -
      [detail level 12345]
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       Nmetal
       Nfast
       Nprecise
       C_numeric_limits_impl< bfloat16_t >
       Nmlx
       Ncore
       Nsteel
       Npocketfft
       Ndetail
      -
      -
      - - - - diff --git a/docs/build/html/nav_f.png b/docs/build/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/docs/build/html/nav_fd.png b/docs/build/html/nav_fd.png deleted file mode 100644 index 032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S diff --git a/docs/build/html/nav_g.png b/docs/build/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 3872c4d6464b0f1b6f26feed42d8e5af31f633c3..5fc4d431d2b3d3a8c48e87f24f7a9a7381ed03f9 100644 GIT binary patch literal 26167 zcmZsBWmFtdvn?{XyTjn_9&~UB?(R--cN-kS-~@MfcPF?62qd^e@ZiqNcjec8e@?He zUaL-ZSNEx1yNVj9;bLp&<1X=?>^vvM@EbF#E@13Fs+J#6jVf!20ktbqTn7S4_?ZdUH@ zR+d0dcRME=px+leb2en3)%9M3=6$|oy2m<`BnOdhjBYQ@9urG$3vDCy$|(hPht%KN zFD+&roakw&T*;<6)2Zi)CJ02{Ff^o~JjGhQYGxJ8_ds;|ZI`hG@Ff42{*O9=r5fh! z=Y;zA*U!xvTcY0GCtG~MFLx^$3^bbW_j8#otWRgM&fVIOjo`MexQyf&ewD3(#mhcw zeu4hv^t1KBeRb0u1FggxoN*q)s;v704>Z+I;bSKovzZQdfdRvhkF9sTfsbz?Sm~a0 z758)1Df2&(q}u&xf2{)CM8c|?PX21~{#^P2?0>t-Xg9j1(p_o!U;I z2{sG*3x?^f&R_-VwIB%vVY_Xt1~VNrG4&Ie&rNM~*^5auAy@n+cblkdsME^eJu33D z)S`}v@Sjw+y4*vbEr(!{t>hLuRQ;4cK0)0b4%N)gTB_!5tvBQ7#Fu>gZO>CnPi?^y ztz{xx%oeUrY^qv(nA1x-$Z~!d-N&*DCR5u9`+WXyNtk>Dt$@yD<+P!B*Cg3~<1M$I zG#whwe`T#~=NpvZO5Oi#Il^sBLPtmDu*CTV5 z{~z=I238{|R>hde+-jd@lLcp?0X)+)Z+IHngWNYJ0c39^|NMHmDVb_?qdh2mX=C&8p)MUl15GB3lCIs*Z&TuSM3v zCapk1<}Z1L`z)HKb|9@KYlmS~Y&&@t0V5p4I{2?=8hrH_zstV>^Un=N0zLidT1aN!Aq}dTe01KM@+9^#}~1V@Rk}v1T|UJ7k*v z?OKbJui974H7ZEgbSV1zOVm1iLm zqt1P<#+xe)3cM7*2c7ShNWEj_7~`Sf{%V@;AEog_C;U~y zs0ZnCqd4kcVEc~OVf9f2@p3KcTLRn$!(n)oYGe$)H)A1^@)MJ^_Q`$%$@0Z3!uAv6 zm{MJ9W=WG$u3Jy0@Xd)Q!rTD7wTU|>YW^mN&um|mgPt}^AEA7^D^E`9rP70=l^%vM z#)1{qE%cx5nRuirr5_INASR*6b0a}p)3NrqACKnugpTA~2aJIed#=oTS(YYabN^_6$Ddxc_A|`SaEHCjgJ)N|R!2=nE|b zzDXfd^E5BN(ez0ni#=vaof>dJf&#chhisMMG9*T8^$(r_(`9@@J=m}j+igZ+zUf6* zp^>unXZL;mqyhLjMakjk9owkduZp~#X^=^%WZm@Ni3{mRodefn z<+q{Gh(6>v!-P`%UoSIX#~;F+Yw9Tf?g@Q6J*8H-`l{EgvrzKsMfQc_hR9)zB$za4_#;6${`51tO0qkog$32ZQDxxLxH1^rs(9eFkMnKa3t1isSa>$0J} znzt6Eq0(L+!704i4HjN`Z~bkeDn3upnDSR; z^s$Y}syXHB1Q3LJ1|!Ne^j^l?mw-E3g}?TE7n?yAxX;16b3L|TwhzBdU}oA|aMsa0 zs`iyf?=zKlB<=aGunJy&r(I&k^o|Oo4cQwJdLAbhkbvt|o}cVbIdb;WN*EMo53;wU=_lo6TQ>SiAhgUr_DWk5?_oKGMeYC0H4^%{ z-^lL$C2RXH`8$(>=pl-+^k`Ji_iEe6f?!`fvi=M2*UULTJUogUr|N3LuE#-7o2`0V z@`uR!iW3Xbzj%0oPfk9NEP@JGcBWF8Q1d&?!@)B5S?96ZOzQF?~}6dV+AFGZywXas}hMrxF>S>2pB_ z&1vZ-!tEyOpP+PhbG%#ao@nj5@ZKJgvpP|7h1CKxl5k$8HqKu#-MsJy9vR~PRqxNw0$y9KP7c!q6oRpAM=Hd$hINVJYQ=kMdg-ege3FX%CVaz#@=Et4=5WC z5pN8B*0o@Fz+h{u#pH7}^<(*j6;Jxv)DQrp$%foTz}sHqWuoa{r0}u__uhRO862IJ z22=bF8{e^b^3{+6z2xGezMEsi#hp=9d6BMexGy^Jfs8d~#89;p(dwZK{AP%Kft^Ha zYto*aoOF_AvOjkBTcN2{o=2;*(xLmOyJDGL)I*S&a3@3Frvyi{?laAM`%z~YEHi0g zE-=k|)$ySHaYuK?k1IFV{fw8V&yp3~sVyCi4h+#qIzQ$;L~J{eZ)cf4D@GIY3Vxgsu%)W0S-xg`3hfvJULKnOeP>FN#F{OGTMZ zc4&+Q;MbORzx@3BMPS8)AO>9qEH&>|yr{Bu*WzB4@UC?QobIHZ?h;%fhR&{9+tXx# zge7g<5`w2$!sj&OcF}50>mviStg3B~jJ2nV!3A_xHiSn#-KUjEvcU9Pk{ND&cO&I)_3bps)$3!6}rHJSP((Up64J^_(kLc{OcUE*aHFt*538k@S3~?$i<|zOPYE{R1$vy3aQCJU#^e1UsYaFVvxGzxj z1@ihxt-Il{Gwa}3G7!>hx-j_AU@sewMHr5j;^UCyN&j}2>3<8Wi{DDj_=ho>Z(2^X z73v~PQa$bN%vR1cy_$YtNOQdxf}x240L!0byb8;vH4` z(37;#qsteg*5yt3E**3UA!$=X7bJE@PlYvbq;=Pbx}7v%Xk(qI^QVfMvk3Ze+X-jc zBRK66gb)JZ&^w8vS_IVyE8WsvGD+A~8$8H#JK<~I0^+V)6kopVfZ0+&}`;O32M`Q117R`0*}I-bPYE zY+tz1b0*E(&;_yQTaotl0kqUVBbT(dlCSC~_vY0I#DoVVOd_P~X4Lt~P6EY!g*3|_ zLc}v13Jr33!Qy`nNzELW{thDu95cI&-wEuS*<6-J4OK&LIvbY8akC`qDoaoyF#5lU z0^*x)Bo$97=T^yF^LAWOD3w{ZtFMit-;SFqc&l#&c1{59d?^l|-7Eemr{99@x-aG0 zg?>#Z(n`w5CD}1V3zA1fmYss8cnci+sBw$~BP_8nv-#p=jo?S;@i|S#zqMyjXO?b| z{>YHdZlE^D^sE*!-)_+$5^52sd_$aIDzNq+r|ll<(l%PoiCb-4*9%Oc6~S-4IjW+u z7D|HsFAxpQR@3%bs%m|RL;HLQ+M6+F0RaA%-`0@LoKyQ|_&4Kwb`!n%x_c|M`F^t& ziBOn8)jQ^lLIaL=(v;WN*4pkCJ%ZNqfX%kjnJNh{rfQK!<)6+cFYR~tQAp&+v{gNC z>JMBcRx_jYBi>&LiUQB=Cq+O3aOa%r)tAPRIwnenfRU=jLbVJKBN|5qsne|SSJQMa zcPSHm$Dywk`#($X|1C0B0m#P%_tZ4iAz9~?8E43+`ks33Z1%FJ`<@K;DWzz%Y7@-l zIdw>ED^SkHBjb#jk&70;Cr*7-A~@Ctk_HUN>uTid|0v+P@opc^b2V~27oJQ8T6vP* zXfBu8k;WBmmY@h55g6A&o22+H@@7Aqde_gEJ|Z#nyll1(@2C zVfKoJ>g&P}0W;O7z<#LSUtuqSjjO+dn1p_Q`zp7-9u8v$i_aO;Tf;hd7zE z-shO6AS_4v$BgAYtt}Z1lRo1x;OfIjTAoY@M8pRRsls3Mgw zWlURZsBcf5S72GOj6qaCInz#-E8`Zx*=_$DM)#%B(k|lN1>hNKT(90+7vkqJGmHjv zaZ14L=?2Tag!Y5u3y(XrzhSf9=_2i^Tt*GGQOVbjZX+RQZyYU2b6W??@E;dtOkob| zi+FCs3p%JPEl0O*gMPa8g2Rh&%yI-ZK%hf-*%uY}fb(h60Y}63uF^Ie% z&GZ=joA>ffa}+|jiu~L3jGj5nVflY|ulfJ%u98kIE~v&y6WJ#5&-_BtD^&%oI66^E zy36o_0YK1l`uHI1uEF@3{}51sP=ul%&1Os4B?tFm{-f<_${dQ6b;2_zdPS(V2M5zz zhC?%wO^fK+#p>81?dj4hsOyC883|i*P3#LtmD5n>2icKzIrDyGX+7cW%`lH9Ng8A@~#dDi5f z)fpmE_q*oqPqJsp=j9|e^|24L-}9qUFNM03>5zAmIHm;W#U6NZO*`~xHdsroa{1x{Cf+D13dv8u0!?`SC95w1 zms4g=?6NS6tsw`y1ODdj*^-E(PRb)P{_1TX3{wj@Lz#q)MXcb?pSGQ3r(d*xaD2|M_YuU?3hU(ubN9Qj;EGD{-*stCx z_Kc3-gqTCQnggtECfV(l>)Eg&r+r&(%(59Ngy=cBDEWHnvN_-p((Yl#7s6{&p2HhB z+uMhGawx~tu?Cxg1ABXRr}M+&4ODrPd24;~wBcz8F!Yc9fSd1jTci9YwU(0^VfNIR zp-aXPqmpc)ex{@N>k|ANuSA z&F3va5vM#-FovDkU4T{KCa*fE5Y6!Ir&UUyH=|QTOqV2n0xQATCe~dpO156{tKl#6 zu6;v%Zi_#1;wy9zW~?)~#wT1KuGAc4^4!L0(>EQR8ZlG5>Rri-l!j<9Vz|(2z2P7x z29*k^zVKow_UokvkKk=##XFq}H;+BgtrSu(9@^=Rt)k(S-<=S^hC*_*^YX9A7G5vq zvDOU${|{{-xWspJ>1yKQTCe~H>%lgu&k(stNTXxTebsbxHSP4+$k0>^vK6W(s6|$; zEXyl4jw35DM8#ZKo^?X;@nebo7VHl&x?$v5eC_&1#BJWWa!Hw9dJ>~Ms;?HK-WS`O zq;Y7H?m)TMr|j4tAcEnq+@<5!j^WO#euTEO&ZODHbg8;AW{Y3V$n+(!=X>HJtDgIG z28S^yTfOh1dVtL{NV)`N^)2o61Mes4ALoq953Z6aT{BtHLPL&J@5%>Bp17Y&6L(!J zkFH&`4j21>Ru;=r>tC31axXIIjpi@v4L|BD4ri4glAhTmyC8TqeFj0L5_&>EU$C-9 z?N1K9Cd zlpbPWv+5Yce;Ac4qhPY>`^QfO;{_@_t+E47L;KlQX=^`D_#Uh56YoY)ew$LRBCx7C zc`HrSF7rnfX?$*!L|QU068T5%Ez$jn*6buAoc0xE7U(3+Q6iJnn+-8_;%tKY?`n7W z*%u!E0iAVw-`pkb*(5H3G!XQLUhhlaAP_@FYi%+yd}k0bovzP|GsU1H;%V{29xvmL81=KL*eh0$%F*}fn>c!g3b@VJCIjrqXr@FD{m9}YjrxL**U4Pv9 z+Q*_V2pyFb;KDZu%W_&Un+a%bea5OTXj8GMYS5wAIiCZIX~rRRE|28#Eu8jPcE*~e zJMn8Dnf&92?4L)W%Xqd6=)N8Pbc@JV#c&_XAS*F!`;Jo8UawFMs~!lN20v2`OjY&( zld+I_TMy0WMiJBNhmfN+Akl0mPDnP%j6aj6^6Jp6)UskumZCPwKFSSyHiS_{LVLU3 zR@z^$;Z2riDOji@ziHG`K&X4ratzTg#Pzc$<}DcnQ6eg;L`n>C)e)-=9v3WrXbpVn zD&+RDlaZt?Yr6}ETG~X%fGDoPrm2Y)h%gn(Xo}bUl`t8lnOZHTKI_$Ds6n>(UaJYW z*KF%&jtP*7*R!1=D9NmXXPWjf(_N7{Wpr*PJ3Zfjj0Y1ceXta+PytJk;C6l;DINf< z9JuJOqzB6sqX|cIs=glYY9qUE;yN&$MfUS-f}tDQXS)dpb1l%Oku1g!ga@kNjh2#8 zvKoFnx1CsPsu^tD;BU$)>fct89&U#-hZ~0OhNGjd%hp(tzK3BFAenmoT?g(pG zD{lB)-7T;Q09wBwHeJ-sSw!HV2XQj5b}V-RI`r<+Qs29lj7aAI(XW|C z0rVCQ2xD`L5W<$*s)~hDplL4U! zbQ0!NSS?4+F;?jWyemK1&l<( zIDV|)o)T11vYOEJ1B%Y`+XC`r1fJnS7;9s9Zwb2qp1UA)8VVDf?%#)vqh1b5b96ji ztra4dqSZvxS#1jLqqrZBl!hd=;b|@C+KXA$W7UQH|ETBoFg0>O-l7592J`_kAEa8- z0X;lm zbDTYN@)3J?9&#_r%mr|`-gOr5H|osVKcqVZk=b0d);6Wt&>RNL=c(Uwez|C@rkVMU zAaNJ)+kg7D`>&UzO0P(jaf`}K;$;@cW;dxG&_dL&)mg1YtMOP8Yj*gk)=+`OLE2(S ze81P+(3M1afs)myZwm8%A+)^Ib7tmflTI45zY54-rhDumhNd}9nAxoFV7F~NekLqv zEo5GIyx1q>tkJn|IUPOf1dZcVJ+$Y#^fRv1N`9_e{*hKY<0@r~9HL`*A z!e(2W$>b>Es^)-v>0E-dR`wRZctOJ(by9T>c)xl-T1pG7R5BSsG_T)4B`s738F~&+ zFiE(QAs#Vc&fWpL$*`^47ooNAkjtuWfi>#Pq5>txG6*`sGL%2N?qT1{Hg|bWXj@d{ zc{}*GJ`)z^{nefG8&bj0$S>q+ zU~+qvRi|+>mk=94kuSl5?C5GSwu7c2?c`C<3v{W@TZ}n@YiH7HfoaJ;u)-y4M^>=;z-5bM7t z3I%+o`MwGLQ4>67UtviHMN2-nj{glC)PD}L$Hx6=L#Sk&e;4ZT(WK>rtG>t>C?3M0 zW?-MdN2#==gU-&fo$#fK{n_Nk?mltPZwVeT;dzrt< zi|f7bn9in@V0GEgpCd_?Z3oOj&p*&nKCnSv7{>>oIWu7ZoKefZ_&gFq0zVirx^Ms+ zn`!Yxn3sv=Ie+VXvEI0-@NXDw0Cj(C?mSIAFo^f38+z6SL&8$A7OXh3NMn}hl?$MT z{h#9Y0goKLF)|mU(+x9)G6sbNT$1B5UguM&-K&%x~`E22EiZ2>+oMEKo*at zaN4r8mXRJl{EPM09XMoYl_h23FKa!2D-@7kV5q2^o=p~ShPyDOdWHa0;SWi-z_+h{B;hoKcMQ! z-mSCf0QN`tb_Q4aDp+Tdp>JFPD+Q4HeVzuz)QY;2$y3uRx5Ti}>ra{1?K($|oO0pO z_%+smYn{6oMci#YMT}=5>~n9}X|uSMFPICkecL@VK(i3!dDT!PCMn4Xx{CkwF-D)> z9RzXCeC0+AuJpa|MSY+|GovslLiksEDvcWwS~7kN$&)58g$q-wdBkaF*cmtg7gNuz zn($#uXDsW=Y_W7BOCGs6;|3NG#?OG=*6o6Ozu5FPCT6IGYJ_LpUDP0wKOG-^yW?v? zPPFs|2fm5$_e;Ig#lSHv>KhW~2v`MW>1wgM~6TUw=%lTPDMxY@jlicHoddI5|{g}H>K5)6UIBfjFKz(2e zlO!Wkn%=pna@^*J(@EJzArV^|oSXbKFRQlO* zD&{1e?T)paX}xQyBe%lsRP)HIYN1x6b}h!fd&#e8LD@5}s!1au0k7}Oq$!g7!icE~ zp8wAlN@fV(qxh}9GJ^jAnUv}QFNdUZq+z50$~R~+0m`6x$u=GUU z@@qiH09u2%@B{q?P{7KUgPta6{2jCL z*B(GRgJ_;yQ-3LGxPq9X=?~fz8}WcMrExRDC;d#qs82~zJA*hRM>mIGH%aCM(n8^o z=Q+McT;vV=Rz+Q_ZofsQAC=)jEecvVquA+?J7sXmj=vR(-_~g{AeZtm)rrci`7w=< zY0C4DJB)Bxl_f$WwOq-r`@Ph$YFy$0G5?&JA_@Huu((i=d7&Hq(QXb4+Qi1M0qm<+kEg_KfZDV8h!iY~4+HGT8WSUM>=gq@aLur}lw;uaz z#Ir8zF9Gvw#N#f>y4Z$t)srNqd~4^01Lk)UbmH>JoB>xFMXvRhXjj3eoF5#}cmC9c zjPg0o-5EazQ9NM=?@)(z{UTxVlj2J~aSyy!whuSIQu#Fy$7nj3K^Wj6HZ-wL&UIg6 z(FJe(aDRmD2#4>4eY(xGCsu6Co7}IM%^>>)OT_l6qiYu`)T(1s+zZ?*3u1(3#jFdr zb(TFoN?J1hroO$~P6A@(Smh?{9Sp5ff!bXXnzY??!Wj?q5X>sXi; z^q`kXTQ~KFkRQ9{BEn4jq(wiokRw+ug=@;CDqy&a50Ub4u$O$g_165-KtkY5+d9vR zu96|0%ckEb^TVX+`dY|djX3sH+zSu|^Y8o_K9a^1=na9lecT1WR1k1L7uqzjtG7cu z-_A{fnLc`#NNH+$b<1}xAQ|WNN*ZVn1iCP}Qi`U~IMc;U5=4! zI7c5Go1M{fMYh!j0N~17y%7NZ?jVnrlqZZ4#iN-l+>uqU^gxc3jHy`B(vw>GTp|O2 zY`~c?WQzytq(*r5bFQ?E=?6&v{l1g+^x@u?fQWUy+k)o{#=R3R1_i}F=gitdSgZ*p=*J zk#=p)>>76Isy6?OS{+W1EA!t05`*aS8$!qb4hL2l`{UfT%!bXG=S!hvM0S_C2DJsYM0I(3_+2XA&afA%2Po{d_mGj$}Sgfoid0 zUnMVlgGlD*gpL@CdeIrW?K>e%LrbOOx7gI?^ZL>RRC}`TxAKWZk0}*c-9nq%0(~aF z@SP+Zx<0PGmJ;v{u&($`dC&ygn)Mt;-EVg@A7P3{z!_{1W`5i`=s!`jTD&W zZq8>o(cE>cRoP`bx!qjgJ|;ZU4DW9mp&*~5Z)$wA*)a^a;j9!9_F8_WsvgVhOSDGT z3ud1AQ(4VecDDTmkOKEi0&~#*R;j!20Pa4RqJO!YIz5L6nLb#{2QD@ zJFv4gJXdg`D> zqLGWVluA-`>ly9rZhyGAIM3o!qs`3>CT4uBNuCeXq3uC?)^@#d0iRQh)W9>CNtaoU)X1}wNtaX78E`exV{3RnW$J6&5oyG1g4 zY$LZC5}(H0n18dLI7jMicWsfs&Z{L(pS#G|%HtsEa(V!7aHHbj9Z&>u_ zPvo=}h0I&Ud=ZO_#rPu6E^xtl8Y2EFy(vDrJ$UIoH>&Y;fKez(L8 zBUTs{M+rZ-jR?!lZJyFtFVG88Z&9rtdB2TF&T{S8=S`Ik-piNL8Z^*5QFca^`b&#)meU5=%Z5S-EFTsU0X0&3T*9#-qtb%Y~ecM{gBy`^FDMGk zJVZ4w@-?ZPTNR#kk1(gIdX<&`iYNnfoPIL(17p!}FLNBq%wU=1s`qk7NmQW{#Et!L zreYImNUBlXChJtvZH0$S_i=~M6~(gXbQK%E_Cl@6ArtH8tZU+oa(l1!<)?y+Rtv`K zu36?7tki0A{obX-80J-<(|V63r4tW-;62AES(C?7{nDQ!@`21S0=sUZWvI&E^vtyn z6DORlLe{kAV>RT<4G1dwjy^xdPulvrE)Eu*_T0P1ENQ$^*3N{Y|GcZl44DW%8EcaL zIQD1crJDyTs^Nk?m0mE%pg5)7ni9E3a|*pM3NPsjKkf+c`{@Q-XJJBvE;;MSKT5=w zERfz8k9FsM4u1&0xf6f9&iNMX5v?wk+O5K>q-T+EvbG2WKD?Wqn3){0Y>n87^OPQj z6tv|$^$=&NdxOubww=ZLweH-U!Lm@)gKHH1-UtY0)Ew25JMd!D8HEYg)>)JZM`2jQ zhsIM~hOk7xN6G^=Fi2qV3rGuze1n~ViOFYrIf-1KQZ^-sh@#R)-3Ox>E*s)=Qm7vm zEhO6+xiZyugT4g&xw!DlU~v1bqkpJiBz#0}o6Cf6SlkNXJUFF4nqY8!Ov$~~>p8v2 zNJJe=P;@B%_^`~JmX)RGDzJ{##mN%Z8=?CSWfSYb(~Xu=+rSC!*MpMD z1C)(1S7UjRJ9U+_@TDO-Tqz^ z{FOJ-UvmcbiiganVEYk+-{0VmoyCTow;HV5VRPBhj2z;sMY*sEA0zYg>s;QKKdukY zl1g@0tJmClzYB?e`u5`dmj7n`&G}al#%s87kD0>ZqlO7FqLk2=TrFw-@*w`#izLI)`A zGO<69J3vVM{zh!LbrU{3VTz2EU)U!ML4`i#GHPqH!g-*NEa)XN zZQ(`~ZXY<%27kPCJM+Aw9^5Nq2*H-+rF%#Vg%MT(udBwP!b8fR| z-;ueyO6aG}qwwWA!9Fo8#r~igHTp(wj9QS1ig<&ih0UsZ(lxNpBJ%s^D8Y@D2 zA4R_e28c|mn`0#!^D1Dq{veqiFOoNtW%3~fwAiIvjwe`7~CNZ#oJUlfV ziEu2GHYWd3dR!9gkn^u^Rs+p6p%Pc3tQr`=yt}k#m-&o@R5XtwJtQrMNUMfhj*F0v zo$TwXEI`XSgQUxG6P9WX#udJWLuV-tD~*39pDJRIFJdWe%)nWAaiW_$XL3B_UpMXW3Mo1tv@XOgfd)vFz1zGOS_T4sjMuKQjai zSRlw6FzX5%oBy5j@mM%oo#I4W9Ovc+%ncL#k_vQ8mo+8@=YYSl`zT1C(Q>x%R+wQE zNJj%c7r^=m?;8)Aj(>i`6lU!x)qQNFFdxiRiKD@|mar6-XNdovlmS8jhS31*xT%Il zqC(jY^oXr}#dqiTM0xgDlm~Zq2MYcY#M8n&Q{FVwC=C<7THzlE--&C{5Xv)Z&awj@ zhjT*03QQDGFyaYH1PJ!yV7dw~n}-s=$%Vy_s%?X!62o{VA&rqHF7Q9iIgAhEaYN;h zD|{iy+!_q7)`h$bp+!gxmto`W`t7U^rCTIN5EBS`XKSxFKiE7@bWBHcAF2@-!Qy zD2+}@zEm0A!*MNmhwaiy?z1N0Qeuq+X2Uc*a)n_NQX_BN=6L|ZOj3PC#Rvlw#Adoy z1+5)SHeR`uq%Kc2u)dxs6$8-g&LBmusfVl zjdfS1U!eK(BF1I1@jwIS=jwwM;E|;?%pU>)8Xt^#k;2viNLslZN4g|{_<6DxgqjT}jsC-x6toVH#dsvgLC6+J zm~5&z*CY-$2K>gsq`8Wfj`jG8$?6uZk8EphhmSMPP9=vjU?FLv;2R70Oj&_~azNNi zgV8J}9+@m1gpI&y2@v2=gV03qBeNHpVpXZk=p`b5Ev{W48D$%h)!UGbBJRSG|RIC!3*9{^gCQ=$o^ zeFn9XA`Ob)wka@OxcfigM!rk$%Tf|zJX;O;KwS2Z0Tb@``0O*KIMjO~C0n~h=5JS`f@O_$glX!&{VH?RehMz>vv}(8FH}$K@o~;DABtxmIrE)CTXIl>hKs}Y&VZc+ zI1Yd#m`MjkfFj7u+yjX~HJ>*unMaX|2864j%Rs}#NXg+`$$Z{*4`beMKEvrXlg zI|BRI0iZ1bJNj7?AAlvy>v&WaT1PRW;IES2U$#ks#`J-ih?KjP4K-v&5MtsSi8!1z#j_ z6-XWonLb!oDQF5JhZn`KL6p|rhcLy;(XNz?Yj(hY!Hlxc31?vh3)f2bN;UX-Kl>$>GYUM@2-oWkeacU?pPr>Gos-4gqK4L}0 z^F1V)LZ)d$k=yhzBjUve5TQu~5yBg^S^R#%wUVl*97^*b-L^Ukh8A_Z3SZN+1Z7wPGRV-hesb8dn8moMET3et~PZ zk%~a|Nm$%IUEF#$Ty6x8z!m)uv%oq7lK7bLHda$^seLO(jxN5W?zZeUz9jnUo%QaQ-VZC;YqC4xk(d{H@4qO}zbT4<5DlR;}9D1fg zr>p6F%5#KRVq^3(B@L4qrlc)PbonMbHVd3LmJd=Cc#&XU{F*1$jdH+l;1Nusn#^&d zSG5}pL`6g?=!4Uo$H4K)AZl`^+a`j$!BGViJ#ah#-Q>k9LsZk2CABFPtUWm_mNIf(0}@Q9V?VD~MmwV9rq` z0QvinD;o$r4LNo^;|F5G;6rAXMJUua%X#5f!d=*XVaFjv8c!CTVViWxacut}==#vc zR7qkI%0c94CMkTIyyyYE2;%|s==mOjDQNWHwt~7fa}qEfuoc0ct`VM3lRm<;V|z25*C zLt8ya9G>8vnWnNj26k1nd+04Orul#=%FISo0Qb3ro;VY#SvwR#6bV>kZcq50vBcO8 z-HA^XMa>n}NWn6UDx*(BrS{HB8o4v`dJ&T?Y|9Gsq7s&pyso&MV;(yh8Quv^hK5{X zKF>#QprE>{6@x|>bz>n)ypaKj0JMKceO50j3q$;cfs~HV5i5l`*M$4s1)fL-5yWsa zFl?stxL9CfK66clVTKxVtQ`>yLN}`*0Km;UmKUnT@{}@4*{C50N1Cbci%x~*fYQk+ z2a^FcCQ|lBtiUQ2Y5Ur*nECjw@o>e)kkA>}gL(}@i3J#81gTD2l}d+MZp zh!J*!DXNoV37~2wj72;QPgqWaw#ItF)Kor9ai#-PS%g9mvD~#_Uibj9lE9rE%p)t! z&J;p39zz=)TMX1mVFrJPLn{;l8UAbNAwRMn=yIS>Xee%r9V85VjKE-jLcY|xf~wSm z=@ZrJhAT+n4q+ZpN~T1MZ2t$$x95SP=(^Z&@-#!y2rx1N$8wzrWMl-95}y{>v1sir z@R39iDWprx!&4>9L*m0UCGjRvMos&u!dmDf2q>=^!lj^O7-$H6{IcjVNhLogF#fBo zkU_O>Tk~N_34AKBgf4@%AawjO!6=Zl6>jJPvo!oT$W8XTYJK9PV{B4}8yaEe|OO&)U;!~_ZFK>7Ev!L_IrdBt1< z=LW>+>`Lek)h%lVqY*&HhoLG{aV$&)`8H;_+;VJ9n1XxBLoO&Yd`xcWdGzvwhraoo z68D;z`V~J7Q(E8<{z=`l_0r+4r zYgC~*Or#k*6LID~06dFQ+lpYFWhyCva#6%8vOP3`bVpb;X!KBeemn6NF zZ9UKQSHlJUg3guj5wsDN{4_=tb1i%a+y%1$!_g_l^OwS>IW0j+l!FZWufS{?PAzxr z7z}5sc;vKuAI1gih;6;eLRl_CgMd8HUX*xt0}D7*bNiW&<|iZ<3~{v<)j={JGz*xN z#|FiIXK<>Rf_}jR)T0(5 zuJBX(UNIz?qto5!?mS^iJloGPMhG*}b&x{_2}gi+h^8Z&8^YnJd=|La497~CNIL^S z=tJR%I;0;&#oH#7PN?SW-~#9&c|)Ih6#_s~h*ShT2Nenh69OP+Rc#cq2qv<{_l6w(>u?fauh|S`d2*{`i zRG1+%;f$whB>@5}5pYuY5kSTnEy;=v=tInMXy&L+a=KfflG7$sxZB^8(ys%8|id z4t55_AdbV3#)A7P^d#zeeilK3ht(_=>JU%@gD|9v$}@)CPgI5uEe(Ri zLHZMC1vEB@l#!a{1;iR&RH&^faYB?oN;4ng1;|f)0 zhaw~~GS zFog=Tut-Ie5S3K~6hwh@Vk86~ltN6) zVvoU4EK;?PAwcdyCOO255Q{=%P-7d!$$2Q$P8moq7>iRR7%yUo^C0sT;CfVuOhKy* zMwJX&4YHjHKZRgGZ37f)j*#*=EVx=nQPC)J5evX5i&8>Vl9Q^rRRQ_1I!)yzVIgp1 z04YcT;f|nc>ne0jaFAIXh1_FmZb{(0231G6;#939a2O^b5mS4Hd7_qcd6@V}Fm>88 zfexQQkBkG6CJ;>WM0v@?NA7i3o9WcnZ4P6v+6fXs>dFaM+nfu?(UD+58t1u+L;Y0k zY=faBiPX$AgttN?o;HFp9im4c#)6DM z%!hM9YV#9}zY)ZVzEF!;VE0@=PYp!KurV!FD=>-LC|?v1?12L!ahT>w9;g{LWUxnJ zEQ0=&@CdR+b(lYa^eK$`eVv>kkC4+;9scwna#TBKiqu#02pl4gI2B+tT;xdAwn?=# z1R1Q_4ipta;j3juwV4MOQmOO60)j;!tjCfd0_PTrNHCAV|MLrq1XD`_p^E)OwI?*l z)Pfd_>@lTkG6n~xcApePrFJlcgU?}*JEc*sPEMshGDlaregZ-)Ri^~FnrC4&j`Ex` zwe14g&WZw}F%m0x11TMco&YZZ-izlak(c5|Ck9D=4iONThY0AUY9T7*Ld``&xE157 z$^0<%v)Io>A6oc93W2R!^Q5ubvrdp;nF?EI>g6z;FC6!VZ=AX8|MvIj6|!Xy((<%R;p_9jMjr0P;Dt*3SbP29bvZ3j#F>mqN43A=M-z zh8P}l!;nD>gkFIJW1xfDb^v`KhMEbVMc^z8-wy;Y1QHCg*VF?mfg^%=MNqZBG|3qA zc$Oef{4uZ$S8IHM+I{aws;NQPtsE_cf5JzC!2p>Sz6ktO?cIie-Glb4Ruy9(ng;*AL#0ImH9DpbmE+4@ZMr|h)DQ3ct)?_ zkYs~?Aw+Gsj;=Nfs0$eKEQgd3^0E**gql6$fx4p#`2rxnSNT%G`-8aZo*(Kbg*s#{ z)LbwUEcap|@<33vR4UXhXnsHh=LK{L+n_0p2#f=`$v6R77lgA! z9lcFc$oDgFA6%Vw@~M|2mp#A}CJ=){ONdxhgoNg)+E7>oSpZKm+~_0{kE(6_VNP=v zdsHnpLnKs?0=$Vp?mrVrrmpu%a-WhMl621xAc|CB5WLGMiIHH1IuHpXWf*u=ZP?>1 zR~e(H?&4y|ra|C^7U2CMqo&Y0)ZKQ>i~SVRi#QLFnn9=ucJdj8$R9><4-zq-hmZ6z8;esI=Flfgg;0K$Wl;)#tWZ}rC6sY^la$4|A7R1N9UU;}CTboB znuk{uUI>vHgnH1cuwXP*XQi@?5J-rgdO)s+AcCy*kB9vh3$_mBe$q|!kcz(~L#^Mr9potMu-con4J zMS|Q<3z zQ4}~=aJKzjp`6A2eH$c0Zp?yM8%6+ij)MDYvyxw^V|s<3rhzED2niN@Ibx8L zcLLWDsPnEN3^74Y10)y#q-sN95^|NRhk?3^gcn`_xg#>)EaDWxerOA7PK3rVv_SjK zVQ9(1+-Jz}KrLaVVO*%icy&`5j8C5MB1lxSf(YcSd!bf?A*p7NC_+l+33aChB-#;& zbP;W{B;hP%X$nqAsFSL~1AienQFoINWb#_1>gZJf!xMp~8}pR<;D?~Oc^pPgT#mRumOc`M)rQpn$82&EDj@(S={an2(@Qj54bvT2Yog$Ne>cBsxK zr7!@i_YuG=PN8MsMkfe0vsg`@@l;J~K!}hfkWzSReV=330}2LF3RRm4a{?h0#Q%Ac z=ITTnp&3D@)ew$R@H8o8z!9Xa;Qe#YOEZ$DTacfPa^y z8ZN^>Uig2j(&ZZf!)5*bz3BfKe*R|o4!4Qu_?7M>RewFW1d%^JzY#B_(p5`6+^B~K za`_6m`thlk_({qBaDMzvRo0~1YUzhZXYS#$^uJbHL0j^T{^IpB#LU&}|2F*mbR|B% zjD7f|s?jpX&lexHQ=e@;-9s+FIbF9t*5`ELI>;EVT;DZZb94Fr^V8|Uv3WK9x15GM z%y<1Co8iMJdWDalHt7pK4F%slixbS>)DPd(^`!8Bd-IDpwD1yt5#7h8eXj&AABQv< z>Rey|sq3eU$i-syVYmORYft@y%NHE#7ifX%eRa*7Ukg##-Oxx3U_}<+8IM0J>c-x((;i(^IdG@63 z%I@xCK-NNI&hw*LX4$kIhE$aw^Qm9ws7~KEvm-iv^X$#-Zx$rqzC+Ty(-D39&V~vV zC7dL*bn_9zPz*EXo+R{yv*Yhjtj4}I&FFag-HH&~yDvg|TC1LZDv9dv7a=3_eBbX& zN>n_3Eu?3b^U?LOWQS$#^o%y$AO2bYj^tA!T1NH2j#Hv3rGe3^i!${ywgC@9dfNVx zEi<|S4?;#}y9Nv;_ie-R)Jn?4t)5wu!xKC=JTXzjBO7L3k}Z-~iD+5X16$6fCY1xP z5;JnEhgSR!u8JEy6}NR%;?o{U3KCjM_}zx^^l?`l>GgMA-{_y&ke8jnHfSZHrBx4X zIc52WaNt#9MsD@chQDgCeF-GAtnj-fq3_`-ea}Sdd$zQD2im=nc5g`=;8_C`X<*3- zPw-v$EN5aLp4zB@ABs)mu;n1U69nrtl!%^E5G!|qAN5T`zU6qoYhDETRAM8mlbD|R z_|S&Grk^{3WgmpJ+`}U)W?o`Fvl7v>!UG#lhtSFxSJ?(ttzadTW#~ZTBBhMpDHFGP zW<}m%Jq483lXg~K0-y1k(p}43SAHaW@(DfYp2YOj$A>ojT~n13+nfg>E%)%qidlUl zevev-yp_}QpPt&N@IqQ7IY?+};dd*-QhdZRf{30H9$0X01ax&|v@yu&ScfMwv~nZ6 zw&ViQch4gCq~`}SoLwb|>^44v^DJ`Dd46EW8Q?hs6K7z_8R9uZ6K6QXNz3kIDaD2$ z!nP}!JJzcwcC<~4W^GynY17(qesUoFWMus`OItPU{bonxd%-t|9VT~j_w=_Zcios6rnARdd zX%V_=5l(Ai(-xZQ1=VMJ0S&AAd5%pYh~$Vv&cZ)q@Sn#7GkdI%i`d%bYnz2@*~-G<|~o!^Sx zDRBGHjvq2FL3U{VLCnBEJe=d-wgNFFax6b$?0=o3f_%2_Fq4-TkrCnP!3-y6dxK_U z!~B*8^kxRbHU_&547`+tszWcxAoxyh#C`L0R)wxD>7f(++aJ}rGK>Z+K%cCBD9PFg9!32oG4oEDp^d@r0;>7{4%>C4zFB?V$y>Rxa{74>*disL|J3p!chEEXR`;lg(T}`w2b|e8QR)ul)4qW zC$H_tDBL`}ZU)|B?p?HnJw;pG6ST!Fd|AI>7@+u=1b&?1dBK?KWo)UJSwkUqPmOm> z&F+$d0;J{}UhX7@<|H$wJ3X1D-T4^8oj<19`71!J@65Nn5;4Ta!^+ORKhcv$iI?wswX^+tpxJJFDW2YO<-NN%0mn8Pvv}$YUz{ z11eTWQ;MoV>^A62k7$~?9R_`o4KicB7Sd5}Y_iwlfH+&L3g0sw=1$ZO^Iw>K6K9D# zuJi9!gdgyXA54@VW;t78KLwx)-}Asva}0uXh`GvR`4Lb5s}&V;Yub&Jp4Mi2+B4w< ze&NF+XMqW0$D(&?j0;Tb0=)-@l)YntU#8(JQFI&mTq2^oi^v_> z<-r`Mln6E{M?6x_Gav_mi-?BJ#`PaBGGxyUNW8cAx_5H-?6*%*Dr_**sT$d7RW`E| zttWxD!MyJ)A%gPkk>IzMf7Ecl_tl749Qlpk6vLixh6j3A7$sQ`}lB{U+xKFyUa;o%-R1u!`2|eaaH)9rI`!IG3WNjC-!I0>f=u7 z>(1v}oXp3a$=996w>XE7I)Se_dq02b9!e0-F)K!Ai80sk`z&F}NQF9aaV0Y*Jw36b zt(y)_3o-^;cw$G3m<73r7)a;lL-1E9m@ZGSyf$G+y4}G()ESE3Q4K%N@q9v%d>S!) znuRZSh)n{=@?#qH>kJj<#s|$^5A(M??1X&Ywk1cf3<4vj;paKF4gyzJsavoaVb20V zdnY;Kzk6<@$gmL<#?_)hDsm;MRpjcqjUrpoZ3yei7qQui9p+AAgS=L$Q7K#1dV{)a zb}epH?7EPxUVA~_yQ_62ZPe3{;bA$}-7rm+~}vG*MrZaT8N<7lTo^RTZFzThZu&vyKInyn`F zrfW7e!jcz}JI2d{8BVb!YKXIEJPO?N9euq_b_rCdvFj`;wo=E*RLxMR=r#VPBe~NB@fH1gf>g@*QcW=e+S#KUr^P@L(8a8p- zZQMMS;u~c8eJ^NWKRuq-q9wc}wY{;An;mG(nK7|0(MZ%YGEo(;pvN@k@cYpXo|Q z&#a!<(W36`yB0DK&)?d2EZMb({;m`5*c|WW_4?eGvQq6(m#BS6w_)@ z+*4kj%+R8)Zq;4dYH?jF?xI%R6|EMRvr2-w^+ znv4qA>w=t<8H-NnVlzi0%k8c~tg0Q$-?I+C&QjGFo_b7D&oN*K#`yE_&lvpYF~Q8S zXW0}TW>NT9{+?&}b&d+*xHVrqoB!MyE_&33jTZ4DYW&d*KNh18?lx!bJ-ej!v!855eMD9B1=ab_rw-9EM{J!tOWbpv zexD)4++xy=?=IXAp8A<#_^QJ52Eiaev+7dxk zj!4Q`_zHtxjR~q*h69G-FlIPRGrW-M(BA>RK^<(o6}w}-eK^P8B1qd2)6A3;>Yjhi z4gd3Z`@j5dzjYPL-sAs1vt9LNM-cc>_?`fMnr8U;ED#}ZU;2)t|81J&578p7jO|O` zk@UY=kl2dcHQzk0ndY<=I1 zQTU>Xv4~Nl0}PfD+?o&@#LWO>sf!NdXEx-Pz4BH})mXE`nZ`KeZgA)VW>ip(F*yDod@Q{LWWg{CjYUws?? zuh*Z1=cFSWbp}?a!sX#0`91vo=AHWcEZ$FE%D&SNI%;vorH+8ZgE#6V%utUD^5wEd z9pcqhjswzF@xL{@-JvcSx!(7qZd}p;^%pVq2!AJ+4;$&PS~=gR^7p@=zjHsFVbc^o z9&YQ)|5VljB9gyWTR~fL674sJY9xmZqrKqI>Yu0bwXSj2$CmetIH>#je-YisrhP9j zGFm78*PqINFSTgq;y13o|7DKkW&3N>RN8y|=R|JFPQTg_26)0iOBl=%{yXW|^Dp|5 zYfj{b@ciox;opAv>A&o`ROuTU^}`&4>8lx&3We7U;pb2;Xi8Gk(vqIYrK}ap}l@E!~E0RcR$-Rs?s-1>W4W7 zb)PP-VrP+CuG6n`go3>P{F}gZ>a)l#;px{o!XZ_#XY0$~QuRO0@ig1F#*G}aGPiu^ zpDj3z+ZASIMx3{M77X$~lTX+rdLnFu)TATEf|&;AfO?`T5?h{5TC>6x7hhTHV# zg>=-{SL;tB6lJBZWK?rH`gu!?xK5SZ5|&D}h8;0BVp=8I>&-FKD3u_Ea}&K5)+uuR z+)|x}@Xbe|cKHQA{XU5;AZNb7XDDPX73p0pqYZ5*%8 zMO3HD<*A(_{T^V~mU1nuQ|9`)r8;Uys^N}DOG&LFr-znWbo!6gT1aWxyQ?qOPGfW} zDe(hJFQsGdA0U|fZ{9r6HgzCIz3$2()I?1i+zA@hnV&*9mOj*uL(NH0r^4x(r3!oQ z(n1F@Eq(t4L+2CQ zbVS)<3T-TVLqC3Os|z-Fy%W@HVU^AP_VZiZtiVy=hVuB^9MvzsAZUL1<(A@?U*_OZ zjc3$$ESioglHe$k5l1pd(){`Zf&)t5Qos*03~y0Wxo_{Ma^KER<-Qdk4ywmvva5^C zE!+9$InEMQtMa~9<$SHMvp%{hAG`UUw`F~hP>fW+HnP8jgH%7%tiidfDU>^<%mwE( z#ZF7<=A`T01`~VTJ*>EHPS=uvm_GclvULKn&DZLbrUE-)Ct5YcI)eUm>E^ zlf(_->Bkwi{?oy%=~pfgE5SEnH@r7bY{<7&(>9&?DgtZSu^Kmz5xSUfA+Q%VYIAoT z!4%@Na5KxZFq-69Ak6VB98GZ%)M|h*!NhlAY{bU&_aBIvLUA&_$@2DQceACx&wC$ho~I-C|icWWR5lPp;%g@sSS4-*Kv_ zZJm$mbA>Th>gu7rW{z*>{>32P%d`4gm2FfuDSo5E)$ce}I;#L@LU^o3XAXMwIF`FH zCWJ>yOzq1U<5X%dz@~NVs2AxQH7-Bf>(OjC(l#BO6u;Hv@;goy+azpKe5}f3TBgI2 zQpj&!vzuy0xI0yi<*=$V^&u?*?_gI}q=m3xQ|Z6|^BAB`eSJxE z1r{>;thFC9^OhW>EJ?kotLjk;kFa#wjtXHlelF{+cvRI3h)&1LQ?zmiD%yvYJA-JI zJ3qxL_r6kJLw!`cD-@l2SC6s!RsN&89T9YT9Uq}}0_O|<;Q3+Au5q;bT^GP=2@khr zy=h7P9-8i>x@ypL8f%K7^_CC!m#m z746z`Uy1HfHLqcGN?t#=R&nPTH}CF4<{c(l-n$0M`%#R%M}^0(ydzpPYvM|qjCd1k zV(D02d0$$hc5TP<{h$htaN!_=@L_E_e@8Z2&*D*~ji#=c=#w_-rLb`6R=8iwO7?(8_N)0owQ#p#q660Yuj_+(Cvue;*5YEH#u9kUqNd>qOc zuj)@xp4by4V<|$q$Qmy!kUAxfASBAnqcWedy-H6T64NFq*{$pJkseFG$I14tgj5A%XWu63+$6;F7E}6k?u6 zbU~>VfF4~#FxWVe>4I206nSPHPxqVSTX#$sDG69@(iSOcb9b9AM}S!=qC8TDT$bNe zC7T>5frU@EWjI7CtUiw2fkGs&mFZEjT0O5w!7p8X$oq0%g#zG{cvz{nOQg;Qam(w-qOXsVeVN{R& zlIYQoI5+xUk zrA-0nf3aFuH%e_^yu)fcY$%28iz*6PV~4)@TYd4ph=$5DQJyLE28%Fz*;*E1a0oM+#o`&(ImYXP37LEpfcHdWPcR87fvI%RXWWe>M^v3QgD7NK zCQ;9HyS%5vk_iW=Z8({XErT92;)e3IkvWk5%`;xg{zd?`_K@>EHRxn7Raj39A#gm= zhZD_iThyY3^po9#e466(oWq9ep>Ve>u?}hlGLvOmhYoO5A`$Y3mLPd>2dhWjD_fyyFJz!KyII1VR2@nrh2if&>fzh#uXN2 i3gal&ldV5ZSko;|6MDkcX@i~GLnB9^v&DZizgz3`ADFKI literal 25856 zcmaHRV{~T0)@E$mwr#($)yW&%wr$(CZFFo~9oroz9dxGe-0#n^(`W?A^`mT^*dgNZiewU924JN!Z}XNtB%(tj$bZ`A8Jxf&X4L{@cYz z!otML&BXpsqHbwM;%sJTWMyw^=1k&XPU325;^tyy zZ$aX1Yh}y?=ef20Q>W#aE1Bx8-XO_Fum`!vUA@;}$$YFeO#!JD-oq&3ZU-Xu$G5HjF*D?eLw;XKg~MJley)KG z;N`{8n3iQMwt9R6*Ax%ohl0z3EuwOhz`4JJ;cO%Q#xTP7x5M|$!ME!G%(OOoYQ)YZ z#pWeMuij5IS39sKB2g{8=eOou>r2bTy}y5^Ke)UPTI+HGFoeHS8H2kKWQ&4Cd0TjW zw1RQBX3_k#T4DM9PmOoB0+>dc>4aVU4M+X;+K5TDAk`g^n@lx<>($fQE-L&>%~;z5 zf|O^?uTIb=Y7>$1HuDQ>C;yol;qxddH78oVhMlv)h@}Y&@H}eCQAb5?!V#%rAXUN? zqH1ZVTymQGlVK3y#yqNzVJnnS**Xf?{TrgPjB$Bn`{{&fQmGBup@Wi$PaKGo+FX0VmR z7Xeo*HaerzCr*F*h2;p9HWtEEcPy*TRDVk6&9ogDJ$k8qjBfWSx-lWl8vE=R@~1v$S4fn5_s{*gL)1$d!FpUCry$#kgV_myJ-!;A^Ge?4x| zDoCc(44lFmp?fmygtAoE^qJsX$*t!%W+D!W$-|b~I1oLTX&Ze|FhWFU(Dztokx9?3 zYC&8{wpLg{{S|?5X^q?!p1tfg?(PQAt@&$d9sylMy^1x>9mXl&=(>YkY86w@KKshB zjt{4ss0p4AkaR`hUnQnyF%)qH*d(91ceIxgRb-x_*k~G;ag$#5Xj$43>|*A*Go~A& zS06ke12Bm}@-#3P4U`9r5%C#n=>#@heQxA)tNCdhQUjR7^A(0owyXUp(~Yz08lsNj%qedTD_z*DqJa*#_L*blJ!W{sbYg9Ze52&V#17m zB?AWIY|b5-Mk{>F1WyZ9p6-OdIAj7{e(;>sHQlG7&})eGN>U1J*SyH5b_|Tr**!-i zrge;sX^PbXVej$M?wlI7xK(z+&}&*(>ABQ*@$d~`n~W((vePD_U(`t7!qp{zZxN<) z!~B6RQ|a0RXV|Q1jBL}o9IL$2iz#VT5gg7Y_kl!eVjH(;!9GBmI$EfE4}+9@p<^)S zOm8lq&k;nO&$WxKCv_U;&pLQUh4dUR6_U16)&DH{lkkXVynD62#_{oJx%EY&wk;et z^-z%GO#N3EZhib^zRdBFy7{i7#!3xc(hOoVjde5VM)Fl`tmrIn`&WmA8&CV`m{#JS zA2PqTEJ6Kg3i+S-heNa(4MLTAxrnWe*V9uThD;%u5>KdtasJ@k%g*eN7(1Fdu~bu} z_B8Emv|0MEB^Jv!gZ(-6AHKYzS5`Mr1HDh1xQb3r*Sr%hA+S;2UAbUVP?2{T=pjhR zNzqy`ansIs=nKxARY_R>Sxmd$u=abrP75H<99Hr9+=Va{U>r2MG{7uLudQP6;ICh( zT!3{A-|sgaogCZFt;qOWtI0O!-4o@?*)`~{8v}X>sA9KHskJHpwe;3aP~h3LQ}@Os zaP)US&X9i(oj@AY$;JuKt1aLXv+ziMn{_Xb8yN~qv52$Vii{+g~ z`}mEQ)+5h!&{cjzNl5TKfevuHElaOKaX`-F2Mf-%ie7L^c%l`Z(9Xt~J{E_NA zgWVe)jqDYtxp*h~{Xoa(|LgY~Yr!)eozUryhUQ|&eaO{ZAF?IUYj{KDrHRlzCZ^v6 zdtY%r^82{v%G3Pa8u4RVL*=;%k&A=`vO(-iKA7bjL-QDALkVIlemJsxqLBiK?Y@JuihILb_yaX*r8pGR}@QnW?u0n zb!NizJ1v}Z1&v6x!%@6HXrPY&EXoK>rm~b~Hj0maLK_><&>zCt8Ir>>VYWdY>p(oC zax(O#<3o+jl{M6b08?jx^WMi~uXWc{_bQhCbAOm5 zt&b}vSMF`yn1tolsH?^XV~0I+NYqStI_x4_gN();xgkBWW{8_B4OL~;zK594Rv{hH zcB-gy25vXI4&V4mj@i3>>@oD1!^!0hsCKzIGiZ8$^hg-`!z5A)Cryc04Z!%$&)9J6 z81nw@c>`;)yuQ-GI6Xg6`OfI@xwR0i8j;^|%_Eh}RtQn8tVn!1$l46ZcJFne3r|bl z*Bx#>*s`GPd9>O$0!dpP8=nea8$K3F;@I7@vtbUH zOTW30sFMNdQLd7Nl#AOZoK&f8gfYWYlBWY%fhjJ7tog`V)1>!8rrM^erK>fI zw5e;o5>Yj*+*@ZKY))V{X!Hq4zax3UYZ!Kdj7>jQ(153M*!W2WUC^i4c&&=<-6@B! zWHDnHd)+EgL_5liG0$>Zjk4u*Aw$)o7#(8-yB=>-WY=i$Db{qR4uh$EQ)<^^aw{XZ z);M3;C!`N`^>3wferBZ z^+&($1-_BV3c4lXuqkgD=DsZ8g0c*z5LtGhJoDlOV0YD`TXnp;>wVnFXN9K;e_hFzTk;FV1@{jc2Od|z~z!Bly-Dj8-|><)(=T?^9@W6M*%(F8FzRJ$9AknAQ5ok zL1<$Ip|_&=wJ_GqTUTD%IBIY0WC~+*>TSoft4g|!O{t}?YDD|ZO9fMs*j-`Hj2hq1 z0K%me3z9xPjInxq;%hS4MTDlq0*VF;qW3qXHVF+6bZAXAY9SCU(P38K)|tr$B*JD1 z2H3=KU4%83_Iny{;D9b65L0d_UBH3cSo64UvG=X5bI{SBF;>RrnzvbVAEm|#CIvk# zh`|CTqU#=9ys*UQnpIRZ3QrT=iy8>bMzf|~<165{}fG|}u2wpK^*lGy%0 z1Q|^Z%wGh;oR}Lbn-s$40#T4$Qig1W2Xg&#AjxC1^stlk;c{ZZ&zdvq0O=5$TM)*K z!NJMS0J;(fna+?09@mvoWaLKEh9R;w^Qud%XQ9Gg-0D>yk;0g^g}6C9u|iMU_(rbF zw*zp3O?t=3XPyx!hugA`p&HO#2i;jL3m{QbW~exl>gkIg4361ZMCKYGzm5M;VE712 zEEhPSd6M-weBNBiS@Xzqa0%hUg>K{4v+e_bl@(ys^IN7zIC~~R!cQh7sfsz0mniIi z8#5b`9ABw1V&5=RRFo917%4p{iDfKSgNdw;49d)+9frjWiJV4qW0bZULF0W6HC+By zVAU7QBweAmPb6i}P`8HOT5il%(+0j@3Z)Px=i^y3g*kr`q-Q%-ClEXr-!22jv@6Ug zcB=~VR+T3V35H$R&X8M&N9|+tkU5UqOlhRk!UlX~!lIhX9imD7i!?jUkh+#E{f59s z$HS_H$y%xD7gyM1wU{$gjX+cWnxz>-R6-}ZSS`~d$s{^CBDDa=ZHwN`l|SJb zzVkI}=Pss`KwC$fAr|#D`(MQ5h4r;S8PFN2F^wfqHw-gI%IM25Zbl0Oodiuke7DiK z__;}Es8<^yFzzbymoXoBuzQp@*+v(>lKLOx7hfz-rMEfFo?N)^%W?;>3I4PpxKD`# z##;N}4lo-R0UyNXdp(tJu$RNQPoRl0`oxVStLNDf_z>Ic%;uM-(B)P5#YUNy=HM@# z<}GXU>9r>9ri3jLmv8+!ZI9-{Dx4JI&5~3&v;Ng&onwM}r2GtSqmBwbip==65zpD| zzU_vPEs*q?jH-j*!-ZBz8E4}lk}#%dp!eMSza9>s;D**cC4?Fq93jrBoQ!HN_pM5f+dQC%kI5tC|H~E z9;XFb8Pp8Pn968bWSa!{ceK#1C1Vr>M?1NS2erXN+l!vWJg%@xzFpm{If6b#P$TQx z{<0yMpTUe(#elywa zpXx{795!das+2+g>7E2T=5BrdUGV?iD>c#KCPRKs;J;7$!3MhdFxgF#^WvI!J;31x z;JW3VwH+W@w_SVx5Bh)3gFK;vfEPIxDof3mi}WU$^ml>`g{BgyVQ?~Tp)G3R_j;l1 z(Jzh&kVv{&P_t7S&h{QXt!gH@3DO+%JrVJN&zm2U zXy3U{n>x&^KPxwGuWFsgsC!3HfSvd~^!HjS{gu*Qt^G&#z2YFi}74E{{Mt`NPbB3eQScAT4qCQlZ=D`se-_{ofAe;*18osF8Ak8Y?AV zP^|;pOV6%QzxUGi+4$mLhQax86|cwX`+93V1Hw=c>XMXSANW3q0VC??jZQ0P$! zcv%0$IavKQx!t6|2Aj}CM6Qj57r0lgkciyNmRI; z`>8xLMtWPWh?vTe>IZ?jSPUcQ zVCoW7E|40X&c~^@K;!ijFoHQpre>OwSG&&WYg;MxE@-U!KPpLqWKJ$AV@8k!&qqkZN`i5N-+a2BJpy zW&aq2#1ZI;J|i_$^<$Of@;f$=4_z~Ab;hr)ytrW+G}IriUTr1!2ue5T82G$PUFs6| znWx!p5?48?vHV@#dM-~Wo^hTE8u06UsdFyj7#v-_0v`Qv9k5~bXPm+0}xwPY5Kpdy=i?P*1c>R$|icX-FCBY$|IE|Sh;C7N|<9bp7b$;-2`JwQ7ws%YMZzW@U<` z=VT{01=4cxR7O>Jwb>p}tqgBxnL^Q~*WCwS5>5@BFQ{vxuut~E+&R-RN0x?(Db#On zxUdGF)HH$}Vo(&vZ0QVTo65Q!t5(_pv{KEB`Tj+^7k_E79JrAIN`?*g-_MNwy@S|o zk5a>tMyI7$QpYe3VASa${K;dcY#f(zb7G{`)=0EiVaMC&=6!GKu9z$-_LhkH=Znfw zRaRfbAeKyNV#sxZBy>A)Je>d ztnhVzf-%%qMZ&VU5U#c?1y2;(Eq@je6eOXPToh0~X+xAQ6p;{o^>#ps4cetp8{K^n zCXtLWuv{@yhC@WKE_nGrSa8-o^0sP0G8ndhA#bMk{}uAWZ{4Hw#(D?Ol@v@V&W9Ah z6+!V)u(&dKC^$MWIyNyl%H=Ci`GRZB8RGauC{_@eGlCbLmNcSY8gl{m3zOthd3+c^ z>oxr-%hpvq08`yt_L2^&DR`kCY*-wbx)!*6Gb)!7I8D^q*ra+nbLZC-7&*2Rl`Sby zhQ_>&d0G4g0(msVN85Fvxj=+?&0>3?U2;Q3#?WisQNgJ70#-#m6EKsx61ZlE8V!8~ zV>EaAYk}Opy^0=+6+dA zr4H9PMEr{xx*jlMJH%C8&$%z&Mm(5XCuAOvP;w9Gq|)}Gx4Nk-=S)e^1T;MA-nm1T z2*3zbbO5`-qcLqsG^+Xzm)pAs?sPr7-;qJYJdY$LezZc;#t3`1(84cXlI2NdnS)ie zK+s)`0MAJc>E#5cEbUoGoKKwHd{S3By^ZUj?%ySK){Vm!Q_a{f3S(KzRZtFEP`CV5 zTH(UlDb@(Gfy(SnmFAfuVySb9sTkl&_k{?pDOKPdIy zC}NCG-&7haVOa=Tfp{;=@%VX$$UVW`IeTsc4tq=8#uCsrd@ZIj6l+v(y~?$ytvu4R0d1@9VEqB#E|<~uE9LaX zkgV(WQ1PZ>VhG&_rkF*YaG|UiFecWCUqrAido_VmXpm~@)+pLjn8XCC)Fr_+eT9j1 zKR!SM)a;z_+|XocWNo%{ep9q6^9!sgB2x8l2M>e6GOi#clr75LMvoZ_jc(rn0LEZ)s(`wjvYCL zAoo4A(GuAvTA&vZaRQuDYhf*k4nt{b7DO$*>QRz z)gKadCtuN6d!zW|{FTX!3RL1gB8+!FS^Km!p}^rxT^>=FfVl;imq^sy!;cG38`hebQGKNU z?YautClwV%WXA0%kA(LH`3)p2OC(x4+>!6k{)=SAQJR_!c4IF*RwBzPXd7dHNm3j! z9FeESdUkS)#c(R42*17NTtSc3p0O07&y``~G#{*O+0_IK3rFV7)AbZT3XV&-9}YMg zon6%*RWCGN4#+~}#`jB76>X=C;P5&+BwY#C=t_E|k9;)Q<)hS7Yc7_8^!K-T~pZs7k za}pU8@xqka=szW(~dy)WC7KJYzw` z%aTS3`lO`DmvF^=ntpfR_gh&J+6Ncy9*baVZpa6Dz~}MqFZi8y&iV;_dy+ewEKd*s z%{q|~O`^@xEw7yuYDr;JpW231c}m`#MIvTkiDGm;N(&;LPo!LGaqVLka@=+DQqi7h z)A+6e*2qBA`&C?k^(N8`fJQZ(;hj!cf3d68%c!F$z$WfP~K7POeh zR?)jS@`8fGxtZf4R#Yciq|zD>aS{~&^oNQ_6y|S7dHViYl>mJd&yvg`+HsBmBvMVs zkEC($71fpvG874Wl7hR(MYCeofuiMyX68B$!zi<*UgH3d#qADX#@4~3wE@|4sPYXg z0na2wBgjD7ou)f5AbA}Nl7;15>65&qro>S0txQzt%~%k#Lt1FN^UTYHYi)Lm??|Sz zye^Hk=L_fNg)5(2C6Raz9sz~LT!C-aXTG%dlcb!uEMt31Q@35tV;c&}8(k^%!G`Vd z_#tB8sBjrmO?V>Sx|c$r54E>3!a(Oms36mKXRfw7OEl|>_DXhg3tUXy z9|yHtu$6%j@5(bW;;`w{@`O=q(=-RsbmK-rfoPROgwN*?D3Js@$7POGZznLpnV4~?oWb-@lo9G>f4}ZwQ(n27~dub^CjrE|`q{TExxpm6{63nU@WEY`!M&sjln?3RIQRpoX(yJm+ZlM7!gnHISU{C}o*LZRh z4sr^=cm3zDYXoS#IRvZB+UhH5J?Rj|YEa5Q(i93ro9x$fPg84p@xkHZRxC-Y>7nsK z^Tv^eP#Q>z_)n$;7DUu1bw;aF)rgl3U~eh@J#6y(9nAO-ZHb^?h^4!55dFnF&dkMN z__x}oZUQpel6)P*2?`_2&|Y;KL+=*E{~k$^8)&7X=QkfGae z6`Ri%E#`bpir)SsTyLGv`Wm2nC>n`ytM*D{vW?NJAHUgm)t{Rf;0Z44YKih+xH&N~ z*4@UJyrXZN3Y_qt^p%l6XZnGK!Kp;e6cK2=qK@=c5x3#7*h?6OE%t+3Q-^REf@Pf3 z1dX3cDs5O3)G~st`<*Fr|Jkd@MJa~r)2E{gr(Xm;%a}8N{dNK8lkq=-^vt``)J6Al zS-HaV_zbr11ZnBQ@gt0&5lj-B{_lk9i9?j$088@Na0WM`S|fj%AeWkj_QBT_#ZWbg(rIW=QN^H}q$=wCdJ=gZ6Bmmq z|BU1rF30-MqH*;d!{}#qJ}I{@z5xPh7rTM|ArOf4(`JxGwD;KHWH4D0U1*hE&IN^+ zi9Bk^@lglvU|GXfiv{lx6Dr}#2({l7C85JrWx2t)`W1$;rTwy^zE$V-RrIFT{3vRH z?GW7aq|-KrT&1-&H&Fc3?$p%~4UU0nc%~8JDqgG85gjT(3sOvy2OO~)A>Rc*csy|M ze@+OIE#>Cl4PKw-MKRop;XRf*RaOqeD-|zJwaz3*JFN`#B0Xv9xi<>gf%2rU3bl9i ztY*0MwTohnexFLt*i)e&SJs7Wrslz*X$ZU!UJDwyfWQ#>dc{W($qPh+5!~@j>kg}} z{{8*#a{oK*5NKXDz=us7(rX(~ch%gFIDm4_Pz?TfXSj=Vy(c5*(Vt7jIWxdSM&3xw zG;dic~55qiJEB7`=kIqci{bAFKEcgQVU#K&1aVcq-aaThk zBKd=o-6Fg-{vSEsnk^>(+|b8umgKRIGml+eXa9rfztfpBlKP9%+u8_LSY&~9QBS2= z(r@#LV^~Wy!dECV4nRme-X}C2qnf{wlr=&-FlMwjWut|+qnFKoKI`d!{oZ;^(GidX zuwn!#Y@DKJ)G%`)fLjrUw7s)uYnn216K)jmMPBhBJ+SK&==Vbo{?Lfnt?K~(@~5dY zORPcYo)?}OD3EB|xVbRzx!3DupSU@9@3|UoCk+eJxfr2h?a5&z@+zQ9l^IhTh~}Kv z(unY@we_3TQjPI7tk8@exj8OZx#7R8`^=QM{d_}K+%Sm9K*Wi^Am2p&Z0K~n)HI`c z?w|81Wnjx{swE=AZ{C584-D{mCBn|mhZqy-{|pBCbCSUda>+lr74VS67Dc2O&naBq=XxW+o1Fx8^&(E)Y8wYV$S+H zrJ`8chM4~F^Xjs_$KMiR5UL2=53c|(3?2&FqENJn+)uiaaQ?b)@&QSHkmHbaVicBt zlLX}uD$gPK@(?GU!FX_^;DP>K7ft*U&6uuQm_s9{(I+}nVbau!?$;faRMwHJtwXW} z$JJL0Xde}bswp}d6-+opW*MVMZ&%JVre@Y+xiK)A2Uw0DX1yEA|LjRuJ9U`ttlS(^EzsWK-^+wg3Kl|POyw1xvGLpMg%B335E1Fv z_^16aQQAXe3#;v;KmJ@#_76>gnwQgM6&USp*RXDZZWC^$K*ZH8O-h;fAFhI{61HXH=9yL_~r)1 zpx@zR=#=m6QiWEzk@-`oY~1Zb4R86cl?&Jm{+$X#7gMk+`QI%yPQ_euUMYcs2W*WW z;`YhcR1!XH^NZoMyBMI(KpaHamf=B#%5PKDD`eGh+WfUzGLzz$KH0izSzJ`#R>`+g z9g1E(wchby*U@C%3a|;E?%01w(}labpXLiS<~)M!Vzp@7bJb< zkKPB=knVD$VQu&MBQW4q71^;$gRi!&9pC&M>l|jluakm$Jet{}pwG2?qcV3}|Iws-NQD3IiB!5NiE-+u>VMUikNMA@`Z@&6azY1d zl)p2$8|0mLotJ@3Ec#{RDZiiH*?BtSCHtaliWD-wI2W=NK+G5+B4U45meSZ+d$GE# zieY??#>>K2l$1ZP*(15_VN+T~zf4OCc?RktR+br5PD#4$B$uE-R&o8%64IVUO^LfSQAs?55-o#r03AR zRDWSW{{nq3B#=vb{Y0dYRBn%^eNGmZY_~kpOB+(1|yyUtZrZ2%lleQUc{VYk# zKLAv40cOWi`t9OHzuQ(aMS@r)lF+x-W&s3(BN&sLLTeZ<;akF?eFdR^*G)FQvmrG3 z;33|Bj^haY)$-FHLis#fjEWi@{ucOl!TWxg_bObzA9=Ksn`)s5&$eMjY~=~?e>b|k z@2E^0r9#p!qQ$gmNIiLy3R+05UKR}r?*Hk-d}X!=qXeQI{2K7RNJJ3YHqgrOUenJ) zY`HphW%bUH?w9KOfP3$qm6E!Yj7?@K+x|M0p->pctiYx5* zfXwzSC->E$W&bQG7IQ8}*eSpGU7Ix{B}H6aXdVqj%@)8Nq1pnmh_>PA6BOhau#%jo zMYM++puR#?X043}nhCWHG&+TKJ(rHR)125Mo#Ah<2agA98$QZy*oT#aa2G_ockm{< zTR{3@t|xP_+~Vw6^CT}15z*W58;CdTms%AXMW+8`jQV^UY-4m+nuGkN`+idt>o=0f z--9E7+9XTSgHww;+-s}^mCzq59I3($^RpM?L+X~*X~?a2jP7}y725O zz#nh_bK&dZ^e`#(m~X;{8*_|bkT2&W;&$G?Wya&l5#+BvvxXY2%X<|)B1G>+$J|tL zj>{taVB=l?AhA;OhzJZDXme7AY-NqV-!}O~f5H2q@R0DHZ{qi-Vjq|{hTYFSR|D%U zf&Ua8#;tX;`EmN6=l6P17xezI_&)CW#qERa{yI00BCH1)eL34x@ckR9yuws~-@b!I zU|V!Y=;pxthrhtri(bG*=lN;C`$r%r6n+N3R(-%71akfyi117Q&m;p+-@We_Li&BH zBto6J6^Qk-vzLb>5%KmOlOGFx&v)}Xcr98f+Ndy94Bymd}P|2+0^XB5(N*f2G4m#u7dCpGbeF!;UcY69tIdN3Lw!KQq0#zTqO2e{5<)X zpBNh&gi-FnfUy`FwLI*!bY>X@Lne=YE@kNPj0Z0g!z53f)hQnbY%mR6G7o$nPlZu> zg%bhkAdQnr!ox_C1BV-Vc4;iH7KnE^$4C$=9)*zH(Dvicg%XOW;mnFE?54ywAPe4^ z(ClXOT5P8Z)K=+2UNXn*m%yCXzNfMRnhB?g=#;47xLX$b zn9y@cs+f|rGc`<93fZ7>#tE()c>YIjm`Wlq$MJTIG|~;$Cbw6nGIL-#iUcgO%y}1q zH*f-7*j@U#Xh3&7ROYEj6uvD( zP66Eaf{hVG_BEDvF6b0GPvc$Kk32i<4aeuBnDs;v?VnNOmKH#3qKPQS;uDoj;!63; zSDs%`k%c^msEreWIxxM&;DI}gNMlbBzF(ro9I02SgQPH{KrRXUd1DS?)xzN@Hg7Sa zq&s&Q8=;6HrW1lEX_WsV-3Y@MIP80Rj1k_u@jSR3tOM7D-z|g{+pR@Zrl0*7Dxm^Z z;;`8sRU!LlJEv3=xn8 zK^sG;j0r1wh(LFCO7LkUDU$mIa0y99#OUgrvLy!vso8EIL zi+-t$<%NVWWR(A&RPa%Se;T?!V8}CV4C66C&xb<)rg$mZpP**>SMmB#l6wA;oM?yz z`*Gn&U#t*PZ9eWWk(VW&%VAv*V22qIX-202Ba zf@;kXLL9|a&sR`}MLcH=Yo`fubOz$6g_;+sy3Q682V>;a=Df}=1m+AgOA52DNcN~Y z0ei?rVaE)nEK^=a`Jz&R{f~(j(m7@Ou%d(oWk?mU2T@lNLZM^0_c+szK{3#H@r8Z9$Qes{bwM56DINU*!$u1c1SET(0wXtCueLGSghHYmeX z`uSq61W+g)qT*9HXb9nQ*x?j7%PAvAedr=D5D=)n#zf?K?amc1mTD2!{CA<#hy__AH)sGP0)^PutX+?il!bM z6CIn=u;BECWC9u#{Vv}|5)NU&%yFPeoaMo>E3$r5!BW(CNe+PWqWp!%r2wJzq`*-n zJsA!XwLKFTPy|P^8$1F{z^y=eXd)2fI*z;@ZcJynOyP(t`sQKb=pu6Qq>AW`J%GX> zcD5iMQdG>uuYf(iaH31$D{xHzqZJHEo~IVFj~ZM<0=7piqL0v}l#E7Pg*$Q)gluJ= zeP(q&TnNj|C7*)e_(&pQ4aF3ah#~nr^9+WQTG#_%xablZ!OJ=#9qi>n8Z@9*AxrU- zWaAFOVe}A7S2d-&mXd+{oj{EO$2!DzXS6*{LQ@t5?&TB+8S;yf>6wn6#8eaz$5KpO>uc8G}KN97KTN4Lk3}08yG6Qz_LovsYOD;SvS*N>XC#fs?lqLEm=ZX@;sN&=l&0*m3 zLZSQy5WmVy5aP^&S2`isBMK1kC`39Y845ryd+r;PT9kDisTGJJWIy0|gT5vivP=!q zh>#@RwZQbM3}qoVa7Dc0vFYOAiLW@}k}492fZ&RBVvR2dgRVvhkc)011jA2M5@I>C z1b~bs;Kcf*mhn!KLBmpwBXK7Tu8Jvq;OQA(tBC z9-B0w^Wb({p-|5nBRiL~1S28&@q@18PY2=piz$vlF3784cehUe!@iIeLpm4P7be5u&dLx)1G$$XBCmn{;zK62 zn^MIYAl!@@h+BwM$^O`wD{l}LXa2g%pV z~+iO?u;!oEeNW*+3tsg0oWh@RY3Z&9If!^1((av_ai>h#E{ z1;TCNf+1K;5D;;pv4%F%MZ!FjQL%d17|D@l)sWJZ1WV0PO;2awJu}&f$`kv7hY`t; zUF8L_NPcNCXnqVtQIdv2+Jo3HS`_MWzuro8Zquf=J<_@oq))gFtA`gRR-wRP8j6f7 zNQ5r!0LDhtkdr|#d2w5jBXLOGB0vX4gGF=VR5#hsrYwh+GFu{9;j$o0h4K?1QgAbo zS0N&jPEaVt7u21*n2tm}V|;VAUk69u5e~;_N`(R`6Cpiudu2`|Fkr_9G(`k*$5}#6 zW6ctA&Jf7B#!m3q(HQ1QK7*ts=C)cw-`I$P#la7~;MM>^5({p|>7%goUnte5-9#aw z=~RJ`s2vdya)p}Z`wW)*PUm^Fp~WnXBF-XaQ*q!S`74Z{ys1!GSAgO}AJWjVT%L!o ze}R!Bc0M|*G>;wg*hV=7KNhePhox}iNE^0D7Mnohvqx$OTFMl~!zUSZj->NMqe4O+!2A<01&Cb8 zWsw0z+O)(4G9(C|Cj@Q(K$YAl51D|3Ch?dfF#w66K`7oJ7(;`L%9tmW4TKtJJJ&-Q zCmDP|*usP-t0d=O%?|uVGJPyuICs|7X0$LP$8jn$6J<)T$bv6%#^6s>hKzM8T@OS7 zhtjdUWjfAr(wrtxHG=8k?c~`eA>c!U~@ z#ZK|Z89(~UxN%6kkV zK35=W5PhtU0{THZct{|b1ahc_H;ki5I($b8Q-=jo`MoH&oa^8*wC>8TA zd6+3q5D>GW<2p`cCXk#3lO!Vcs?S9vGR&|OdxIdHFhsK>^^YRJkCE)b!hS08p*Z4_ zMi4NByiR3BtT2GR5==w-pJ!m~JKx!s&g&lBkoBOyk-%69;z8{}&@TqA|Rp&{hD zq)VdAi^(CfOKQHiNSB=~!KyDO zWagMQ2SG6W(ZYi=niax`4 zz!=nCfv4O)al{MEf1&7($>h8&Dd*1!ycqN8L{a=ZE(H%S2R+%VF&neOK$(OSNkzZ$ zain4tc#-;HAinG)#YB+}l|PCq%mF$vZv*OZArvFygc{TwS+vW%OiwR@b80S$=9>u> zH-KgQq)EPv9LBi_dy+9r1)&{2$&j^E6KaV!DJk)6YL#BPjN}_(Fl>K-F8`#gSg5rnRlV{y-myLT$QDJHJ_kfCo!~U-TE+o<0gzX&CZJHo$1`(YbFcN{UfQ-radR=|Fm_ja_0qZ+?avyrQ1FA$ZII~zDWPpJaT$)3%TVNAVDNKDo;xK|kuXiAn zgeDBbvF}34f(4@<#2O(FA>IH79;J{*We_C0AxjhFYIW*B?+hU(hM+9tL7I>tN$nQ{7@Mp+CmP|keGS$GaP3iN-RX2g+e$`A@Wa$Pw{1Bh6hIFzRV8MF>u ziU`?xmb-*euoQ#%HiT9TKFxE(*ayo6STLGLX)dRGb8!A{m_rpKh!a={{x`>hb$iki zKZXiYKaV+N|1zuaG8m%Pn8v{i8t6|3XB{IkIVF5dLI2qyo}X z5dJ%k+}`3655}t;yVqS#8&EHSc#)BqG8XumToMbRlfjUToZHUiq+XbM@-z^nU@7xB zjgvIt97fVG!D zr`Rwwlj|Ij+(Dk_5bS}^fSf%}qtug=V8~!EgW&`EQ^W#D@Z>4?2r?c&=r%kuiac8l zdA$!|KSYjlOGzHPGWBN=B!n>sqv0aQOztO?3owv$%6&3H&LzHFZ$>pJ#Gvgl1uorWuv{5s>XH&mn*!p>#Kpg)!&}@B-ky zI4(r)F)rVvke8tM z2@))kkwz9fDGVoR7C=Lj`3Z$VD)N!1im00sH)E09K^4*%A_bYNCmzJ^Da(*E$kfez zC-LQ?ttXd(J;>+eA~^Fh-wPZhnCHoPvlyCH3aKXHA%xwK8~PMlAoL0(7zG{VdOY-j z5NgI<8i2FRUDx9*=SVQfUSkKW1da&e6`skBmr+8g!;%Pj6pn&rm|RKonkPnK$Y?Ib=35g9H&$Cnt;`VwT$g z!FeOWBG(UL=m1X`fN$$gM$0{uuII_~_c*XP=MZ{^Q3R0{MC@_or|>c$2LNxDAty;# z;^eXHQwfE_8kY}Hr$BL`f67xU!hO~@AjDY?v-a@L(tl^5V-Zj{T@$6QX|BEeE8$j#soHsHnp?#LCtAWst*pwfsW(7@!#1kEMO zDRPes_gI)yaI=wgijYS^Oa*Nti?e{hIDnf!;Vo+!a0S$7WWN9pS+T~v2!IK0xI`PQKC{l(&@GgTWM1tk=q#%rxzUO2<1Q?8_GGlb)B~=vJGzh%V9K1hd z)ETr6dFdN0g5@sF8TXTf#(}&A zEhP@*tq>{@Kf!7S3dHiTs$2)iy3@ISoJjxgLkfhOis0O3vax24JaXW`A4G1>3S$`N z&_^ygmwuKeK@5H@mvOrrt2K^z-A(TuZ zyAFT{In+VONF7JsmLkuv5EA)vr&!?2Yge2IIfbA54y17qMS*h#XWLz($!OSJL_red zUMh&SVFZu|445nT7rD7Szm~gk?D5oxpW?@*t=WLyVVZ9uf=y zV!3TE@|n!leNW!e!E(og+!2{?=3xwBKePooCz6FQv_Sh!VQ5MG)TPMqK(0E)ewfSk zb9sdqj86`C0!UPnoN(l$jiZxg((Z%K(4!{$fiO37$R8k+rB)s6T<*3--idUIEI#i8=WB3 zOhP$%#$q|G0U<&XK}zAsC3%Kj56CG*DVf~=ml6n}ApTFIIF(1eNR|*}S`Fb?2A(E{ z3^;(a6}*4yIB`Pan8{rcxBxll(6htD3FL7ph_+!=Nx@;u*;dE|kV}#|&*io=2&Ckx zv&ex#B#0df*%^2=hMdCB<@F|koS=pA+yOKO-BNmgk~ncNI~jMqd--(Z^x)cMd3SjC zr@S;?arg82*%|F0=d#^(`Qp3ot5mA1rmN~N!w*gU1O8o*vcDz%bQAuqO4rNr`&;b0 z3&a1>|NLG5fodJm>GRbms_x!w0V02VdBa~wsj8NIxRDQ!GJry zvZzS8Rnqs5F5LYs;(sl-JZs2z>Kn-~5Hoj@|6Bj_(?EQDOL_mTQLSZ8-}OCdC%I;6@@iWX1@`vxLYEt;Wz4?V78+eJo@b**PJWGM=R}*!Hx)kU^s_N+~a+#kNE z+Ee%7`e}pe1zMndUv2&7m*f7|FI{8)&vpk!{98lzyjN`WA%n}e7%s1D@D&5&4>(+9 zFW+StyqK9c_G^cB`{H!p-Jo^Dzwht&ANFN~;yu^hk25^-iwx#8vh+QR{LO&m2h#Fw z-F(53ouyQy=V#O8BooGzQ1*@pewl$k#rH<=jNQXCHVePsV+i*9F~xpALvlN6%$2<- zfRSWQgo4ZD7>-V0Ow|26!&aF$F(`Y_QOz}{hE!WbRl4H$B;Aj5Je1ammfIB{@yH)d zcy>sloswxcOC^d5!z4~0Gk$aTqY2LrNwiZk%~z=err=@V%i5|L zO}an)v-%y$CqZthV z1CkUZl$7wh3E}yxr#RB#2T$LqpP7&sEyp%!DWas64@@~l@dvlym10_M`Ot*Ftg(Fw zB$TZ1yCI?L;3-{4N9sDJvJSNbBKQJsqiM$O%vIUH2lVWAC4usDK}eb>pz% zAiU=U>olZ@nvxSEcYz=Ebwj@4c)zb-IQd*)BdfERn)>w6gulwZv>eOc3n{t#M@G!7 zzB%cxlUCo{BSBig259MN|#BKM@12Q!>)$%$w; zE`swSa?g2rV8-d;IXxYxXUOT}Iei_cKf{?7?WaQU4MBu$1DQM4!4osux8BPVS!m_UViYO-&e;&7rN$`3FMxZ8ID_IwR#B!SNHoY;R|BC=!=i3UgpLLS;oWhcq$&xfXB!2_$nUXfM>Ji z6>ku6#ZXAWd46QTe2MUo?`|ll(qQlyqlIUyg*UB*htk5g)xw|F!lW(KKM zCQH!tDB5~|*-eiiypbC*-#ndGf$^Li%XY(X+s<#r?i9FvXvPnj7bkl(e=nxt?;pJ0F?PSsQ9(XiwV27vtH_A({9uL?v%NvFv0;8o19~%qW*dXq1_o9LlF36a z$RPMmZp3}_bXJA7DY9eB+4p~!=gKfj+)9qsxP5M}2r0`AM4|FPjEy!|@d=f#g>ZUd zT&Y5KMx$9LI~2GaufytcIeYg;`xv2x*pL@el(Nm)X)^$r(rQr5T)T$T7b~r#;Dk2v zF;0t3Sv+%VRXXVzeY!H{N(qjbmbw?5P(?nT)8eII7+c8VBS!h-EYH5i)KL~6^X%s$ zEM8O?x6l{ACR7P zY4_tou2PE#CdyXkfuqoxODkyHv!m7h^OZ{`2Y)$7aOE7AXIMCD<*JT;kT#8zS1 zDm9yd84Ii(3$-B&BTE)&Qx+Oq7G}mQ(AF$8<}3{D*`N*DXe`>8nY6*%w9y&0F|=xf zH*2G_Yhz|uv|Tl3HM1(-s5+Y(niOwQok30Pi9DvFKA>WBG$k)<#BPJG^oXXO+hNcZ z*&s94p^%DlW0Jk*N5t7$S@@pmICrA9pZ~(_o482aab12lBK(MF{HUY+ILp}(^CDMT(Oc`;nQz=*8>d5*29 zas(BW9`V3$b0ihwoKshNL{iP2Zh|6wi>pj8FsAB$o?|=INYnKKBewqMIW}?3aEEEH zA|uB0gK5s+U(Dx{pzIwB{4xz+^1R)MU4e-1t|E72*9UW)LLk_L81V=(&wv~Nt|AIH z6W4#b$dK-8ka#xtx_5H-?6*%*Dr_**sS4R?RW`E|ttSBsEwtpOoTv$;fsC4Ue)8y4 z@MD7|{n)4}KQ=~$;)P)uK}1an4~#h5rm$&QCowhm>ESHDI1t39m9xN@v-^35twsdJ zvhY1iJr@*XPS20e&Ci~g$DNf|osu^=ACEg3uR0TNa2g(U4qkBre*Ww`lpu^@)@?2l zW3K-9S;B&n5_RrjATuUCKQW`N>K084G8$TVVn&OYi@1ttNatoH@D~~At}rmXykJk- z{n0$&=!@S`^*_$>d`6Ib9x;5Lg)jDqrTSC(F^&9nh6;1+_5w8sY9 zsBUD{8VyUBsZ$@UwYiFFl(`m|(FJk7Vtlw__GASVzzy+z`7w>b5RbieNORwi*-b-x z`LTsViSPv{fqS;o&(mxbsWxrBsSuXDirg_?AIxy_Es;Zg!hBZtxS$YE}F1b@G_?s9Fzo3#)1Cxp?u()UF2w;2-5i8jS?w)wMc=xvRft&C>d z7tf{G2ATfe3u@TUkEgY02rEcs-iuG=?>JAt&QVpY-hZF*rmBx+Ss*xX1xMt!kBzjT z{dZ9c%$09rQMD$60!F%QkNb?H)##}m< z%O_^EsGIACLK@=vyX#IR+veEa_`xij?k7IlHC>grO1OG|Orm8vc(HMpWw5JZ+L3*S-5pXM1h+wCz&(R30DuI_gOLP2ug z@=DZ=!0`?QRrG_$^IH6YqW(j{_lE&VclJ3^N0LO5>4cfaO8`h|-gRbit+yoefq6vL0f=!3h{Sb3YV$vwu{8;sR= z7aQGLELuXJ&52~`dm8!M90|g!jIKkTy$HEm0+GiB3XVw3Zlp$(gJ*N(IIper)F$5f zn6(X|i29ub?zv7s&#@t@G+K9KqX#9`)pmng4!e_6@D85NsZb$ks}WT-3%|qQ@5Tf(<7^)tGsM=li^M(G z`S%$@%v~Ps_y&)5_TCO~Ugj=c7QSbIpJo^u%p7G``kteiosq;}x30Tr-SCR_wkZ%) z#fYSsg)cGq<(QzHWjJCOj$?-7G{XxikKIk!8`SZ>Td_OV+lO=f4T7{8G0jXlp>DfZ z+;cyF!~M(e=37Uh>^=VPGuuU9_5^_sh3^UAr)h>yJB|o}yV7?Y-EY$*fA9uzacWok zj->m|fCRUKeic#CO|PL>6>1fAQ2fd@_;HE{-%CeAH=Kq&v_7=O9#m^YcL8}<*!b2J zt?*S7Z4s?TM;I&xxHZlPKj#? z6LlKSj%ESFNJyzb|Hy>-SlPY!i=2}G@>HoppU!P)N#>6v4$I#8l=nATq3*lsgD<52 zb@*X)Mq09wCqY#zTp#w5Kf>Q{KFGf>;@#w>=sJC`qY`Ia>IB$7cq31u^!2zRU#~1w zAr3Ay?2!h=f2jBSV^vTx+;=1I9Z~>w*AaCHebe>_|d_1AAB%C$o zPy38BR#aPa!i&fa;pNvE!oUCY^M9Fh$ zgNw*5)%n*M!v7!*d%tUn>e-y}Dsw}5{n>!?gL=MoMqV|gsV21hU_aEMwGs@C8O!9|026-tfu3{IFTdwo3bA+5cfBB7L zI`u{5mhk-R9AO`6o3nN0Z>hSUW_aF_&)C@ZB67oa`PGcj!xMT+!r9U69jed0yYFuA z=6l+^njK62JvpckO&LhtG7cUfnB~c*efPJpQ(^$1)n`z~Of|YIO4jfStX6o1)X2K>Yb5vw64+>doaU-qL<)(m{MhDV> z5VUc;I#*GZF4w1Kiga5`ZClDvSf$MHxuH68qod{mJwr*QBIk#OTD0mfff`6D+1tVA zK&LU7;obT_aIN#4talYptkFv*O zva74iE!*YiInDxAtKz;^#eA)b>L}`hk@DACbQd0w@~4W{I3F^Fa;K5L;GCw~6BE+{ zxBRyUCZ;4YG1p08Of?&6$x?^%C~#a-Vnil?G+-0RdFQLlh*6l#J9h=u2ZClK#(aZw zK|0x%BPJhY>01`~VTJ)Whd!D=H<&yBaK5XbBSz1G&@JEf_Ziy%Ita2ql!y@WEOA44 z{&9w_`&cTiyJ>dBy5f!44e!kp6Y_0YH+8E&c5W;?R^#R|LKppsb8}&>Hg`wQrx17C z&MZ5wHOY=6%(3H^rnm|!H9(kP;!7ANVq^OIPhw1=SQ%eud2_Sd*<5SzX=`7;Jul8^ zygbfRE5&ZO;csKgttIF7o^*?4-H^kfsXyD2pTtKxoPNitA~(}Ls?PvptkmG4xn`Dc z=KjSX-pfvYDaSNEniRiLVemUnmDVWKm=GST(dxqwHICsT{)F&IiK*rMF-|F$kT;EG zN4-klsB!(-T#tIY(VwBmh~H{*{T-)@X*x71K2~KiK~iA}!NvDkQOU=&spW@HsQ zU+h%V!riH=Er(T|%8&SPcnABUBn=GE8~NY?<<)>H_0=WO6xdl?Gcv}LiXxkKrlDChlIfPLuIec!c z;@&cD-rtAJdrY)^unm+CqZs*s3Xg4hN3>|x$d)!5@kYkP!m_&JzPbWa-3RgyRqlb! zJ49hw>Egc91*X#WnT{&U!DcwZbTLRPI;Phy3#l>87Krq+BLyawiqt6flOjUBd?eZ`B0!q2dMFS`C^WS6f$(s!R%E*trY{?{t5rXm-g!4nZRym=q^1FFh2%TR2 zQ@moD3oCE{I;DoUSC}L2AJS*9Q)X|W$-f>`PZ+Yt^}qzJ_=|tGDnW zq?Nk-JlMWxh;{K5rvoDATLgu@dRj=O&f3z}714|%RyZ>%%Oci#>ULn;0nKQ7vp*Zn zpxujWi8Q0^?M_`oj^EzBKQ#5hUda=HQn%AHq)PAq{-eD*Agojcen+ZtnwDq$|10fk zb{m9Y@SUeX>aJ)HF>Sl-r(4xCLJX~J1vaHrZJ&Ozodn`IbhJ0(pD&+?9nmy#O0gu% z1t@ZnqmjW(hSlMxYiS4JwKM}Lk!xTzlkitpx49}eRcwFwMK~f=-()7wEp9J%?w1o~ zKq6CSGm|R(in(_12Mm$mpcc55UDI@J{?9M%(42a_L-F({xO<%L!9B9CdI8bC@^hpI zJHlMKwgshYJp>eU-v_$APXS8KzXj_7CG3phg^=-sFA-^;k_|*flFZyY+t#r zv5OYQ&V&cqY>U$|hx5pN!B6yv26hGGbWHD^&|tNF6_&d zBlmT;(euy)98jZzUF7-O*X4JPH^+vsBPD^qfgoL>^1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - -MLX: mlx/ops.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      ops.h File Reference
      -
      -
      -
      #include <optional>
      -#include "mlx/array.h"
      -#include "mlx/device.h"
      -#include "mlx/stream.h"
      -#include "mlx/utils.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      array mlx::core::arange (double start, double stop, double step, Dtype dtype, StreamOrDevice s={})
       A 1D array of numbers starting at start (optional), stopping at stop, stepping by step (optional).
       
      array mlx::core::arange (double start, double stop, double step, StreamOrDevice s={})
       
      array mlx::core::arange (double start, double stop, Dtype dtype, StreamOrDevice s={})
       
      array mlx::core::arange (double start, double stop, StreamOrDevice s={})
       
      array mlx::core::arange (double stop, Dtype dtype, StreamOrDevice s={})
       
      array mlx::core::arange (double stop, StreamOrDevice s={})
       
      array mlx::core::arange (int start, int stop, int step, StreamOrDevice s={})
       
      array mlx::core::arange (int start, int stop, StreamOrDevice s={})
       
      array mlx::core::arange (int stop, StreamOrDevice s={})
       
      array mlx::core::linspace (double start, double stop, int num=50, Dtype dtype=float32, StreamOrDevice s={})
       A 1D array of num evenly spaced numbers in the range [start, stop]
       
      array mlx::core::astype (array a, Dtype dtype, StreamOrDevice s={})
       Convert an array to the given data type.
       
      array mlx::core::as_strided (array a, std::vector< int > shape, std::vector< size_t > strides, size_t offset, StreamOrDevice s={})
       Create a view of an array with the given shape and strides.
       
      array mlx::core::copy (array a, StreamOrDevice s={})
       Copy another array.
       
      array mlx::core::full (std::vector< int > shape, array vals, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape with the given value(s).
       
      array mlx::core::full (std::vector< int > shape, array vals, StreamOrDevice s={})
       
      template<typename T >
      array mlx::core::full (std::vector< int > shape, T val, Dtype dtype, StreamOrDevice s={})
       
      template<typename T >
      array mlx::core::full (std::vector< int > shape, T val, StreamOrDevice s={})
       
      array mlx::core::zeros (const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape with zeros.
       
      array mlx::core::zeros (const std::vector< int > &shape, StreamOrDevice s={})
       
      array mlx::core::zeros_like (const array &a, StreamOrDevice s={})
       
      array mlx::core::ones (const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape with ones.
       
      array mlx::core::ones (const std::vector< int > &shape, StreamOrDevice s={})
       
      array mlx::core::ones_like (const array &a, StreamOrDevice s={})
       
      array mlx::core::eye (int n, int m, int k, Dtype dtype, StreamOrDevice s={})
       Fill an array of the given shape (n,m) with ones in the specified diagonal k, and zeros everywhere else.
       
      array mlx::core::eye (int n, Dtype dtype, StreamOrDevice s={})
       
      array mlx::core::eye (int n, int m, StreamOrDevice s={})
       
      array mlx::core::eye (int n, int m, int k, StreamOrDevice s={})
       
      array mlx::core::eye (int n, StreamOrDevice s={})
       
      array mlx::core::identity (int n, Dtype dtype, StreamOrDevice s={})
       Create a square matrix of shape (n,n) of zeros, and ones in the major diagonal.
       
      array mlx::core::identity (int n, StreamOrDevice s={})
       
      array mlx::core::tri (int n, int m, int k, Dtype type, StreamOrDevice s={})
       
      array mlx::core::tri (int n, Dtype type, StreamOrDevice s={})
       
      array mlx::core::tril (array x, int k=0, StreamOrDevice s={})
       
      array mlx::core::triu (array x, int k=0, StreamOrDevice s={})
       
      array mlx::core::reshape (const array &a, std::vector< int > shape, StreamOrDevice s={})
       Reshape an array to the given shape.
       
      array mlx::core::flatten (const array &a, int start_axis, int end_axis=-1, StreamOrDevice s={})
       Flatten the dimensions in the range [start_axis, end_axis] .
       
      array mlx::core::flatten (const array &a, StreamOrDevice s={})
       Flatten the array to 1D.
       
      array mlx::core::hadamard_transform (const array &a, std::optional< float > scale=std::nullopt, StreamOrDevice s={})
       Multiply the array by the Hadamard matrix of corresponding size.
       
      array mlx::core::squeeze (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       Remove singleton dimensions at the given axes.
       
      array mlx::core::squeeze (const array &a, int axis, StreamOrDevice s={})
       Remove singleton dimensions at the given axis.
       
      array mlx::core::squeeze (const array &a, StreamOrDevice s={})
       Remove all singleton dimensions.
       
      array mlx::core::expand_dims (const array &a, const std::vector< int > &axes, StreamOrDevice s={})
       Add a singleton dimension at the given axes.
       
      array mlx::core::expand_dims (const array &a, int axis, StreamOrDevice s={})
       Add a singleton dimension at the given axis.
       
      array mlx::core::slice (const array &a, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})
       Slice an array.
       
      array mlx::core::slice (const array &a, const std::vector< int > &start, const std::vector< int > &stop, StreamOrDevice s={})
       Slice an array with a stride of 1 in each dimension.
       
      array mlx::core::slice_update (const array &src, const array &update, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})
       Update a slice from the source array.
       
      array mlx::core::slice_update (const array &src, const array &update, std::vector< int > start, std::vector< int > stop, StreamOrDevice s={})
       Update a slice from the source array with stride 1 in each dimension.
       
      std::vector< arraymlx::core::split (const array &a, int num_splits, int axis, StreamOrDevice s={})
       Split an array into sub-arrays along a given axis.
       
      std::vector< arraymlx::core::split (const array &a, int num_splits, StreamOrDevice s={})
       
      std::vector< arraymlx::core::split (const array &a, const std::vector< int > &indices, int axis, StreamOrDevice s={})
       
      std::vector< arraymlx::core::split (const array &a, const std::vector< int > &indices, StreamOrDevice s={})
       
      std::vector< arraymlx::core::meshgrid (const std::vector< array > &arrays, bool sparse=false, std::string indexing="xy", StreamOrDevice s={})
       A vector of coordinate arrays from coordinate vectors.
       
      array mlx::core::clip (const array &a, const std::optional< array > &a_min=std::nullopt, const std::optional< array > &a_max=std::nullopt, StreamOrDevice s={})
       Clip (limit) the values in an array.
       
      array mlx::core::concatenate (const std::vector< array > &arrays, int axis, StreamOrDevice s={})
       Concatenate arrays along a given axis.
       
      array mlx::core::concatenate (const std::vector< array > &arrays, StreamOrDevice s={})
       
      array mlx::core::stack (const std::vector< array > &arrays, int axis, StreamOrDevice s={})
       Stack arrays along a new axis.
       
      array mlx::core::stack (const std::vector< array > &arrays, StreamOrDevice s={})
       
      array mlx::core::repeat (const array &arr, int repeats, int axis, StreamOrDevice s={})
       Repeat an array along an axis.
       
      array mlx::core::repeat (const array &arr, int repeats, StreamOrDevice s={})
       
      array mlx::core::tile (const array &arr, std::vector< int > reps, StreamOrDevice s={})
       
      array mlx::core::transpose (const array &a, std::vector< int > axes, StreamOrDevice s={})
       Permutes the dimensions according to the given axes.
       
      array mlx::core::transpose (const array &a, std::initializer_list< int > axes, StreamOrDevice s={})
       
      array mlx::core::swapaxes (const array &a, int axis1, int axis2, StreamOrDevice s={})
       Swap two axes of an array.
       
      array mlx::core::moveaxis (const array &a, int source, int destination, StreamOrDevice s={})
       Move an axis of an array.
       
      array mlx::core::pad (const array &a, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       Pad an array with a constant value.
       
      array mlx::core::pad (const array &a, const std::vector< std::pair< int, int > > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       Pad an array with a constant value along all axes.
       
      array mlx::core::pad (const array &a, const std::pair< int, int > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       
      array mlx::core::pad (const array &a, int pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
       
      array mlx::core::transpose (const array &a, StreamOrDevice s={})
       Permutes the dimensions in reverse order.
       
      array mlx::core::broadcast_to (const array &a, const std::vector< int > &shape, StreamOrDevice s={})
       Broadcast an array to a given shape.
       
      std::vector< arraymlx::core::broadcast_arrays (const std::vector< array > &inputs, StreamOrDevice s={})
       Broadcast a vector of arrays against one another.
       
      array mlx::core::equal (const array &a, const array &b, StreamOrDevice s={})
       Returns the bool array with (a == b) element-wise.
       
      array mlx::core::operator== (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator== (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator== (const array &a, T b)
       
      array mlx::core::not_equal (const array &a, const array &b, StreamOrDevice s={})
       Returns the bool array with (a != b) element-wise.
       
      array mlx::core::operator!= (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator!= (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator!= (const array &a, T b)
       
      array mlx::core::greater (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a > b) element-wise.
       
      array mlx::core::operator> (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator> (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator> (const array &a, T b)
       
      array mlx::core::greater_equal (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a >= b) element-wise.
       
      array mlx::core::operator>= (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator>= (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator>= (const array &a, T b)
       
      array mlx::core::less (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a < b) element-wise.
       
      array mlx::core::operator< (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator< (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator< (const array &a, T b)
       
      array mlx::core::less_equal (const array &a, const array &b, StreamOrDevice s={})
       Returns bool array with (a <= b) element-wise.
       
      array mlx::core::operator<= (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator<= (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator<= (const array &a, T b)
       
      array mlx::core::array_equal (const array &a, const array &b, bool equal_nan, StreamOrDevice s={})
       True if two arrays have the same shape and elements.
       
      array mlx::core::array_equal (const array &a, const array &b, StreamOrDevice s={})
       
      array mlx::core::isnan (const array &a, StreamOrDevice s={})
       
      array mlx::core::isinf (const array &a, StreamOrDevice s={})
       
      array mlx::core::isfinite (const array &a, StreamOrDevice s={})
       
      array mlx::core::isposinf (const array &a, StreamOrDevice s={})
       
      array mlx::core::isneginf (const array &a, StreamOrDevice s={})
       
      array mlx::core::where (const array &condition, const array &x, const array &y, StreamOrDevice s={})
       Select from x or y depending on condition.
       
      array mlx::core::nan_to_num (const array &a, float nan=0.0f, const std::optional< float > posinf=std::nullopt, const std::optional< float > neginf=std::nullopt, StreamOrDevice s={})
       Replace NaN and infinities with finite numbers.
       
      array mlx::core::all (const array &a, bool keepdims, StreamOrDevice s={})
       True if all elements in the array are true (or non-zero).
       
      array mlx::core::all (const array &a, StreamOrDevice s={})
       
      array mlx::core::allclose (const array &a, const array &b, double rtol=1e-5, double atol=1e-8, bool equal_nan=false, StreamOrDevice s={})
       True if the two arrays are equal within the specified tolerance.
       
      array mlx::core::isclose (const array &a, const array &b, double rtol=1e-5, double atol=1e-8, bool equal_nan=false, StreamOrDevice s={})
       Returns a boolean array where two arrays are element-wise equal within the specified tolerance.
       
      array mlx::core::all (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axes.
       
      array mlx::core::all (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axis.
       
      array mlx::core::any (const array &a, bool keepdims, StreamOrDevice s={})
       True if any elements in the array are true (or non-zero).
       
      array mlx::core::any (const array &a, StreamOrDevice s={})
       
      array mlx::core::any (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axes.
       
      array mlx::core::any (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Reduces the input along the given axis.
       
      array mlx::core::sum (const array &a, bool keepdims, StreamOrDevice s={})
       Sums the elements of an array.
       
      array mlx::core::sum (const array &a, StreamOrDevice s={})
       
      array mlx::core::sum (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Sums the elements of an array along the given axes.
       
      array mlx::core::sum (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Sums the elements of an array along the given axis.
       
      array mlx::core::mean (const array &a, bool keepdims, StreamOrDevice s={})
       Computes the mean of the elements of an array.
       
      array mlx::core::mean (const array &a, StreamOrDevice s={})
       
      array mlx::core::mean (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       Computes the mean of the elements of an array along the given axes.
       
      array mlx::core::mean (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Computes the mean of the elements of an array along the given axis.
       
      array mlx::core::var (const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
       Computes the variance of the elements of an array.
       
      array mlx::core::var (const array &a, StreamOrDevice s={})
       
      array mlx::core::var (const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the variance of the elements of an array along the given axes.
       
      array mlx::core::var (const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the variance of the elements of an array along the given axis.
       
      array mlx::core::std (const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
       Computes the standard deviation of the elements of an array.
       
      array mlx::core::std (const array &a, StreamOrDevice s={})
       
      array mlx::core::std (const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the standard deviatoin of the elements of an array along the given axes.
       
      array mlx::core::std (const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})
       Computes the standard deviation of the elements of an array along the given axis.
       
      array mlx::core::prod (const array &a, bool keepdims, StreamOrDevice s={})
       The product of all elements of the array.
       
      array mlx::core::prod (const array &a, StreamOrDevice s={})
       
      array mlx::core::prod (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The product of the elements of an array along the given axes.
       
      array mlx::core::prod (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The product of the elements of an array along the given axis.
       
      array mlx::core::max (const array &a, bool keepdims, StreamOrDevice s={})
       The maximum of all elements of the array.
       
      array mlx::core::max (const array &a, StreamOrDevice s={})
       
      array mlx::core::max (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The maximum of the elements of an array along the given axes.
       
      array mlx::core::max (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The maximum of the elements of an array along the given axis.
       
      array mlx::core::min (const array &a, bool keepdims, StreamOrDevice s={})
       The minimum of all elements of the array.
       
      array mlx::core::min (const array &a, StreamOrDevice s={})
       
      array mlx::core::min (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The minimum of the elements of an array along the given axes.
       
      array mlx::core::min (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The minimum of the elements of an array along the given axis.
       
      array mlx::core::argmin (const array &a, bool keepdims, StreamOrDevice s={})
       Returns the index of the minimum value in the array.
       
      array mlx::core::argmin (const array &a, StreamOrDevice s={})
       
      array mlx::core::argmin (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Returns the indices of the minimum values along a given axis.
       
      array mlx::core::argmax (const array &a, bool keepdims, StreamOrDevice s={})
       Returns the index of the maximum value in the array.
       
      array mlx::core::argmax (const array &a, StreamOrDevice s={})
       
      array mlx::core::argmax (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       Returns the indices of the maximum values along a given axis.
       
      array mlx::core::sort (const array &a, StreamOrDevice s={})
       Returns a sorted copy of the flattened array.
       
      array mlx::core::sort (const array &a, int axis, StreamOrDevice s={})
       Returns a sorted copy of the array along a given axis.
       
      array mlx::core::argsort (const array &a, StreamOrDevice s={})
       Returns indices that sort the flattened array.
       
      array mlx::core::argsort (const array &a, int axis, StreamOrDevice s={})
       Returns indices that sort the array along a given axis.
       
      array mlx::core::partition (const array &a, int kth, StreamOrDevice s={})
       Returns a partitioned copy of the flattened array such that the smaller kth elements are first.
       
      array mlx::core::partition (const array &a, int kth, int axis, StreamOrDevice s={})
       Returns a partitioned copy of the array along a given axis such that the smaller kth elements are first.
       
      array mlx::core::argpartition (const array &a, int kth, StreamOrDevice s={})
       Returns indices that partition the flattened array such that the smaller kth elements are first.
       
      array mlx::core::argpartition (const array &a, int kth, int axis, StreamOrDevice s={})
       Returns indices that partition the array along a given axis such that the smaller kth elements are first.
       
      array mlx::core::topk (const array &a, int k, StreamOrDevice s={})
       Returns topk elements of the flattened array.
       
      array mlx::core::topk (const array &a, int k, int axis, StreamOrDevice s={})
       Returns topk elements of the array along a given axis.
       
      array mlx::core::logsumexp (const array &a, bool keepdims, StreamOrDevice s={})
       The logsumexp of all elements of the array.
       
      array mlx::core::logsumexp (const array &a, StreamOrDevice s={})
       
      array mlx::core::logsumexp (const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})
       The logsumexp of the elements of an array along the given axes.
       
      array mlx::core::logsumexp (const array &a, int axis, bool keepdims=false, StreamOrDevice s={})
       The logsumexp of the elements of an array along the given axis.
       
      array mlx::core::abs (const array &a, StreamOrDevice s={})
       Absolute value of elements in an array.
       
      array mlx::core::negative (const array &a, StreamOrDevice s={})
       Negate an array.
       
      array mlx::core::operator- (const array &a)
       
      array mlx::core::sign (const array &a, StreamOrDevice s={})
       The sign of the elements in an array.
       
      array mlx::core::logical_not (const array &a, StreamOrDevice s={})
       Logical not of an array.
       
      array mlx::core::logical_and (const array &a, const array &b, StreamOrDevice s={})
       Logical and of two arrays.
       
      array mlx::core::operator&& (const array &a, const array &b)
       
      array mlx::core::logical_or (const array &a, const array &b, StreamOrDevice s={})
       Logical or of two arrays.
       
      array mlx::core::operator|| (const array &a, const array &b)
       
      array mlx::core::reciprocal (const array &a, StreamOrDevice s={})
       The reciprocal (1/x) of the elements in an array.
       
      array mlx::core::add (const array &a, const array &b, StreamOrDevice s={})
       Add two arrays.
       
      array mlx::core::operator+ (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator+ (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator+ (const array &a, T b)
       
      array mlx::core::subtract (const array &a, const array &b, StreamOrDevice s={})
       Subtract two arrays.
       
      array mlx::core::operator- (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator- (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator- (const array &a, T b)
       
      array mlx::core::multiply (const array &a, const array &b, StreamOrDevice s={})
       Multiply two arrays.
       
      array mlx::core::operator* (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator* (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator* (const array &a, T b)
       
      array mlx::core::divide (const array &a, const array &b, StreamOrDevice s={})
       Divide two arrays.
       
      array mlx::core::operator/ (const array &a, const array &b)
       
      array mlx::core::operator/ (double a, const array &b)
       
      array mlx::core::operator/ (const array &a, double b)
       
      std::vector< arraymlx::core::divmod (const array &a, const array &b, StreamOrDevice s={})
       Compute the element-wise quotient and remainder.
       
      array mlx::core::floor_divide (const array &a, const array &b, StreamOrDevice s={})
       Compute integer division.
       
      array mlx::core::remainder (const array &a, const array &b, StreamOrDevice s={})
       Compute the element-wise remainder of division.
       
      array mlx::core::operator% (const array &a, const array &b)
       
      template<typename T >
      array mlx::core::operator% (T a, const array &b)
       
      template<typename T >
      array mlx::core::operator% (const array &a, T b)
       
      array mlx::core::maximum (const array &a, const array &b, StreamOrDevice s={})
       Element-wise maximum between two arrays.
       
      array mlx::core::minimum (const array &a, const array &b, StreamOrDevice s={})
       Element-wise minimum between two arrays.
       
      array mlx::core::floor (const array &a, StreamOrDevice s={})
       Floor the element of an array.
       
      array mlx::core::ceil (const array &a, StreamOrDevice s={})
       Ceil the element of an array.
       
      array mlx::core::square (const array &a, StreamOrDevice s={})
       Square the elements of an array.
       
      array mlx::core::exp (const array &a, StreamOrDevice s={})
       Exponential of the elements of an array.
       
      array mlx::core::sin (const array &a, StreamOrDevice s={})
       Sine of the elements of an array.
       
      array mlx::core::cos (const array &a, StreamOrDevice s={})
       Cosine of the elements of an array.
       
      array mlx::core::tan (const array &a, StreamOrDevice s={})
       Tangent of the elements of an array.
       
      array mlx::core::arcsin (const array &a, StreamOrDevice s={})
       Arc Sine of the elements of an array.
       
      array mlx::core::arccos (const array &a, StreamOrDevice s={})
       Arc Cosine of the elements of an array.
       
      array mlx::core::arctan (const array &a, StreamOrDevice s={})
       Arc Tangent of the elements of an array.
       
      array mlx::core::arctan2 (const array &a, const array &b, StreamOrDevice s={})
       Inverse tangent of the ratio of two arrays.
       
      array mlx::core::sinh (const array &a, StreamOrDevice s={})
       Hyperbolic Sine of the elements of an array.
       
      array mlx::core::cosh (const array &a, StreamOrDevice s={})
       Hyperbolic Cosine of the elements of an array.
       
      array mlx::core::tanh (const array &a, StreamOrDevice s={})
       Hyperbolic Tangent of the elements of an array.
       
      array mlx::core::arcsinh (const array &a, StreamOrDevice s={})
       Inverse Hyperbolic Sine of the elements of an array.
       
      array mlx::core::arccosh (const array &a, StreamOrDevice s={})
       Inverse Hyperbolic Cosine of the elements of an array.
       
      array mlx::core::arctanh (const array &a, StreamOrDevice s={})
       Inverse Hyperbolic Tangent of the elements of an array.
       
      array mlx::core::degrees (const array &a, StreamOrDevice s={})
       Convert the elements of an array from Radians to Degrees.
       
      array mlx::core::radians (const array &a, StreamOrDevice s={})
       Convert the elements of an array from Degrees to Radians.
       
      array mlx::core::log (const array &a, StreamOrDevice s={})
       Natural logarithm of the elements of an array.
       
      array mlx::core::log2 (const array &a, StreamOrDevice s={})
       Log base 2 of the elements of an array.
       
      array mlx::core::log10 (const array &a, StreamOrDevice s={})
       Log base 10 of the elements of an array.
       
      array mlx::core::log1p (const array &a, StreamOrDevice s={})
       Natural logarithm of one plus elements in the array: log(1 + a).
       
      array mlx::core::logaddexp (const array &a, const array &b, StreamOrDevice s={})
       Log-add-exp of one elements in the array: log(exp(a) + exp(b)).
       
      array mlx::core::sigmoid (const array &a, StreamOrDevice s={})
       Element-wise logistic sigmoid of the array: 1 / (1 + exp(-x).
       
      array mlx::core::erf (const array &a, StreamOrDevice s={})
       Computes the error function of the elements of an array.
       
      array mlx::core::erfinv (const array &a, StreamOrDevice s={})
       Computes the inverse error function of the elements of an array.
       
      array mlx::core::expm1 (const array &a, StreamOrDevice s={})
       Computes the expm1 function of the elements of an array.
       
      array mlx::core::stop_gradient (const array &a, StreamOrDevice s={})
       Stop the flow of gradients.
       
      array mlx::core::round (const array &a, int decimals, StreamOrDevice s={})
       Round a floating point number.
       
      array mlx::core::round (const array &a, StreamOrDevice s={})
       
      array mlx::core::matmul (const array &a, const array &b, StreamOrDevice s={})
       Matrix-matrix multiplication.
       
      array mlx::core::gather (const array &a, const std::vector< array > &indices, const std::vector< int > &axes, const std::vector< int > &slice_sizes, StreamOrDevice s={})
       Gather array entries given indices and slices.
       
      array mlx::core::gather (const array &a, const array &indices, int axis, const std::vector< int > &slice_sizes, StreamOrDevice s={})
       
      array mlx::core::take (const array &a, const array &indices, int axis, StreamOrDevice s={})
       Take array slices at the given indices of the specified axis.
       
      array mlx::core::take (const array &a, const array &indices, StreamOrDevice s={})
       Take array entries at the given indices treating the array as flattened.
       
      array mlx::core::take_along_axis (const array &a, const array &indices, int axis, StreamOrDevice s={})
       Take array entries given indices along the axis.
       
      array mlx::core::scatter (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter updates to the given indices.
       
      array mlx::core::scatter (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array mlx::core::scatter_add (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and add updates to given indices.
       
      array mlx::core::scatter_add (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array mlx::core::scatter_prod (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and prod updates to given indices.
       
      array mlx::core::scatter_prod (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array mlx::core::scatter_max (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and max updates to given linear indices.
       
      array mlx::core::scatter_max (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array mlx::core::scatter_min (const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
       Scatter and min updates to given linear indices.
       
      array mlx::core::scatter_min (const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})
       
      array mlx::core::sqrt (const array &a, StreamOrDevice s={})
       Square root the elements of an array.
       
      array mlx::core::rsqrt (const array &a, StreamOrDevice s={})
       Square root and reciprocal the elements of an array.
       
      array mlx::core::softmax (const array &a, const std::vector< int > &axes, bool precise=false, StreamOrDevice s={})
       Softmax of an array.
       
      array mlx::core::softmax (const array &a, bool precise=false, StreamOrDevice s={})
       Softmax of an array.
       
      array mlx::core::softmax (const array &a, int axis, bool precise=false, StreamOrDevice s={})
       Softmax of an array.
       
      array mlx::core::power (const array &a, const array &b, StreamOrDevice s={})
       Raise elements of a to the power of b element-wise.
       
      array mlx::core::cumsum (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative sum of an array.
       
      array mlx::core::cumprod (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative product of an array.
       
      array mlx::core::cummax (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative max of an array.
       
      array mlx::core::cummin (const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
       Cumulative min of an array.
       
      array mlx::core::conv_general (array input, array weight, std::vector< int > stride={}, std::vector< int > padding_lo={}, std::vector< int > padding_hi={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})
       General convolution with a filter.
       
      array mlx::core::conv_general (const array &input, const array &weight, std::vector< int > stride={}, std::vector< int > padding={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})
       General convolution with a filter.
       
      array mlx::core::conv1d (const array &input, const array &weight, int stride=1, int padding=0, int dilation=1, int groups=1, StreamOrDevice s={})
       1D convolution with a filter
       
      array mlx::core::conv2d (const array &input, const array &weight, const std::pair< int, int > &stride={1, 1}, const std::pair< int, int > &padding={0, 0}, const std::pair< int, int > &dilation={1, 1}, int groups=1, StreamOrDevice s={})
       2D convolution with a filter
       
      array mlx::core::conv3d (const array &input, const array &weight, const std::tuple< int, int, int > &stride={1, 1, 1}, const std::tuple< int, int, int > &padding={0, 0, 0}, const std::tuple< int, int, int > &dilation={1, 1, 1}, int groups=1, StreamOrDevice s={})
       3D convolution with a filter
       
      array mlx::core::conv_transpose1d (const array &input, const array &weight, int stride=1, int padding=0, int dilation=1, int groups=1, StreamOrDevice s={})
       1D transposed convolution with a filter
       
      array mlx::core::conv_transpose2d (const array &input, const array &weight, const std::pair< int, int > &stride={1, 1}, const std::pair< int, int > &padding={0, 0}, const std::pair< int, int > &dilation={1, 1}, int groups=1, StreamOrDevice s={})
       2D transposed convolution with a filter
       
      array mlx::core::conv_transpose3d (const array &input, const array &weight, const std::tuple< int, int, int > &stride={1, 1, 1}, const std::tuple< int, int, int > &padding={0, 0, 0}, const std::tuple< int, int, int > &dilation={1, 1, 1}, int groups=1, StreamOrDevice s={})
       3D transposed convolution with a filter
       
      array mlx::core::quantized_matmul (const array &x, const array &w, const array &scales, const array &biases, bool transpose=true, int group_size=64, int bits=4, StreamOrDevice s={})
       Quantized matmul multiplies x with a quantized matrix w.
       
      std::tuple< array, array, arraymlx::core::quantize (const array &w, int group_size=64, int bits=4, StreamOrDevice s={})
       Quantize a matrix along its last axis.
       
      array mlx::core::dequantize (const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})
       Dequantize a matrix produced by quantize()
       
      array mlx::core::gather_qmm (const array &x, const array &w, const array &scales, const array &biases, std::optional< array > lhs_indices=std::nullopt, std::optional< array > rhs_indices=std::nullopt, bool transpose=true, int group_size=64, int bits=4, StreamOrDevice s={})
       Compute matrix products with matrix-level gather.
       
      array mlx::core::tensordot (const array &a, const array &b, const int axis=2, StreamOrDevice s={})
       Returns a contraction of a and b over multiple dimensions.
       
      array mlx::core::tensordot (const array &a, const array &b, const std::vector< int > &axes_a, const std::vector< int > &axes_b, StreamOrDevice s={})
       
      array mlx::core::outer (const array &a, const array &b, StreamOrDevice s={})
       Compute the outer product of two vectors.
       
      array mlx::core::inner (const array &a, const array &b, StreamOrDevice s={})
       Compute the inner product of two vectors.
       
      array mlx::core::addmm (array c, array a, array b, const float &alpha=1.f, const float &beta=1.f, StreamOrDevice s={})
       Compute D = beta * C + alpha * (A @ B)
       
      array mlx::core::block_masked_mm (array a, array b, int block_size, std::optional< array > mask_out=std::nullopt, std::optional< array > mask_lhs=std::nullopt, std::optional< array > mask_rhs=std::nullopt, StreamOrDevice s={})
       Compute matrix product with block masking.
       
      array mlx::core::gather_mm (array a, array b, std::optional< array > lhs_indices=std::nullopt, std::optional< array > rhs_indices=std::nullopt, StreamOrDevice s={})
       Compute matrix product with matrix-level gather.
       
      array mlx::core::diagonal (const array &a, int offset=0, int axis1=0, int axis2=1, StreamOrDevice s={})
       Extract a diagonal or construct a diagonal array.
       
      array mlx::core::diag (const array &a, int k=0, StreamOrDevice s={})
       Extract diagonal from a 2d array or create a diagonal matrix.
       
      array mlx::core::trace (const array &a, int offset, int axis1, int axis2, Dtype dtype, StreamOrDevice s={})
       Return the sum along a specified diagonal in the given array.
       
      array mlx::core::trace (const array &a, int offset, int axis1, int axis2, StreamOrDevice s={})
       
      array mlx::core::trace (const array &a, StreamOrDevice s={})
       
      std::vector< arraymlx::core::depends (const std::vector< array > &inputs, const std::vector< array > &dependencies)
       Implements the identity function but allows injecting dependencies to other arrays.
       
      array mlx::core::atleast_1d (const array &a, StreamOrDevice s={})
       convert an array to an atleast ndim array
       
      std::vector< arraymlx::core::atleast_1d (const std::vector< array > &a, StreamOrDevice s={})
       
      array mlx::core::atleast_2d (const array &a, StreamOrDevice s={})
       
      std::vector< arraymlx::core::atleast_2d (const std::vector< array > &a, StreamOrDevice s={})
       
      array mlx::core::atleast_3d (const array &a, StreamOrDevice s={})
       
      std::vector< arraymlx::core::atleast_3d (const std::vector< array > &a, StreamOrDevice s={})
       
      array mlx::core::number_of_elements (const array &a, std::vector< int > axes, bool inverted, Dtype dtype=int32, StreamOrDevice s={})
       Extract the number of elements along some axes as a scalar array.
       
      array mlx::core::conjugate (const array &a, StreamOrDevice s={})
       
      array mlx::core::bitwise_and (const array &a, const array &b, StreamOrDevice s={})
       Bitwise and.
       
      array mlx::core::operator& (const array &a, const array &b)
       
      array mlx::core::bitwise_or (const array &a, const array &b, StreamOrDevice s={})
       Bitwise inclusive or.
       
      array mlx::core::operator| (const array &a, const array &b)
       
      array mlx::core::bitwise_xor (const array &a, const array &b, StreamOrDevice s={})
       Bitwise exclusive or.
       
      array mlx::core::operator^ (const array &a, const array &b)
       
      array mlx::core::left_shift (const array &a, const array &b, StreamOrDevice s={})
       Shift bits to the left.
       
      array mlx::core::operator<< (const array &a, const array &b)
       
      array mlx::core::right_shift (const array &a, const array &b, StreamOrDevice s={})
       Shift bits to the right.
       
      array mlx::core::operator>> (const array &a, const array &b)
       
      array mlx::core::view (const array &a, const Dtype &dtype, StreamOrDevice s={})
       
      -
      - - - - diff --git a/docs/build/html/ops_8h_source.html b/docs/build/html/ops_8h_source.html deleted file mode 100644 index f3d8b270..00000000 --- a/docs/build/html/ops_8h_source.html +++ /dev/null @@ -1,1524 +0,0 @@ - - - - - - - -MLX: mlx/ops.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      ops.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <optional>
      -
      6
      -
      7#include "mlx/array.h"
      -
      8#include "mlx/device.h"
      -
      9#include "mlx/stream.h"
      -
      10#include "mlx/utils.h"
      -
      11
      -
      12namespace mlx::core {
      -
      13
      - -
      23 double start,
      -
      24 double stop,
      -
      25 double step,
      -
      26 Dtype dtype,
      -
      27 StreamOrDevice s = {});
      -
      28array arange(double start, double stop, double step, StreamOrDevice s = {});
      -
      29array arange(double start, double stop, Dtype dtype, StreamOrDevice s = {});
      -
      30array arange(double start, double stop, StreamOrDevice s = {});
      -
      31array arange(double stop, Dtype dtype, StreamOrDevice s = {});
      -
      32array arange(double stop, StreamOrDevice s = {});
      -
      33
      -
      34array arange(int start, int stop, int step, StreamOrDevice s = {});
      -
      35array arange(int start, int stop, StreamOrDevice s = {});
      -
      36array arange(int stop, StreamOrDevice s = {});
      -
      37
      - -
      40 double start,
      -
      41 double stop,
      -
      42 int num = 50,
      -
      43 Dtype dtype = float32,
      -
      44 StreamOrDevice s = {});
      -
      45
      - -
      48
      - -
      51 array a,
      -
      52 std::vector<int> shape,
      -
      53 std::vector<size_t> strides,
      -
      54 size_t offset,
      -
      55 StreamOrDevice s = {});
      -
      56
      - -
      59
      - -
      62 std::vector<int> shape,
      -
      63 array vals,
      -
      64 Dtype dtype,
      -
      65 StreamOrDevice s = {});
      -
      66array full(std::vector<int> shape, array vals, StreamOrDevice s = {});
      -
      67template <typename T>
      -
      -
      68array full(std::vector<int> shape, T val, Dtype dtype, StreamOrDevice s = {}) {
      -
      69 return full(std::move(shape), array(val, dtype), to_stream(s));
      -
      70}
      -
      -
      71template <typename T>
      -
      -
      72array full(std::vector<int> shape, T val, StreamOrDevice s = {}) {
      -
      73 return full(std::move(shape), array(val), to_stream(s));
      -
      74}
      -
      -
      75
      -
      77array zeros(const std::vector<int>& shape, Dtype dtype, StreamOrDevice s = {});
      -
      -
      78inline array zeros(const std::vector<int>& shape, StreamOrDevice s = {}) {
      -
      79 return zeros(shape, float32, s);
      -
      80}
      -
      - -
      82
      -
      84array ones(const std::vector<int>& shape, Dtype dtype, StreamOrDevice s = {});
      -
      -
      85inline array ones(const std::vector<int>& shape, StreamOrDevice s = {}) {
      -
      86 return ones(shape, float32, s);
      -
      87}
      -
      - -
      89
      -
      92array eye(int n, int m, int k, Dtype dtype, StreamOrDevice s = {});
      -
      -
      93inline array eye(int n, Dtype dtype, StreamOrDevice s = {}) {
      -
      94 return eye(n, n, 0, dtype, s);
      -
      95}
      -
      -
      -
      96inline array eye(int n, int m, StreamOrDevice s = {}) {
      -
      97 return eye(n, m, 0, float32, s);
      -
      98}
      -
      -
      -
      99inline array eye(int n, int m, int k, StreamOrDevice s = {}) {
      -
      100 return eye(n, m, k, float32, s);
      -
      101}
      -
      -
      -
      102inline array eye(int n, StreamOrDevice s = {}) {
      -
      103 return eye(n, n, 0, float32, s);
      -
      104}
      -
      -
      105
      -
      108array identity(int n, Dtype dtype, StreamOrDevice s = {});
      -
      -
      109inline array identity(int n, StreamOrDevice s = {}) {
      -
      110 return identity(n, float32, s);
      -
      111}
      -
      -
      112
      -
      113array tri(int n, int m, int k, Dtype type, StreamOrDevice s = {});
      -
      -
      114inline array tri(int n, Dtype type, StreamOrDevice s = {}) {
      -
      115 return tri(n, n, 0, type, s);
      -
      116}
      -
      -
      117
      -
      118array tril(array x, int k = 0, StreamOrDevice s = {});
      -
      119array triu(array x, int k = 0, StreamOrDevice s = {});
      -
      120
      -
      122array reshape(const array& a, std::vector<int> shape, StreamOrDevice s = {});
      -
      123
      - -
      126 const array& a,
      -
      127 int start_axis,
      -
      128 int end_axis = -1,
      -
      129 StreamOrDevice s = {});
      -
      130
      - -
      133
      - -
      136 const array& a,
      -
      137 std::optional<float> scale = std::nullopt,
      -
      138 StreamOrDevice s = {});
      -
      139
      - -
      142 const array& a,
      -
      143 const std::vector<int>& axes,
      -
      144 StreamOrDevice s = {});
      -
      145
      -
      -
      147inline array squeeze(const array& a, int axis, StreamOrDevice s = {}) {
      -
      148 return squeeze(a, std::vector<int>{axis}, s);
      -
      149}
      -
      -
      150
      - -
      153
      - -
      156 const array& a,
      -
      157 const std::vector<int>& axes,
      -
      158 StreamOrDevice s = {});
      -
      159
      -
      161array expand_dims(const array& a, int axis, StreamOrDevice s = {});
      -
      162
      - -
      165 const array& a,
      -
      166 std::vector<int> start,
      -
      167 std::vector<int> stop,
      -
      168 std::vector<int> strides,
      -
      169 StreamOrDevice s = {});
      -
      170
      - -
      173 const array& a,
      -
      174 const std::vector<int>& start,
      -
      175 const std::vector<int>& stop,
      -
      176 StreamOrDevice s = {});
      -
      177
      - -
      180 const array& src,
      -
      181 const array& update,
      -
      182 std::vector<int> start,
      -
      183 std::vector<int> stop,
      -
      184 std::vector<int> strides,
      -
      185 StreamOrDevice s = {});
      -
      186
      - -
      189 const array& src,
      -
      190 const array& update,
      -
      191 std::vector<int> start,
      -
      192 std::vector<int> stop,
      -
      193 StreamOrDevice s = {});
      -
      194
      -
      196std::vector<array>
      -
      197split(const array& a, int num_splits, int axis, StreamOrDevice s = {});
      -
      198std::vector<array> split(const array& a, int num_splits, StreamOrDevice s = {});
      -
      199std::vector<array> split(
      -
      200 const array& a,
      -
      201 const std::vector<int>& indices,
      -
      202 int axis,
      -
      203 StreamOrDevice s = {});
      -
      204std::vector<array>
      -
      205split(const array& a, const std::vector<int>& indices, StreamOrDevice s = {});
      -
      206
      -
      208std::vector<array> meshgrid(
      -
      209 const std::vector<array>& arrays,
      -
      210 bool sparse = false,
      -
      211 std::string indexing = "xy",
      -
      212 StreamOrDevice s = {});
      -
      213
      - -
      218 const array& a,
      -
      219 const std::optional<array>& a_min = std::nullopt,
      -
      220 const std::optional<array>& a_max = std::nullopt,
      -
      221 StreamOrDevice s = {});
      -
      222
      - -
      225 const std::vector<array>& arrays,
      -
      226 int axis,
      -
      227 StreamOrDevice s = {});
      -
      228array concatenate(const std::vector<array>& arrays, StreamOrDevice s = {});
      -
      229
      -
      231array stack(const std::vector<array>& arrays, int axis, StreamOrDevice s = {});
      -
      232array stack(const std::vector<array>& arrays, StreamOrDevice s = {});
      -
      233
      -
      235array repeat(const array& arr, int repeats, int axis, StreamOrDevice s = {});
      -
      236array repeat(const array& arr, int repeats, StreamOrDevice s = {});
      -
      237
      -
      238array tile(const array& arr, std::vector<int> reps, StreamOrDevice s = {});
      -
      239
      -
      241array transpose(const array& a, std::vector<int> axes, StreamOrDevice s = {});
      -
      - -
      243 const array& a,
      -
      244 std::initializer_list<int> axes,
      -
      245 StreamOrDevice s = {}) {
      -
      246 return transpose(a, std::vector<int>(axes), s);
      -
      247}
      -
      -
      248
      -
      250array swapaxes(const array& a, int axis1, int axis2, StreamOrDevice s = {});
      -
      251
      - -
      254 const array& a,
      -
      255 int source,
      -
      256 int destination,
      -
      257 StreamOrDevice s = {});
      -
      258
      - -
      261 const array& a,
      -
      262 const std::vector<int>& axes,
      -
      263 const std::vector<int>& low_pad_size,
      -
      264 const std::vector<int>& high_pad_size,
      -
      265 const array& pad_value = array(0),
      -
      266 const std::string mode = "constant",
      -
      267 StreamOrDevice s = {});
      -
      268
      - -
      271 const array& a,
      -
      272 const std::vector<std::pair<int, int>>& pad_width,
      -
      273 const array& pad_value = array(0),
      -
      274 const std::string mode = "constant",
      -
      275 StreamOrDevice s = {});
      - -
      277 const array& a,
      -
      278 const std::pair<int, int>& pad_width,
      -
      279 const array& pad_value = array(0),
      -
      280 const std::string mode = "constant",
      -
      281 StreamOrDevice s = {});
      - -
      283 const array& a,
      -
      284 int pad_width,
      -
      285 const array& pad_value = array(0),
      -
      286 const std::string mode = "constant",
      -
      287 StreamOrDevice s = {});
      -
      288
      - -
      291
      - -
      294 const array& a,
      -
      295 const std::vector<int>& shape,
      -
      296 StreamOrDevice s = {});
      -
      297
      -
      299std::vector<array> broadcast_arrays(
      -
      300 const std::vector<array>& inputs,
      -
      301 StreamOrDevice s = {});
      -
      302
      -
      304array equal(const array& a, const array& b, StreamOrDevice s = {});
      -
      -
      305inline array operator==(const array& a, const array& b) {
      -
      306 return equal(a, b);
      -
      307}
      -
      -
      308template <typename T>
      -
      -
      309array operator==(T a, const array& b) {
      -
      310 return equal(array(a), b);
      -
      311}
      -
      -
      312template <typename T>
      -
      -
      313array operator==(const array& a, T b) {
      -
      314 return equal(a, array(b));
      -
      315}
      -
      -
      316
      -
      318array not_equal(const array& a, const array& b, StreamOrDevice s = {});
      -
      -
      319inline array operator!=(const array& a, const array& b) {
      -
      320 return not_equal(a, b);
      -
      321}
      -
      -
      322template <typename T>
      -
      -
      323array operator!=(T a, const array& b) {
      -
      324 return not_equal(array(a), b);
      -
      325}
      -
      -
      326template <typename T>
      -
      -
      327array operator!=(const array& a, T b) {
      -
      328 return not_equal(a, array(b));
      -
      329}
      -
      -
      330
      -
      332array greater(const array& a, const array& b, StreamOrDevice s = {});
      -
      -
      333inline array operator>(const array& a, const array& b) {
      -
      334 return greater(a, b);
      -
      335}
      -
      -
      336template <typename T>
      -
      -
      337array operator>(T a, const array& b) {
      -
      338 return greater(array(a), b);
      -
      339}
      -
      -
      340template <typename T>
      -
      -
      341array operator>(const array& a, T b) {
      -
      342 return greater(a, array(b));
      -
      343}
      -
      -
      344
      -
      346array greater_equal(const array& a, const array& b, StreamOrDevice s = {});
      -
      -
      347inline array operator>=(const array& a, const array& b) {
      -
      348 return greater_equal(a, b);
      -
      349}
      -
      -
      350template <typename T>
      -
      -
      351array operator>=(T a, const array& b) {
      -
      352 return greater_equal(array(a), b);
      -
      353}
      -
      -
      354template <typename T>
      -
      -
      355array operator>=(const array& a, T b) {
      -
      356 return greater_equal(a, array(b));
      -
      357}
      -
      -
      358
      -
      360array less(const array& a, const array& b, StreamOrDevice s = {});
      -
      -
      361inline array operator<(const array& a, const array& b) {
      -
      362 return less(a, b);
      -
      363}
      -
      -
      364template <typename T>
      -
      -
      365array operator<(T a, const array& b) {
      -
      366 return less(array(a), b);
      -
      367}
      -
      -
      368template <typename T>
      -
      -
      369array operator<(const array& a, T b) {
      -
      370 return less(a, array(b));
      -
      371}
      -
      -
      372
      -
      374array less_equal(const array& a, const array& b, StreamOrDevice s = {});
      -
      -
      375inline array operator<=(const array& a, const array& b) {
      -
      376 return less_equal(a, b);
      -
      377}
      -
      -
      378template <typename T>
      -
      -
      379array operator<=(T a, const array& b) {
      -
      380 return less_equal(array(a), b);
      -
      381}
      -
      -
      382template <typename T>
      -
      -
      383array operator<=(const array& a, T b) {
      -
      384 return less_equal(a, array(b));
      -
      385}
      -
      -
      386
      - -
      389 const array& a,
      -
      390 const array& b,
      -
      391 bool equal_nan,
      -
      392 StreamOrDevice s = {});
      -
      393inline array
      -
      -
      394array_equal(const array& a, const array& b, StreamOrDevice s = {}) {
      -
      395 return array_equal(a, b, false, s);
      -
      396}
      -
      -
      397
      -
      398array isnan(const array& a, StreamOrDevice s = {});
      -
      399
      -
      400array isinf(const array& a, StreamOrDevice s = {});
      -
      401
      - -
      403
      - -
      405
      - -
      407
      - -
      410 const array& condition,
      -
      411 const array& x,
      -
      412 const array& y,
      -
      413 StreamOrDevice s = {});
      -
      414
      - -
      417 const array& a,
      -
      418 float nan = 0.0f,
      -
      419 const std::optional<float> posinf = std::nullopt,
      -
      420 const std::optional<float> neginf = std::nullopt,
      -
      421 StreamOrDevice s = {});
      -
      422
      -
      424array all(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      425inline array all(const array& a, StreamOrDevice s = {}) {
      -
      426 return all(a, false, to_stream(s));
      -
      427}
      -
      -
      428
      - -
      431 const array& a,
      -
      432 const array& b,
      -
      433 double rtol = 1e-5,
      -
      434 double atol = 1e-8,
      -
      435 bool equal_nan = false,
      -
      436 StreamOrDevice s = {});
      -
      437
      - -
      441 const array& a,
      -
      442 const array& b,
      -
      443 double rtol = 1e-5,
      -
      444 double atol = 1e-8,
      -
      445 bool equal_nan = false,
      -
      446 StreamOrDevice s = {});
      -
      447
      - -
      453 const array& a,
      -
      454 const std::vector<int>& axes,
      -
      455 bool keepdims = false,
      -
      456 StreamOrDevice s = {});
      -
      457
      - -
      463 const array& a,
      -
      464 int axis,
      -
      465 bool keepdims = false,
      -
      466 StreamOrDevice s = {});
      -
      467
      -
      469array any(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      470inline array any(const array& a, StreamOrDevice s = {}) {
      -
      471 return any(a, false, to_stream(s));
      -
      472}
      -
      -
      473
      - -
      479 const array& a,
      -
      480 const std::vector<int>& axes,
      -
      481 bool keepdims = false,
      -
      482 StreamOrDevice s = {});
      -
      483
      - -
      489 const array& a,
      -
      490 int axis,
      -
      491 bool keepdims = false,
      -
      492 StreamOrDevice s = {});
      -
      493
      -
      495array sum(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      496inline array sum(const array& a, StreamOrDevice s = {}) {
      -
      497 return sum(a, false, to_stream(s));
      -
      498}
      -
      -
      499
      - -
      502 const array& a,
      -
      503 const std::vector<int>& axes,
      -
      504 bool keepdims = false,
      -
      505 StreamOrDevice s = {});
      -
      506
      - -
      509 const array& a,
      -
      510 int axis,
      -
      511 bool keepdims = false,
      -
      512 StreamOrDevice s = {});
      -
      513
      -
      515array mean(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      516inline array mean(const array& a, StreamOrDevice s = {}) {
      -
      517 return mean(a, false, to_stream(s));
      -
      518}
      -
      -
      519
      - -
      522 const array& a,
      -
      523 const std::vector<int>& axes,
      -
      524 bool keepdims = false,
      -
      525 StreamOrDevice s = {});
      -
      526
      - -
      529 const array& a,
      -
      530 int axis,
      -
      531 bool keepdims = false,
      -
      532 StreamOrDevice s = {});
      -
      533
      -
      535array var(const array& a, bool keepdims, int ddof = 0, StreamOrDevice s = {});
      -
      -
      536inline array var(const array& a, StreamOrDevice s = {}) {
      -
      537 return var(a, false, 0, to_stream(s));
      -
      538}
      -
      -
      539
      - -
      543 const array& a,
      -
      544 const std::vector<int>& axes,
      -
      545 bool keepdims = false,
      -
      546 int ddof = 0,
      -
      547 StreamOrDevice s = {});
      -
      548
      - -
      552 const array& a,
      -
      553 int axis,
      -
      554 bool keepdims = false,
      -
      555 int ddof = 0,
      -
      556 StreamOrDevice s = {});
      -
      557
      -
      559array std(const array& a, bool keepdims, int ddof = 0, StreamOrDevice s = {});
      -
      -
      560inline array std(const array& a, StreamOrDevice s = {}) {
      -
      561 return std(a, false, 0, to_stream(s));
      -
      562}
      -
      -
      563
      - -
      567 const array& a,
      -
      568 const std::vector<int>& axes,
      -
      569 bool keepdims = false,
      -
      570 int ddof = 0,
      -
      571 StreamOrDevice s = {});
      -
      572
      - -
      576 const array& a,
      -
      577 int axis,
      -
      578 bool keepdims = false,
      -
      579 int ddof = 0,
      -
      580 StreamOrDevice s = {});
      -
      581
      -
      583array prod(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      584inline array prod(const array& a, StreamOrDevice s = {}) {
      -
      585 return prod(a, false, to_stream(s));
      -
      586}
      -
      -
      587
      - -
      590 const array& a,
      -
      591 const std::vector<int>& axes,
      -
      592 bool keepdims = false,
      -
      593 StreamOrDevice s = {});
      -
      594
      - -
      597 const array& a,
      -
      598 int axis,
      -
      599 bool keepdims = false,
      -
      600 StreamOrDevice s = {});
      -
      601
      -
      603array max(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      604inline array max(const array& a, StreamOrDevice s = {}) {
      -
      605 return max(a, false, to_stream(s));
      -
      606}
      -
      -
      607
      - -
      610 const array& a,
      -
      611 const std::vector<int>& axes,
      -
      612 bool keepdims = false,
      -
      613 StreamOrDevice s = {});
      -
      614
      - -
      617 const array& a,
      -
      618 int axis,
      -
      619 bool keepdims = false,
      -
      620 StreamOrDevice s = {});
      -
      621
      -
      623array min(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      624inline array min(const array& a, StreamOrDevice s = {}) {
      -
      625 return min(a, false, to_stream(s));
      -
      626}
      -
      -
      627
      - -
      630 const array& a,
      -
      631 const std::vector<int>& axes,
      -
      632 bool keepdims = false,
      -
      633 StreamOrDevice s = {});
      -
      634
      - -
      637 const array& a,
      -
      638 int axis,
      -
      639 bool keepdims = false,
      -
      640 StreamOrDevice s = {});
      -
      641
      -
      643array argmin(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      644inline array argmin(const array& a, StreamOrDevice s = {}) {
      -
      645 return argmin(a, false, s);
      -
      646}
      -
      -
      647
      - -
      650 const array& a,
      -
      651 int axis,
      -
      652 bool keepdims = false,
      -
      653 StreamOrDevice s = {});
      -
      654
      -
      656array argmax(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      657inline array argmax(const array& a, StreamOrDevice s = {}) {
      -
      658 return argmax(a, false, s);
      -
      659}
      -
      -
      660
      - -
      663 const array& a,
      -
      664 int axis,
      -
      665 bool keepdims = false,
      -
      666 StreamOrDevice s = {});
      -
      667
      -
      669array sort(const array& a, StreamOrDevice s = {});
      -
      670
      -
      672array sort(const array& a, int axis, StreamOrDevice s = {});
      -
      673
      - -
      676
      -
      678array argsort(const array& a, int axis, StreamOrDevice s = {});
      -
      679
      -
      684array partition(const array& a, int kth, StreamOrDevice s = {});
      -
      685
      -
      690array partition(const array& a, int kth, int axis, StreamOrDevice s = {});
      -
      691
      -
      696array argpartition(const array& a, int kth, StreamOrDevice s = {});
      -
      697
      -
      702array argpartition(const array& a, int kth, int axis, StreamOrDevice s = {});
      -
      703
      -
      705array topk(const array& a, int k, StreamOrDevice s = {});
      -
      706
      -
      708array topk(const array& a, int k, int axis, StreamOrDevice s = {});
      -
      709
      -
      711array logsumexp(const array& a, bool keepdims, StreamOrDevice s = {});
      -
      -
      712inline array logsumexp(const array& a, StreamOrDevice s = {}) {
      -
      713 return logsumexp(a, false, to_stream(s));
      -
      714}
      -
      -
      715
      - -
      718 const array& a,
      -
      719 const std::vector<int>& axes,
      -
      720 bool keepdims = false,
      -
      721 StreamOrDevice s = {});
      -
      722
      - -
      725 const array& a,
      -
      726 int axis,
      -
      727 bool keepdims = false,
      -
      728 StreamOrDevice s = {});
      -
      729
      -
      731array abs(const array& a, StreamOrDevice s = {});
      -
      732
      - - -
      736
      -
      738array sign(const array& a, StreamOrDevice s = {});
      -
      739
      - -
      742
      -
      744array logical_and(const array& a, const array& b, StreamOrDevice s = {});
      -
      745array operator&&(const array& a, const array& b);
      -
      746
      -
      748array logical_or(const array& a, const array& b, StreamOrDevice s = {});
      -
      749array operator||(const array& a, const array& b);
      -
      750
      - -
      753
      -
      755array add(const array& a, const array& b, StreamOrDevice s = {});
      -
      756array operator+(const array& a, const array& b);
      -
      757template <typename T>
      -
      -
      758array operator+(T a, const array& b) {
      -
      759 return add(array(a), b);
      -
      760}
      -
      -
      761template <typename T>
      -
      -
      762array operator+(const array& a, T b) {
      -
      763 return add(a, array(b));
      -
      764}
      -
      -
      765
      -
      767array subtract(const array& a, const array& b, StreamOrDevice s = {});
      -
      768array operator-(const array& a, const array& b);
      -
      769template <typename T>
      -
      -
      770array operator-(T a, const array& b) {
      -
      771 return subtract(array(a), b);
      -
      772}
      -
      -
      773template <typename T>
      -
      -
      774array operator-(const array& a, T b) {
      -
      775 return subtract(a, array(b));
      -
      776}
      -
      -
      777
      -
      779array multiply(const array& a, const array& b, StreamOrDevice s = {});
      -
      780array operator*(const array& a, const array& b);
      -
      781template <typename T>
      -
      -
      782array operator*(T a, const array& b) {
      -
      783 return multiply(array(a), b);
      -
      784}
      -
      -
      785template <typename T>
      -
      -
      786array operator*(const array& a, T b) {
      -
      787 return multiply(a, array(b));
      -
      788}
      -
      -
      789
      -
      791array divide(const array& a, const array& b, StreamOrDevice s = {});
      -
      792array operator/(const array& a, const array& b);
      -
      793array operator/(double a, const array& b);
      -
      794array operator/(const array& a, double b);
      -
      795
      -
      797std::vector<array>
      -
      798divmod(const array& a, const array& b, StreamOrDevice s = {});
      -
      799
      -
      801array floor_divide(const array& a, const array& b, StreamOrDevice s = {});
      -
      802
      -
      804array remainder(const array& a, const array& b, StreamOrDevice s = {});
      -
      805array operator%(const array& a, const array& b);
      -
      806template <typename T>
      -
      -
      807array operator%(T a, const array& b) {
      -
      808 return remainder(array(a), b);
      -
      809}
      -
      -
      810template <typename T>
      -
      -
      811array operator%(const array& a, T b) {
      -
      812 return remainder(a, array(b));
      -
      813}
      -
      -
      814
      -
      816array maximum(const array& a, const array& b, StreamOrDevice s = {});
      -
      817
      -
      819array minimum(const array& a, const array& b, StreamOrDevice s = {});
      -
      820
      -
      822array floor(const array& a, StreamOrDevice s = {});
      -
      823
      -
      825array ceil(const array& a, StreamOrDevice s = {});
      -
      826
      - -
      829
      -
      831array exp(const array& a, StreamOrDevice s = {});
      -
      832
      -
      834array sin(const array& a, StreamOrDevice s = {});
      -
      835
      -
      837array cos(const array& a, StreamOrDevice s = {});
      -
      838
      -
      840array tan(const array& a, StreamOrDevice s = {});
      -
      841
      - -
      844
      - -
      847
      - -
      850
      -
      852array arctan2(const array& a, const array& b, StreamOrDevice s = {});
      -
      853
      -
      855array sinh(const array& a, StreamOrDevice s = {});
      -
      856
      -
      858array cosh(const array& a, StreamOrDevice s = {});
      -
      859
      -
      861array tanh(const array& a, StreamOrDevice s = {});
      -
      862
      - -
      865
      - -
      868
      - -
      871
      - -
      874
      - -
      877
      -
      879array log(const array& a, StreamOrDevice s = {});
      -
      880
      -
      882array log2(const array& a, StreamOrDevice s = {});
      -
      883
      -
      885array log10(const array& a, StreamOrDevice s = {});
      -
      886
      -
      888array log1p(const array& a, StreamOrDevice s = {});
      -
      889
      -
      891array logaddexp(const array& a, const array& b, StreamOrDevice s = {});
      -
      892
      - -
      895
      -
      897array erf(const array& a, StreamOrDevice s = {});
      -
      898
      - -
      901
      -
      903array expm1(const array& a, StreamOrDevice s = {});
      -
      904
      - -
      907
      -
      909array round(const array& a, int decimals, StreamOrDevice s = {});
      -
      -
      910inline array round(const array& a, StreamOrDevice s = {}) {
      -
      911 return round(a, 0, s);
      -
      912}
      -
      -
      913
      -
      915array matmul(const array& a, const array& b, StreamOrDevice s = {});
      -
      916
      - -
      919 const array& a,
      -
      920 const std::vector<array>& indices,
      -
      921 const std::vector<int>& axes,
      -
      922 const std::vector<int>& slice_sizes,
      -
      923 StreamOrDevice s = {});
      -
      - -
      925 const array& a,
      -
      926 const array& indices,
      -
      927 int axis,
      -
      928 const std::vector<int>& slice_sizes,
      -
      929 StreamOrDevice s = {}) {
      -
      930 return gather(a, {indices}, std::vector<int>{axis}, slice_sizes, s);
      -
      931}
      -
      -
      932
      - -
      935 const array& a,
      -
      936 const array& indices,
      -
      937 int axis,
      -
      938 StreamOrDevice s = {});
      -
      939
      -
      941array take(const array& a, const array& indices, StreamOrDevice s = {});
      -
      942
      - -
      945 const array& a,
      -
      946 const array& indices,
      -
      947 int axis,
      -
      948 StreamOrDevice s = {});
      -
      949
      - -
      1049 const array& a,
      -
      1050 const std::vector<array>& indices,
      -
      1051 const array& updates,
      -
      1052 const std::vector<int>& axes,
      -
      1053 StreamOrDevice s = {});
      -
      - -
      1055 const array& a,
      -
      1056 const array& indices,
      -
      1057 const array& updates,
      -
      1058 int axis,
      -
      1059 StreamOrDevice s = {}) {
      -
      1060 return scatter(a, {indices}, updates, std::vector<int>{axis}, s);
      -
      1061}
      -
      -
      1062
      - -
      1065 const array& a,
      -
      1066 const std::vector<array>& indices,
      -
      1067 const array& updates,
      -
      1068 const std::vector<int>& axes,
      -
      1069 StreamOrDevice s = {});
      -
      - -
      1071 const array& a,
      -
      1072 const array& indices,
      -
      1073 const array& updates,
      -
      1074 int axis,
      -
      1075 StreamOrDevice s = {}) {
      -
      1076 return scatter_add(a, {indices}, updates, std::vector<int>{axis}, s);
      -
      1077}
      -
      -
      1078
      - -
      1081 const array& a,
      -
      1082 const std::vector<array>& indices,
      -
      1083 const array& updates,
      -
      1084 const std::vector<int>& axes,
      -
      1085 StreamOrDevice s = {});
      -
      - -
      1087 const array& a,
      -
      1088 const array& indices,
      -
      1089 const array& updates,
      -
      1090 int axis,
      -
      1091 StreamOrDevice s = {}) {
      -
      1092 return scatter_prod(a, {indices}, updates, std::vector<int>{axis}, s);
      -
      1093}
      -
      -
      1094
      - -
      1097 const array& a,
      -
      1098 const std::vector<array>& indices,
      -
      1099 const array& updates,
      -
      1100 const std::vector<int>& axes,
      -
      1101 StreamOrDevice s = {});
      -
      - -
      1103 const array& a,
      -
      1104 const array& indices,
      -
      1105 const array& updates,
      -
      1106 int axis,
      -
      1107 StreamOrDevice s = {}) {
      -
      1108 return scatter_max(a, {indices}, updates, std::vector<int>{axis}, s);
      -
      1109}
      -
      - -
      1112 const array& a,
      -
      1113 const std::vector<array>& indices,
      -
      1114 const array& updates,
      -
      1115 const std::vector<int>& axes,
      -
      1116 StreamOrDevice s = {});
      -
      - -
      1118 const array& a,
      -
      1119 const array& indices,
      -
      1120 const array& updates,
      -
      1121 int axis,
      -
      1122 StreamOrDevice s = {}) {
      -
      1123 return scatter_min(a, {indices}, updates, std::vector<int>{axis}, s);
      -
      1124}
      -
      -
      1125
      -
      1127array sqrt(const array& a, StreamOrDevice s = {});
      -
      1128
      - -
      1131
      - -
      1134 const array& a,
      -
      1135 const std::vector<int>& axes,
      -
      1136 bool precise = false,
      -
      1137 StreamOrDevice s = {});
      -
      1138
      -
      1140array softmax(const array& a, bool precise = false, StreamOrDevice s = {});
      -
      1141
      -
      1143inline array
      -
      -
      1144softmax(const array& a, int axis, bool precise = false, StreamOrDevice s = {}) {
      -
      1145 return softmax(a, std::vector<int>{axis}, precise, s);
      -
      1146}
      -
      -
      1147
      -
      1149array power(const array& a, const array& b, StreamOrDevice s = {});
      -
      1150
      - -
      1153 const array& a,
      -
      1154 int axis,
      -
      1155 bool reverse = false,
      -
      1156 bool inclusive = true,
      -
      1157 StreamOrDevice s = {});
      -
      1158
      - -
      1161 const array& a,
      -
      1162 int axis,
      -
      1163 bool reverse = false,
      -
      1164 bool inclusive = true,
      -
      1165 StreamOrDevice s = {});
      -
      1166
      - -
      1169 const array& a,
      -
      1170 int axis,
      -
      1171 bool reverse = false,
      -
      1172 bool inclusive = true,
      -
      1173 StreamOrDevice s = {});
      -
      1174
      - -
      1177 const array& a,
      -
      1178 int axis,
      -
      1179 bool reverse = false,
      -
      1180 bool inclusive = true,
      -
      1181 StreamOrDevice s = {});
      -
      1182
      - -
      1185 array input,
      -
      1186 array weight,
      -
      1187 std::vector<int> stride = {},
      -
      1188 std::vector<int> padding_lo = {},
      -
      1189 std::vector<int> padding_hi = {},
      -
      1190 std::vector<int> kernel_dilation = {},
      -
      1191 std::vector<int> input_dilation = {},
      -
      1192 int groups = 1,
      -
      1193 bool flip = false,
      -
      1194 StreamOrDevice s = {});
      -
      1195
      -
      - -
      1198 const array& input,
      -
      1199 const array& weight,
      -
      1200 std::vector<int> stride = {},
      -
      1201 std::vector<int> padding = {},
      -
      1202 std::vector<int> kernel_dilation = {},
      -
      1203 std::vector<int> input_dilation = {},
      -
      1204 int groups = 1,
      -
      1205 bool flip = false,
      -
      1206 StreamOrDevice s = {}) {
      -
      1207 return conv_general(
      -
      1208 /* const array& input = */ input,
      -
      1209 /* const array& weight = */ weight,
      -
      1210 /* std::vector<int> stride = */ stride,
      -
      1211 /* std::vector<int> padding_lo = */ padding,
      -
      1212 /* std::vector<int> padding_hi = */ padding,
      -
      1213 /* std::vector<int> kernel_dilation = */ kernel_dilation,
      -
      1214 /* std::vector<int> input_dilation = */ input_dilation,
      -
      1215 /* int groups = */ groups,
      -
      1216 /* bool flip = */ flip,
      -
      1217 /* StreamOrDevice s = */ s);
      -
      1218}
      -
      -
      1219
      - -
      1222 const array& input,
      -
      1223 const array& weight,
      -
      1224 int stride = 1,
      -
      1225 int padding = 0,
      -
      1226 int dilation = 1,
      -
      1227 int groups = 1,
      -
      1228 StreamOrDevice s = {});
      -
      1229
      - -
      1232 const array& input,
      -
      1233 const array& weight,
      -
      1234 const std::pair<int, int>& stride = {1, 1},
      -
      1235 const std::pair<int, int>& padding = {0, 0},
      -
      1236 const std::pair<int, int>& dilation = {1, 1},
      -
      1237 int groups = 1,
      -
      1238 StreamOrDevice s = {});
      -
      1239
      - -
      1242 const array& input,
      -
      1243 const array& weight,
      -
      1244 const std::tuple<int, int, int>& stride = {1, 1, 1},
      -
      1245 const std::tuple<int, int, int>& padding = {0, 0, 0},
      -
      1246 const std::tuple<int, int, int>& dilation = {1, 1, 1},
      -
      1247 int groups = 1,
      -
      1248 StreamOrDevice s = {});
      -
      1249
      - -
      1252 const array& input,
      -
      1253 const array& weight,
      -
      1254 int stride = 1,
      -
      1255 int padding = 0,
      -
      1256 int dilation = 1,
      -
      1257 int groups = 1,
      -
      1258 StreamOrDevice s = {});
      -
      1259
      - -
      1262 const array& input,
      -
      1263 const array& weight,
      -
      1264 const std::pair<int, int>& stride = {1, 1},
      -
      1265 const std::pair<int, int>& padding = {0, 0},
      -
      1266 const std::pair<int, int>& dilation = {1, 1},
      -
      1267 int groups = 1,
      -
      1268 StreamOrDevice s = {});
      -
      1269
      - -
      1272 const array& input,
      -
      1273 const array& weight,
      -
      1274 const std::tuple<int, int, int>& stride = {1, 1, 1},
      -
      1275 const std::tuple<int, int, int>& padding = {0, 0, 0},
      -
      1276 const std::tuple<int, int, int>& dilation = {1, 1, 1},
      -
      1277 int groups = 1,
      -
      1278 StreamOrDevice s = {});
      -
      1279
      - -
      1282 const array& x,
      -
      1283 const array& w,
      -
      1284 const array& scales,
      -
      1285 const array& biases,
      -
      1286 bool transpose = true,
      -
      1287 int group_size = 64,
      -
      1288 int bits = 4,
      -
      1289 StreamOrDevice s = {});
      -
      1290
      -
      1292std::tuple<array, array, array> quantize(
      -
      1293 const array& w,
      -
      1294 int group_size = 64,
      -
      1295 int bits = 4,
      -
      1296 StreamOrDevice s = {});
      -
      1297
      - -
      1300 const array& w,
      -
      1301 const array& scales,
      -
      1302 const array& biases,
      -
      1303 int group_size = 64,
      -
      1304 int bits = 4,
      -
      1305 StreamOrDevice s = {});
      -
      1306
      - -
      1309 const array& x,
      -
      1310 const array& w,
      -
      1311 const array& scales,
      -
      1312 const array& biases,
      -
      1313 std::optional<array> lhs_indices = std::nullopt,
      -
      1314 std::optional<array> rhs_indices = std::nullopt,
      -
      1315 bool transpose = true,
      -
      1316 int group_size = 64,
      -
      1317 int bits = 4,
      -
      1318 StreamOrDevice s = {});
      -
      1319
      - -
      1322 const array& a,
      -
      1323 const array& b,
      -
      1324 const int axis = 2,
      -
      1325 StreamOrDevice s = {});
      -
      1326
      - -
      1328 const array& a,
      -
      1329 const array& b,
      -
      1330 const std::vector<int>& axes_a,
      -
      1331 const std::vector<int>& axes_b,
      -
      1332 StreamOrDevice s = {});
      -
      1333
      -
      1335array outer(const array& a, const array& b, StreamOrDevice s = {});
      -
      1336
      -
      1338array inner(const array& a, const array& b, StreamOrDevice s = {});
      -
      1339
      - -
      1342 array c,
      -
      1343 array a,
      -
      1344 array b,
      -
      1345 const float& alpha = 1.f,
      -
      1346 const float& beta = 1.f,
      -
      1347 StreamOrDevice s = {});
      -
      1348
      - -
      1351 array a,
      -
      1352 array b,
      -
      1353 int block_size,
      -
      1354 std::optional<array> mask_out = std::nullopt,
      -
      1355 std::optional<array> mask_lhs = std::nullopt,
      -
      1356 std::optional<array> mask_rhs = std::nullopt,
      -
      1357 StreamOrDevice s = {});
      -
      1358
      - -
      1361 array a,
      -
      1362 array b,
      -
      1363 std::optional<array> lhs_indices = std::nullopt,
      -
      1364 std::optional<array> rhs_indices = std::nullopt,
      -
      1365 StreamOrDevice s = {});
      -
      1366
      - -
      1369 const array& a,
      -
      1370 int offset = 0,
      -
      1371 int axis1 = 0,
      -
      1372 int axis2 = 1,
      -
      1373 StreamOrDevice s = {});
      -
      1374
      -
      1376array diag(const array& a, int k = 0, StreamOrDevice s = {});
      -
      1377
      - -
      1380 const array& a,
      -
      1381 int offset,
      -
      1382 int axis1,
      -
      1383 int axis2,
      -
      1384 Dtype dtype,
      -
      1385 StreamOrDevice s = {});
      - -
      1387 const array& a,
      -
      1388 int offset,
      -
      1389 int axis1,
      -
      1390 int axis2,
      -
      1391 StreamOrDevice s = {});
      - -
      1393
      -
      1399std::vector<array> depends(
      -
      1400 const std::vector<array>& inputs,
      -
      1401 const std::vector<array>& dependencies);
      -
      1402
      - -
      1405std::vector<array> atleast_1d(
      -
      1406 const std::vector<array>& a,
      -
      1407 StreamOrDevice s = {});
      - -
      1409std::vector<array> atleast_2d(
      -
      1410 const std::vector<array>& a,
      -
      1411 StreamOrDevice s = {});
      - -
      1413std::vector<array> atleast_3d(
      -
      1414 const std::vector<array>& a,
      -
      1415 StreamOrDevice s = {});
      -
      1416
      - -
      1422 const array& a,
      -
      1423 std::vector<int> axes,
      -
      1424 bool inverted,
      -
      1425 Dtype dtype = int32,
      -
      1426 StreamOrDevice s = {});
      -
      1427
      - -
      1429
      -
      1431array bitwise_and(const array& a, const array& b, StreamOrDevice s = {});
      -
      1432array operator&(const array& a, const array& b);
      -
      1433
      -
      1435array bitwise_or(const array& a, const array& b, StreamOrDevice s = {});
      -
      1436array operator|(const array& a, const array& b);
      -
      1437
      -
      1439array bitwise_xor(const array& a, const array& b, StreamOrDevice s = {});
      -
      1440array operator^(const array& a, const array& b);
      -
      1441
      -
      1443array left_shift(const array& a, const array& b, StreamOrDevice s = {});
      -
      1444array operator<<(const array& a, const array& b);
      -
      1445
      -
      1447array right_shift(const array& a, const array& b, StreamOrDevice s = {});
      -
      1448array operator>>(const array& a, const array& b);
      -
      1449
      -
      1450array view(const array& a, const Dtype& dtype, StreamOrDevice s = {});
      -
      1453} // namespace mlx::core
      - -
      Definition array.h:20
      - -
      array scatter_max(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
      Scatter and max updates to given linear indices.
      -
      array floor_divide(const array &a, const array &b, StreamOrDevice s={})
      Compute integer division.
      -
      array radians(const array &a, StreamOrDevice s={})
      Convert the elements of an array from Degrees to Radians.
      -
      array arccos(const array &a, StreamOrDevice s={})
      Arc Cosine of the elements of an array.
      -
      array scatter_min(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
      Scatter and min updates to given linear indices.
      -
      array less_equal(const array &a, const array &b, StreamOrDevice s={})
      Returns bool array with (a <= b) element-wise.
      -
      array cumprod(const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
      Cumulative product of an array.
      -
      array astype(array a, Dtype dtype, StreamOrDevice s={})
      Convert an array to the given data type.
      -
      array rsqrt(const array &a, StreamOrDevice s={})
      Square root and reciprocal the elements of an array.
      -
      array diag(const array &a, int k=0, StreamOrDevice s={})
      Extract diagonal from a 2d array or create a diagonal matrix.
      -
      array square(const array &a, StreamOrDevice s={})
      Square the elements of an array.
      -
      array ceil(const array &a, StreamOrDevice s={})
      Ceil the element of an array.
      -
      array log2(const array &a, StreamOrDevice s={})
      Log base 2 of the elements of an array.
      -
      array clip(const array &a, const std::optional< array > &a_min=std::nullopt, const std::optional< array > &a_max=std::nullopt, StreamOrDevice s={})
      Clip (limit) the values in an array.
      -
      array isnan(const array &a, StreamOrDevice s={})
      -
      array isneginf(const array &a, StreamOrDevice s={})
      -
      array subtract(const array &a, const array &b, StreamOrDevice s={})
      Subtract two arrays.
      -
      array cummin(const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
      Cumulative min of an array.
      -
      array log10(const array &a, StreamOrDevice s={})
      Log base 10 of the elements of an array.
      -
      array log1p(const array &a, StreamOrDevice s={})
      Natural logarithm of one plus elements in the array: log(1 + a).
      -
      array sign(const array &a, StreamOrDevice s={})
      The sign of the elements in an array.
      -
      array cosh(const array &a, StreamOrDevice s={})
      Hyperbolic Cosine of the elements of an array.
      -
      array conv_general(array input, array weight, std::vector< int > stride={}, std::vector< int > padding_lo={}, std::vector< int > padding_hi={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})
      General convolution with a filter.
      -
      array logical_or(const array &a, const array &b, StreamOrDevice s={})
      Logical or of two arrays.
      -
      array moveaxis(const array &a, int source, int destination, StreamOrDevice s={})
      Move an axis of an array.
      -
      array operator*(const array &a, const array &b)
      -
      array operator+(const array &a, const array &b)
      -
      array operator||(const array &a, const array &b)
      -
      array not_equal(const array &a, const array &b, StreamOrDevice s={})
      Returns the bool array with (a != b) element-wise.
      -
      array erf(const array &a, StreamOrDevice s={})
      Computes the error function of the elements of an array.
      -
      array sqrt(const array &a, StreamOrDevice s={})
      Square root the elements of an array.
      -
      array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
      Computes the standard deviation of the elements of an array.
      -
      array add(const array &a, const array &b, StreamOrDevice s={})
      Add two arrays.
      -
      array round(const array &a, int decimals, StreamOrDevice s={})
      Round a floating point number.
      -
      array conv1d(const array &input, const array &weight, int stride=1, int padding=0, int dilation=1, int groups=1, StreamOrDevice s={})
      1D convolution with a filter
      -
      array bitwise_xor(const array &a, const array &b, StreamOrDevice s={})
      Bitwise exclusive or.
      -
      array equal(const array &a, const array &b, StreamOrDevice s={})
      Returns the bool array with (a == b) element-wise.
      -
      array zeros(const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})
      Fill an array of the given shape with zeros.
      -
      array view(const array &a, const Dtype &dtype, StreamOrDevice s={})
      -
      array gather_qmm(const array &x, const array &w, const array &scales, const array &biases, std::optional< array > lhs_indices=std::nullopt, std::optional< array > rhs_indices=std::nullopt, bool transpose=true, int group_size=64, int bits=4, StreamOrDevice s={})
      Compute matrix products with matrix-level gather.
      -
      array stop_gradient(const array &a, StreamOrDevice s={})
      Stop the flow of gradients.
      -
      array scatter_prod(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
      Scatter and prod updates to given indices.
      -
      array slice_update(const array &src, const array &update, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})
      Update a slice from the source array.
      -
      array cos(const array &a, StreamOrDevice s={})
      Cosine of the elements of an array.
      -
      array operator>=(const array &a, const array &b)
      Definition ops.h:347
      -
      array degrees(const array &a, StreamOrDevice s={})
      Convert the elements of an array from Radians to Degrees.
      -
      array all(const array &a, bool keepdims, StreamOrDevice s={})
      True if all elements in the array are true (or non-zero).
      -
      array tan(const array &a, StreamOrDevice s={})
      Tangent of the elements of an array.
      -
      array eye(int n, int m, int k, Dtype dtype, StreamOrDevice s={})
      Fill an array of the given shape (n,m) with ones in the specified diagonal k, and zeros everywhere el...
      -
      array identity(int n, Dtype dtype, StreamOrDevice s={})
      Create a square matrix of shape (n,n) of zeros, and ones in the major diagonal.
      -
      array operator>>(const array &a, const array &b)
      -
      array minimum(const array &a, const array &b, StreamOrDevice s={})
      Element-wise minimum between two arrays.
      -
      array prod(const array &a, bool keepdims, StreamOrDevice s={})
      The product of all elements of the array.
      -
      array atleast_3d(const array &a, StreamOrDevice s={})
      -
      array operator<=(const array &a, const array &b)
      Definition ops.h:375
      -
      array reciprocal(const array &a, StreamOrDevice s={})
      The reciprocal (1/x) of the elements in an array.
      -
      array tri(int n, int m, int k, Dtype type, StreamOrDevice s={})
      -
      array flatten(const array &a, int start_axis, int end_axis=-1, StreamOrDevice s={})
      Flatten the dimensions in the range [start_axis, end_axis] .
      -
      array isclose(const array &a, const array &b, double rtol=1e-5, double atol=1e-8, bool equal_nan=false, StreamOrDevice s={})
      Returns a boolean array where two arrays are element-wise equal within the specified tolerance.
      -
      array operator|(const array &a, const array &b)
      -
      array topk(const array &a, int k, StreamOrDevice s={})
      Returns topk elements of the flattened array.
      -
      array expm1(const array &a, StreamOrDevice s={})
      Computes the expm1 function of the elements of an array.
      -
      array ones(const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})
      Fill an array of the given shape with ones.
      -
      array abs(const array &a, StreamOrDevice s={})
      Absolute value of elements in an array.
      -
      std::vector< array > meshgrid(const std::vector< array > &arrays, bool sparse=false, std::string indexing="xy", StreamOrDevice s={})
      A vector of coordinate arrays from coordinate vectors.
      -
      array conjugate(const array &a, StreamOrDevice s={})
      -
      array tanh(const array &a, StreamOrDevice s={})
      Hyperbolic Tangent of the elements of an array.
      -
      array quantized_matmul(const array &x, const array &w, const array &scales, const array &biases, bool transpose=true, int group_size=64, int bits=4, StreamOrDevice s={})
      Quantized matmul multiplies x with a quantized matrix w.
      -
      array inner(const array &a, const array &b, StreamOrDevice s={})
      Compute the inner product of two vectors.
      -
      array block_masked_mm(array a, array b, int block_size, std::optional< array > mask_out=std::nullopt, std::optional< array > mask_lhs=std::nullopt, std::optional< array > mask_rhs=std::nullopt, StreamOrDevice s={})
      Compute matrix product with block masking.
      -
      array arctan2(const array &a, const array &b, StreamOrDevice s={})
      Inverse tangent of the ratio of two arrays.
      -
      array number_of_elements(const array &a, std::vector< int > axes, bool inverted, Dtype dtype=int32, StreamOrDevice s={})
      Extract the number of elements along some axes as a scalar array.
      -
      array conv3d(const array &input, const array &weight, const std::tuple< int, int, int > &stride={1, 1, 1}, const std::tuple< int, int, int > &padding={0, 0, 0}, const std::tuple< int, int, int > &dilation={1, 1, 1}, int groups=1, StreamOrDevice s={})
      3D convolution with a filter
      -
      array log(const array &a, StreamOrDevice s={})
      Natural logarithm of the elements of an array.
      -
      array sigmoid(const array &a, StreamOrDevice s={})
      Element-wise logistic sigmoid of the array: 1 / (1 + exp(-x).
      -
      array squeeze(const array &a, const std::vector< int > &axes, StreamOrDevice s={})
      Remove singleton dimensions at the given axes.
      -
      array greater_equal(const array &a, const array &b, StreamOrDevice s={})
      Returns bool array with (a >= b) element-wise.
      -
      array expand_dims(const array &a, const std::vector< int > &axes, StreamOrDevice s={})
      Add a singleton dimension at the given axes.
      -
      array isfinite(const array &a, StreamOrDevice s={})
      -
      array conv2d(const array &input, const array &weight, const std::pair< int, int > &stride={1, 1}, const std::pair< int, int > &padding={0, 0}, const std::pair< int, int > &dilation={1, 1}, int groups=1, StreamOrDevice s={})
      2D convolution with a filter
      -
      array operator>(const array &a, const array &b)
      Definition ops.h:333
      -
      array bitwise_and(const array &a, const array &b, StreamOrDevice s={})
      Bitwise and.
      -
      std::vector< array > split(const array &a, int num_splits, int axis, StreamOrDevice s={})
      Split an array into sub-arrays along a given axis.
      -
      array matmul(const array &a, const array &b, StreamOrDevice s={})
      Matrix-matrix multiplication.
      -
      array logical_and(const array &a, const array &b, StreamOrDevice s={})
      Logical and of two arrays.
      -
      array erfinv(const array &a, StreamOrDevice s={})
      Computes the inverse error function of the elements of an array.
      -
      array divide(const array &a, const array &b, StreamOrDevice s={})
      Divide two arrays.
      -
      array power(const array &a, const array &b, StreamOrDevice s={})
      Raise elements of a to the power of b element-wise.
      -
      array maximum(const array &a, const array &b, StreamOrDevice s={})
      Element-wise maximum between two arrays.
      -
      array reshape(const array &a, std::vector< int > shape, StreamOrDevice s={})
      Reshape an array to the given shape.
      -
      array argmin(const array &a, bool keepdims, StreamOrDevice s={})
      Returns the index of the minimum value in the array.
      -
      array var(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
      Computes the variance of the elements of an array.
      -
      array full(std::vector< int > shape, array vals, Dtype dtype, StreamOrDevice s={})
      Fill an array of the given shape with the given value(s).
      -
      array softmax(const array &a, const std::vector< int > &axes, bool precise=false, StreamOrDevice s={})
      Softmax of an array.
      -
      array sort(const array &a, StreamOrDevice s={})
      Returns a sorted copy of the flattened array.
      -
      array max(const array &a, bool keepdims, StreamOrDevice s={})
      The maximum of all elements of the array.
      -
      array pad(const array &a, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})
      Pad an array with a constant value.
      -
      array addmm(array c, array a, array b, const float &alpha=1.f, const float &beta=1.f, StreamOrDevice s={})
      Compute D = beta * C + alpha * (A @ B)
      -
      array tril(array x, int k=0, StreamOrDevice s={})
      -
      array any(const array &a, bool keepdims, StreamOrDevice s={})
      True if any elements in the array are true (or non-zero).
      -
      array outer(const array &a, const array &b, StreamOrDevice s={})
      Compute the outer product of two vectors.
      -
      array hadamard_transform(const array &a, std::optional< float > scale=std::nullopt, StreamOrDevice s={})
      Multiply the array by the Hadamard matrix of corresponding size.
      -
      array arcsin(const array &a, StreamOrDevice s={})
      Arc Sine of the elements of an array.
      -
      array left_shift(const array &a, const array &b, StreamOrDevice s={})
      Shift bits to the left.
      -
      array where(const array &condition, const array &x, const array &y, StreamOrDevice s={})
      Select from x or y depending on condition.
      -
      array exp(const array &a, StreamOrDevice s={})
      Exponential of the elements of an array.
      -
      array bitwise_or(const array &a, const array &b, StreamOrDevice s={})
      Bitwise inclusive or.
      -
      array gather_mm(array a, array b, std::optional< array > lhs_indices=std::nullopt, std::optional< array > rhs_indices=std::nullopt, StreamOrDevice s={})
      Compute matrix product with matrix-level gather.
      -
      array floor(const array &a, StreamOrDevice s={})
      Floor the element of an array.
      -
      array conv_transpose3d(const array &input, const array &weight, const std::tuple< int, int, int > &stride={1, 1, 1}, const std::tuple< int, int, int > &padding={0, 0, 0}, const std::tuple< int, int, int > &dilation={1, 1, 1}, int groups=1, StreamOrDevice s={})
      3D transposed convolution with a filter
      -
      array as_strided(array a, std::vector< int > shape, std::vector< size_t > strides, size_t offset, StreamOrDevice s={})
      Create a view of an array with the given shape and strides.
      -
      array argsort(const array &a, StreamOrDevice s={})
      Returns indices that sort the flattened array.
      -
      array array_equal(const array &a, const array &b, bool equal_nan, StreamOrDevice s={})
      True if two arrays have the same shape and elements.
      -
      array isinf(const array &a, StreamOrDevice s={})
      -
      array less(const array &a, const array &b, StreamOrDevice s={})
      Returns bool array with (a < b) element-wise.
      -
      array diagonal(const array &a, int offset=0, int axis1=0, int axis2=1, StreamOrDevice s={})
      Extract a diagonal or construct a diagonal array.
      -
      array ones_like(const array &a, StreamOrDevice s={})
      -
      array negative(const array &a, StreamOrDevice s={})
      Negate an array.
      -
      array linspace(double start, double stop, int num=50, Dtype dtype=float32, StreamOrDevice s={})
      A 1D array of num evenly spaced numbers in the range [start, stop]
      -
      array remainder(const array &a, const array &b, StreamOrDevice s={})
      Compute the element-wise remainder of division.
      -
      array arctan(const array &a, StreamOrDevice s={})
      Arc Tangent of the elements of an array.
      -
      array conv_transpose1d(const array &input, const array &weight, int stride=1, int padding=0, int dilation=1, int groups=1, StreamOrDevice s={})
      1D transposed convolution with a filter
      -
      std::vector< array > divmod(const array &a, const array &b, StreamOrDevice s={})
      Compute the element-wise quotient and remainder.
      -
      array triu(array x, int k=0, StreamOrDevice s={})
      -
      array arccosh(const array &a, StreamOrDevice s={})
      Inverse Hyperbolic Cosine of the elements of an array.
      -
      array tile(const array &arr, std::vector< int > reps, StreamOrDevice s={})
      -
      array nan_to_num(const array &a, float nan=0.0f, const std::optional< float > posinf=std::nullopt, const std::optional< float > neginf=std::nullopt, StreamOrDevice s={})
      Replace NaN and infinities with finite numbers.
      -
      array min(const array &a, bool keepdims, StreamOrDevice s={})
      The minimum of all elements of the array.
      -
      array operator%(const array &a, const array &b)
      -
      std::tuple< array, array, array > quantize(const array &w, int group_size=64, int bits=4, StreamOrDevice s={})
      Quantize a matrix along its last axis.
      -
      array arctanh(const array &a, StreamOrDevice s={})
      Inverse Hyperbolic Tangent of the elements of an array.
      -
      array repeat(const array &arr, int repeats, int axis, StreamOrDevice s={})
      Repeat an array along an axis.
      -
      array gather(const array &a, const std::vector< array > &indices, const std::vector< int > &axes, const std::vector< int > &slice_sizes, StreamOrDevice s={})
      Gather array entries given indices and slices.
      -
      std::vector< array > broadcast_arrays(const std::vector< array > &inputs, StreamOrDevice s={})
      Broadcast a vector of arrays against one another.
      -
      array atleast_1d(const array &a, StreamOrDevice s={})
      convert an array to an atleast ndim array
      -
      array swapaxes(const array &a, int axis1, int axis2, StreamOrDevice s={})
      Swap two axes of an array.
      -
      array logical_not(const array &a, StreamOrDevice s={})
      Logical not of an array.
      -
      array concatenate(const std::vector< array > &arrays, int axis, StreamOrDevice s={})
      Concatenate arrays along a given axis.
      -
      array trace(const array &a, int offset, int axis1, int axis2, Dtype dtype, StreamOrDevice s={})
      Return the sum along a specified diagonal in the given array.
      -
      array dequantize(const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})
      Dequantize a matrix produced by quantize()
      -
      array transpose(const array &a, std::vector< int > axes, StreamOrDevice s={})
      Permutes the dimensions according to the given axes.
      -
      array partition(const array &a, int kth, StreamOrDevice s={})
      Returns a partitioned copy of the flattened array such that the smaller kth elements are first.
      -
      array take(const array &a, const array &indices, int axis, StreamOrDevice s={})
      Take array slices at the given indices of the specified axis.
      -
      array operator^(const array &a, const array &b)
      -
      std::vector< array > depends(const std::vector< array > &inputs, const std::vector< array > &dependencies)
      Implements the identity function but allows injecting dependencies to other arrays.
      -
      array arcsinh(const array &a, StreamOrDevice s={})
      Inverse Hyperbolic Sine of the elements of an array.
      -
      array scatter_add(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
      Scatter and add updates to given indices.
      -
      array logsumexp(const array &a, bool keepdims, StreamOrDevice s={})
      The logsumexp of all elements of the array.
      -
      array broadcast_to(const array &a, const std::vector< int > &shape, StreamOrDevice s={})
      Broadcast an array to a given shape.
      -
      array scatter(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})
      Scatter updates to the given indices.
      -
      array operator<<(const array &a, const array &b)
      -
      array slice(const array &a, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})
      Slice an array.
      -
      array isposinf(const array &a, StreamOrDevice s={})
      -
      array cumsum(const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
      Cumulative sum of an array.
      -
      array operator-(const array &a)
      -
      array mean(const array &a, bool keepdims, StreamOrDevice s={})
      Computes the mean of the elements of an array.
      -
      array sum(const array &a, bool keepdims, StreamOrDevice s={})
      Sums the elements of an array.
      -
      array take_along_axis(const array &a, const array &indices, int axis, StreamOrDevice s={})
      Take array entries given indices along the axis.
      -
      array argmax(const array &a, bool keepdims, StreamOrDevice s={})
      Returns the index of the maximum value in the array.
      -
      array conv_transpose2d(const array &input, const array &weight, const std::pair< int, int > &stride={1, 1}, const std::pair< int, int > &padding={0, 0}, const std::pair< int, int > &dilation={1, 1}, int groups=1, StreamOrDevice s={})
      2D transposed convolution with a filter
      -
      array sin(const array &a, StreamOrDevice s={})
      Sine of the elements of an array.
      -
      array operator&&(const array &a, const array &b)
      -
      array cummax(const array &a, int axis, bool reverse=false, bool inclusive=true, StreamOrDevice s={})
      Cumulative max of an array.
      -
      array operator<(const array &a, const array &b)
      Definition ops.h:361
      -
      array atleast_2d(const array &a, StreamOrDevice s={})
      -
      array operator/(const array &a, const array &b)
      -
      array allclose(const array &a, const array &b, double rtol=1e-5, double atol=1e-8, bool equal_nan=false, StreamOrDevice s={})
      True if the two arrays are equal within the specified tolerance.
      -
      array operator&(const array &a, const array &b)
      -
      array argpartition(const array &a, int kth, StreamOrDevice s={})
      Returns indices that partition the flattened array such that the smaller kth elements are first.
      -
      array greater(const array &a, const array &b, StreamOrDevice s={})
      Returns bool array with (a > b) element-wise.
      -
      array sinh(const array &a, StreamOrDevice s={})
      Hyperbolic Sine of the elements of an array.
      -
      array multiply(const array &a, const array &b, StreamOrDevice s={})
      Multiply two arrays.
      -
      array tensordot(const array &a, const array &b, const int axis=2, StreamOrDevice s={})
      Returns a contraction of a and b over multiple dimensions.
      -
      array stack(const std::vector< array > &arrays, int axis, StreamOrDevice s={})
      Stack arrays along a new axis.
      -
      array logaddexp(const array &a, const array &b, StreamOrDevice s={})
      Log-add-exp of one elements in the array: log(exp(a) + exp(b)).
      -
      array right_shift(const array &a, const array &b, StreamOrDevice s={})
      Shift bits to the right.
      -
      array zeros_like(const array &a, StreamOrDevice s={})
      -
      Definition allocator.h:7
      -
      void arange(const std::vector< array > &inputs, array &out, double start, double step)
      Definition arange.h:24
      -
      Stream to_stream(StreamOrDevice s)
      -
      void copy(const array &src, array &dst, CopyType ctype)
      -
      constexpr Dtype int32
      Definition dtype.h:67
      -
      constexpr Dtype float32
      Definition dtype.h:71
      -
      bool operator==(const Device &lhs, const Device &rhs)
      -
      bool operator!=(const Device &lhs, const Device &rhs)
      -
      std::variant< std::monostate, Stream, Device > StreamOrDevice
      Definition utils.h:14
      - -
      Definition dtype.h:13
      - -
      - - - - diff --git a/docs/build/html/plus.svg b/docs/build/html/plus.svg deleted file mode 100644 index 07520165..00000000 --- a/docs/build/html/plus.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/build/html/plusd.svg b/docs/build/html/plusd.svg deleted file mode 100644 index 0c65bfe9..00000000 --- a/docs/build/html/plusd.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/build/html/pocketfft_8h.html b/docs/build/html/pocketfft_8h.html deleted file mode 100644 index 72bdd215..00000000 --- a/docs/build/html/pocketfft_8h.html +++ /dev/null @@ -1,1134 +0,0 @@ - - - - - - - -MLX: mlx/3rdparty/pocketfft.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      pocketfft.h File Reference
      -
      -
      -
      #include <cmath>
      -#include <cstdlib>
      -#include <stdexcept>
      -#include <memory>
      -#include <vector>
      -#include <complex>
      -#include <algorithm>
      -#include <mutex>
      -#include <condition_variable>
      -#include <thread>
      -#include <queue>
      -#include <atomic>
      -#include <functional>
      -#include <new>
      -
      -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      struct  pocketfft::detail::VLEN< T >
       
      class  pocketfft::detail::arr< T >
       
      struct  pocketfft::detail::cmplx< T >
       
      class  pocketfft::detail::sincos_2pibyn< T >
       
      struct  pocketfft::detail::util
       
      class  pocketfft::detail::threading::latch
       
      class  pocketfft::detail::threading::concurrent_queue< T >
       
      struct  pocketfft::detail::threading::aligned_allocator< T >
       
      class  pocketfft::detail::threading::thread_pool
       
      class  pocketfft::detail::cfftp< T0 >
       
      class  pocketfft::detail::rfftp< T0 >
       
      class  pocketfft::detail::fftblue< T0 >
       
      class  pocketfft::detail::pocketfft_c< T0 >
       
      class  pocketfft::detail::pocketfft_r< T0 >
       
      class  pocketfft::detail::T_dct1< T0 >
       
      class  pocketfft::detail::T_dst1< T0 >
       
      class  pocketfft::detail::T_dcst23< T0 >
       
      class  pocketfft::detail::T_dcst4< T0 >
       
      class  pocketfft::detail::arr_info
       
      class  pocketfft::detail::cndarr< T >
       
      class  pocketfft::detail::ndarr< T >
       
      class  pocketfft::detail::multi_iter< N >
       
      class  pocketfft::detail::simple_iter
       
      class  pocketfft::detail::rev_iter
       
      struct  pocketfft::detail::VTYPE< T >
       
      struct  pocketfft::detail::add_vec< T >
       
      struct  pocketfft::detail::add_vec< cmplx< T > >
       
      struct  pocketfft::detail::ExecC2C
       
      struct  pocketfft::detail::ExecHartley
       
      struct  pocketfft::detail::ExecDcst
       
      struct  pocketfft::detail::ExecR2R
       
      - - - - - - - -

      -Namespaces

      namespace  pocketfft
       
      namespace  pocketfft::detail
       
      namespace  pocketfft::detail::threading
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Macros

      #define POCKETFFT_CACHE_SIZE   0
       
      #define POCKETFFT_NOINLINE
       
      #define POCKETFFT_RESTRICT
       
      #define POCKETFFT_NO_VECTORS
       
      #define POCKETFFT_PREP3(idx)
       
      #define POCKETFFT_PARTSTEP3a(u1, u2, twr, twi)
       
      #define POCKETFFT_PARTSTEP3b(u1, u2, twr, twi)
       
      #define POCKETFFT_PREP5(idx)
       
      #define POCKETFFT_PARTSTEP5a(u1, u2, twar, twbr, twai, twbi)
       
      #define POCKETFFT_PARTSTEP5b(u1, u2, twar, twbr, twai, twbi)
       
      #define POCKETFFT_PREP7(idx)
       
      #define POCKETFFT_PARTSTEP7a0(u1, u2, x1, x2, x3, y1, y2, y3, out1, out2)
       
      #define POCKETFFT_PARTSTEP7a(u1, u2, x1, x2, x3, y1, y2, y3)    POCKETFFT_PARTSTEP7a0(u1,u2,x1,x2,x3,y1,y2,y3,CH(0,k,u1),CH(0,k,u2))
       
      #define POCKETFFT_PARTSTEP7(u1, u2, x1, x2, x3, y1, y2, y3)
       
      #define POCKETFFT_PREP11(idx)
       
      #define POCKETFFT_PARTSTEP11a0(u1, u2, x1, x2, x3, x4, x5, y1, y2, y3, y4, y5, out1, out2)
       
      #define POCKETFFT_PARTSTEP11a(u1, u2, x1, x2, x3, x4, x5, y1, y2, y3, y4, y5)    POCKETFFT_PARTSTEP11a0(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,CH(0,k,u1),CH(0,k,u2))
       
      #define POCKETFFT_PARTSTEP11(u1, u2, x1, x2, x3, x4, x5, y1, y2, y3, y4, y5)
       
      #define POCKETFFT_REARRANGE(rx, ix, ry, iy)
       
      - - - - - - - - - - - -

      -Typedefs

      using pocketfft::detail::shape_t = std::vector<size_t>
       
      using pocketfft::detail::stride_t = std::vector<ptrdiff_t>
       
      template<typename T >
      using pocketfft::detail::vtype_t = typename VTYPE<T>::type
       
      template<typename T >
      using pocketfft::detail::add_vec_t = typename add_vec<T>::type
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T >
      T pocketfft::detail::cos (T)=delete
       
      template<typename T >
      T pocketfft::detail::sin (T)=delete
       
      template<typename T >
      T pocketfft::detail::sqrt (T)=delete
       
      voidpocketfft::detail::aligned_alloc (size_t align, size_t size)
       
      void pocketfft::detail::aligned_dealloc (void *ptr)
       
      template<typename T >
      void pocketfft::detail::PM (T &a, T &b, T c, T d)
       
      template<typename T >
      void pocketfft::detail::PMINPLACE (T &a, T &b)
       
      template<typename T >
      void pocketfft::detail::MPINPLACE (T &a, T &b)
       
      template<typename T >
      cmplx< Tpocketfft::detail::conj (const cmplx< T > &a)
       
      template<bool fwd, typename T , typename T2 >
      void pocketfft::detail::special_mul (const cmplx< T > &v1, const cmplx< T2 > &v2, cmplx< T > &res)
       
      template<typename T >
      void pocketfft::detail::ROT90 (cmplx< T > &a)
       
      template<bool fwd, typename T >
      void pocketfft::detail::ROTX90 (cmplx< T > &a)
       
      size_t & pocketfft::detail::threading::thread_id ()
       
      size_t & pocketfft::detail::threading::num_threads ()
       
      thread_poolpocketfft::detail::threading::get_pool ()
       
      template<typename Func >
      void pocketfft::detail::threading::thread_map (size_t nthreads, Func f)
       Map a function f over nthreads.
       
      template<typename T >
      std::shared_ptr< Tpocketfft::detail::get_plan (size_t length)
       
      template<typename T >
      arr< charpocketfft::detail::alloc_tmp (const shape_t &shape, size_t axsize, size_t elemsize)
       
      template<typename T >
      arr< charpocketfft::detail::alloc_tmp (const shape_t &shape, const shape_t &axes, size_t elemsize)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_input (const multi_iter< vlen > &it, const cndarr< cmplx< T > > &src, cmplx< vtype_t< T > > *dst)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_input (const multi_iter< vlen > &it, const cndarr< T > &src, vtype_t< T > *dst)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_input (const multi_iter< vlen > &it, const cndarr< T > &src, T *dst)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_output (const multi_iter< vlen > &it, const cmplx< vtype_t< T > > *src, ndarr< cmplx< T > > &dst)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_output (const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_output (const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)
       
      template<typename Tplan , typename T , typename T0 , typename Exec >
      void pocketfft::detail::general_nd (const cndarr< T > &in, ndarr< T > &out, const shape_t &axes, T0 fct, size_t nthreads, const Exec &exec, const bool allow_inplace=true)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_hartley (const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)
       
      template<typename T , size_t vlen>
      void pocketfft::detail::copy_hartley (const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)
       
      template<typename T >
      void pocketfft::detail::general_r2c (const cndarr< T > &in, ndarr< cmplx< T > > &out, size_t axis, bool forward, T fct, size_t nthreads)
       
      template<typename T >
      void pocketfft::detail::general_c2r (const cndarr< cmplx< T > > &in, ndarr< T > &out, size_t axis, bool forward, T fct, size_t nthreads)
       
      template<typename T >
      void pocketfft::detail::c2c (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const std::complex< T > *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::dct (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, int type, const T *data_in, T *data_out, T fct, bool ortho, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::dst (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, int type, const T *data_in, T *data_out, T fct, bool ortho, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::r2c (const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::r2c (const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::c2r (const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::c2r (const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::r2r_fftpack (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool real2hermitian, bool forward, const T *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::r2r_separable_hartley (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, const T *data_in, T *data_out, T fct, size_t nthreads=1)
       
      template<typename T >
      void pocketfft::detail::r2r_genuine_hartley (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, const T *data_in, T *data_out, T fct, size_t nthreads=1)
       
      - - - - - - - -

      -Variables

      constexpr bool pocketfft::detail::FORWARD = true
       
      constexpr bool pocketfft::detail::BACKWARD = false
       
      static const size_t pocketfft::detail::threading::max_threads = std::max(1u, std::thread::hardware_concurrency())
       
      -

      Macro Definition Documentation

      - -

      ◆ POCKETFFT_CACHE_SIZE

      - -
      -
      - - - - -
      #define POCKETFFT_CACHE_SIZE   0
      -
      - -
      -
      - -

      ◆ POCKETFFT_NO_VECTORS

      - -
      -
      - - - - -
      #define POCKETFFT_NO_VECTORS
      -
      - -
      -
      - -

      ◆ POCKETFFT_NOINLINE

      - -
      -
      - - - - -
      #define POCKETFFT_NOINLINE
      -
      - -
      -
      - -

      ◆ POCKETFFT_PARTSTEP11

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP11( u1,
      u2,
      x1,
      x2,
      x3,
      x4,
      x5,
      y1,
      y2,
      y3,
      y4,
      y5 )
      -
      -Value:
      { \
      -
      T da,db; \
      -
      POCKETFFT_PARTSTEP11a0(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,da,db) \
      -
      special_mul<fwd>(da,WA(u1-1,i),CH(i,k,u1)); \
      -
      special_mul<fwd>(db,WA(u2-1,i),CH(i,k,u2)); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP11a

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP11a( u1,
      u2,
      x1,
      x2,
      x3,
      x4,
      x5,
      y1,
      y2,
      y3,
      y4,
      y5 )    POCKETFFT_PARTSTEP11a0(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,CH(0,k,u1),CH(0,k,u2))
      -
      - -
      -
      - -

      ◆ POCKETFFT_PARTSTEP11a0

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP11a0( u1,
      u2,
      x1,
      x2,
      x3,
      x4,
      x5,
      y1,
      y2,
      y3,
      y4,
      y5,
      out1,
      out2 )
      -
      -Value:
      { \
      -
      T ca = t1 + t2*x1 + t3*x2 + t4*x3 + t5*x4 +t6*x5, \
      -
      cb; \
      -
      cb.i=y1*t11.r y2*t10.r y3*t9.r y4*t8.r y5*t7.r; \
      -
      cb.r=-(y1*t11.i y2*t10.i y3*t9.i y4*t8.i y5*t7.i ); \
      -
      PM(out1,out2,ca,cb); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP3a

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP3a( u1,
      u2,
      twr,
      twi )
      -
      -Value:
      { \
      -
      T ca=t0+t1*twr; \
      -
      T cb{-t2.i*twi, t2.r*twi}; \
      -
      PM(CH(0,k,u1),CH(0,k,u2),ca,cb) ;\
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP3b

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP3b( u1,
      u2,
      twr,
      twi )
      -
      -Value:
      { \
      -
      T ca=t0+t1*twr; \
      -
      T cb{-t2.i*twi, t2.r*twi}; \
      -
      special_mul<fwd>(ca+cb,WA(u1-1,i),CH(i,k,u1)); \
      -
      special_mul<fwd>(ca-cb,WA(u2-1,i),CH(i,k,u2)); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP5a

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP5a( u1,
      u2,
      twar,
      twbr,
      twai,
      twbi )
      -
      -Value:
      { \
      -
      T ca,cb; \
      -
      ca.r=t0.r+twar*t1.r+twbr*t2.r; \
      -
      ca.i=t0.i+twar*t1.i+twbr*t2.i; \
      -
      cb.i=twai*t4.r twbi*t3.r; \
      -
      cb.r=-(twai*t4.i twbi*t3.i); \
      -
      PM(CH(0,k,u1),CH(0,k,u2),ca,cb); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP5b

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP5b( u1,
      u2,
      twar,
      twbr,
      twai,
      twbi )
      -
      -Value:
      { \
      -
      T ca,cb,da,db; \
      -
      ca.r=t0.r+twar*t1.r+twbr*t2.r; \
      -
      ca.i=t0.i+twar*t1.i+twbr*t2.i; \
      -
      cb.i=twai*t4.r twbi*t3.r; \
      -
      cb.r=-(twai*t4.i twbi*t3.i); \
      -
      special_mul<fwd>(ca+cb,WA(u1-1,i),CH(i,k,u1)); \
      -
      special_mul<fwd>(ca-cb,WA(u2-1,i),CH(i,k,u2)); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP7

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP7( u1,
      u2,
      x1,
      x2,
      x3,
      y1,
      y2,
      y3 )
      -
      -Value:
      { \
      -
      T da,db; \
      -
      POCKETFFT_PARTSTEP7a0(u1,u2,x1,x2,x3,y1,y2,y3,da,db) \
      -
      special_mul<fwd>(da,WA(u1-1,i),CH(i,k,u1)); \
      -
      special_mul<fwd>(db,WA(u2-1,i),CH(i,k,u2)); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PARTSTEP7a

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP7a( u1,
      u2,
      x1,
      x2,
      x3,
      y1,
      y2,
      y3 )    POCKETFFT_PARTSTEP7a0(u1,u2,x1,x2,x3,y1,y2,y3,CH(0,k,u1),CH(0,k,u2))
      -
      - -
      -
      - -

      ◆ POCKETFFT_PARTSTEP7a0

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_PARTSTEP7a0( u1,
      u2,
      x1,
      x2,
      x3,
      y1,
      y2,
      y3,
      out1,
      out2 )
      -
      -Value:
      { \
      -
      T ca,cb; \
      -
      ca.r=t1.r+x1*t2.r+x2*t3.r+x3*t4.r; \
      -
      ca.i=t1.i+x1*t2.i+x2*t3.i+x3*t4.i; \
      -
      cb.i=y1*t7.r y2*t6.r y3*t5.r; \
      -
      cb.r=-(y1*t7.i y2*t6.i y3*t5.i); \
      -
      PM(out1,out2,ca,cb); \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_PREP11

      - -
      -
      - - - - - - - -
      #define POCKETFFT_PREP11( idx)
      -
      -Value:
      T t1 = CC(idx,0,k), t2, t3, t4, t5, t6, t7, t8, t9, t10, t11; \
      -
      PM (t2,t11,CC(idx,1,k),CC(idx,10,k)); \
      -
      PM (t3,t10,CC(idx,2,k),CC(idx, 9,k)); \
      -
      PM (t4,t9 ,CC(idx,3,k),CC(idx, 8,k)); \
      -
      PM (t5,t8 ,CC(idx,4,k),CC(idx, 7,k)); \
      -
      PM (t6,t7 ,CC(idx,5,k),CC(idx, 6,k)); \
      -
      CH(idx,k,0).r=t1.r+t2.r+t3.r+t4.r+t5.r+t6.r; \
      -
      CH(idx,k,0).i=t1.i+t2.i+t3.i+t4.i+t5.i+t6.i;
      -
      -
      -
      - -

      ◆ POCKETFFT_PREP3

      - -
      -
      - - - - - - - -
      #define POCKETFFT_PREP3( idx)
      -
      -Value:
      T t0 = CC(idx,0,k), t1, t2; \
      -
      PM (t1,t2,CC(idx,1,k),CC(idx,2,k)); \
      -
      CH(idx,k,0)=t0+t1;
      -
      -
      -
      - -

      ◆ POCKETFFT_PREP5

      - -
      -
      - - - - - - - -
      #define POCKETFFT_PREP5( idx)
      -
      -Value:
      T t0 = CC(idx,0,k), t1, t2, t3, t4; \
      -
      PM (t1,t4,CC(idx,1,k),CC(idx,4,k)); \
      -
      PM (t2,t3,CC(idx,2,k),CC(idx,3,k)); \
      -
      CH(idx,k,0).r=t0.r+t1.r+t2.r; \
      -
      CH(idx,k,0).i=t0.i+t1.i+t2.i;
      -
      -
      -
      - -

      ◆ POCKETFFT_PREP7

      - -
      -
      - - - - - - - -
      #define POCKETFFT_PREP7( idx)
      -
      -Value:
      T t1 = CC(idx,0,k), t2, t3, t4, t5, t6, t7; \
      -
      PM (t2,t7,CC(idx,1,k),CC(idx,6,k)); \
      -
      PM (t3,t6,CC(idx,2,k),CC(idx,5,k)); \
      -
      PM (t4,t5,CC(idx,3,k),CC(idx,4,k)); \
      -
      CH(idx,k,0).r=t1.r+t2.r+t3.r+t4.r; \
      -
      CH(idx,k,0).i=t1.i+t2.i+t3.i+t4.i;
      -
      -
      -
      - -

      ◆ POCKETFFT_REARRANGE

      - -
      -
      - - - - - - - - - - - - - - - - - - - - - -
      #define POCKETFFT_REARRANGE( rx,
      ix,
      ry,
      iy )
      -
      -Value:
      {\
      -
      auto t1=rx+ry, t2=ry-rx, t3=ix+iy, t4=ix-iy; \
      -
      rx=t1; ix=t3; ry=t4; iy=t2; \
      -
      }
      -
      -
      -
      - -

      ◆ POCKETFFT_RESTRICT

      - -
      -
      - - - - -
      #define POCKETFFT_RESTRICT
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/pocketfft_8h_source.html b/docs/build/html/pocketfft_8h_source.html deleted file mode 100644 index 663f5216..00000000 --- a/docs/build/html/pocketfft_8h_source.html +++ /dev/null @@ -1,4171 +0,0 @@ - - - - - - - -MLX: mlx/3rdparty/pocketfft.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      pocketfft.h
      -
      -
      -Go to the documentation of this file.
      1/*
      -
      2This file is part of pocketfft.
      -
      3
      -
      4Copyright (C) 2010-2022 Max-Planck-Society
      -
      5Copyright (C) 2019-2020 Peter Bell
      -
      6
      -
      7For the odd-sized DCT-IV transforms:
      -
      8 Copyright (C) 2003, 2007-14 Matteo Frigo
      -
      9 Copyright (C) 2003, 2007-14 Massachusetts Institute of Technology
      -
      10
      -
      11Authors: Martin Reinecke, Peter Bell
      -
      12
      -
      13All rights reserved.
      -
      14
      -
      15Redistribution and use in source and binary forms, with or without modification,
      -
      16are permitted provided that the following conditions are met:
      -
      17
      -
      18* Redistributions of source code must retain the above copyright notice, this
      -
      19 list of conditions and the following disclaimer.
      -
      20* Redistributions in binary form must reproduce the above copyright notice, this
      -
      21 list of conditions and the following disclaimer in the documentation and/or
      -
      22 other materials provided with the distribution.
      -
      23* Neither the name of the copyright holder nor the names of its contributors may
      -
      24 be used to endorse or promote products derived from this software without
      -
      25 specific prior written permission.
      -
      26
      -
      27THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
      -
      28ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
      -
      29WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
      -
      30DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
      -
      31ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
      -
      32(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
      -
      33LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
      -
      34ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      -
      35(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
      -
      36SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      -
      37*/
      -
      38
      -
      39#ifndef POCKETFFT_HDRONLY_H
      -
      40#define POCKETFFT_HDRONLY_H
      -
      41
      -
      42#ifndef __cplusplus
      -
      43#error This file is C++ and requires a C++ compiler.
      -
      44#endif
      -
      45
      -
      46#if !(__cplusplus >= 201103L || _MSVC_LANG+0L >= 201103L)
      -
      47#error This file requires at least C++11 support.
      -
      48#endif
      -
      49
      -
      50#ifndef POCKETFFT_CACHE_SIZE
      -
      51#define POCKETFFT_CACHE_SIZE 0
      -
      52#endif
      -
      53
      -
      54#include <cmath>
      -
      55#include <cstdlib>
      -
      56#include <stdexcept>
      -
      57#include <memory>
      -
      58#include <vector>
      -
      59#include <complex>
      -
      60#include <algorithm>
      -
      61#if POCKETFFT_CACHE_SIZE!=0
      -
      62#include <array>
      -
      63#include <mutex>
      -
      64#endif
      -
      65
      -
      66#ifndef POCKETFFT_NO_MULTITHREADING
      -
      67#include <mutex>
      -
      68#include <condition_variable>
      -
      69#include <thread>
      -
      70#include <queue>
      -
      71#include <atomic>
      -
      72#include <functional>
      -
      73#include <new>
      -
      74
      -
      75#ifdef POCKETFFT_PTHREADS
      -
      76# include <pthread.h>
      -
      77#endif
      -
      78#endif
      -
      79
      -
      80#if defined(__GNUC__)
      -
      81#define POCKETFFT_NOINLINE __attribute__((noinline))
      -
      82#define POCKETFFT_RESTRICT __restrict__
      -
      83#elif defined(_MSC_VER)
      -
      84#define POCKETFFT_NOINLINE __declspec(noinline)
      -
      85#define POCKETFFT_RESTRICT __restrict
      -
      86#else
      -
      87#define POCKETFFT_NOINLINE
      -
      88#define POCKETFFT_RESTRICT
      -
      89#endif
      -
      90
      -
      -
      91namespace pocketfft {
      -
      92
      -
      -
      93namespace detail {
      -
      94using std::size_t;
      -
      95using std::ptrdiff_t;
      -
      96
      -
      97// Always use std:: for <cmath> functions
      -
      98template <typename T> T cos(T) = delete;
      -
      99template <typename T> T sin(T) = delete;
      -
      100template <typename T> T sqrt(T) = delete;
      -
      101
      -
      102using shape_t = std::vector<size_t>;
      -
      103using stride_t = std::vector<ptrdiff_t>;
      -
      104
      -
      105constexpr bool FORWARD = true,
      -
      106 BACKWARD = false;
      -
      107
      -
      108// only enable vector support for gcc>=5.0 and clang>=5.0
      -
      109#ifndef POCKETFFT_NO_VECTORS
      -
      110#define POCKETFFT_NO_VECTORS
      -
      111#if defined(__INTEL_COMPILER)
      -
      112// do nothing. This is necessary because this compiler also sets __GNUC__.
      -
      113#elif defined(__clang__)
      -
      114// AppleClang has their own version numbering
      -
      115#ifdef __apple_build_version__
      -
      116# if (__clang_major__ > 9) || (__clang_major__ == 9 && __clang_minor__ >= 1)
      -
      117# undef POCKETFFT_NO_VECTORS
      -
      118# endif
      -
      119#elif __clang_major__ >= 5
      -
      120# undef POCKETFFT_NO_VECTORS
      -
      121#endif
      -
      122#elif defined(__GNUC__)
      -
      123#if __GNUC__>=5
      -
      124#undef POCKETFFT_NO_VECTORS
      -
      125#endif
      -
      126#endif
      -
      127#endif
      -
      128
      -
      129template<typename T> struct VLEN { static constexpr size_t val=1; };
      -
      130
      -
      131#ifndef POCKETFFT_NO_VECTORS
      -
      132#if (defined(__AVX512F__))
      -
      133template<> struct VLEN<float> { static constexpr size_t val=16; };
      -
      134template<> struct VLEN<double> { static constexpr size_t val=8; };
      -
      135#elif (defined(__AVX__))
      -
      136template<> struct VLEN<float> { static constexpr size_t val=8; };
      -
      137template<> struct VLEN<double> { static constexpr size_t val=4; };
      -
      138#elif (defined(__SSE2__))
      -
      139template<> struct VLEN<float> { static constexpr size_t val=4; };
      -
      140template<> struct VLEN<double> { static constexpr size_t val=2; };
      -
      141#elif (defined(__VSX__))
      -
      142template<> struct VLEN<float> { static constexpr size_t val=4; };
      -
      143template<> struct VLEN<double> { static constexpr size_t val=2; };
      -
      144#elif (defined(__ARM_NEON__) || defined(__ARM_NEON))
      -
      145template<> struct VLEN<float> { static constexpr size_t val=4; };
      -
      146template<> struct VLEN<double> { static constexpr size_t val=2; };
      -
      147#else
      -
      148#define POCKETFFT_NO_VECTORS
      -
      149#endif
      -
      150#endif
      -
      151
      -
      152// the __MINGW32__ part in the conditional below works around the problem that
      -
      153// the standard C++ library on Windows does not provide aligned_alloc() even
      -
      154// though the MinGW compiler and MSVC may advertise C++17 compliance.
      -
      155#if (__cplusplus >= 201703L) && (!defined(__MINGW32__)) && (!defined(_MSC_VER))
      -
      156inline void *aligned_alloc(size_t align, size_t size)
      -
      157 {
      -
      158 // aligned_alloc() requires that the requested size is a multiple of "align"
      -
      159 void *ptr = ::aligned_alloc(align,(size+align-1)&(~(align-1)));
      -
      160 if (!ptr) throw std::bad_alloc();
      -
      161 return ptr;
      -
      162 }
      -
      163inline void aligned_dealloc(void *ptr)
      -
      164 { free(ptr); }
      -
      165#else // portable emulation
      -
      -
      166inline void *aligned_alloc(size_t align, size_t size)
      -
      167 {
      -
      168 align = std::max(align, alignof(max_align_t));
      -
      169 void *ptr = malloc(size+align);
      -
      170 if (!ptr) throw std::bad_alloc();
      -
      171 void *res = reinterpret_cast<void *>
      -
      172 ((reinterpret_cast<uintptr_t>(ptr) & ~(uintptr_t(align-1))) + uintptr_t(align));
      -
      173 (reinterpret_cast<void**>(res))[-1] = ptr;
      -
      174 return res;
      -
      175 }
      -
      -
      -
      176inline void aligned_dealloc(void *ptr)
      -
      177 { if (ptr) free((reinterpret_cast<void**>(ptr))[-1]); }
      -
      -
      178#endif
      -
      179
      -
      -
      180template<typename T> class arr
      -
      181 {
      -
      182 private:
      -
      183 T *p;
      -
      184 size_t sz;
      -
      185
      -
      186#if defined(POCKETFFT_NO_VECTORS)
      -
      187 static T *ralloc(size_t num)
      -
      188 {
      -
      189 if (num==0) return nullptr;
      -
      190 void *res = malloc(num*sizeof(T));
      -
      191 if (!res) throw std::bad_alloc();
      -
      192 return reinterpret_cast<T *>(res);
      -
      193 }
      -
      194 static void dealloc(T *ptr)
      -
      195 { free(ptr); }
      -
      196#else
      -
      197 static T *ralloc(size_t num)
      -
      198 {
      -
      199 if (num==0) return nullptr;
      -
      200 void *ptr = aligned_alloc(64, num*sizeof(T));
      -
      201 return static_cast<T*>(ptr);
      -
      202 }
      -
      203 static void dealloc(T *ptr)
      -
      204 { aligned_dealloc(ptr); }
      -
      205#endif
      -
      206
      -
      207 public:
      -
      208 arr() : p(0), sz(0) {}
      -
      209 arr(size_t n) : p(ralloc(n)), sz(n) {}
      -
      -
      210 arr(arr &&other)
      -
      211 : p(other.p), sz(other.sz)
      -
      212 { other.p=nullptr; other.sz=0; }
      -
      -
      213 ~arr() { dealloc(p); }
      -
      214
      -
      -
      215 void resize(size_t n)
      -
      216 {
      -
      217 if (n==sz) return;
      -
      218 dealloc(p);
      -
      219 p = ralloc(n);
      -
      220 sz = n;
      -
      221 }
      -
      -
      222
      -
      223 T &operator[](size_t idx) { return p[idx]; }
      -
      224 const T &operator[](size_t idx) const { return p[idx]; }
      -
      225
      -
      226 T *data() { return p; }
      -
      227 const T *data() const { return p; }
      -
      228
      -
      229 size_t size() const { return sz; }
      -
      230 };
      -
      -
      231
      -
      -
      232template<typename T> struct cmplx {
      -
      233 T r, i;
      -
      234 cmplx() {}
      -
      235 cmplx(T r_, T i_) : r(r_), i(i_) {}
      -
      236 void Set(T r_, T i_) { r=r_; i=i_; }
      -
      237 void Set(T r_) { r=r_; i=T(0); }
      -
      -
      238 cmplx &operator+= (const cmplx &other)
      -
      239 { r+=other.r; i+=other.i; return *this; }
      -
      -
      -
      240 template<typename T2>cmplx &operator*= (T2 other)
      -
      241 { r*=other; i*=other; return *this; }
      -
      -
      -
      242 template<typename T2>cmplx &operator*= (const cmplx<T2> &other)
      -
      243 {
      -
      244 T tmp = r*other.r - i*other.i;
      -
      245 i = r*other.i + i*other.r;
      -
      246 r = tmp;
      -
      247 return *this;
      -
      248 }
      -
      -
      -
      249 template<typename T2>cmplx &operator+= (const cmplx<T2> &other)
      -
      250 { r+=other.r; i+=other.i; return *this; }
      -
      -
      -
      251 template<typename T2>cmplx &operator-= (const cmplx<T2> &other)
      -
      252 { r-=other.r; i-=other.i; return *this; }
      -
      -
      -
      253 template<typename T2> auto operator* (const T2 &other) const
      -
      254 -> cmplx<decltype(r*other)>
      -
      255 { return {r*other, i*other}; }
      -
      -
      -
      256 template<typename T2> auto operator+ (const cmplx<T2> &other) const
      -
      257 -> cmplx<decltype(r+other.r)>
      -
      258 { return {r+other.r, i+other.i}; }
      -
      -
      -
      259 template<typename T2> auto operator- (const cmplx<T2> &other) const
      -
      260 -> cmplx<decltype(r+other.r)>
      -
      261 { return {r-other.r, i-other.i}; }
      -
      -
      -
      262 template<typename T2> auto operator* (const cmplx<T2> &other) const
      -
      263 -> cmplx<decltype(r+other.r)>
      -
      264 { return {r*other.r-i*other.i, r*other.i + i*other.r}; }
      -
      -
      -
      265 template<bool fwd, typename T2> auto special_mul (const cmplx<T2> &other) const
      -
      266 -> cmplx<decltype(r+other.r)>
      -
      267 {
      -
      268 using Tres = cmplx<decltype(r+other.r)>;
      -
      269 return fwd ? Tres(r*other.r+i*other.i, i*other.r-r*other.i)
      -
      270 : Tres(r*other.r-i*other.i, r*other.i+i*other.r);
      -
      271 }
      -
      -
      272};
      -
      -
      -
      273template<typename T> inline void PM(T &a, T &b, T c, T d)
      -
      274 { a=c+d; b=c-d; }
      -
      -
      -
      275template<typename T> inline void PMINPLACE(T &a, T &b)
      -
      276 { T t = a; a+=b; b=t-b; }
      -
      -
      -
      277template<typename T> inline void MPINPLACE(T &a, T &b)
      -
      278 { T t = a; a-=b; b=t+b; }
      -
      -
      -
      279template<typename T> cmplx<T> conj(const cmplx<T> &a)
      -
      280 { return {a.r, -a.i}; }
      -
      -
      -
      281template<bool fwd, typename T, typename T2> void special_mul (const cmplx<T> &v1, const cmplx<T2> &v2, cmplx<T> &res)
      -
      282 {
      -
      283 res = fwd ? cmplx<T>(v1.r*v2.r+v1.i*v2.i, v1.i*v2.r-v1.r*v2.i)
      -
      284 : cmplx<T>(v1.r*v2.r-v1.i*v2.i, v1.r*v2.i+v1.i*v2.r);
      -
      285 }
      -
      -
      286
      -
      -
      287template<typename T> void ROT90(cmplx<T> &a)
      -
      288 { auto tmp_=a.r; a.r=-a.i; a.i=tmp_; }
      -
      -
      -
      289template<bool fwd, typename T> void ROTX90(cmplx<T> &a)
      -
      290 { auto tmp_= fwd ? -a.r : a.r; a.r = fwd ? a.i : -a.i; a.i=tmp_; }
      -
      -
      291
      -
      292//
      -
      293// twiddle factor section
      -
      294//
      -
      -
      295template<typename T> class sincos_2pibyn
      -
      296 {
      -
      297 private:
      -
      298 using Thigh = typename std::conditional<(sizeof(T)>sizeof(double)), T, double>::type;
      -
      299 size_t N, mask, shift;
      -
      300 arr<cmplx<Thigh>> v1, v2;
      -
      301
      -
      302 static cmplx<Thigh> calc(size_t x, size_t n, Thigh ang)
      -
      303 {
      -
      304 x<<=3;
      -
      305 if (x<4*n) // first half
      -
      306 {
      -
      307 if (x<2*n) // first quadrant
      -
      308 {
      -
      309 if (x<n) return cmplx<Thigh>(std::cos(Thigh(x)*ang), std::sin(Thigh(x)*ang));
      -
      310 return cmplx<Thigh>(std::sin(Thigh(2*n-x)*ang), std::cos(Thigh(2*n-x)*ang));
      -
      311 }
      -
      312 else // second quadrant
      -
      313 {
      -
      314 x-=2*n;
      -
      315 if (x<n) return cmplx<Thigh>(-std::sin(Thigh(x)*ang), std::cos(Thigh(x)*ang));
      -
      316 return cmplx<Thigh>(-std::cos(Thigh(2*n-x)*ang), std::sin(Thigh(2*n-x)*ang));
      -
      317 }
      -
      318 }
      -
      319 else
      -
      320 {
      -
      321 x=8*n-x;
      -
      322 if (x<2*n) // third quadrant
      -
      323 {
      -
      324 if (x<n) return cmplx<Thigh>(std::cos(Thigh(x)*ang), -std::sin(Thigh(x)*ang));
      -
      325 return cmplx<Thigh>(std::sin(Thigh(2*n-x)*ang), -std::cos(Thigh(2*n-x)*ang));
      -
      326 }
      -
      327 else // fourth quadrant
      -
      328 {
      -
      329 x-=2*n;
      -
      330 if (x<n) return cmplx<Thigh>(-std::sin(Thigh(x)*ang), -std::cos(Thigh(x)*ang));
      -
      331 return cmplx<Thigh>(-std::cos(Thigh(2*n-x)*ang), -std::sin(Thigh(2*n-x)*ang));
      -
      332 }
      -
      333 }
      -
      334 }
      -
      335
      -
      336 public:
      -
      - -
      338 : N(n)
      -
      339 {
      -
      340 constexpr auto pi = 3.141592653589793238462643383279502884197L;
      -
      341 Thigh ang = Thigh(0.25L*pi/n);
      -
      342 size_t nval = (n+2)/2;
      -
      343 shift = 1;
      -
      344 while((size_t(1)<<shift)*(size_t(1)<<shift) < nval) ++shift;
      -
      345 mask = (size_t(1)<<shift)-1;
      -
      346 v1.resize(mask+1);
      -
      347 v1[0].Set(Thigh(1), Thigh(0));
      -
      348 for (size_t i=1; i<v1.size(); ++i)
      -
      349 v1[i]=calc(i,n,ang);
      -
      350 v2.resize((nval+mask)/(mask+1));
      -
      351 v2[0].Set(Thigh(1), Thigh(0));
      -
      352 for (size_t i=1; i<v2.size(); ++i)
      -
      353 v2[i]=calc(i*(mask+1),n,ang);
      -
      354 }
      -
      -
      355
      -
      -
      356 cmplx<T> operator[](size_t idx) const
      -
      357 {
      -
      358 if (2*idx<=N)
      -
      359 {
      -
      360 auto x1=v1[idx&mask], x2=v2[idx>>shift];
      -
      361 return cmplx<T>(T(x1.r*x2.r-x1.i*x2.i), T(x1.r*x2.i+x1.i*x2.r));
      -
      362 }
      -
      363 idx = N-idx;
      -
      364 auto x1=v1[idx&mask], x2=v2[idx>>shift];
      -
      365 return cmplx<T>(T(x1.r*x2.r-x1.i*x2.i), -T(x1.r*x2.i+x1.i*x2.r));
      -
      366 }
      -
      -
      367 };
      -
      -
      368
      -
      -
      369struct util // hack to avoid duplicate symbols
      -
      370 {
      -
      - -
      372 {
      -
      373 size_t res=1;
      -
      374 while ((n&1)==0)
      -
      375 { res=2; n>>=1; }
      -
      376 for (size_t x=3; x*x<=n; x+=2)
      -
      377 while ((n%x)==0)
      -
      378 { res=x; n/=x; }
      -
      379 if (n>1) res=n;
      -
      380 return res;
      -
      381 }
      -
      -
      382
      -
      -
      383 static POCKETFFT_NOINLINE double cost_guess (size_t n)
      -
      384 {
      -
      385 constexpr double lfp=1.1; // penalty for non-hardcoded larger factors
      -
      386 size_t ni=n;
      -
      387 double result=0.;
      -
      388 while ((n&1)==0)
      -
      389 { result+=2; n>>=1; }
      -
      390 for (size_t x=3; x*x<=n; x+=2)
      -
      391 while ((n%x)==0)
      -
      392 {
      -
      393 result+= (x<=5) ? double(x) : lfp*double(x); // penalize larger prime factors
      -
      394 n/=x;
      -
      395 }
      -
      396 if (n>1) result+=(n<=5) ? double(n) : lfp*double(n);
      -
      397 return result*double(ni);
      -
      398 }
      -
      -
      399
      -
      400 /* returns the smallest composite of 2, 3, 5, 7 and 11 which is >= n */
      -
      -
      401 static POCKETFFT_NOINLINE size_t good_size_cmplx(size_t n)
      -
      402 {
      -
      403 if (n<=12) return n;
      -
      404
      -
      405 size_t bestfac=2*n;
      -
      406 for (size_t f11=1; f11<bestfac; f11*=11)
      -
      407 for (size_t f117=f11; f117<bestfac; f117*=7)
      -
      408 for (size_t f1175=f117; f1175<bestfac; f1175*=5)
      -
      409 {
      -
      410 size_t x=f1175;
      -
      411 while (x<n) x*=2;
      -
      412 for (;;)
      -
      413 {
      -
      414 if (x<n)
      -
      415 x*=3;
      -
      416 else if (x>n)
      -
      417 {
      -
      418 if (x<bestfac) bestfac=x;
      -
      419 if (x&1) break;
      -
      420 x>>=1;
      -
      421 }
      -
      422 else
      -
      423 return n;
      -
      424 }
      -
      425 }
      -
      426 return bestfac;
      -
      427 }
      -
      -
      428
      -
      429 /* returns the smallest composite of 2, 3, 5 which is >= n */
      -
      -
      430 static POCKETFFT_NOINLINE size_t good_size_real(size_t n)
      -
      431 {
      -
      432 if (n<=6) return n;
      -
      433
      -
      434 size_t bestfac=2*n;
      -
      435 for (size_t f5=1; f5<bestfac; f5*=5)
      -
      436 {
      -
      437 size_t x = f5;
      -
      438 while (x<n) x *= 2;
      -
      439 for (;;)
      -
      440 {
      -
      441 if (x<n)
      -
      442 x*=3;
      -
      443 else if (x>n)
      -
      444 {
      -
      445 if (x<bestfac) bestfac=x;
      -
      446 if (x&1) break;
      -
      447 x>>=1;
      -
      448 }
      -
      449 else
      -
      450 return n;
      -
      451 }
      -
      452 }
      -
      453 return bestfac;
      -
      454 }
      -
      -
      455
      -
      -
      456 static size_t prod(const shape_t &shape)
      -
      457 {
      -
      458 size_t res=1;
      -
      459 for (auto sz: shape)
      -
      460 res*=sz;
      -
      461 return res;
      -
      462 }
      -
      -
      463
      -
      -
      464 static POCKETFFT_NOINLINE void sanity_check(const shape_t &shape,
      -
      465 const stride_t &stride_in, const stride_t &stride_out, bool inplace)
      -
      466 {
      -
      467 auto ndim = shape.size();
      -
      468 if (ndim<1) throw std::runtime_error("ndim must be >= 1");
      -
      469 if ((stride_in.size()!=ndim) || (stride_out.size()!=ndim))
      -
      470 throw std::runtime_error("stride dimension mismatch");
      -
      471 if (inplace && (stride_in!=stride_out))
      -
      472 throw std::runtime_error("stride mismatch");
      -
      473 }
      -
      -
      474
      -
      -
      475 static POCKETFFT_NOINLINE void sanity_check(const shape_t &shape,
      -
      476 const stride_t &stride_in, const stride_t &stride_out, bool inplace,
      -
      477 const shape_t &axes)
      -
      478 {
      -
      479 sanity_check(shape, stride_in, stride_out, inplace);
      -
      480 auto ndim = shape.size();
      -
      481 shape_t tmp(ndim,0);
      -
      482 for (auto ax : axes)
      -
      483 {
      -
      484 if (ax>=ndim) throw std::invalid_argument("bad axis number");
      -
      485 if (++tmp[ax]>1) throw std::invalid_argument("axis specified repeatedly");
      -
      486 }
      -
      487 }
      -
      -
      488
      -
      -
      489 static POCKETFFT_NOINLINE void sanity_check(const shape_t &shape,
      -
      490 const stride_t &stride_in, const stride_t &stride_out, bool inplace,
      -
      491 size_t axis)
      -
      492 {
      -
      493 sanity_check(shape, stride_in, stride_out, inplace);
      -
      494 if (axis>=shape.size()) throw std::invalid_argument("bad axis number");
      -
      495 }
      -
      -
      496
      -
      497#ifdef POCKETFFT_NO_MULTITHREADING
      -
      498 static size_t thread_count (size_t /*nthreads*/, const shape_t &/*shape*/,
      -
      499 size_t /*axis*/, size_t /*vlen*/)
      -
      500 { return 1; }
      -
      501#else
      -
      -
      502 static size_t thread_count (size_t nthreads, const shape_t &shape,
      -
      503 size_t axis, size_t vlen)
      -
      504 {
      -
      505 if (nthreads==1) return 1;
      -
      506 size_t size = prod(shape);
      -
      507 size_t parallel = size / (shape[axis] * vlen);
      -
      508 if (shape[axis] < 1000)
      -
      509 parallel /= 4;
      -
      510 size_t max_threads = nthreads == 0 ?
      -
      511 std::thread::hardware_concurrency() : nthreads;
      -
      512 return std::max(size_t(1), std::min(parallel, max_threads));
      -
      513 }
      -
      -
      514#endif
      -
      515 };
      -
      -
      516
      -
      -
      517namespace threading {
      -
      518
      -
      519#ifdef POCKETFFT_NO_MULTITHREADING
      -
      520
      -
      521constexpr inline size_t thread_id() { return 0; }
      -
      522constexpr inline size_t num_threads() { return 1; }
      -
      523
      -
      524template <typename Func>
      -
      525void thread_map(size_t /* nthreads */, Func f)
      -
      526 { f(); }
      -
      527
      -
      528#else
      -
      529
      -
      -
      530inline size_t &thread_id()
      -
      531 {
      -
      532 static thread_local size_t thread_id_=0;
      -
      533 return thread_id_;
      -
      534 }
      -
      -
      -
      535inline size_t &num_threads()
      -
      536 {
      -
      537 static thread_local size_t num_threads_=1;
      -
      538 return num_threads_;
      -
      539 }
      -
      -
      540static const size_t max_threads = std::max(1u, std::thread::hardware_concurrency());
      -
      541
      -
      -
      542class latch
      -
      543 {
      -
      544 std::atomic<size_t> num_left_;
      -
      545 std::mutex mut_;
      -
      546 std::condition_variable completed_;
      -
      547 using lock_t = std::unique_lock<std::mutex>;
      -
      548
      -
      549 public:
      -
      550 latch(size_t n): num_left_(n) {}
      -
      551
      -
      - -
      553 {
      -
      554 lock_t lock(mut_);
      -
      555 if (--num_left_)
      -
      556 return;
      -
      557 completed_.notify_all();
      -
      558 }
      -
      -
      559
      -
      -
      560 void wait()
      -
      561 {
      -
      562 lock_t lock(mut_);
      -
      563 completed_.wait(lock, [this]{ return is_ready(); });
      -
      564 }
      -
      -
      565 bool is_ready() { return num_left_ == 0; }
      -
      566 };
      -
      -
      567
      -
      -
      568template <typename T> class concurrent_queue
      -
      569 {
      -
      570 std::queue<T> q_;
      -
      571 std::mutex mut_;
      -
      572 std::atomic<size_t> size_;
      -
      573 using lock_t = std::lock_guard<std::mutex>;
      -
      574
      -
      575 public:
      -
      576
      -
      -
      577 void push(T val)
      -
      578 {
      -
      579 lock_t lock(mut_);
      -
      580 ++size_;
      -
      581 q_.push(std::move(val));
      -
      582 }
      -
      -
      583
      -
      -
      584 bool try_pop(T &val)
      -
      585 {
      -
      586 if (size_ == 0) return false;
      -
      587 lock_t lock(mut_);
      -
      588 // Queue might have been emptied while we acquired the lock
      -
      589 if (q_.empty()) return false;
      -
      590
      -
      591 val = std::move(q_.front());
      -
      592 --size_;
      -
      593 q_.pop();
      -
      594 return true;
      -
      595 }
      -
      -
      596
      -
      597 bool empty() const { return size_==0; }
      -
      598 };
      -
      -
      599
      -
      600// C++ allocator with support for over-aligned types
      -
      -
      601template <typename T> struct aligned_allocator
      -
      602 {
      -
      603 using value_type = T;
      -
      604 template <class U>
      - -
      606 aligned_allocator() = default;
      -
      607
      -
      -
      608 T *allocate(size_t n)
      -
      609 {
      -
      610 void* mem = aligned_alloc(alignof(T), n*sizeof(T));
      -
      611 return static_cast<T*>(mem);
      -
      612 }
      -
      -
      613
      -
      -
      614 void deallocate(T *p, size_t /*n*/)
      -
      615 { aligned_dealloc(p); }
      -
      -
      616 };
      -
      -
      617
      -
      - -
      619 {
      -
      620 // A reasonable guess, probably close enough for most hardware
      -
      621 static constexpr size_t cache_line_size = 64;
      -
      622 struct alignas(cache_line_size) worker
      -
      623 {
      -
      624 std::thread thread;
      -
      625 std::condition_variable work_ready;
      -
      626 std::mutex mut;
      -
      627 std::atomic_flag busy_flag = ATOMIC_FLAG_INIT;
      -
      628 std::function<void()> work;
      -
      629
      -
      630 void worker_main(
      -
      631 std::atomic<bool> &shutdown_flag,
      -
      632 std::atomic<size_t> &unscheduled_tasks,
      -
      633 concurrent_queue<std::function<void()>> &overflow_work)
      -
      634 {
      -
      635 using lock_t = std::unique_lock<std::mutex>;
      -
      636 bool expect_work = true;
      -
      637 while (!shutdown_flag || expect_work)
      -
      638 {
      -
      639 std::function<void()> local_work;
      -
      640 if (expect_work || unscheduled_tasks == 0)
      -
      641 {
      -
      642 lock_t lock(mut);
      -
      643 // Wait until there is work to be executed
      -
      644 work_ready.wait(lock, [&]{ return (work || shutdown_flag); });
      -
      645 local_work.swap(work);
      -
      646 expect_work = false;
      -
      647 }
      -
      648
      -
      649 bool marked_busy = false;
      -
      650 if (local_work)
      -
      651 {
      -
      652 marked_busy = true;
      -
      653 local_work();
      -
      654 }
      -
      655
      -
      656 if (!overflow_work.empty())
      -
      657 {
      -
      658 if (!marked_busy && busy_flag.test_and_set())
      -
      659 {
      -
      660 expect_work = true;
      -
      661 continue;
      -
      662 }
      -
      663 marked_busy = true;
      -
      664
      -
      665 while (overflow_work.try_pop(local_work))
      -
      666 {
      - -
      668 local_work();
      -
      669 }
      -
      670 }
      -
      671
      -
      672 if (marked_busy) busy_flag.clear();
      -
      673 }
      -
      674 }
      -
      675 };
      -
      676
      -
      677 concurrent_queue<std::function<void()>> overflow_work_;
      -
      678 std::mutex mut_;
      -
      679 std::vector<worker, aligned_allocator<worker>> workers_;
      -
      680 std::atomic<bool> shutdown_;
      -
      681 std::atomic<size_t> unscheduled_tasks_;
      -
      682 using lock_t = std::lock_guard<std::mutex>;
      -
      683
      -
      684 void create_threads()
      -
      685 {
      -
      686 lock_t lock(mut_);
      -
      687 size_t nthreads=workers_.size();
      -
      688 for (size_t i=0; i<nthreads; ++i)
      -
      689 {
      -
      690 try
      -
      691 {
      -
      692 auto *worker = &workers_[i];
      -
      693 worker->busy_flag.clear();
      -
      694 worker->work = nullptr;
      -
      695 worker->thread = std::thread([worker, this]
      -
      696 {
      -
      697 worker->worker_main(shutdown_, unscheduled_tasks_, overflow_work_);
      -
      698 });
      -
      699 }
      -
      700 catch (...)
      -
      701 {
      -
      702 shutdown_locked();
      -
      703 throw;
      -
      704 }
      -
      705 }
      -
      706 }
      -
      707
      -
      708 void shutdown_locked()
      -
      709 {
      -
      710 shutdown_ = true;
      -
      711 for (auto &worker : workers_)
      -
      712 worker.work_ready.notify_all();
      -
      713
      -
      714 for (auto &worker : workers_)
      -
      715 if (worker.thread.joinable())
      -
      716 worker.thread.join();
      -
      717 }
      -
      718
      -
      719 public:
      -
      -
      720 explicit thread_pool(size_t nthreads):
      -
      721 workers_(nthreads)
      -
      722 { create_threads(); }
      -
      -
      723
      - -
      725
      -
      726 ~thread_pool() { shutdown(); }
      -
      727
      -
      -
      728 void submit(std::function<void()> work)
      -
      729 {
      -
      730 lock_t lock(mut_);
      -
      731 if (shutdown_)
      -
      732 throw std::runtime_error("Work item submitted after shutdown");
      -
      733
      -
      734 ++unscheduled_tasks_;
      -
      735
      -
      736 // First check for any idle workers and wake those
      -
      737 for (auto &worker : workers_)
      -
      738 if (!worker.busy_flag.test_and_set())
      -
      739 {
      -
      740 --unscheduled_tasks_;
      -
      741 {
      -
      742 lock_t lock(worker.mut);
      -
      743 worker.work = std::move(work);
      -
      744 }
      -
      745 worker.work_ready.notify_one();
      -
      746 return;
      -
      747 }
      -
      748
      -
      749 // If no workers were idle, push onto the overflow queue for later
      -
      750 overflow_work_.push(std::move(work));
      -
      751 }
      -
      -
      752
      -
      -
      753 void shutdown()
      -
      754 {
      -
      755 lock_t lock(mut_);
      -
      756 shutdown_locked();
      -
      757 }
      -
      -
      758
      -
      -
      759 void restart()
      -
      760 {
      -
      761 shutdown_ = false;
      -
      762 create_threads();
      -
      763 }
      -
      -
      764 };
      -
      -
      765
      -
      - -
      767 {
      -
      768 static thread_pool pool;
      -
      769#ifdef POCKETFFT_PTHREADS
      -
      770 static std::once_flag f;
      -
      771 std::call_once(f,
      -
      772 []{
      - -
      774 +[]{ get_pool().shutdown(); }, // prepare
      -
      775 +[]{ get_pool().restart(); }, // parent
      -
      776 +[]{ get_pool().restart(); } // child
      -
      777 );
      -
      778 });
      -
      779#endif
      -
      780
      -
      781 return pool;
      -
      782 }
      -
      -
      783
      -
      785template <typename Func>
      -
      - -
      787 {
      -
      788 if (nthreads == 0)
      - -
      790
      -
      791 if (nthreads == 1)
      -
      792 { f(); return; }
      -
      793
      -
      794 auto & pool = get_pool();
      - -
      796 std::exception_ptr ex;
      -
      797 std::mutex ex_mut;
      -
      798 for (size_t i=0; i<nthreads; ++i)
      -
      799 {
      -
      800 pool.submit(
      -
      801 [&f, &counter, &ex, &ex_mut, i, nthreads] {
      -
      802 thread_id() = i;
      - -
      804 try { f(); }
      -
      805 catch (...)
      -
      806 {
      -
      807 std::lock_guard<std::mutex> lock(ex_mut);
      -
      808 ex = std::current_exception();
      -
      809 }
      -
      810 counter.count_down();
      -
      811 });
      -
      812 }
      -
      813 counter.wait();
      -
      814 if (ex)
      -
      815 std::rethrow_exception(ex);
      -
      816 }
      -
      -
      817
      -
      818#endif
      -
      819
      -
      820}
      -
      -
      821
      -
      822//
      -
      823// complex FFTPACK transforms
      -
      824//
      -
      825
      -
      -
      826template<typename T0> class cfftp
      -
      827 {
      -
      828 private:
      -
      829 struct fctdata
      -
      830 {
      -
      831 size_t fct;
      -
      832 cmplx<T0> *tw, *tws;
      -
      833 };
      -
      834
      -
      835 size_t length;
      -
      836 arr<cmplx<T0>> mem;
      -
      837 std::vector<fctdata> fact;
      -
      838
      -
      839 void add_factor(size_t factor)
      -
      840 { fact.push_back({factor, nullptr, nullptr}); }
      -
      841
      -
      842template<bool fwd, typename T> void pass2 (size_t ido, size_t l1,
      - -
      844 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      845 {
      -
      846 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      847 { return ch[a+ido*(b+l1*c)]; };
      -
      848 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      849 { return cc[a+ido*(b+2*c)]; };
      -
      850 auto WA = [wa, ido](size_t x, size_t i)
      -
      851 { return wa[i-1+x*(ido-1)]; };
      -
      852
      -
      853 if (ido==1)
      -
      854 for (size_t k=0; k<l1; ++k)
      -
      855 {
      -
      856 CH(0,k,0) = CC(0,0,k)+CC(0,1,k);
      -
      857 CH(0,k,1) = CC(0,0,k)-CC(0,1,k);
      -
      858 }
      -
      859 else
      -
      860 for (size_t k=0; k<l1; ++k)
      -
      861 {
      -
      862 CH(0,k,0) = CC(0,0,k)+CC(0,1,k);
      -
      863 CH(0,k,1) = CC(0,0,k)-CC(0,1,k);
      -
      864 for (size_t i=1; i<ido; ++i)
      -
      865 {
      -
      866 CH(i,k,0) = CC(i,0,k)+CC(i,1,k);
      -
      867 special_mul<fwd>(CC(i,0,k)-CC(i,1,k),WA(0,i),CH(i,k,1));
      -
      868 }
      -
      869 }
      -
      870 }
      -
      871
      -
      -
      872#define POCKETFFT_PREP3(idx) \
      -
      873 T t0 = CC(idx,0,k), t1, t2; \
      -
      874 PM (t1,t2,CC(idx,1,k),CC(idx,2,k)); \
      -
      875 CH(idx,k,0)=t0+t1;
      -
      -
      -
      876#define POCKETFFT_PARTSTEP3a(u1,u2,twr,twi) \
      -
      877 { \
      -
      878 T ca=t0+t1*twr; \
      -
      879 T cb{-t2.i*twi, t2.r*twi}; \
      -
      880 PM(CH(0,k,u1),CH(0,k,u2),ca,cb) ;\
      -
      881 }
      -
      -
      -
      882#define POCKETFFT_PARTSTEP3b(u1,u2,twr,twi) \
      -
      883 { \
      -
      884 T ca=t0+t1*twr; \
      -
      885 T cb{-t2.i*twi, t2.r*twi}; \
      -
      886 special_mul<fwd>(ca+cb,WA(u1-1,i),CH(i,k,u1)); \
      -
      887 special_mul<fwd>(ca-cb,WA(u2-1,i),CH(i,k,u2)); \
      -
      888 }
      -
      -
      889template<bool fwd, typename T> void pass3 (size_t ido, size_t l1,
      -
      890 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      891 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      892 {
      -
      893 constexpr T0 tw1r=-0.5,
      -
      894 tw1i= (fwd ? -1: 1) * T0(0.8660254037844386467637231707529362L);
      -
      895
      -
      896 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      897 { return ch[a+ido*(b+l1*c)]; };
      -
      898 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      899 { return cc[a+ido*(b+3*c)]; };
      -
      900 auto WA = [wa, ido](size_t x, size_t i)
      -
      901 { return wa[i-1+x*(ido-1)]; };
      -
      902
      -
      903 if (ido==1)
      -
      904 for (size_t k=0; k<l1; ++k)
      -
      905 {
      - -
      907 POCKETFFT_PARTSTEP3a(1,2,tw1r,tw1i)
      -
      908 }
      -
      909 else
      -
      910 for (size_t k=0; k<l1; ++k)
      -
      911 {
      -
      912 {
      - -
      914 POCKETFFT_PARTSTEP3a(1,2,tw1r,tw1i)
      -
      915 }
      -
      916 for (size_t i=1; i<ido; ++i)
      -
      917 {
      - -
      919 POCKETFFT_PARTSTEP3b(1,2,tw1r,tw1i)
      -
      920 }
      -
      921 }
      -
      922 }
      -
      923
      -
      924#undef POCKETFFT_PARTSTEP3b
      -
      925#undef POCKETFFT_PARTSTEP3a
      -
      926#undef POCKETFFT_PREP3
      -
      927
      -
      928template<bool fwd, typename T> void pass4 (size_t ido, size_t l1,
      -
      929 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      930 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      931 {
      -
      932 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      933 { return ch[a+ido*(b+l1*c)]; };
      -
      934 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      935 { return cc[a+ido*(b+4*c)]; };
      -
      936 auto WA = [wa, ido](size_t x, size_t i)
      -
      937 { return wa[i-1+x*(ido-1)]; };
      -
      938
      -
      939 if (ido==1)
      -
      940 for (size_t k=0; k<l1; ++k)
      -
      941 {
      -
      942 T t1, t2, t3, t4;
      -
      943 PM(t2,t1,CC(0,0,k),CC(0,2,k));
      -
      944 PM(t3,t4,CC(0,1,k),CC(0,3,k));
      -
      945 ROTX90<fwd>(t4);
      -
      946 PM(CH(0,k,0),CH(0,k,2),t2,t3);
      -
      947 PM(CH(0,k,1),CH(0,k,3),t1,t4);
      -
      948 }
      -
      949 else
      -
      950 for (size_t k=0; k<l1; ++k)
      -
      951 {
      -
      952 {
      -
      953 T t1, t2, t3, t4;
      -
      954 PM(t2,t1,CC(0,0,k),CC(0,2,k));
      -
      955 PM(t3,t4,CC(0,1,k),CC(0,3,k));
      -
      956 ROTX90<fwd>(t4);
      -
      957 PM(CH(0,k,0),CH(0,k,2),t2,t3);
      -
      958 PM(CH(0,k,1),CH(0,k,3),t1,t4);
      -
      959 }
      -
      960 for (size_t i=1; i<ido; ++i)
      -
      961 {
      -
      962 T t1, t2, t3, t4;
      -
      963 T cc0=CC(i,0,k), cc1=CC(i,1,k),cc2=CC(i,2,k),cc3=CC(i,3,k);
      -
      964 PM(t2,t1,cc0,cc2);
      -
      965 PM(t3,t4,cc1,cc3);
      -
      966 ROTX90<fwd>(t4);
      -
      967 CH(i,k,0) = t2+t3;
      -
      968 special_mul<fwd>(t1+t4,WA(0,i),CH(i,k,1));
      -
      969 special_mul<fwd>(t2-t3,WA(1,i),CH(i,k,2));
      -
      970 special_mul<fwd>(t1-t4,WA(2,i),CH(i,k,3));
      -
      971 }
      -
      972 }
      -
      973 }
      -
      974
      -
      -
      975#define POCKETFFT_PREP5(idx) \
      -
      976 T t0 = CC(idx,0,k), t1, t2, t3, t4; \
      -
      977 PM (t1,t4,CC(idx,1,k),CC(idx,4,k)); \
      -
      978 PM (t2,t3,CC(idx,2,k),CC(idx,3,k)); \
      -
      979 CH(idx,k,0).r=t0.r+t1.r+t2.r; \
      -
      980 CH(idx,k,0).i=t0.i+t1.i+t2.i;
      -
      -
      981
      -
      -
      982#define POCKETFFT_PARTSTEP5a(u1,u2,twar,twbr,twai,twbi) \
      -
      983 { \
      -
      984 T ca,cb; \
      -
      985 ca.r=t0.r+twar*t1.r+twbr*t2.r; \
      -
      986 ca.i=t0.i+twar*t1.i+twbr*t2.i; \
      -
      987 cb.i=twai*t4.r twbi*t3.r; \
      -
      988 cb.r=-(twai*t4.i twbi*t3.i); \
      -
      989 PM(CH(0,k,u1),CH(0,k,u2),ca,cb); \
      -
      990 }
      -
      -
      991
      -
      -
      992#define POCKETFFT_PARTSTEP5b(u1,u2,twar,twbr,twai,twbi) \
      -
      993 { \
      -
      994 T ca,cb,da,db; \
      -
      995 ca.r=t0.r+twar*t1.r+twbr*t2.r; \
      -
      996 ca.i=t0.i+twar*t1.i+twbr*t2.i; \
      -
      997 cb.i=twai*t4.r twbi*t3.r; \
      -
      998 cb.r=-(twai*t4.i twbi*t3.i); \
      -
      999 special_mul<fwd>(ca+cb,WA(u1-1,i),CH(i,k,u1)); \
      -
      1000 special_mul<fwd>(ca-cb,WA(u2-1,i),CH(i,k,u2)); \
      -
      1001 }
      -
      -
      1002template<bool fwd, typename T> void pass5 (size_t ido, size_t l1,
      -
      1003 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1004 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      1005 {
      -
      1006 constexpr T0 tw1r= T0(0.3090169943749474241022934171828191L),
      -
      1007 tw1i= (fwd ? -1: 1) * T0(0.9510565162951535721164393333793821L),
      -
      1008 tw2r= T0(-0.8090169943749474241022934171828191L),
      -
      1009 tw2i= (fwd ? -1: 1) * T0(0.5877852522924731291687059546390728L);
      -
      1010
      -
      1011 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1012 { return ch[a+ido*(b+l1*c)]; };
      -
      1013 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1014 { return cc[a+ido*(b+5*c)]; };
      -
      1015 auto WA = [wa, ido](size_t x, size_t i)
      -
      1016 { return wa[i-1+x*(ido-1)]; };
      -
      1017
      -
      1018 if (ido==1)
      -
      1019 for (size_t k=0; k<l1; ++k)
      -
      1020 {
      - -
      1022 POCKETFFT_PARTSTEP5a(1,4,tw1r,tw2r,+tw1i,+tw2i)
      -
      1023 POCKETFFT_PARTSTEP5a(2,3,tw2r,tw1r,+tw2i,-tw1i)
      -
      1024 }
      -
      1025 else
      -
      1026 for (size_t k=0; k<l1; ++k)
      -
      1027 {
      -
      1028 {
      - -
      1030 POCKETFFT_PARTSTEP5a(1,4,tw1r,tw2r,+tw1i,+tw2i)
      -
      1031 POCKETFFT_PARTSTEP5a(2,3,tw2r,tw1r,+tw2i,-tw1i)
      -
      1032 }
      -
      1033 for (size_t i=1; i<ido; ++i)
      -
      1034 {
      - -
      1036 POCKETFFT_PARTSTEP5b(1,4,tw1r,tw2r,+tw1i,+tw2i)
      -
      1037 POCKETFFT_PARTSTEP5b(2,3,tw2r,tw1r,+tw2i,-tw1i)
      -
      1038 }
      -
      1039 }
      -
      1040 }
      -
      1041
      -
      1042#undef POCKETFFT_PARTSTEP5b
      -
      1043#undef POCKETFFT_PARTSTEP5a
      -
      1044#undef POCKETFFT_PREP5
      -
      1045
      -
      -
      1046#define POCKETFFT_PREP7(idx) \
      -
      1047 T t1 = CC(idx,0,k), t2, t3, t4, t5, t6, t7; \
      -
      1048 PM (t2,t7,CC(idx,1,k),CC(idx,6,k)); \
      -
      1049 PM (t3,t6,CC(idx,2,k),CC(idx,5,k)); \
      -
      1050 PM (t4,t5,CC(idx,3,k),CC(idx,4,k)); \
      -
      1051 CH(idx,k,0).r=t1.r+t2.r+t3.r+t4.r; \
      -
      1052 CH(idx,k,0).i=t1.i+t2.i+t3.i+t4.i;
      -
      -
      1053
      -
      -
      1054#define POCKETFFT_PARTSTEP7a0(u1,u2,x1,x2,x3,y1,y2,y3,out1,out2) \
      -
      1055 { \
      -
      1056 T ca,cb; \
      -
      1057 ca.r=t1.r+x1*t2.r+x2*t3.r+x3*t4.r; \
      -
      1058 ca.i=t1.i+x1*t2.i+x2*t3.i+x3*t4.i; \
      -
      1059 cb.i=y1*t7.r y2*t6.r y3*t5.r; \
      -
      1060 cb.r=-(y1*t7.i y2*t6.i y3*t5.i); \
      -
      1061 PM(out1,out2,ca,cb); \
      -
      1062 }
      -
      -
      -
      1063#define POCKETFFT_PARTSTEP7a(u1,u2,x1,x2,x3,y1,y2,y3) \
      -
      1064 POCKETFFT_PARTSTEP7a0(u1,u2,x1,x2,x3,y1,y2,y3,CH(0,k,u1),CH(0,k,u2))
      -
      -
      -
      1065#define POCKETFFT_PARTSTEP7(u1,u2,x1,x2,x3,y1,y2,y3) \
      -
      1066 { \
      -
      1067 T da,db; \
      -
      1068 POCKETFFT_PARTSTEP7a0(u1,u2,x1,x2,x3,y1,y2,y3,da,db) \
      -
      1069 special_mul<fwd>(da,WA(u1-1,i),CH(i,k,u1)); \
      -
      1070 special_mul<fwd>(db,WA(u2-1,i),CH(i,k,u2)); \
      -
      1071 }
      -
      -
      1072
      -
      1073template<bool fwd, typename T> void pass7(size_t ido, size_t l1,
      -
      1074 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1075 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      1076 {
      -
      1077 constexpr T0 tw1r= T0(0.6234898018587335305250048840042398L),
      -
      1078 tw1i= (fwd ? -1 : 1) * T0(0.7818314824680298087084445266740578L),
      -
      1079 tw2r= T0(-0.2225209339563144042889025644967948L),
      -
      1080 tw2i= (fwd ? -1 : 1) * T0(0.9749279121818236070181316829939312L),
      -
      1081 tw3r= T0(-0.9009688679024191262361023195074451L),
      -
      1082 tw3i= (fwd ? -1 : 1) * T0(0.433883739117558120475768332848359L);
      -
      1083
      -
      1084 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1085 { return ch[a+ido*(b+l1*c)]; };
      -
      1086 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1087 { return cc[a+ido*(b+7*c)]; };
      -
      1088 auto WA = [wa, ido](size_t x, size_t i)
      -
      1089 { return wa[i-1+x*(ido-1)]; };
      -
      1090
      -
      1091 if (ido==1)
      -
      1092 for (size_t k=0; k<l1; ++k)
      -
      1093 {
      - -
      1095 POCKETFFT_PARTSTEP7a(1,6,tw1r,tw2r,tw3r,+tw1i,+tw2i,+tw3i)
      -
      1096 POCKETFFT_PARTSTEP7a(2,5,tw2r,tw3r,tw1r,+tw2i,-tw3i,-tw1i)
      -
      1097 POCKETFFT_PARTSTEP7a(3,4,tw3r,tw1r,tw2r,+tw3i,-tw1i,+tw2i)
      -
      1098 }
      -
      1099 else
      -
      1100 for (size_t k=0; k<l1; ++k)
      -
      1101 {
      -
      1102 {
      - -
      1104 POCKETFFT_PARTSTEP7a(1,6,tw1r,tw2r,tw3r,+tw1i,+tw2i,+tw3i)
      -
      1105 POCKETFFT_PARTSTEP7a(2,5,tw2r,tw3r,tw1r,+tw2i,-tw3i,-tw1i)
      -
      1106 POCKETFFT_PARTSTEP7a(3,4,tw3r,tw1r,tw2r,+tw3i,-tw1i,+tw2i)
      -
      1107 }
      -
      1108 for (size_t i=1; i<ido; ++i)
      -
      1109 {
      - -
      1111 POCKETFFT_PARTSTEP7(1,6,tw1r,tw2r,tw3r,+tw1i,+tw2i,+tw3i)
      -
      1112 POCKETFFT_PARTSTEP7(2,5,tw2r,tw3r,tw1r,+tw2i,-tw3i,-tw1i)
      -
      1113 POCKETFFT_PARTSTEP7(3,4,tw3r,tw1r,tw2r,+tw3i,-tw1i,+tw2i)
      -
      1114 }
      -
      1115 }
      -
      1116 }
      -
      1117
      -
      1118#undef POCKETFFT_PARTSTEP7
      -
      1119#undef POCKETFFT_PARTSTEP7a0
      -
      1120#undef POCKETFFT_PARTSTEP7a
      -
      1121#undef POCKETFFT_PREP7
      -
      1122
      -
      1123template <bool fwd, typename T> void ROTX45(T &a) const
      -
      1124 {
      -
      1125 constexpr T0 hsqt2=T0(0.707106781186547524400844362104849L);
      -
      1126 if (fwd)
      -
      1127 { auto tmp_=a.r; a.r=hsqt2*(a.r+a.i); a.i=hsqt2*(a.i-tmp_); }
      -
      1128 else
      -
      1129 { auto tmp_=a.r; a.r=hsqt2*(a.r-a.i); a.i=hsqt2*(a.i+tmp_); }
      -
      1130 }
      -
      1131template <bool fwd, typename T> void ROTX135(T &a) const
      -
      1132 {
      -
      1133 constexpr T0 hsqt2=T0(0.707106781186547524400844362104849L);
      -
      1134 if (fwd)
      -
      1135 { auto tmp_=a.r; a.r=hsqt2*(a.i-a.r); a.i=hsqt2*(-tmp_-a.i); }
      -
      1136 else
      -
      1137 { auto tmp_=a.r; a.r=hsqt2*(-a.r-a.i); a.i=hsqt2*(tmp_-a.i); }
      -
      1138 }
      -
      1139
      -
      1140template<bool fwd, typename T> void pass8 (size_t ido, size_t l1,
      -
      1141 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1142 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      1143 {
      -
      1144 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1145 { return ch[a+ido*(b+l1*c)]; };
      -
      1146 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1147 { return cc[a+ido*(b+8*c)]; };
      -
      1148 auto WA = [wa, ido](size_t x, size_t i)
      -
      1149 { return wa[i-1+x*(ido-1)]; };
      -
      1150
      -
      1151 if (ido==1)
      -
      1152 for (size_t k=0; k<l1; ++k)
      -
      1153 {
      -
      1154 T a0, a1, a2, a3, a4, a5, a6, a7;
      -
      1155 PM(a1,a5,CC(0,1,k),CC(0,5,k));
      -
      1156 PM(a3,a7,CC(0,3,k),CC(0,7,k));
      -
      1157 PMINPLACE(a1,a3);
      -
      1158 ROTX90<fwd>(a3);
      -
      1159
      -
      1160 ROTX90<fwd>(a7);
      -
      1161 PMINPLACE(a5,a7);
      -
      1162 ROTX45<fwd>(a5);
      -
      1163 ROTX135<fwd>(a7);
      -
      1164
      -
      1165 PM(a0,a4,CC(0,0,k),CC(0,4,k));
      -
      1166 PM(a2,a6,CC(0,2,k),CC(0,6,k));
      -
      1167 PM(CH(0,k,0),CH(0,k,4),a0+a2,a1);
      -
      1168 PM(CH(0,k,2),CH(0,k,6),a0-a2,a3);
      -
      1169 ROTX90<fwd>(a6);
      -
      1170 PM(CH(0,k,1),CH(0,k,5),a4+a6,a5);
      -
      1171 PM(CH(0,k,3),CH(0,k,7),a4-a6,a7);
      -
      1172 }
      -
      1173 else
      -
      1174 for (size_t k=0; k<l1; ++k)
      -
      1175 {
      -
      1176 {
      -
      1177 T a0, a1, a2, a3, a4, a5, a6, a7;
      -
      1178 PM(a1,a5,CC(0,1,k),CC(0,5,k));
      -
      1179 PM(a3,a7,CC(0,3,k),CC(0,7,k));
      -
      1180 PMINPLACE(a1,a3);
      -
      1181 ROTX90<fwd>(a3);
      -
      1182
      -
      1183 ROTX90<fwd>(a7);
      -
      1184 PMINPLACE(a5,a7);
      -
      1185 ROTX45<fwd>(a5);
      -
      1186 ROTX135<fwd>(a7);
      -
      1187
      -
      1188 PM(a0,a4,CC(0,0,k),CC(0,4,k));
      -
      1189 PM(a2,a6,CC(0,2,k),CC(0,6,k));
      -
      1190 PM(CH(0,k,0),CH(0,k,4),a0+a2,a1);
      -
      1191 PM(CH(0,k,2),CH(0,k,6),a0-a2,a3);
      -
      1192 ROTX90<fwd>(a6);
      -
      1193 PM(CH(0,k,1),CH(0,k,5),a4+a6,a5);
      -
      1194 PM(CH(0,k,3),CH(0,k,7),a4-a6,a7);
      -
      1195 }
      -
      1196 for (size_t i=1; i<ido; ++i)
      -
      1197 {
      -
      1198 T a0, a1, a2, a3, a4, a5, a6, a7;
      -
      1199 PM(a1,a5,CC(i,1,k),CC(i,5,k));
      -
      1200 PM(a3,a7,CC(i,3,k),CC(i,7,k));
      -
      1201 ROTX90<fwd>(a7);
      -
      1202 PMINPLACE(a1,a3);
      -
      1203 ROTX90<fwd>(a3);
      -
      1204 PMINPLACE(a5,a7);
      -
      1205 ROTX45<fwd>(a5);
      -
      1206 ROTX135<fwd>(a7);
      -
      1207 PM(a0,a4,CC(i,0,k),CC(i,4,k));
      -
      1208 PM(a2,a6,CC(i,2,k),CC(i,6,k));
      -
      1209 PMINPLACE(a0,a2);
      -
      1210 CH(i,k,0) = a0+a1;
      -
      1211 special_mul<fwd>(a0-a1,WA(3,i),CH(i,k,4));
      -
      1212 special_mul<fwd>(a2+a3,WA(1,i),CH(i,k,2));
      -
      1213 special_mul<fwd>(a2-a3,WA(5,i),CH(i,k,6));
      -
      1214 ROTX90<fwd>(a6);
      -
      1215 PMINPLACE(a4,a6);
      -
      1216 special_mul<fwd>(a4+a5,WA(0,i),CH(i,k,1));
      -
      1217 special_mul<fwd>(a4-a5,WA(4,i),CH(i,k,5));
      -
      1218 special_mul<fwd>(a6+a7,WA(2,i),CH(i,k,3));
      -
      1219 special_mul<fwd>(a6-a7,WA(6,i),CH(i,k,7));
      -
      1220 }
      -
      1221 }
      -
      1222 }
      -
      1223
      -
      1224
      -
      -
      1225#define POCKETFFT_PREP11(idx) \
      -
      1226 T t1 = CC(idx,0,k), t2, t3, t4, t5, t6, t7, t8, t9, t10, t11; \
      -
      1227 PM (t2,t11,CC(idx,1,k),CC(idx,10,k)); \
      -
      1228 PM (t3,t10,CC(idx,2,k),CC(idx, 9,k)); \
      -
      1229 PM (t4,t9 ,CC(idx,3,k),CC(idx, 8,k)); \
      -
      1230 PM (t5,t8 ,CC(idx,4,k),CC(idx, 7,k)); \
      -
      1231 PM (t6,t7 ,CC(idx,5,k),CC(idx, 6,k)); \
      -
      1232 CH(idx,k,0).r=t1.r+t2.r+t3.r+t4.r+t5.r+t6.r; \
      -
      1233 CH(idx,k,0).i=t1.i+t2.i+t3.i+t4.i+t5.i+t6.i;
      -
      -
      1234
      -
      -
      1235#define POCKETFFT_PARTSTEP11a0(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,out1,out2) \
      -
      1236 { \
      -
      1237 T ca = t1 + t2*x1 + t3*x2 + t4*x3 + t5*x4 +t6*x5, \
      -
      1238 cb; \
      -
      1239 cb.i=y1*t11.r y2*t10.r y3*t9.r y4*t8.r y5*t7.r; \
      -
      1240 cb.r=-(y1*t11.i y2*t10.i y3*t9.i y4*t8.i y5*t7.i ); \
      -
      1241 PM(out1,out2,ca,cb); \
      -
      1242 }
      -
      -
      -
      1243#define POCKETFFT_PARTSTEP11a(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5) \
      -
      1244 POCKETFFT_PARTSTEP11a0(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,CH(0,k,u1),CH(0,k,u2))
      -
      -
      -
      1245#define POCKETFFT_PARTSTEP11(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5) \
      -
      1246 { \
      -
      1247 T da,db; \
      -
      1248 POCKETFFT_PARTSTEP11a0(u1,u2,x1,x2,x3,x4,x5,y1,y2,y3,y4,y5,da,db) \
      -
      1249 special_mul<fwd>(da,WA(u1-1,i),CH(i,k,u1)); \
      -
      1250 special_mul<fwd>(db,WA(u2-1,i),CH(i,k,u2)); \
      -
      1251 }
      -
      -
      1252
      -
      1253template<bool fwd, typename T> void pass11 (size_t ido, size_t l1,
      -
      1254 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1255 const cmplx<T0> * POCKETFFT_RESTRICT wa) const
      -
      1256 {
      -
      1257 constexpr T0 tw1r= T0(0.8412535328311811688618116489193677L),
      -
      1258 tw1i= (fwd ? -1 : 1) * T0(0.5406408174555975821076359543186917L),
      -
      1259 tw2r= T0(0.4154150130018864255292741492296232L),
      -
      1260 tw2i= (fwd ? -1 : 1) * T0(0.9096319953545183714117153830790285L),
      -
      1261 tw3r= T0(-0.1423148382732851404437926686163697L),
      -
      1262 tw3i= (fwd ? -1 : 1) * T0(0.9898214418809327323760920377767188L),
      -
      1263 tw4r= T0(-0.6548607339452850640569250724662936L),
      -
      1264 tw4i= (fwd ? -1 : 1) * T0(0.7557495743542582837740358439723444L),
      -
      1265 tw5r= T0(-0.9594929736144973898903680570663277L),
      -
      1266 tw5i= (fwd ? -1 : 1) * T0(0.2817325568414296977114179153466169L);
      -
      1267
      -
      1268 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1269 { return ch[a+ido*(b+l1*c)]; };
      -
      1270 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1271 { return cc[a+ido*(b+11*c)]; };
      -
      1272 auto WA = [wa, ido](size_t x, size_t i)
      -
      1273 { return wa[i-1+x*(ido-1)]; };
      -
      1274
      -
      1275 if (ido==1)
      -
      1276 for (size_t k=0; k<l1; ++k)
      -
      1277 {
      - -
      1279 POCKETFFT_PARTSTEP11a(1,10,tw1r,tw2r,tw3r,tw4r,tw5r,+tw1i,+tw2i,+tw3i,+tw4i,+tw5i)
      -
      1280 POCKETFFT_PARTSTEP11a(2, 9,tw2r,tw4r,tw5r,tw3r,tw1r,+tw2i,+tw4i,-tw5i,-tw3i,-tw1i)
      -
      1281 POCKETFFT_PARTSTEP11a(3, 8,tw3r,tw5r,tw2r,tw1r,tw4r,+tw3i,-tw5i,-tw2i,+tw1i,+tw4i)
      -
      1282 POCKETFFT_PARTSTEP11a(4, 7,tw4r,tw3r,tw1r,tw5r,tw2r,+tw4i,-tw3i,+tw1i,+tw5i,-tw2i)
      -
      1283 POCKETFFT_PARTSTEP11a(5, 6,tw5r,tw1r,tw4r,tw2r,tw3r,+tw5i,-tw1i,+tw4i,-tw2i,+tw3i)
      -
      1284 }
      -
      1285 else
      -
      1286 for (size_t k=0; k<l1; ++k)
      -
      1287 {
      -
      1288 {
      - -
      1290 POCKETFFT_PARTSTEP11a(1,10,tw1r,tw2r,tw3r,tw4r,tw5r,+tw1i,+tw2i,+tw3i,+tw4i,+tw5i)
      -
      1291 POCKETFFT_PARTSTEP11a(2, 9,tw2r,tw4r,tw5r,tw3r,tw1r,+tw2i,+tw4i,-tw5i,-tw3i,-tw1i)
      -
      1292 POCKETFFT_PARTSTEP11a(3, 8,tw3r,tw5r,tw2r,tw1r,tw4r,+tw3i,-tw5i,-tw2i,+tw1i,+tw4i)
      -
      1293 POCKETFFT_PARTSTEP11a(4, 7,tw4r,tw3r,tw1r,tw5r,tw2r,+tw4i,-tw3i,+tw1i,+tw5i,-tw2i)
      -
      1294 POCKETFFT_PARTSTEP11a(5, 6,tw5r,tw1r,tw4r,tw2r,tw3r,+tw5i,-tw1i,+tw4i,-tw2i,+tw3i)
      -
      1295 }
      -
      1296 for (size_t i=1; i<ido; ++i)
      -
      1297 {
      - -
      1299 POCKETFFT_PARTSTEP11(1,10,tw1r,tw2r,tw3r,tw4r,tw5r,+tw1i,+tw2i,+tw3i,+tw4i,+tw5i)
      -
      1300 POCKETFFT_PARTSTEP11(2, 9,tw2r,tw4r,tw5r,tw3r,tw1r,+tw2i,+tw4i,-tw5i,-tw3i,-tw1i)
      -
      1301 POCKETFFT_PARTSTEP11(3, 8,tw3r,tw5r,tw2r,tw1r,tw4r,+tw3i,-tw5i,-tw2i,+tw1i,+tw4i)
      -
      1302 POCKETFFT_PARTSTEP11(4, 7,tw4r,tw3r,tw1r,tw5r,tw2r,+tw4i,-tw3i,+tw1i,+tw5i,-tw2i)
      -
      1303 POCKETFFT_PARTSTEP11(5, 6,tw5r,tw1r,tw4r,tw2r,tw3r,+tw5i,-tw1i,+tw4i,-tw2i,+tw3i)
      -
      1304 }
      -
      1305 }
      -
      1306 }
      -
      1307
      -
      1308#undef POCKETFFT_PARTSTEP11
      -
      1309#undef POCKETFFT_PARTSTEP11a0
      -
      1310#undef POCKETFFT_PARTSTEP11a
      -
      1311#undef POCKETFFT_PREP11
      -
      1312
      -
      1313template<bool fwd, typename T> void passg (size_t ido, size_t ip,
      -
      1314 size_t l1, T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1315 const cmplx<T0> * POCKETFFT_RESTRICT wa,
      -
      1316 const cmplx<T0> * POCKETFFT_RESTRICT csarr) const
      -
      1317 {
      -
      1318 const size_t cdim=ip;
      -
      1319 size_t ipph = (ip+1)/2;
      -
      1320 size_t idl1 = ido*l1;
      -
      1321
      -
      1322 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1323 { return ch[a+ido*(b+l1*c)]; };
      -
      1324 auto CC = [cc,ido,cdim](size_t a, size_t b, size_t c) -> const T&
      -
      1325 { return cc[a+ido*(b+cdim*c)]; };
      -
      1326 auto CX = [cc, ido, l1](size_t a, size_t b, size_t c) -> T&
      -
      1327 { return cc[a+ido*(b+l1*c)]; };
      -
      1328 auto CX2 = [cc, idl1](size_t a, size_t b) -> T&
      -
      1329 { return cc[a+idl1*b]; };
      -
      1330 auto CH2 = [ch, idl1](size_t a, size_t b) -> const T&
      -
      1331 { return ch[a+idl1*b]; };
      -
      1332
      -
      1333 arr<cmplx<T0>> wal(ip);
      -
      1334 wal[0] = cmplx<T0>(1., 0.);
      -
      1335 for (size_t i=1; i<ip; ++i)
      -
      1336 wal[i]=cmplx<T0>(csarr[i].r,fwd ? -csarr[i].i : csarr[i].i);
      -
      1337
      -
      1338 for (size_t k=0; k<l1; ++k)
      -
      1339 for (size_t i=0; i<ido; ++i)
      -
      1340 CH(i,k,0) = CC(i,0,k);
      -
      1341 for (size_t j=1, jc=ip-1; j<ipph; ++j, --jc)
      -
      1342 for (size_t k=0; k<l1; ++k)
      -
      1343 for (size_t i=0; i<ido; ++i)
      -
      1344 PM(CH(i,k,j),CH(i,k,jc),CC(i,j,k),CC(i,jc,k));
      -
      1345 for (size_t k=0; k<l1; ++k)
      -
      1346 for (size_t i=0; i<ido; ++i)
      -
      1347 {
      -
      1348 T tmp = CH(i,k,0);
      -
      1349 for (size_t j=1; j<ipph; ++j)
      -
      1350 tmp+=CH(i,k,j);
      -
      1351 CX(i,k,0) = tmp;
      -
      1352 }
      -
      1353 for (size_t l=1, lc=ip-1; l<ipph; ++l, --lc)
      -
      1354 {
      -
      1355 // j=0
      -
      1356 for (size_t ik=0; ik<idl1; ++ik)
      -
      1357 {
      -
      1358 CX2(ik,l).r = CH2(ik,0).r+wal[l].r*CH2(ik,1).r+wal[2*l].r*CH2(ik,2).r;
      -
      1359 CX2(ik,l).i = CH2(ik,0).i+wal[l].r*CH2(ik,1).i+wal[2*l].r*CH2(ik,2).i;
      -
      1360 CX2(ik,lc).r=-wal[l].i*CH2(ik,ip-1).i-wal[2*l].i*CH2(ik,ip-2).i;
      -
      1361 CX2(ik,lc).i=wal[l].i*CH2(ik,ip-1).r+wal[2*l].i*CH2(ik,ip-2).r;
      -
      1362 }
      -
      1363
      -
      1364 size_t iwal=2*l;
      -
      1365 size_t j=3, jc=ip-3;
      -
      1366 for (; j<ipph-1; j+=2, jc-=2)
      -
      1367 {
      -
      1368 iwal+=l; if (iwal>ip) iwal-=ip;
      -
      1369 cmplx<T0> xwal=wal[iwal];
      -
      1370 iwal+=l; if (iwal>ip) iwal-=ip;
      -
      1371 cmplx<T0> xwal2=wal[iwal];
      -
      1372 for (size_t ik=0; ik<idl1; ++ik)
      -
      1373 {
      -
      1374 CX2(ik,l).r += CH2(ik,j).r*xwal.r+CH2(ik,j+1).r*xwal2.r;
      -
      1375 CX2(ik,l).i += CH2(ik,j).i*xwal.r+CH2(ik,j+1).i*xwal2.r;
      -
      1376 CX2(ik,lc).r -= CH2(ik,jc).i*xwal.i+CH2(ik,jc-1).i*xwal2.i;
      -
      1377 CX2(ik,lc).i += CH2(ik,jc).r*xwal.i+CH2(ik,jc-1).r*xwal2.i;
      -
      1378 }
      -
      1379 }
      -
      1380 for (; j<ipph; ++j, --jc)
      -
      1381 {
      -
      1382 iwal+=l; if (iwal>ip) iwal-=ip;
      -
      1383 cmplx<T0> xwal=wal[iwal];
      -
      1384 for (size_t ik=0; ik<idl1; ++ik)
      -
      1385 {
      -
      1386 CX2(ik,l).r += CH2(ik,j).r*xwal.r;
      -
      1387 CX2(ik,l).i += CH2(ik,j).i*xwal.r;
      -
      1388 CX2(ik,lc).r -= CH2(ik,jc).i*xwal.i;
      -
      1389 CX2(ik,lc).i += CH2(ik,jc).r*xwal.i;
      -
      1390 }
      -
      1391 }
      -
      1392 }
      -
      1393
      -
      1394 // shuffling and twiddling
      -
      1395 if (ido==1)
      -
      1396 for (size_t j=1, jc=ip-1; j<ipph; ++j, --jc)
      -
      1397 for (size_t ik=0; ik<idl1; ++ik)
      -
      1398 {
      -
      1399 T t1=CX2(ik,j), t2=CX2(ik,jc);
      -
      1400 PM(CX2(ik,j),CX2(ik,jc),t1,t2);
      -
      1401 }
      -
      1402 else
      -
      1403 {
      -
      1404 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc)
      -
      1405 for (size_t k=0; k<l1; ++k)
      -
      1406 {
      -
      1407 T t1=CX(0,k,j), t2=CX(0,k,jc);
      -
      1408 PM(CX(0,k,j),CX(0,k,jc),t1,t2);
      -
      1409 for (size_t i=1; i<ido; ++i)
      -
      1410 {
      -
      1411 T x1, x2;
      -
      1412 PM(x1,x2,CX(i,k,j),CX(i,k,jc));
      -
      1413 size_t idij=(j-1)*(ido-1)+i-1;
      -
      1414 special_mul<fwd>(x1,wa[idij],CX(i,k,j));
      -
      1415 idij=(jc-1)*(ido-1)+i-1;
      -
      1416 special_mul<fwd>(x2,wa[idij],CX(i,k,jc));
      -
      1417 }
      -
      1418 }
      -
      1419 }
      -
      1420 }
      -
      1421
      -
      1422template<bool fwd, typename T> void pass_all(T c[], T0 fct) const
      -
      1423 {
      -
      1424 if (length==1) { c[0]*=fct; return; }
      -
      1425 size_t l1=1;
      -
      1426 arr<T> ch(length);
      -
      1427 T *p1=c, *p2=ch.data();
      -
      1428
      -
      1429 for(size_t k1=0; k1<fact.size(); k1++)
      -
      1430 {
      -
      1431 size_t ip=fact[k1].fct;
      -
      1432 size_t l2=ip*l1;
      -
      1433 size_t ido = length/l2;
      -
      1434 if (ip==4)
      -
      1435 pass4<fwd> (ido, l1, p1, p2, fact[k1].tw);
      -
      1436 else if(ip==8)
      -
      1437 pass8<fwd>(ido, l1, p1, p2, fact[k1].tw);
      -
      1438 else if(ip==2)
      -
      1439 pass2<fwd>(ido, l1, p1, p2, fact[k1].tw);
      -
      1440 else if(ip==3)
      -
      1441 pass3<fwd> (ido, l1, p1, p2, fact[k1].tw);
      -
      1442 else if(ip==5)
      -
      1443 pass5<fwd> (ido, l1, p1, p2, fact[k1].tw);
      -
      1444 else if(ip==7)
      -
      1445 pass7<fwd> (ido, l1, p1, p2, fact[k1].tw);
      -
      1446 else if(ip==11)
      -
      1447 pass11<fwd> (ido, l1, p1, p2, fact[k1].tw);
      -
      1448 else
      -
      1449 {
      -
      1450 passg<fwd>(ido, ip, l1, p1, p2, fact[k1].tw, fact[k1].tws);
      -
      1451 std::swap(p1,p2);
      -
      1452 }
      -
      1453 std::swap(p1,p2);
      -
      1454 l1=l2;
      -
      1455 }
      -
      1456 if (p1!=c)
      -
      1457 {
      -
      1458 if (fct!=1.)
      -
      1459 for (size_t i=0; i<length; ++i)
      -
      1460 c[i] = ch[i]*fct;
      -
      1461 else
      -
      1462 std::copy_n (p1, length, c);
      -
      1463 }
      -
      1464 else
      -
      1465 if (fct!=1.)
      -
      1466 for (size_t i=0; i<length; ++i)
      -
      1467 c[i] *= fct;
      -
      1468 }
      -
      1469
      -
      1470 public:
      -
      -
      1471 template<typename T> void exec(T c[], T0 fct, bool fwd) const
      -
      1472 { fwd ? pass_all<true>(c, fct) : pass_all<false>(c, fct); }
      -
      -
      1473
      -
      1474 private:
      -
      1475 POCKETFFT_NOINLINE void factorize()
      -
      1476 {
      -
      1477 size_t len=length;
      -
      1478 while ((len&7)==0)
      -
      1479 { add_factor(8); len>>=3; }
      -
      1480 while ((len&3)==0)
      -
      1481 { add_factor(4); len>>=2; }
      -
      1482 if ((len&1)==0)
      -
      1483 {
      -
      1484 len>>=1;
      -
      1485 // factor 2 should be at the front of the factor list
      -
      1486 add_factor(2);
      -
      1487 std::swap(fact[0].fct, fact.back().fct);
      -
      1488 }
      -
      1489 for (size_t divisor=3; divisor*divisor<=len; divisor+=2)
      -
      1490 while ((len%divisor)==0)
      -
      1491 {
      -
      1492 add_factor(divisor);
      -
      1493 len/=divisor;
      -
      1494 }
      -
      1495 if (len>1) add_factor(len);
      -
      1496 }
      -
      1497
      -
      1498 size_t twsize() const
      -
      1499 {
      -
      1500 size_t twsize=0, l1=1;
      -
      1501 for (size_t k=0; k<fact.size(); ++k)
      -
      1502 {
      -
      1503 size_t ip=fact[k].fct, ido= length/(l1*ip);
      -
      1504 twsize+=(ip-1)*(ido-1);
      -
      1505 if (ip>11)
      -
      1506 twsize+=ip;
      -
      1507 l1*=ip;
      -
      1508 }
      -
      1509 return twsize;
      -
      1510 }
      -
      1511
      -
      1512 void comp_twiddle()
      -
      1513 {
      -
      1514 sincos_2pibyn<T0> twiddle(length);
      -
      1515 size_t l1=1;
      -
      1516 size_t memofs=0;
      -
      1517 for (size_t k=0; k<fact.size(); ++k)
      -
      1518 {
      -
      1519 size_t ip=fact[k].fct, ido=length/(l1*ip);
      -
      1520 fact[k].tw=mem.data()+memofs;
      -
      1521 memofs+=(ip-1)*(ido-1);
      -
      1522 for (size_t j=1; j<ip; ++j)
      -
      1523 for (size_t i=1; i<ido; ++i)
      -
      1524 fact[k].tw[(j-1)*(ido-1)+i-1] = twiddle[j*l1*i];
      -
      1525 if (ip>11)
      -
      1526 {
      -
      1527 fact[k].tws=mem.data()+memofs;
      -
      1528 memofs+=ip;
      -
      1529 for (size_t j=0; j<ip; ++j)
      -
      1530 fact[k].tws[j] = twiddle[j*l1*ido];
      -
      1531 }
      -
      1532 l1*=ip;
      -
      1533 }
      -
      1534 }
      -
      1535
      -
      1536 public:
      -
      - -
      1538 : length(length_)
      -
      1539 {
      -
      1540 if (length==0) throw std::runtime_error("zero-length FFT requested");
      -
      1541 if (length==1) return;
      -
      1542 factorize();
      -
      1543 mem.resize(twsize());
      -
      1544 comp_twiddle();
      -
      1545 }
      -
      -
      1546 };
      -
      -
      1547
      -
      1548//
      -
      1549// real-valued FFTPACK transforms
      -
      1550//
      -
      1551
      -
      -
      1552template<typename T0> class rfftp
      -
      1553 {
      -
      1554 private:
      -
      1555 struct fctdata
      -
      1556 {
      -
      1557 size_t fct;
      -
      1558 T0 *tw, *tws;
      -
      1559 };
      -
      1560
      -
      1561 size_t length;
      -
      1562 arr<T0> mem;
      -
      1563 std::vector<fctdata> fact;
      -
      1564
      -
      1565 void add_factor(size_t factor)
      -
      1566 { fact.push_back({factor, nullptr, nullptr}); }
      -
      1567
      -
      1568/* (a+ib) = conj(c+id) * (e+if) */
      -
      1569template<typename T1, typename T2, typename T3> inline void MULPM
      -
      1570 (T1 &a, T1 &b, T2 c, T2 d, T3 e, T3 f) const
      -
      1571 { a=c*e+d*f; b=c*f-d*e; }
      -
      1572
      -
      1573template<typename T> void radf2 (size_t ido, size_t l1,
      - -
      1575 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1576 {
      -
      1577 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1578 auto CC = [cc,ido,l1](size_t a, size_t b, size_t c) -> const T&
      -
      1579 { return cc[a+ido*(b+l1*c)]; };
      -
      1580 auto CH = [ch,ido](size_t a, size_t b, size_t c) -> T&
      -
      1581 { return ch[a+ido*(b+2*c)]; };
      -
      1582
      -
      1583 for (size_t k=0; k<l1; k++)
      -
      1584 PM (CH(0,0,k),CH(ido-1,1,k),CC(0,k,0),CC(0,k,1));
      -
      1585 if ((ido&1)==0)
      -
      1586 for (size_t k=0; k<l1; k++)
      -
      1587 {
      -
      1588 CH( 0,1,k) = -CC(ido-1,k,1);
      -
      1589 CH(ido-1,0,k) = CC(ido-1,k,0);
      -
      1590 }
      -
      1591 if (ido<=2) return;
      -
      1592 for (size_t k=0; k<l1; k++)
      -
      1593 for (size_t i=2; i<ido; i+=2)
      -
      1594 {
      -
      1595 size_t ic=ido-i;
      -
      1596 T tr2, ti2;
      -
      1597 MULPM (tr2,ti2,WA(0,i-2),WA(0,i-1),CC(i-1,k,1),CC(i,k,1));
      -
      1598 PM (CH(i-1,0,k),CH(ic-1,1,k),CC(i-1,k,0),tr2);
      -
      1599 PM (CH(i ,0,k),CH(ic ,1,k),ti2,CC(i ,k,0));
      -
      1600 }
      -
      1601 }
      -
      1602
      -
      1603// a2=a+b; b2=i*(b-a);
      -
      -
      1604#define POCKETFFT_REARRANGE(rx, ix, ry, iy) \
      -
      1605 {\
      -
      1606 auto t1=rx+ry, t2=ry-rx, t3=ix+iy, t4=ix-iy; \
      -
      1607 rx=t1; ix=t3; ry=t4; iy=t2; \
      -
      1608 }
      -
      -
      1609
      -
      1610template<typename T> void radf3(size_t ido, size_t l1,
      -
      1611 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1612 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1613 {
      -
      1614 constexpr T0 taur=-0.5, taui=T0(0.8660254037844386467637231707529362L);
      -
      1615
      -
      1616 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1617 auto CC = [cc,ido,l1](size_t a, size_t b, size_t c) -> const T&
      -
      1618 { return cc[a+ido*(b+l1*c)]; };
      -
      1619 auto CH = [ch,ido](size_t a, size_t b, size_t c) -> T&
      -
      1620 { return ch[a+ido*(b+3*c)]; };
      -
      1621
      -
      1622 for (size_t k=0; k<l1; k++)
      -
      1623 {
      -
      1624 T cr2=CC(0,k,1)+CC(0,k,2);
      -
      1625 CH(0,0,k) = CC(0,k,0)+cr2;
      -
      1626 CH(0,2,k) = taui*(CC(0,k,2)-CC(0,k,1));
      -
      1627 CH(ido-1,1,k) = CC(0,k,0)+taur*cr2;
      -
      1628 }
      -
      1629 if (ido==1) return;
      -
      1630 for (size_t k=0; k<l1; k++)
      -
      1631 for (size_t i=2; i<ido; i+=2)
      -
      1632 {
      -
      1633 size_t ic=ido-i;
      -
      1634 T di2, di3, dr2, dr3;
      -
      1635 MULPM (dr2,di2,WA(0,i-2),WA(0,i-1),CC(i-1,k,1),CC(i,k,1)); // d2=conj(WA0)*CC1
      -
      1636 MULPM (dr3,di3,WA(1,i-2),WA(1,i-1),CC(i-1,k,2),CC(i,k,2)); // d3=conj(WA1)*CC2
      -
      1637 POCKETFFT_REARRANGE(dr2, di2, dr3, di3);
      -
      1638 CH(i-1,0,k) = CC(i-1,k,0)+dr2; // c add
      -
      1639 CH(i ,0,k) = CC(i ,k,0)+di2;
      -
      1640 T tr2 = CC(i-1,k,0)+taur*dr2; // c add
      -
      1641 T ti2 = CC(i ,k,0)+taur*di2;
      -
      1642 T tr3 = taui*dr3; // t3 = taui*i*(d3-d2)?
      -
      1643 T ti3 = taui*di3;
      -
      1644 PM(CH(i-1,2,k),CH(ic-1,1,k),tr2,tr3); // PM(i) = t2+t3
      -
      1645 PM(CH(i ,2,k),CH(ic ,1,k),ti3,ti2); // PM(ic) = conj(t2-t3)
      -
      1646 }
      -
      1647 }
      -
      1648
      -
      1649template<typename T> void radf4(size_t ido, size_t l1,
      -
      1650 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1651 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1652 {
      -
      1653 constexpr T0 hsqt2=T0(0.707106781186547524400844362104849L);
      -
      1654
      -
      1655 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1656 auto CC = [cc,ido,l1](size_t a, size_t b, size_t c) -> const T&
      -
      1657 { return cc[a+ido*(b+l1*c)]; };
      -
      1658 auto CH = [ch,ido](size_t a, size_t b, size_t c) -> T&
      -
      1659 { return ch[a+ido*(b+4*c)]; };
      -
      1660
      -
      1661 for (size_t k=0; k<l1; k++)
      -
      1662 {
      -
      1663 T tr1,tr2;
      -
      1664 PM (tr1,CH(0,2,k),CC(0,k,3),CC(0,k,1));
      -
      1665 PM (tr2,CH(ido-1,1,k),CC(0,k,0),CC(0,k,2));
      -
      1666 PM (CH(0,0,k),CH(ido-1,3,k),tr2,tr1);
      -
      1667 }
      -
      1668 if ((ido&1)==0)
      -
      1669 for (size_t k=0; k<l1; k++)
      -
      1670 {
      -
      1671 T ti1=-hsqt2*(CC(ido-1,k,1)+CC(ido-1,k,3));
      -
      1672 T tr1= hsqt2*(CC(ido-1,k,1)-CC(ido-1,k,3));
      -
      1673 PM (CH(ido-1,0,k),CH(ido-1,2,k),CC(ido-1,k,0),tr1);
      -
      1674 PM (CH( 0,3,k),CH( 0,1,k),ti1,CC(ido-1,k,2));
      -
      1675 }
      -
      1676 if (ido<=2) return;
      -
      1677 for (size_t k=0; k<l1; k++)
      -
      1678 for (size_t i=2; i<ido; i+=2)
      -
      1679 {
      -
      1680 size_t ic=ido-i;
      -
      1681 T ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4;
      -
      1682 MULPM(cr2,ci2,WA(0,i-2),WA(0,i-1),CC(i-1,k,1),CC(i,k,1));
      -
      1683 MULPM(cr3,ci3,WA(1,i-2),WA(1,i-1),CC(i-1,k,2),CC(i,k,2));
      -
      1684 MULPM(cr4,ci4,WA(2,i-2),WA(2,i-1),CC(i-1,k,3),CC(i,k,3));
      -
      1685 PM(tr1,tr4,cr4,cr2);
      -
      1686 PM(ti1,ti4,ci2,ci4);
      -
      1687 PM(tr2,tr3,CC(i-1,k,0),cr3);
      -
      1688 PM(ti2,ti3,CC(i ,k,0),ci3);
      -
      1689 PM(CH(i-1,0,k),CH(ic-1,3,k),tr2,tr1);
      -
      1690 PM(CH(i ,0,k),CH(ic ,3,k),ti1,ti2);
      -
      1691 PM(CH(i-1,2,k),CH(ic-1,1,k),tr3,ti4);
      -
      1692 PM(CH(i ,2,k),CH(ic ,1,k),tr4,ti3);
      -
      1693 }
      -
      1694 }
      -
      1695
      -
      1696template<typename T> void radf5(size_t ido, size_t l1,
      -
      1697 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1698 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1699 {
      -
      1700 constexpr T0 tr11= T0(0.3090169943749474241022934171828191L),
      -
      1701 ti11= T0(0.9510565162951535721164393333793821L),
      -
      1702 tr12= T0(-0.8090169943749474241022934171828191L),
      -
      1703 ti12= T0(0.5877852522924731291687059546390728L);
      -
      1704
      -
      1705 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1706 auto CC = [cc,ido,l1](size_t a, size_t b, size_t c) -> const T&
      -
      1707 { return cc[a+ido*(b+l1*c)]; };
      -
      1708 auto CH = [ch,ido](size_t a, size_t b, size_t c) -> T&
      -
      1709 { return ch[a+ido*(b+5*c)]; };
      -
      1710
      -
      1711 for (size_t k=0; k<l1; k++)
      -
      1712 {
      -
      1713 T cr2, cr3, ci4, ci5;
      -
      1714 PM (cr2,ci5,CC(0,k,4),CC(0,k,1));
      -
      1715 PM (cr3,ci4,CC(0,k,3),CC(0,k,2));
      -
      1716 CH(0,0,k)=CC(0,k,0)+cr2+cr3;
      -
      1717 CH(ido-1,1,k)=CC(0,k,0)+tr11*cr2+tr12*cr3;
      -
      1718 CH(0,2,k)=ti11*ci5+ti12*ci4;
      -
      1719 CH(ido-1,3,k)=CC(0,k,0)+tr12*cr2+tr11*cr3;
      -
      1720 CH(0,4,k)=ti12*ci5-ti11*ci4;
      -
      1721 }
      -
      1722 if (ido==1) return;
      -
      1723 for (size_t k=0; k<l1;++k)
      -
      1724 for (size_t i=2, ic=ido-2; i<ido; i+=2, ic-=2)
      -
      1725 {
      -
      1726 T di2, di3, di4, di5, dr2, dr3, dr4, dr5;
      -
      1727 MULPM (dr2,di2,WA(0,i-2),WA(0,i-1),CC(i-1,k,1),CC(i,k,1));
      -
      1728 MULPM (dr3,di3,WA(1,i-2),WA(1,i-1),CC(i-1,k,2),CC(i,k,2));
      -
      1729 MULPM (dr4,di4,WA(2,i-2),WA(2,i-1),CC(i-1,k,3),CC(i,k,3));
      -
      1730 MULPM (dr5,di5,WA(3,i-2),WA(3,i-1),CC(i-1,k,4),CC(i,k,4));
      -
      1731 POCKETFFT_REARRANGE(dr2, di2, dr5, di5);
      -
      1732 POCKETFFT_REARRANGE(dr3, di3, dr4, di4);
      -
      1733 CH(i-1,0,k)=CC(i-1,k,0)+dr2+dr3;
      -
      1734 CH(i ,0,k)=CC(i ,k,0)+di2+di3;
      -
      1735 T tr2=CC(i-1,k,0)+tr11*dr2+tr12*dr3;
      -
      1736 T ti2=CC(i ,k,0)+tr11*di2+tr12*di3;
      -
      1737 T tr3=CC(i-1,k,0)+tr12*dr2+tr11*dr3;
      -
      1738 T ti3=CC(i ,k,0)+tr12*di2+tr11*di3;
      -
      1739 T tr5 = ti11*dr5 + ti12*dr4;
      -
      1740 T ti5 = ti11*di5 + ti12*di4;
      -
      1741 T tr4 = ti12*dr5 - ti11*dr4;
      -
      1742 T ti4 = ti12*di5 - ti11*di4;
      -
      1743 PM(CH(i-1,2,k),CH(ic-1,1,k),tr2,tr5);
      -
      1744 PM(CH(i ,2,k),CH(ic ,1,k),ti5,ti2);
      -
      1745 PM(CH(i-1,4,k),CH(ic-1,3,k),tr3,tr4);
      -
      1746 PM(CH(i ,4,k),CH(ic ,3,k),ti4,ti3);
      -
      1747 }
      -
      1748 }
      -
      1749
      -
      1750#undef POCKETFFT_REARRANGE
      -
      1751
      -
      1752template<typename T> void radfg(size_t ido, size_t ip, size_t l1,
      - -
      1754 const T0 * POCKETFFT_RESTRICT wa, const T0 * POCKETFFT_RESTRICT csarr) const
      -
      1755 {
      -
      1756 const size_t cdim=ip;
      -
      1757 size_t ipph=(ip+1)/2;
      -
      1758 size_t idl1 = ido*l1;
      -
      1759
      -
      1760 auto CC = [cc,ido,cdim](size_t a, size_t b, size_t c) -> T&
      -
      1761 { return cc[a+ido*(b+cdim*c)]; };
      -
      1762 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> const T&
      -
      1763 { return ch[a+ido*(b+l1*c)]; };
      -
      1764 auto C1 = [cc,ido,l1] (size_t a, size_t b, size_t c) -> T&
      -
      1765 { return cc[a+ido*(b+l1*c)]; };
      -
      1766 auto C2 = [cc,idl1] (size_t a, size_t b) -> T&
      -
      1767 { return cc[a+idl1*b]; };
      -
      1768 auto CH2 = [ch,idl1] (size_t a, size_t b) -> T&
      -
      1769 { return ch[a+idl1*b]; };
      -
      1770
      -
      1771 if (ido>1)
      -
      1772 {
      -
      1773 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 114
      -
      1774 {
      -
      1775 size_t is=(j-1)*(ido-1),
      -
      1776 is2=(jc-1)*(ido-1);
      -
      1777 for (size_t k=0; k<l1; ++k) // 113
      -
      1778 {
      -
      1779 size_t idij=is;
      -
      1780 size_t idij2=is2;
      -
      1781 for (size_t i=1; i<=ido-2; i+=2) // 112
      -
      1782 {
      -
      1783 T t1=C1(i,k,j ), t2=C1(i+1,k,j ),
      -
      1784 t3=C1(i,k,jc), t4=C1(i+1,k,jc);
      -
      1785 T x1=wa[idij]*t1 + wa[idij+1]*t2,
      -
      1786 x2=wa[idij]*t2 - wa[idij+1]*t1,
      -
      1787 x3=wa[idij2]*t3 + wa[idij2+1]*t4,
      -
      1788 x4=wa[idij2]*t4 - wa[idij2+1]*t3;
      -
      1789 PM(C1(i,k,j),C1(i+1,k,jc),x3,x1);
      -
      1790 PM(C1(i+1,k,j),C1(i,k,jc),x2,x4);
      -
      1791 idij+=2;
      -
      1792 idij2+=2;
      -
      1793 }
      -
      1794 }
      -
      1795 }
      -
      1796 }
      -
      1797
      -
      1798 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 123
      -
      1799 for (size_t k=0; k<l1; ++k) // 122
      -
      1800 MPINPLACE(C1(0,k,jc), C1(0,k,j));
      -
      1801
      -
      1802//everything in C
      -
      1803//memset(ch,0,ip*l1*ido*sizeof(double));
      -
      1804
      -
      1805 for (size_t l=1,lc=ip-1; l<ipph; ++l,--lc) // 127
      -
      1806 {
      -
      1807 for (size_t ik=0; ik<idl1; ++ik) // 124
      -
      1808 {
      -
      1809 CH2(ik,l ) = C2(ik,0)+csarr[2*l]*C2(ik,1)+csarr[4*l]*C2(ik,2);
      -
      1810 CH2(ik,lc) = csarr[2*l+1]*C2(ik,ip-1)+csarr[4*l+1]*C2(ik,ip-2);
      -
      1811 }
      -
      1812 size_t iang = 2*l;
      -
      1813 size_t j=3, jc=ip-3;
      -
      1814 for (; j<ipph-3; j+=4,jc-=4) // 126
      -
      1815 {
      -
      1816 iang+=l; if (iang>=ip) iang-=ip;
      -
      1817 T0 ar1=csarr[2*iang], ai1=csarr[2*iang+1];
      -
      1818 iang+=l; if (iang>=ip) iang-=ip;
      -
      1819 T0 ar2=csarr[2*iang], ai2=csarr[2*iang+1];
      -
      1820 iang+=l; if (iang>=ip) iang-=ip;
      -
      1821 T0 ar3=csarr[2*iang], ai3=csarr[2*iang+1];
      -
      1822 iang+=l; if (iang>=ip) iang-=ip;
      -
      1823 T0 ar4=csarr[2*iang], ai4=csarr[2*iang+1];
      -
      1824 for (size_t ik=0; ik<idl1; ++ik) // 125
      -
      1825 {
      -
      1826 CH2(ik,l ) += ar1*C2(ik,j )+ar2*C2(ik,j +1)
      -
      1827 +ar3*C2(ik,j +2)+ar4*C2(ik,j +3);
      -
      1828 CH2(ik,lc) += ai1*C2(ik,jc)+ai2*C2(ik,jc-1)
      -
      1829 +ai3*C2(ik,jc-2)+ai4*C2(ik,jc-3);
      -
      1830 }
      -
      1831 }
      -
      1832 for (; j<ipph-1; j+=2,jc-=2) // 126
      -
      1833 {
      -
      1834 iang+=l; if (iang>=ip) iang-=ip;
      -
      1835 T0 ar1=csarr[2*iang], ai1=csarr[2*iang+1];
      -
      1836 iang+=l; if (iang>=ip) iang-=ip;
      -
      1837 T0 ar2=csarr[2*iang], ai2=csarr[2*iang+1];
      -
      1838 for (size_t ik=0; ik<idl1; ++ik) // 125
      -
      1839 {
      -
      1840 CH2(ik,l ) += ar1*C2(ik,j )+ar2*C2(ik,j +1);
      -
      1841 CH2(ik,lc) += ai1*C2(ik,jc)+ai2*C2(ik,jc-1);
      -
      1842 }
      -
      1843 }
      -
      1844 for (; j<ipph; ++j,--jc) // 126
      -
      1845 {
      -
      1846 iang+=l; if (iang>=ip) iang-=ip;
      -
      1847 T0 ar=csarr[2*iang], ai=csarr[2*iang+1];
      -
      1848 for (size_t ik=0; ik<idl1; ++ik) // 125
      -
      1849 {
      -
      1850 CH2(ik,l ) += ar*C2(ik,j );
      -
      1851 CH2(ik,lc) += ai*C2(ik,jc);
      -
      1852 }
      -
      1853 }
      -
      1854 }
      -
      1855 for (size_t ik=0; ik<idl1; ++ik) // 101
      -
      1856 CH2(ik,0) = C2(ik,0);
      -
      1857 for (size_t j=1; j<ipph; ++j) // 129
      -
      1858 for (size_t ik=0; ik<idl1; ++ik) // 128
      -
      1859 CH2(ik,0) += C2(ik,j);
      -
      1860
      -
      1861// everything in CH at this point!
      -
      1862//memset(cc,0,ip*l1*ido*sizeof(double));
      -
      1863
      -
      1864 for (size_t k=0; k<l1; ++k) // 131
      -
      1865 for (size_t i=0; i<ido; ++i) // 130
      -
      1866 CC(i,0,k) = CH(i,k,0);
      -
      1867
      -
      1868 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 137
      -
      1869 {
      -
      1870 size_t j2=2*j-1;
      -
      1871 for (size_t k=0; k<l1; ++k) // 136
      -
      1872 {
      -
      1873 CC(ido-1,j2,k) = CH(0,k,j);
      -
      1874 CC(0,j2+1,k) = CH(0,k,jc);
      -
      1875 }
      -
      1876 }
      -
      1877
      -
      1878 if (ido==1) return;
      -
      1879
      -
      1880 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 140
      -
      1881 {
      -
      1882 size_t j2=2*j-1;
      -
      1883 for(size_t k=0; k<l1; ++k) // 139
      -
      1884 for(size_t i=1, ic=ido-i-2; i<=ido-2; i+=2, ic-=2) // 138
      -
      1885 {
      -
      1886 CC(i ,j2+1,k) = CH(i ,k,j )+CH(i ,k,jc);
      -
      1887 CC(ic ,j2 ,k) = CH(i ,k,j )-CH(i ,k,jc);
      -
      1888 CC(i+1 ,j2+1,k) = CH(i+1,k,j )+CH(i+1,k,jc);
      -
      1889 CC(ic+1,j2 ,k) = CH(i+1,k,jc)-CH(i+1,k,j );
      -
      1890 }
      -
      1891 }
      -
      1892 }
      -
      1893
      -
      1894template<typename T> void radb2(size_t ido, size_t l1,
      -
      1895 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1896 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1897 {
      -
      1898 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1899 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1900 { return cc[a+ido*(b+2*c)]; };
      -
      1901 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1902 { return ch[a+ido*(b+l1*c)]; };
      -
      1903
      -
      1904 for (size_t k=0; k<l1; k++)
      -
      1905 PM (CH(0,k,0),CH(0,k,1),CC(0,0,k),CC(ido-1,1,k));
      -
      1906 if ((ido&1)==0)
      -
      1907 for (size_t k=0; k<l1; k++)
      -
      1908 {
      -
      1909 CH(ido-1,k,0) = 2*CC(ido-1,0,k);
      -
      1910 CH(ido-1,k,1) =-2*CC(0 ,1,k);
      -
      1911 }
      -
      1912 if (ido<=2) return;
      -
      1913 for (size_t k=0; k<l1;++k)
      -
      1914 for (size_t i=2; i<ido; i+=2)
      -
      1915 {
      -
      1916 size_t ic=ido-i;
      -
      1917 T ti2, tr2;
      -
      1918 PM (CH(i-1,k,0),tr2,CC(i-1,0,k),CC(ic-1,1,k));
      -
      1919 PM (ti2,CH(i ,k,0),CC(i ,0,k),CC(ic ,1,k));
      -
      1920 MULPM (CH(i,k,1),CH(i-1,k,1),WA(0,i-2),WA(0,i-1),ti2,tr2);
      -
      1921 }
      -
      1922 }
      -
      1923
      -
      1924template<typename T> void radb3(size_t ido, size_t l1,
      -
      1925 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1926 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1927 {
      -
      1928 constexpr T0 taur=-0.5, taui=T0(0.8660254037844386467637231707529362L);
      -
      1929
      -
      1930 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1931 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1932 { return cc[a+ido*(b+3*c)]; };
      -
      1933 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1934 { return ch[a+ido*(b+l1*c)]; };
      -
      1935
      -
      1936 for (size_t k=0; k<l1; k++)
      -
      1937 {
      -
      1938 T tr2=2*CC(ido-1,1,k);
      -
      1939 T cr2=CC(0,0,k)+taur*tr2;
      -
      1940 CH(0,k,0)=CC(0,0,k)+tr2;
      -
      1941 T ci3=2*taui*CC(0,2,k);
      -
      1942 PM (CH(0,k,2),CH(0,k,1),cr2,ci3);
      -
      1943 }
      -
      1944 if (ido==1) return;
      -
      1945 for (size_t k=0; k<l1; k++)
      -
      1946 for (size_t i=2, ic=ido-2; i<ido; i+=2, ic-=2)
      -
      1947 {
      -
      1948 T tr2=CC(i-1,2,k)+CC(ic-1,1,k); // t2=CC(I) + conj(CC(ic))
      -
      1949 T ti2=CC(i ,2,k)-CC(ic ,1,k);
      -
      1950 T cr2=CC(i-1,0,k)+taur*tr2; // c2=CC +taur*t2
      -
      1951 T ci2=CC(i ,0,k)+taur*ti2;
      -
      1952 CH(i-1,k,0)=CC(i-1,0,k)+tr2; // CH=CC+t2
      -
      1953 CH(i ,k,0)=CC(i ,0,k)+ti2;
      -
      1954 T cr3=taui*(CC(i-1,2,k)-CC(ic-1,1,k));// c3=taui*(CC(i)-conj(CC(ic)))
      -
      1955 T ci3=taui*(CC(i ,2,k)+CC(ic ,1,k));
      -
      1956 T di2, di3, dr2, dr3;
      -
      1957 PM(dr3,dr2,cr2,ci3); // d2= (cr2-ci3, ci2+cr3) = c2+i*c3
      -
      1958 PM(di2,di3,ci2,cr3); // d3= (cr2+ci3, ci2-cr3) = c2-i*c3
      -
      1959 MULPM(CH(i,k,1),CH(i-1,k,1),WA(0,i-2),WA(0,i-1),di2,dr2); // ch = WA*d2
      -
      1960 MULPM(CH(i,k,2),CH(i-1,k,2),WA(1,i-2),WA(1,i-1),di3,dr3);
      -
      1961 }
      -
      1962 }
      -
      1963
      -
      1964template<typename T> void radb4(size_t ido, size_t l1,
      -
      1965 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      1966 const T0 * POCKETFFT_RESTRICT wa) const
      -
      1967 {
      -
      1968 constexpr T0 sqrt2=T0(1.414213562373095048801688724209698L);
      -
      1969
      -
      1970 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      1971 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      1972 { return cc[a+ido*(b+4*c)]; };
      -
      1973 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      1974 { return ch[a+ido*(b+l1*c)]; };
      -
      1975
      -
      1976 for (size_t k=0; k<l1; k++)
      -
      1977 {
      -
      1978 T tr1, tr2;
      -
      1979 PM (tr2,tr1,CC(0,0,k),CC(ido-1,3,k));
      -
      1980 T tr3=2*CC(ido-1,1,k);
      -
      1981 T tr4=2*CC(0,2,k);
      -
      1982 PM (CH(0,k,0),CH(0,k,2),tr2,tr3);
      -
      1983 PM (CH(0,k,3),CH(0,k,1),tr1,tr4);
      -
      1984 }
      -
      1985 if ((ido&1)==0)
      -
      1986 for (size_t k=0; k<l1; k++)
      -
      1987 {
      -
      1988 T tr1,tr2,ti1,ti2;
      -
      1989 PM (ti1,ti2,CC(0 ,3,k),CC(0 ,1,k));
      -
      1990 PM (tr2,tr1,CC(ido-1,0,k),CC(ido-1,2,k));
      -
      1991 CH(ido-1,k,0)=tr2+tr2;
      -
      1992 CH(ido-1,k,1)=sqrt2*(tr1-ti1);
      -
      1993 CH(ido-1,k,2)=ti2+ti2;
      -
      1994 CH(ido-1,k,3)=-sqrt2*(tr1+ti1);
      -
      1995 }
      -
      1996 if (ido<=2) return;
      -
      1997 for (size_t k=0; k<l1;++k)
      -
      1998 for (size_t i=2; i<ido; i+=2)
      -
      1999 {
      -
      2000 T ci2, ci3, ci4, cr2, cr3, cr4, ti1, ti2, ti3, ti4, tr1, tr2, tr3, tr4;
      -
      2001 size_t ic=ido-i;
      -
      2002 PM (tr2,tr1,CC(i-1,0,k),CC(ic-1,3,k));
      -
      2003 PM (ti1,ti2,CC(i ,0,k),CC(ic ,3,k));
      -
      2004 PM (tr4,ti3,CC(i ,2,k),CC(ic ,1,k));
      -
      2005 PM (tr3,ti4,CC(i-1,2,k),CC(ic-1,1,k));
      -
      2006 PM (CH(i-1,k,0),cr3,tr2,tr3);
      -
      2007 PM (CH(i ,k,0),ci3,ti2,ti3);
      -
      2008 PM (cr4,cr2,tr1,tr4);
      -
      2009 PM (ci2,ci4,ti1,ti4);
      -
      2010 MULPM (CH(i,k,1),CH(i-1,k,1),WA(0,i-2),WA(0,i-1),ci2,cr2);
      -
      2011 MULPM (CH(i,k,2),CH(i-1,k,2),WA(1,i-2),WA(1,i-1),ci3,cr3);
      -
      2012 MULPM (CH(i,k,3),CH(i-1,k,3),WA(2,i-2),WA(2,i-1),ci4,cr4);
      -
      2013 }
      -
      2014 }
      -
      2015
      -
      2016template<typename T> void radb5(size_t ido, size_t l1,
      -
      2017 const T * POCKETFFT_RESTRICT cc, T * POCKETFFT_RESTRICT ch,
      -
      2018 const T0 * POCKETFFT_RESTRICT wa) const
      -
      2019 {
      -
      2020 constexpr T0 tr11= T0(0.3090169943749474241022934171828191L),
      -
      2021 ti11= T0(0.9510565162951535721164393333793821L),
      -
      2022 tr12= T0(-0.8090169943749474241022934171828191L),
      -
      2023 ti12= T0(0.5877852522924731291687059546390728L);
      -
      2024
      -
      2025 auto WA = [wa,ido](size_t x, size_t i) { return wa[i+x*(ido-1)]; };
      -
      2026 auto CC = [cc,ido](size_t a, size_t b, size_t c) -> const T&
      -
      2027 { return cc[a+ido*(b+5*c)]; };
      -
      2028 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      2029 { return ch[a+ido*(b+l1*c)]; };
      -
      2030
      -
      2031 for (size_t k=0; k<l1; k++)
      -
      2032 {
      -
      2033 T ti5=CC(0,2,k)+CC(0,2,k);
      -
      2034 T ti4=CC(0,4,k)+CC(0,4,k);
      -
      2035 T tr2=CC(ido-1,1,k)+CC(ido-1,1,k);
      -
      2036 T tr3=CC(ido-1,3,k)+CC(ido-1,3,k);
      -
      2037 CH(0,k,0)=CC(0,0,k)+tr2+tr3;
      -
      2038 T cr2=CC(0,0,k)+tr11*tr2+tr12*tr3;
      -
      2039 T cr3=CC(0,0,k)+tr12*tr2+tr11*tr3;
      -
      2040 T ci4, ci5;
      -
      2041 MULPM(ci5,ci4,ti5,ti4,ti11,ti12);
      -
      2042 PM(CH(0,k,4),CH(0,k,1),cr2,ci5);
      -
      2043 PM(CH(0,k,3),CH(0,k,2),cr3,ci4);
      -
      2044 }
      -
      2045 if (ido==1) return;
      -
      2046 for (size_t k=0; k<l1;++k)
      -
      2047 for (size_t i=2, ic=ido-2; i<ido; i+=2, ic-=2)
      -
      2048 {
      -
      2049 T tr2, tr3, tr4, tr5, ti2, ti3, ti4, ti5;
      -
      2050 PM(tr2,tr5,CC(i-1,2,k),CC(ic-1,1,k));
      -
      2051 PM(ti5,ti2,CC(i ,2,k),CC(ic ,1,k));
      -
      2052 PM(tr3,tr4,CC(i-1,4,k),CC(ic-1,3,k));
      -
      2053 PM(ti4,ti3,CC(i ,4,k),CC(ic ,3,k));
      -
      2054 CH(i-1,k,0)=CC(i-1,0,k)+tr2+tr3;
      -
      2055 CH(i ,k,0)=CC(i ,0,k)+ti2+ti3;
      -
      2056 T cr2=CC(i-1,0,k)+tr11*tr2+tr12*tr3;
      -
      2057 T ci2=CC(i ,0,k)+tr11*ti2+tr12*ti3;
      -
      2058 T cr3=CC(i-1,0,k)+tr12*tr2+tr11*tr3;
      -
      2059 T ci3=CC(i ,0,k)+tr12*ti2+tr11*ti3;
      -
      2060 T ci4, ci5, cr5, cr4;
      -
      2061 MULPM(cr5,cr4,tr5,tr4,ti11,ti12);
      -
      2062 MULPM(ci5,ci4,ti5,ti4,ti11,ti12);
      -
      2063 T dr2, dr3, dr4, dr5, di2, di3, di4, di5;
      -
      2064 PM(dr4,dr3,cr3,ci4);
      -
      2065 PM(di3,di4,ci3,cr4);
      -
      2066 PM(dr5,dr2,cr2,ci5);
      -
      2067 PM(di2,di5,ci2,cr5);
      -
      2068 MULPM(CH(i,k,1),CH(i-1,k,1),WA(0,i-2),WA(0,i-1),di2,dr2);
      -
      2069 MULPM(CH(i,k,2),CH(i-1,k,2),WA(1,i-2),WA(1,i-1),di3,dr3);
      -
      2070 MULPM(CH(i,k,3),CH(i-1,k,3),WA(2,i-2),WA(2,i-1),di4,dr4);
      -
      2071 MULPM(CH(i,k,4),CH(i-1,k,4),WA(3,i-2),WA(3,i-1),di5,dr5);
      -
      2072 }
      -
      2073 }
      -
      2074
      -
      2075template<typename T> void radbg(size_t ido, size_t ip, size_t l1,
      - -
      2077 const T0 * POCKETFFT_RESTRICT wa, const T0 * POCKETFFT_RESTRICT csarr) const
      -
      2078 {
      -
      2079 const size_t cdim=ip;
      -
      2080 size_t ipph=(ip+1)/ 2;
      -
      2081 size_t idl1 = ido*l1;
      -
      2082
      -
      2083 auto CC = [cc,ido,cdim](size_t a, size_t b, size_t c) -> const T&
      -
      2084 { return cc[a+ido*(b+cdim*c)]; };
      -
      2085 auto CH = [ch,ido,l1](size_t a, size_t b, size_t c) -> T&
      -
      2086 { return ch[a+ido*(b+l1*c)]; };
      -
      2087 auto C1 = [cc,ido,l1](size_t a, size_t b, size_t c) -> const T&
      -
      2088 { return cc[a+ido*(b+l1*c)]; };
      -
      2089 auto C2 = [cc,idl1](size_t a, size_t b) -> T&
      -
      2090 { return cc[a+idl1*b]; };
      -
      2091 auto CH2 = [ch,idl1](size_t a, size_t b) -> T&
      -
      2092 { return ch[a+idl1*b]; };
      -
      2093
      -
      2094 for (size_t k=0; k<l1; ++k) // 102
      -
      2095 for (size_t i=0; i<ido; ++i) // 101
      -
      2096 CH(i,k,0) = CC(i,0,k);
      -
      2097 for (size_t j=1, jc=ip-1; j<ipph; ++j, --jc) // 108
      -
      2098 {
      -
      2099 size_t j2=2*j-1;
      -
      2100 for (size_t k=0; k<l1; ++k)
      -
      2101 {
      -
      2102 CH(0,k,j ) = 2*CC(ido-1,j2,k);
      -
      2103 CH(0,k,jc) = 2*CC(0,j2+1,k);
      -
      2104 }
      -
      2105 }
      -
      2106
      -
      2107 if (ido!=1)
      -
      2108 {
      -
      2109 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 111
      -
      2110 {
      -
      2111 size_t j2=2*j-1;
      -
      2112 for (size_t k=0; k<l1; ++k)
      -
      2113 for (size_t i=1, ic=ido-i-2; i<=ido-2; i+=2, ic-=2) // 109
      -
      2114 {
      -
      2115 CH(i ,k,j ) = CC(i ,j2+1,k)+CC(ic ,j2,k);
      -
      2116 CH(i ,k,jc) = CC(i ,j2+1,k)-CC(ic ,j2,k);
      -
      2117 CH(i+1,k,j ) = CC(i+1,j2+1,k)-CC(ic+1,j2,k);
      -
      2118 CH(i+1,k,jc) = CC(i+1,j2+1,k)+CC(ic+1,j2,k);
      -
      2119 }
      -
      2120 }
      -
      2121 }
      -
      2122 for (size_t l=1,lc=ip-1; l<ipph; ++l,--lc)
      -
      2123 {
      -
      2124 for (size_t ik=0; ik<idl1; ++ik)
      -
      2125 {
      -
      2126 C2(ik,l ) = CH2(ik,0)+csarr[2*l]*CH2(ik,1)+csarr[4*l]*CH2(ik,2);
      -
      2127 C2(ik,lc) = csarr[2*l+1]*CH2(ik,ip-1)+csarr[4*l+1]*CH2(ik,ip-2);
      -
      2128 }
      -
      2129 size_t iang=2*l;
      -
      2130 size_t j=3,jc=ip-3;
      -
      2131 for(; j<ipph-3; j+=4,jc-=4)
      -
      2132 {
      -
      2133 iang+=l; if(iang>ip) iang-=ip;
      -
      2134 T0 ar1=csarr[2*iang], ai1=csarr[2*iang+1];
      -
      2135 iang+=l; if(iang>ip) iang-=ip;
      -
      2136 T0 ar2=csarr[2*iang], ai2=csarr[2*iang+1];
      -
      2137 iang+=l; if(iang>ip) iang-=ip;
      -
      2138 T0 ar3=csarr[2*iang], ai3=csarr[2*iang+1];
      -
      2139 iang+=l; if(iang>ip) iang-=ip;
      -
      2140 T0 ar4=csarr[2*iang], ai4=csarr[2*iang+1];
      -
      2141 for (size_t ik=0; ik<idl1; ++ik)
      -
      2142 {
      -
      2143 C2(ik,l ) += ar1*CH2(ik,j )+ar2*CH2(ik,j +1)
      -
      2144 +ar3*CH2(ik,j +2)+ar4*CH2(ik,j +3);
      -
      2145 C2(ik,lc) += ai1*CH2(ik,jc)+ai2*CH2(ik,jc-1)
      -
      2146 +ai3*CH2(ik,jc-2)+ai4*CH2(ik,jc-3);
      -
      2147 }
      -
      2148 }
      -
      2149 for(; j<ipph-1; j+=2,jc-=2)
      -
      2150 {
      -
      2151 iang+=l; if(iang>ip) iang-=ip;
      -
      2152 T0 ar1=csarr[2*iang], ai1=csarr[2*iang+1];
      -
      2153 iang+=l; if(iang>ip) iang-=ip;
      -
      2154 T0 ar2=csarr[2*iang], ai2=csarr[2*iang+1];
      -
      2155 for (size_t ik=0; ik<idl1; ++ik)
      -
      2156 {
      -
      2157 C2(ik,l ) += ar1*CH2(ik,j )+ar2*CH2(ik,j +1);
      -
      2158 C2(ik,lc) += ai1*CH2(ik,jc)+ai2*CH2(ik,jc-1);
      -
      2159 }
      -
      2160 }
      -
      2161 for(; j<ipph; ++j,--jc)
      -
      2162 {
      -
      2163 iang+=l; if(iang>ip) iang-=ip;
      -
      2164 T0 war=csarr[2*iang], wai=csarr[2*iang+1];
      -
      2165 for (size_t ik=0; ik<idl1; ++ik)
      -
      2166 {
      -
      2167 C2(ik,l ) += war*CH2(ik,j );
      -
      2168 C2(ik,lc) += wai*CH2(ik,jc);
      -
      2169 }
      -
      2170 }
      -
      2171 }
      -
      2172 for (size_t j=1; j<ipph; ++j)
      -
      2173 for (size_t ik=0; ik<idl1; ++ik)
      -
      2174 CH2(ik,0) += CH2(ik,j);
      -
      2175 for (size_t j=1, jc=ip-1; j<ipph; ++j,--jc) // 124
      -
      2176 for (size_t k=0; k<l1; ++k)
      -
      2177 PM(CH(0,k,jc),CH(0,k,j),C1(0,k,j),C1(0,k,jc));
      -
      2178
      -
      2179 if (ido==1) return;
      -
      2180
      -
      2181 for (size_t j=1, jc=ip-1; j<ipph; ++j, --jc) // 127
      -
      2182 for (size_t k=0; k<l1; ++k)
      -
      2183 for (size_t i=1; i<=ido-2; i+=2)
      -
      2184 {
      -
      2185 CH(i ,k,j ) = C1(i ,k,j)-C1(i+1,k,jc);
      -
      2186 CH(i ,k,jc) = C1(i ,k,j)+C1(i+1,k,jc);
      -
      2187 CH(i+1,k,j ) = C1(i+1,k,j)+C1(i ,k,jc);
      -
      2188 CH(i+1,k,jc) = C1(i+1,k,j)-C1(i ,k,jc);
      -
      2189 }
      -
      2190
      -
      2191// All in CH
      -
      2192
      -
      2193 for (size_t j=1; j<ip; ++j)
      -
      2194 {
      -
      2195 size_t is = (j-1)*(ido-1);
      -
      2196 for (size_t k=0; k<l1; ++k)
      -
      2197 {
      -
      2198 size_t idij = is;
      -
      2199 for (size_t i=1; i<=ido-2; i+=2)
      -
      2200 {
      -
      2201 T t1=CH(i,k,j), t2=CH(i+1,k,j);
      -
      2202 CH(i ,k,j) = wa[idij]*t1-wa[idij+1]*t2;
      -
      2203 CH(i+1,k,j) = wa[idij]*t2+wa[idij+1]*t1;
      -
      2204 idij+=2;
      -
      2205 }
      -
      2206 }
      -
      2207 }
      -
      2208 }
      -
      2209
      -
      2210 template<typename T> void copy_and_norm(T *c, T *p1, T0 fct) const
      -
      2211 {
      -
      2212 if (p1!=c)
      -
      2213 {
      -
      2214 if (fct!=1.)
      -
      2215 for (size_t i=0; i<length; ++i)
      -
      2216 c[i] = fct*p1[i];
      -
      2217 else
      -
      2218 std::copy_n (p1, length, c);
      -
      2219 }
      -
      2220 else
      -
      2221 if (fct!=1.)
      -
      2222 for (size_t i=0; i<length; ++i)
      -
      2223 c[i] *= fct;
      -
      2224 }
      -
      2225
      -
      2226 public:
      -
      -
      2227 template<typename T> void exec(T c[], T0 fct, bool r2hc) const
      -
      2228 {
      -
      2229 if (length==1) { c[0]*=fct; return; }
      -
      2230 size_t nf=fact.size();
      -
      2231 arr<T> ch(length);
      -
      2232 T *p1=c, *p2=ch.data();
      -
      2233
      -
      2234 if (r2hc)
      -
      2235 for(size_t k1=0, l1=length; k1<nf;++k1)
      -
      2236 {
      -
      2237 size_t k=nf-k1-1;
      -
      2238 size_t ip=fact[k].fct;
      -
      2239 size_t ido=length / l1;
      -
      2240 l1 /= ip;
      -
      2241 if(ip==4)
      -
      2242 radf4(ido, l1, p1, p2, fact[k].tw);
      -
      2243 else if(ip==2)
      -
      2244 radf2(ido, l1, p1, p2, fact[k].tw);
      -
      2245 else if(ip==3)
      -
      2246 radf3(ido, l1, p1, p2, fact[k].tw);
      -
      2247 else if(ip==5)
      -
      2248 radf5(ido, l1, p1, p2, fact[k].tw);
      -
      2249 else
      -
      2250 { radfg(ido, ip, l1, p1, p2, fact[k].tw, fact[k].tws); std::swap (p1,p2); }
      -
      2251 std::swap (p1,p2);
      -
      2252 }
      -
      2253 else
      -
      2254 for(size_t k=0, l1=1; k<nf; k++)
      -
      2255 {
      -
      2256 size_t ip = fact[k].fct,
      -
      2257 ido= length/(ip*l1);
      -
      2258 if(ip==4)
      -
      2259 radb4(ido, l1, p1, p2, fact[k].tw);
      -
      2260 else if(ip==2)
      -
      2261 radb2(ido, l1, p1, p2, fact[k].tw);
      -
      2262 else if(ip==3)
      -
      2263 radb3(ido, l1, p1, p2, fact[k].tw);
      -
      2264 else if(ip==5)
      -
      2265 radb5(ido, l1, p1, p2, fact[k].tw);
      -
      2266 else
      -
      2267 radbg(ido, ip, l1, p1, p2, fact[k].tw, fact[k].tws);
      -
      2268 std::swap (p1,p2);
      -
      2269 l1*=ip;
      -
      2270 }
      -
      2271
      -
      2272 copy_and_norm(c,p1,fct);
      -
      2273 }
      -
      -
      2274
      -
      2275 private:
      -
      2276 void factorize()
      -
      2277 {
      -
      2278 size_t len=length;
      -
      2279 while ((len%4)==0)
      -
      2280 { add_factor(4); len>>=2; }
      -
      2281 if ((len%2)==0)
      -
      2282 {
      -
      2283 len>>=1;
      -
      2284 // factor 2 should be at the front of the factor list
      -
      2285 add_factor(2);
      -
      2286 std::swap(fact[0].fct, fact.back().fct);
      -
      2287 }
      -
      2288 for (size_t divisor=3; divisor*divisor<=len; divisor+=2)
      -
      2289 while ((len%divisor)==0)
      -
      2290 {
      -
      2291 add_factor(divisor);
      -
      2292 len/=divisor;
      -
      2293 }
      -
      2294 if (len>1) add_factor(len);
      -
      2295 }
      -
      2296
      -
      2297 size_t twsize() const
      -
      2298 {
      -
      2299 size_t twsz=0, l1=1;
      -
      2300 for (size_t k=0; k<fact.size(); ++k)
      -
      2301 {
      -
      2302 size_t ip=fact[k].fct, ido=length/(l1*ip);
      -
      2303 twsz+=(ip-1)*(ido-1);
      -
      2304 if (ip>5) twsz+=2*ip;
      -
      2305 l1*=ip;
      -
      2306 }
      -
      2307 return twsz;
      -
      2308 }
      -
      2309
      -
      2310 void comp_twiddle()
      -
      2311 {
      -
      2312 sincos_2pibyn<T0> twid(length);
      -
      2313 size_t l1=1;
      -
      2314 T0 *ptr=mem.data();
      -
      2315 for (size_t k=0; k<fact.size(); ++k)
      -
      2316 {
      -
      2317 size_t ip=fact[k].fct, ido=length/(l1*ip);
      -
      2318 if (k<fact.size()-1) // last factor doesn't need twiddles
      -
      2319 {
      -
      2320 fact[k].tw=ptr; ptr+=(ip-1)*(ido-1);
      -
      2321 for (size_t j=1; j<ip; ++j)
      -
      2322 for (size_t i=1; i<=(ido-1)/2; ++i)
      -
      2323 {
      -
      2324 fact[k].tw[(j-1)*(ido-1)+2*i-2] = twid[j*l1*i].r;
      -
      2325 fact[k].tw[(j-1)*(ido-1)+2*i-1] = twid[j*l1*i].i;
      -
      2326 }
      -
      2327 }
      -
      2328 if (ip>5) // special factors required by *g functions
      -
      2329 {
      -
      2330 fact[k].tws=ptr; ptr+=2*ip;
      -
      2331 fact[k].tws[0] = 1.;
      -
      2332 fact[k].tws[1] = 0.;
      -
      2333 for (size_t i=2, ic=2*ip-2; i<=ic; i+=2, ic-=2)
      -
      2334 {
      -
      2335 fact[k].tws[i ] = twid[i/2*(length/ip)].r;
      -
      2336 fact[k].tws[i+1] = twid[i/2*(length/ip)].i;
      -
      2337 fact[k].tws[ic] = twid[i/2*(length/ip)].r;
      -
      2338 fact[k].tws[ic+1] = -twid[i/2*(length/ip)].i;
      -
      2339 }
      -
      2340 }
      -
      2341 l1*=ip;
      -
      2342 }
      -
      2343 }
      -
      2344
      -
      2345 public:
      -
      - -
      2347 : length(length_)
      -
      2348 {
      -
      2349 if (length==0) throw std::runtime_error("zero-length FFT requested");
      -
      2350 if (length==1) return;
      -
      2351 factorize();
      -
      2352 mem.resize(twsize());
      -
      2353 comp_twiddle();
      -
      2354 }
      -
      -
      2355};
      -
      -
      2356
      -
      2357//
      -
      2358// complex Bluestein transforms
      -
      2359//
      -
      2360
      -
      -
      2361template<typename T0> class fftblue
      -
      2362 {
      -
      2363 private:
      -
      2364 size_t n, n2;
      -
      2365 cfftp<T0> plan;
      -
      2366 arr<cmplx<T0>> mem;
      -
      2367 cmplx<T0> *bk, *bkf;
      -
      2368
      -
      2369 template<bool fwd, typename T> void fft(cmplx<T> c[], T0 fct) const
      -
      2370 {
      -
      2371 arr<cmplx<T>> akf(n2);
      -
      2372
      -
      2373 /* initialize a_k and FFT it */
      -
      2374 for (size_t m=0; m<n; ++m)
      -
      2375 special_mul<fwd>(c[m],bk[m],akf[m]);
      -
      2376 auto zero = akf[0]*T0(0);
      -
      2377 for (size_t m=n; m<n2; ++m)
      -
      2378 akf[m]=zero;
      -
      2379
      -
      2380 plan.exec (akf.data(),1.,true);
      -
      2381
      -
      2382 /* do the convolution */
      -
      2383 akf[0] = akf[0].template special_mul<!fwd>(bkf[0]);
      -
      2384 for (size_t m=1; m<(n2+1)/2; ++m)
      -
      2385 {
      -
      2386 akf[m] = akf[m].template special_mul<!fwd>(bkf[m]);
      -
      2387 akf[n2-m] = akf[n2-m].template special_mul<!fwd>(bkf[m]);
      -
      2388 }
      -
      2389 if ((n2&1)==0)
      -
      2390 akf[n2/2] = akf[n2/2].template special_mul<!fwd>(bkf[n2/2]);
      -
      2391
      -
      2392 /* inverse FFT */
      -
      2393 plan.exec (akf.data(),1.,false);
      -
      2394
      -
      2395 /* multiply by b_k */
      -
      2396 for (size_t m=0; m<n; ++m)
      -
      2397 c[m] = akf[m].template special_mul<fwd>(bk[m])*fct;
      -
      2398 }
      -
      2399
      -
      2400 public:
      -
      - -
      2402 : n(length), n2(util::good_size_cmplx(n*2-1)), plan(n2), mem(n+n2/2+1),
      -
      2403 bk(mem.data()), bkf(mem.data()+n)
      -
      2404 {
      -
      2405 /* initialize b_k */
      - -
      2407 bk[0].Set(1, 0);
      -
      2408
      -
      2409 size_t coeff=0;
      -
      2410 for (size_t m=1; m<n; ++m)
      -
      2411 {
      -
      2412 coeff+=2*m-1;
      -
      2413 if (coeff>=2*n) coeff-=2*n;
      -
      2414 bk[m] = tmp[coeff];
      -
      2415 }
      -
      2416
      -
      2417 /* initialize the zero-padded, Fourier transformed b_k. Add normalisation. */
      -
      2418 arr<cmplx<T0>> tbkf(n2);
      -
      2419 T0 xn2 = T0(1)/T0(n2);
      -
      2420 tbkf[0] = bk[0]*xn2;
      -
      2421 for (size_t m=1; m<n; ++m)
      -
      2422 tbkf[m] = tbkf[n2-m] = bk[m]*xn2;
      -
      2423 for (size_t m=n;m<=(n2-n);++m)
      -
      2424 tbkf[m].Set(0.,0.);
      -
      2425 plan.exec(tbkf.data(),1.,true);
      -
      2426 for (size_t i=0; i<n2/2+1; ++i)
      -
      2427 bkf[i] = tbkf[i];
      -
      2428 }
      -
      -
      2429
      -
      -
      2430 template<typename T> void exec(cmplx<T> c[], T0 fct, bool fwd) const
      -
      2431 { fwd ? fft<true>(c,fct) : fft<false>(c,fct); }
      -
      -
      2432
      -
      -
      2433 template<typename T> void exec_r(T c[], T0 fct, bool fwd)
      -
      2434 {
      -
      2435 arr<cmplx<T>> tmp(n);
      -
      2436 if (fwd)
      -
      2437 {
      -
      2438 auto zero = T0(0)*c[0];
      -
      2439 for (size_t m=0; m<n; ++m)
      -
      2440 tmp[m].Set(c[m], zero);
      -
      2441 fft<true>(tmp.data(),fct);
      -
      2442 c[0] = tmp[0].r;
      -
      2443 std::copy_n (&tmp[1].r, n-1, &c[1]);
      -
      2444 }
      -
      2445 else
      -
      2446 {
      -
      2447 tmp[0].Set(c[0],c[0]*0);
      -
      2448 std::copy_n (c+1, n-1, &tmp[1].r);
      -
      2449 if ((n&1)==0) tmp[n/2].i=T0(0)*c[0];
      -
      2450 for (size_t m=1; 2*m<n; ++m)
      -
      2451 tmp[n-m].Set(tmp[m].r, -tmp[m].i);
      -
      2452 fft<false>(tmp.data(),fct);
      -
      2453 for (size_t m=0; m<n; ++m)
      -
      2454 c[m] = tmp[m].r;
      -
      2455 }
      -
      2456 }
      -
      -
      2457 };
      -
      -
      2458
      -
      2459//
      -
      2460// flexible (FFTPACK/Bluestein) complex 1D transform
      -
      2461//
      -
      2462
      -
      -
      2463template<typename T0> class pocketfft_c
      -
      2464 {
      -
      2465 private:
      -
      2466 std::unique_ptr<cfftp<T0>> packplan;
      -
      2467 std::unique_ptr<fftblue<T0>> blueplan;
      -
      2468 size_t len;
      -
      2469
      -
      2470 public:
      -
      - -
      2472 : len(length)
      -
      2473 {
      -
      2474 if (length==0) throw std::runtime_error("zero-length FFT requested");
      -
      2475 size_t tmp = (length<50) ? 0 : util::largest_prime_factor(length);
      -
      2476 if (tmp*tmp <= length)
      -
      2477 {
      -
      2478 packplan=std::unique_ptr<cfftp<T0>>(new cfftp<T0>(length));
      -
      2479 return;
      -
      2480 }
      -
      2481 double comp1 = util::cost_guess(length);
      -
      2482 double comp2 = 2*util::cost_guess(util::good_size_cmplx(2*length-1));
      -
      2483 comp2*=1.5; /* fudge factor that appears to give good overall performance */
      -
      2484 if (comp2<comp1) // use Bluestein
      -
      2485 blueplan=std::unique_ptr<fftblue<T0>>(new fftblue<T0>(length));
      -
      2486 else
      -
      2487 packplan=std::unique_ptr<cfftp<T0>>(new cfftp<T0>(length));
      -
      2488 }
      -
      -
      2489
      -
      -
      2490 template<typename T> POCKETFFT_NOINLINE void exec(cmplx<T> c[], T0 fct, bool fwd) const
      -
      2491 { packplan ? packplan->exec(c,fct,fwd) : blueplan->exec(c,fct,fwd); }
      -
      -
      2492
      -
      2493 size_t length() const { return len; }
      -
      2494 };
      -
      -
      2495
      -
      2496//
      -
      2497// flexible (FFTPACK/Bluestein) real-valued 1D transform
      -
      2498//
      -
      2499
      -
      -
      2500template<typename T0> class pocketfft_r
      -
      2501 {
      -
      2502 private:
      -
      2503 std::unique_ptr<rfftp<T0>> packplan;
      -
      2504 std::unique_ptr<fftblue<T0>> blueplan;
      -
      2505 size_t len;
      -
      2506
      -
      2507 public:
      -
      - -
      2509 : len(length)
      -
      2510 {
      -
      2511 if (length==0) throw std::runtime_error("zero-length FFT requested");
      -
      2512 size_t tmp = (length<50) ? 0 : util::largest_prime_factor(length);
      -
      2513 if (tmp*tmp <= length)
      -
      2514 {
      -
      2515 packplan=std::unique_ptr<rfftp<T0>>(new rfftp<T0>(length));
      -
      2516 return;
      -
      2517 }
      -
      2518 double comp1 = 0.5*util::cost_guess(length);
      -
      2519 double comp2 = 2*util::cost_guess(util::good_size_cmplx(2*length-1));
      -
      2520 comp2*=1.5; /* fudge factor that appears to give good overall performance */
      -
      2521 if (comp2<comp1) // use Bluestein
      -
      2522 blueplan=std::unique_ptr<fftblue<T0>>(new fftblue<T0>(length));
      -
      2523 else
      -
      2524 packplan=std::unique_ptr<rfftp<T0>>(new rfftp<T0>(length));
      -
      2525 }
      -
      -
      2526
      -
      -
      2527 template<typename T> POCKETFFT_NOINLINE void exec(T c[], T0 fct, bool fwd) const
      -
      2528 { packplan ? packplan->exec(c,fct,fwd) : blueplan->exec_r(c,fct,fwd); }
      -
      -
      2529
      -
      2530 size_t length() const { return len; }
      -
      2531 };
      -
      -
      2532
      -
      2533
      -
      2534//
      -
      2535// sine/cosine transforms
      -
      2536//
      -
      2537
      -
      -
      2538template<typename T0> class T_dct1
      -
      2539 {
      -
      2540 private:
      -
      2541 pocketfft_r<T0> fftplan;
      -
      2542
      -
      2543 public:
      -
      - -
      2545 : fftplan(2*(length-1)) {}
      -
      -
      2546
      -
      -
      2547 template<typename T> POCKETFFT_NOINLINE void exec(T c[], T0 fct, bool ortho,
      -
      2548 int /*type*/, bool /*cosine*/) const
      -
      2549 {
      -
      2550 constexpr T0 sqrt2=T0(1.414213562373095048801688724209698L);
      -
      2551 size_t N=fftplan.length(), n=N/2+1;
      -
      2552 if (ortho)
      -
      2553 { c[0]*=sqrt2; c[n-1]*=sqrt2; }
      -
      2554 arr<T> tmp(N);
      -
      2555 tmp[0] = c[0];
      -
      2556 for (size_t i=1; i<n; ++i)
      -
      2557 tmp[i] = tmp[N-i] = c[i];
      -
      2558 fftplan.exec(tmp.data(), fct, true);
      -
      2559 c[0] = tmp[0];
      -
      2560 for (size_t i=1; i<n; ++i)
      -
      2561 c[i] = tmp[2*i-1];
      -
      2562 if (ortho)
      -
      2563 { c[0]*=sqrt2*T0(0.5); c[n-1]*=sqrt2*T0(0.5); }
      -
      2564 }
      -
      -
      2565
      -
      2566 size_t length() const { return fftplan.length()/2+1; }
      -
      2567 };
      -
      -
      2568
      -
      -
      2569template<typename T0> class T_dst1
      -
      2570 {
      -
      2571 private:
      -
      2572 pocketfft_r<T0> fftplan;
      -
      2573
      -
      2574 public:
      -
      - -
      2576 : fftplan(2*(length+1)) {}
      -
      -
      2577
      -
      -
      2578 template<typename T> POCKETFFT_NOINLINE void exec(T c[], T0 fct,
      -
      2579 bool /*ortho*/, int /*type*/, bool /*cosine*/) const
      -
      2580 {
      -
      2581 size_t N=fftplan.length(), n=N/2-1;
      -
      2582 arr<T> tmp(N);
      -
      2583 tmp[0] = tmp[n+1] = c[0]*0;
      -
      2584 for (size_t i=0; i<n; ++i)
      -
      2585 { tmp[i+1]=c[i]; tmp[N-1-i]=-c[i]; }
      -
      2586 fftplan.exec(tmp.data(), fct, true);
      -
      2587 for (size_t i=0; i<n; ++i)
      -
      2588 c[i] = -tmp[2*i+2];
      -
      2589 }
      -
      -
      2590
      -
      2591 size_t length() const { return fftplan.length()/2-1; }
      -
      2592 };
      -
      -
      2593
      -
      -
      2594template<typename T0> class T_dcst23
      -
      2595 {
      -
      2596 private:
      -
      2597 pocketfft_r<T0> fftplan;
      -
      2598 std::vector<T0> twiddle;
      -
      2599
      -
      2600 public:
      -
      - -
      2602 : fftplan(length), twiddle(length)
      -
      2603 {
      -
      2604 sincos_2pibyn<T0> tw(4*length);
      -
      2605 for (size_t i=0; i<length; ++i)
      -
      2606 twiddle[i] = tw[i+1].r;
      -
      2607 }
      -
      -
      2608
      -
      -
      2609 template<typename T> POCKETFFT_NOINLINE void exec(T c[], T0 fct, bool ortho,
      -
      2610 int type, bool cosine) const
      -
      2611 {
      -
      2612 constexpr T0 sqrt2=T0(1.414213562373095048801688724209698L);
      -
      2613 size_t N=length();
      -
      2614 size_t NS2 = (N+1)/2;
      -
      2615 if (type==2)
      -
      2616 {
      -
      2617 if (!cosine)
      -
      2618 for (size_t k=1; k<N; k+=2)
      -
      2619 c[k] = -c[k];
      -
      2620 c[0] *= 2;
      -
      2621 if ((N&1)==0) c[N-1]*=2;
      -
      2622 for (size_t k=1; k<N-1; k+=2)
      -
      2623 MPINPLACE(c[k+1], c[k]);
      -
      2624 fftplan.exec(c, fct, false);
      -
      2625 for (size_t k=1, kc=N-1; k<NS2; ++k, --kc)
      -
      2626 {
      -
      2627 T t1 = twiddle[k-1]*c[kc]+twiddle[kc-1]*c[k];
      -
      2628 T t2 = twiddle[k-1]*c[k]-twiddle[kc-1]*c[kc];
      -
      2629 c[k] = T0(0.5)*(t1+t2); c[kc]=T0(0.5)*(t1-t2);
      -
      2630 }
      -
      2631 if ((N&1)==0)
      -
      2632 c[NS2] *= twiddle[NS2-1];
      -
      2633 if (!cosine)
      -
      2634 for (size_t k=0, kc=N-1; k<kc; ++k, --kc)
      -
      2635 std::swap(c[k], c[kc]);
      -
      2636 if (ortho) c[0]*=sqrt2*T0(0.5);
      -
      2637 }
      -
      2638 else
      -
      2639 {
      -
      2640 if (ortho) c[0]*=sqrt2;
      -
      2641 if (!cosine)
      -
      2642 for (size_t k=0, kc=N-1; k<NS2; ++k, --kc)
      -
      2643 std::swap(c[k], c[kc]);
      -
      2644 for (size_t k=1, kc=N-1; k<NS2; ++k, --kc)
      -
      2645 {
      -
      2646 T t1=c[k]+c[kc], t2=c[k]-c[kc];
      -
      2647 c[k] = twiddle[k-1]*t2+twiddle[kc-1]*t1;
      -
      2648 c[kc]= twiddle[k-1]*t1-twiddle[kc-1]*t2;
      -
      2649 }
      -
      2650 if ((N&1)==0)
      -
      2651 c[NS2] *= 2*twiddle[NS2-1];
      -
      2652 fftplan.exec(c, fct, true);
      -
      2653 for (size_t k=1; k<N-1; k+=2)
      -
      2654 MPINPLACE(c[k], c[k+1]);
      -
      2655 if (!cosine)
      -
      2656 for (size_t k=1; k<N; k+=2)
      -
      2657 c[k] = -c[k];
      -
      2658 }
      -
      2659 }
      -
      -
      2660
      -
      2661 size_t length() const { return fftplan.length(); }
      -
      2662 };
      -
      -
      2663
      -
      -
      2664template<typename T0> class T_dcst4
      -
      2665 {
      -
      2666 private:
      -
      2667 size_t N;
      -
      2668 std::unique_ptr<pocketfft_c<T0>> fft;
      -
      2669 std::unique_ptr<pocketfft_r<T0>> rfft;
      -
      2670 arr<cmplx<T0>> C2;
      -
      2671
      -
      2672 public:
      -
      - -
      2674 : N(length),
      -
      2675 fft((N&1) ? nullptr : new pocketfft_c<T0>(N/2)),
      -
      2676 rfft((N&1)? new pocketfft_r<T0>(N) : nullptr),
      -
      2677 C2((N&1) ? 0 : N/2)
      -
      2678 {
      -
      2679 if ((N&1)==0)
      -
      2680 {
      -
      2681 sincos_2pibyn<T0> tw(16*N);
      -
      2682 for (size_t i=0; i<N/2; ++i)
      -
      2683 C2[i] = conj(tw[8*i+1]);
      -
      2684 }
      -
      2685 }
      -
      -
      2686
      -
      -
      2687 template<typename T> POCKETFFT_NOINLINE void exec(T c[], T0 fct,
      -
      2688 bool /*ortho*/, int /*type*/, bool cosine) const
      -
      2689 {
      -
      2690 size_t n2 = N/2;
      -
      2691 if (!cosine)
      -
      2692 for (size_t k=0, kc=N-1; k<n2; ++k, --kc)
      -
      2693 std::swap(c[k], c[kc]);
      -
      2694 if (N&1)
      -
      2695 {
      -
      2696 // The following code is derived from the FFTW3 function apply_re11()
      -
      2697 // and is released under the 3-clause BSD license with friendly
      -
      2698 // permission of Matteo Frigo and Steven G. Johnson.
      -
      2699
      -
      2700 arr<T> y(N);
      -
      2701 {
      -
      2702 size_t i=0, m=n2;
      -
      2703 for (; m<N; ++i, m+=4)
      -
      2704 y[i] = c[m];
      -
      2705 for (; m<2*N; ++i, m+=4)
      -
      2706 y[i] = -c[2*N-m-1];
      -
      2707 for (; m<3*N; ++i, m+=4)
      -
      2708 y[i] = -c[m-2*N];
      -
      2709 for (; m<4*N; ++i, m+=4)
      -
      2710 y[i] = c[4*N-m-1];
      -
      2711 for (; i<N; ++i, m+=4)
      -
      2712 y[i] = c[m-4*N];
      -
      2713 }
      -
      2714 rfft->exec(y.data(), fct, true);
      -
      2715 {
      -
      2716 auto SGN = [](size_t i)
      -
      2717 {
      -
      2718 constexpr T0 sqrt2=T0(1.414213562373095048801688724209698L);
      -
      2719 return (i&2) ? -sqrt2 : sqrt2;
      -
      2720 };
      -
      2721 c[n2] = y[0]*SGN(n2+1);
      -
      2722 size_t i=0, i1=1, k=1;
      -
      2723 for (; k<n2; ++i, ++i1, k+=2)
      -
      2724 {
      -
      2725 c[i ] = y[2*k-1]*SGN(i1) + y[2*k ]*SGN(i);
      -
      2726 c[N -i1] = y[2*k-1]*SGN(N -i) - y[2*k ]*SGN(N -i1);
      -
      2727 c[n2-i1] = y[2*k+1]*SGN(n2-i) - y[2*k+2]*SGN(n2-i1);
      -
      2728 c[n2+i1] = y[2*k+1]*SGN(n2+i+2) + y[2*k+2]*SGN(n2+i1);
      -
      2729 }
      -
      2730 if (k == n2)
      -
      2731 {
      -
      2732 c[i ] = y[2*k-1]*SGN(i+1) + y[2*k]*SGN(i);
      -
      2733 c[N-i1] = y[2*k-1]*SGN(i+2) + y[2*k]*SGN(i1);
      -
      2734 }
      -
      2735 }
      -
      2736
      -
      2737 // FFTW-derived code ends here
      -
      2738 }
      -
      2739 else
      -
      2740 {
      -
      2741 // even length algorithm from
      -
      2742 // https://www.appletonaudio.com/blog/2013/derivation-of-fast-dct-4-algorithm-based-on-dft/
      -
      2743 arr<cmplx<T>> y(n2);
      -
      2744 for(size_t i=0; i<n2; ++i)
      -
      2745 {
      -
      2746 y[i].Set(c[2*i],c[N-1-2*i]);
      -
      2747 y[i] *= C2[i];
      -
      2748 }
      -
      2749 fft->exec(y.data(), fct, true);
      -
      2750 for(size_t i=0, ic=n2-1; i<n2; ++i, --ic)
      -
      2751 {
      -
      2752 c[2*i ] = 2*(y[i ].r*C2[i ].r-y[i ].i*C2[i ].i);
      -
      2753 c[2*i+1] = -2*(y[ic].i*C2[ic].r+y[ic].r*C2[ic].i);
      -
      2754 }
      -
      2755 }
      -
      2756 if (!cosine)
      -
      2757 for (size_t k=1; k<N; k+=2)
      -
      2758 c[k] = -c[k];
      -
      2759 }
      -
      -
      2760
      -
      2761 size_t length() const { return N; }
      -
      2762 };
      -
      -
      2763
      -
      2764
      -
      2765//
      -
      2766// multi-D infrastructure
      -
      2767//
      -
      2768
      -
      -
      2769template<typename T> std::shared_ptr<T> get_plan(size_t length)
      -
      2770 {
      -
      2771#if POCKETFFT_CACHE_SIZE==0
      -
      2772 return std::make_shared<T>(length);
      -
      2773#else
      -
      2774 constexpr size_t nmax=POCKETFFT_CACHE_SIZE;
      -
      2775 static std::array<std::shared_ptr<T>, nmax> cache;
      -
      2776 static std::array<size_t, nmax> last_access{{0}};
      -
      2777 static size_t access_counter = 0;
      -
      2778 static std::mutex mut;
      -
      2779
      -
      2780 auto find_in_cache = [&]() -> std::shared_ptr<T>
      -
      2781 {
      -
      2782 for (size_t i=0; i<nmax; ++i)
      -
      2783 if (cache[i] && (cache[i]->length()==length))
      -
      2784 {
      -
      2785 // no need to update if this is already the most recent entry
      - -
      2787 {
      - -
      2789 // Guard against overflow
      -
      2790 if (access_counter == 0)
      -
      2791 last_access.fill(0);
      -
      2792 }
      -
      2793 return cache[i];
      -
      2794 }
      -
      2795
      -
      2796 return nullptr;
      -
      2797 };
      -
      2798
      -
      2799 {
      -
      2800 std::lock_guard<std::mutex> lock(mut);
      -
      2801 auto p = find_in_cache();
      -
      2802 if (p) return p;
      -
      2803 }
      -
      2804 auto plan = std::make_shared<T>(length);
      -
      2805 {
      -
      2806 std::lock_guard<std::mutex> lock(mut);
      -
      2807 auto p = find_in_cache();
      -
      2808 if (p) return p;
      -
      2809
      -
      2810 size_t lru = 0;
      -
      2811 for (size_t i=1; i<nmax; ++i)
      -
      2812 if (last_access[i] < last_access[lru])
      -
      2813 lru = i;
      -
      2814
      -
      2815 cache[lru] = plan;
      - -
      2817 }
      -
      2818 return plan;
      -
      2819#endif
      -
      2820 }
      -
      -
      2821
      -
      - -
      2823 {
      -
      2824 protected:
      - - -
      2827
      -
      2828 public:
      -
      -
      2829 arr_info(const shape_t &shape_, const stride_t &stride_)
      -
      2830 : shp(shape_), str(stride_) {}
      -
      -
      2831 size_t ndim() const { return shp.size(); }
      -
      2832 size_t size() const { return util::prod(shp); }
      -
      2833 const shape_t &shape() const { return shp; }
      -
      2834 size_t shape(size_t i) const { return shp[i]; }
      -
      2835 const stride_t &stride() const { return str; }
      -
      2836 const ptrdiff_t &stride(size_t i) const { return str[i]; }
      -
      2837 };
      -
      -
      2838
      -
      -
      2839template<typename T> class cndarr: public arr_info
      -
      2840 {
      -
      2841 protected:
      -
      2842 const char *d;
      -
      2843
      -
      2844 public:
      -
      -
      2845 cndarr(const void *data_, const shape_t &shape_, const stride_t &stride_)
      -
      2846 : arr_info(shape_, stride_),
      - -
      -
      -
      2848 const T &operator[](ptrdiff_t ofs) const
      -
      2849 { return *reinterpret_cast<const T *>(d+ofs); }
      -
      -
      2850 };
      -
      -
      2851
      -
      -
      2852template<typename T> class ndarr: public cndarr<T>
      -
      2853 {
      -
      2854 public:
      -
      -
      2855 ndarr(void *data_, const shape_t &shape_, const stride_t &stride_)
      -
      2856 : cndarr<T>::cndarr(const_cast<const void *>(data_), shape_, stride_)
      -
      2857 {}
      -
      -
      -
      2858 T &operator[](ptrdiff_t ofs)
      -
      2859 { return *reinterpret_cast<T *>(const_cast<char *>(cndarr<T>::d+ofs)); }
      -
      -
      2860 };
      -
      -
      2861
      -
      -
      2862template<size_t N> class multi_iter
      -
      2863 {
      -
      2864 private:
      -
      2865 shape_t pos;
      -
      2866 const arr_info &iarr, &oarr;
      -
      2867 ptrdiff_t p_ii, p_i[N], str_i, p_oi, p_o[N], str_o;
      -
      2868 size_t idim, rem;
      -
      2869
      -
      2870 void advance_i()
      -
      2871 {
      -
      2872 for (int i_=int(pos.size())-1; i_>=0; --i_)
      -
      2873 {
      -
      2874 auto i = size_t(i_);
      -
      2875 if (i==idim) continue;
      -
      2876 p_ii += iarr.stride(i);
      -
      2877 p_oi += oarr.stride(i);
      -
      2878 if (++pos[i] < iarr.shape(i))
      -
      2879 return;
      -
      2880 pos[i] = 0;
      -
      2881 p_ii -= ptrdiff_t(iarr.shape(i))*iarr.stride(i);
      -
      2882 p_oi -= ptrdiff_t(oarr.shape(i))*oarr.stride(i);
      -
      2883 }
      -
      2884 }
      -
      2885
      -
      2886 public:
      -
      - -
      2888 : pos(iarr_.ndim(), 0), iarr(iarr_), oarr(oarr_), p_ii(0),
      -
      2889 str_i(iarr.stride(idim_)), p_oi(0), str_o(oarr.stride(idim_)),
      -
      2890 idim(idim_), rem(iarr.size()/iarr.shape(idim))
      -
      2891 {
      -
      2892 auto nshares = threading::num_threads();
      -
      2893 if (nshares==1) return;
      -
      2894 if (nshares==0) throw std::runtime_error("can't run with zero threads");
      -
      2895 auto myshare = threading::thread_id();
      -
      2896 if (myshare>=nshares) throw std::runtime_error("impossible share requested");
      -
      2897 size_t nbase = rem/nshares;
      -
      2898 size_t additional = rem%nshares;
      -
      2899 size_t lo = myshare*nbase + ((myshare<additional) ? myshare : additional);
      -
      2900 size_t hi = lo+nbase+(myshare<additional);
      -
      2901 size_t todo = hi-lo;
      -
      2902
      -
      2903 size_t chunk = rem;
      -
      2904 for (size_t i=0; i<pos.size(); ++i)
      -
      2905 {
      -
      2906 if (i==idim) continue;
      -
      2907 chunk /= iarr.shape(i);
      -
      2908 size_t n_advance = lo/chunk;
      -
      2909 pos[i] += n_advance;
      -
      2910 p_ii += ptrdiff_t(n_advance)*iarr.stride(i);
      -
      2911 p_oi += ptrdiff_t(n_advance)*oarr.stride(i);
      -
      2912 lo -= n_advance*chunk;
      -
      2913 }
      -
      2914 rem = todo;
      -
      2915 }
      -
      -
      -
      2916 void advance(size_t n)
      -
      2917 {
      -
      2918 if (rem<n) throw std::runtime_error("underrun");
      -
      2919 for (size_t i=0; i<n; ++i)
      -
      2920 {
      -
      2921 p_i[i] = p_ii;
      -
      2922 p_o[i] = p_oi;
      -
      2923 advance_i();
      -
      2924 }
      -
      2925 rem -= n;
      -
      2926 }
      -
      -
      2927 ptrdiff_t iofs(size_t i) const { return p_i[0] + ptrdiff_t(i)*str_i; }
      -
      2928 ptrdiff_t iofs(size_t j, size_t i) const { return p_i[j] + ptrdiff_t(i)*str_i; }
      -
      2929 ptrdiff_t oofs(size_t i) const { return p_o[0] + ptrdiff_t(i)*str_o; }
      -
      2930 ptrdiff_t oofs(size_t j, size_t i) const { return p_o[j] + ptrdiff_t(i)*str_o; }
      -
      2931 size_t length_in() const { return iarr.shape(idim); }
      -
      2932 size_t length_out() const { return oarr.shape(idim); }
      -
      2933 ptrdiff_t stride_in() const { return str_i; }
      -
      2934 ptrdiff_t stride_out() const { return str_o; }
      -
      2935 size_t remaining() const { return rem; }
      -
      2936 };
      -
      -
      2937
      -
      - -
      2939 {
      -
      2940 private:
      -
      2941 shape_t pos;
      -
      2942 const arr_info &arr;
      -
      2943 ptrdiff_t p;
      -
      2944 size_t rem;
      -
      2945
      -
      2946 public:
      -
      - -
      2948 : pos(arr_.ndim(), 0), arr(arr_), p(0), rem(arr_.size()) {}
      -
      -
      -
      2949 void advance()
      -
      2950 {
      -
      2951 --rem;
      -
      2952 for (int i_=int(pos.size())-1; i_>=0; --i_)
      -
      2953 {
      -
      2954 auto i = size_t(i_);
      -
      2955 p += arr.stride(i);
      -
      2956 if (++pos[i] < arr.shape(i))
      -
      2957 return;
      -
      2958 pos[i] = 0;
      -
      2959 p -= ptrdiff_t(arr.shape(i))*arr.stride(i);
      -
      2960 }
      -
      2961 }
      -
      -
      2962 ptrdiff_t ofs() const { return p; }
      -
      2963 size_t remaining() const { return rem; }
      -
      2964 };
      -
      -
      2965
      -
      - -
      2967 {
      -
      2968 private:
      -
      2969 shape_t pos;
      -
      2970 const arr_info &arr;
      -
      2971 std::vector<char> rev_axis;
      -
      2972 std::vector<char> rev_jump;
      -
      2973 size_t last_axis, last_size;
      -
      2974 shape_t shp;
      -
      2975 ptrdiff_t p, rp;
      -
      2976 size_t rem;
      -
      2977
      -
      2978 public:
      -
      - -
      2980 : pos(arr_.ndim(), 0), arr(arr_), rev_axis(arr_.ndim(), 0),
      -
      2981 rev_jump(arr_.ndim(), 1), p(0), rp(0)
      -
      2982 {
      -
      2983 for (auto ax: axes)
      -
      2984 rev_axis[ax]=1;
      -
      2985 last_axis = axes.back();
      -
      2986 last_size = arr.shape(last_axis)/2 + 1;
      -
      2987 shp = arr.shape();
      -
      2988 shp[last_axis] = last_size;
      -
      2989 rem=1;
      -
      2990 for (auto i: shp)
      -
      2991 rem *= i;
      -
      2992 }
      -
      -
      -
      2993 void advance()
      -
      2994 {
      -
      2995 --rem;
      -
      2996 for (int i_=int(pos.size())-1; i_>=0; --i_)
      -
      2997 {
      -
      2998 auto i = size_t(i_);
      -
      2999 p += arr.stride(i);
      -
      3000 if (!rev_axis[i])
      -
      3001 rp += arr.stride(i);
      -
      3002 else
      -
      3003 {
      -
      3004 rp -= arr.stride(i);
      -
      3005 if (rev_jump[i])
      -
      3006 {
      -
      3007 rp += ptrdiff_t(arr.shape(i))*arr.stride(i);
      -
      3008 rev_jump[i] = 0;
      -
      3009 }
      -
      3010 }
      -
      3011 if (++pos[i] < shp[i])
      -
      3012 return;
      -
      3013 pos[i] = 0;
      -
      3014 p -= ptrdiff_t(shp[i])*arr.stride(i);
      -
      3015 if (rev_axis[i])
      -
      3016 {
      -
      3017 rp -= ptrdiff_t(arr.shape(i)-shp[i])*arr.stride(i);
      -
      3018 rev_jump[i] = 1;
      -
      3019 }
      -
      3020 else
      -
      3021 rp -= ptrdiff_t(shp[i])*arr.stride(i);
      -
      3022 }
      -
      3023 }
      -
      -
      3024 ptrdiff_t ofs() const { return p; }
      -
      3025 ptrdiff_t rev_ofs() const { return rp; }
      -
      3026 size_t remaining() const { return rem; }
      -
      3027 };
      -
      -
      3028
      -
      3029template<typename T> struct VTYPE {};
      -
      3030template <typename T> using vtype_t = typename VTYPE<T>::type;
      -
      3031
      -
      3032#ifndef POCKETFFT_NO_VECTORS
      -
      3033template<> struct VTYPE<float>
      -
      3034 {
      -
      3035 using type = float __attribute__ ((vector_size (VLEN<float>::val*sizeof(float))));
      -
      3036 };
      -
      3037template<> struct VTYPE<double>
      -
      3038 {
      -
      3039 using type = double __attribute__ ((vector_size (VLEN<double>::val*sizeof(double))));
      -
      3040 };
      -
      3041template<> struct VTYPE<long double>
      -
      3042 {
      -
      3043 using type = long double __attribute__ ((vector_size (VLEN<long double>::val*sizeof(long double))));
      -
      3044 };
      -
      3045#endif
      -
      3046
      -
      -
      3047template<typename T> arr<char> alloc_tmp(const shape_t &shape,
      -
      3048 size_t axsize, size_t elemsize)
      -
      3049 {
      -
      3050 auto othersize = util::prod(shape)/axsize;
      - -
      3052 return arr<char>(tmpsize*elemsize);
      -
      3053 }
      -
      -
      -
      3054template<typename T> arr<char> alloc_tmp(const shape_t &shape,
      -
      3055 const shape_t &axes, size_t elemsize)
      -
      3056 {
      -
      3057 size_t fullsize=util::prod(shape);
      -
      3058 size_t tmpsize=0;
      -
      3059 for (size_t i=0; i<axes.size(); ++i)
      -
      3060 {
      -
      3061 auto axsize = shape[axes[i]];
      -
      3062 auto othersize = fullsize/axsize;
      -
      3063 auto sz = axsize*((othersize>=VLEN<T>::val) ? VLEN<T>::val : 1);
      -
      3064 if (sz>tmpsize) tmpsize=sz;
      -
      3065 }
      -
      3066 return arr<char>(tmpsize*elemsize);
      -
      3067 }
      -
      -
      3068
      -
      -
      3069template <typename T, size_t vlen> void copy_input(const multi_iter<vlen> &it,
      - -
      3071 {
      -
      3072 for (size_t i=0; i<it.length_in(); ++i)
      -
      3073 for (size_t j=0; j<vlen; ++j)
      -
      3074 {
      -
      3075 dst[i].r[j] = src[it.iofs(j,i)].r;
      -
      3076 dst[i].i[j] = src[it.iofs(j,i)].i;
      -
      3077 }
      -
      3078 }
      -
      -
      3079
      -
      -
      3080template <typename T, size_t vlen> void copy_input(const multi_iter<vlen> &it,
      -
      3081 const cndarr<T> &src, vtype_t<T> *POCKETFFT_RESTRICT dst)
      -
      3082 {
      -
      3083 for (size_t i=0; i<it.length_in(); ++i)
      -
      3084 for (size_t j=0; j<vlen; ++j)
      -
      3085 dst[i][j] = src[it.iofs(j,i)];
      -
      3086 }
      -
      -
      3087
      -
      -
      3088template <typename T, size_t vlen> void copy_input(const multi_iter<vlen> &it,
      -
      3089 const cndarr<T> &src, T *POCKETFFT_RESTRICT dst)
      -
      3090 {
      -
      3091 if (dst == &src[it.iofs(0)]) return; // in-place
      -
      3092 for (size_t i=0; i<it.length_in(); ++i)
      -
      3093 dst[i] = src[it.iofs(i)];
      -
      3094 }
      -
      -
      3095
      -
      -
      3096template<typename T, size_t vlen> void copy_output(const multi_iter<vlen> &it,
      - -
      3098 {
      -
      3099 for (size_t i=0; i<it.length_out(); ++i)
      -
      3100 for (size_t j=0; j<vlen; ++j)
      -
      3101 dst[it.oofs(j,i)].Set(src[i].r[j],src[i].i[j]);
      -
      3102 }
      -
      -
      3103
      -
      -
      3104template<typename T, size_t vlen> void copy_output(const multi_iter<vlen> &it,
      -
      3105 const vtype_t<T> *POCKETFFT_RESTRICT src, ndarr<T> &dst)
      -
      3106 {
      -
      3107 for (size_t i=0; i<it.length_out(); ++i)
      -
      3108 for (size_t j=0; j<vlen; ++j)
      -
      3109 dst[it.oofs(j,i)] = src[i][j];
      -
      3110 }
      -
      -
      3111
      -
      -
      3112template<typename T, size_t vlen> void copy_output(const multi_iter<vlen> &it,
      -
      3113 const T *POCKETFFT_RESTRICT src, ndarr<T> &dst)
      -
      3114 {
      -
      3115 if (src == &dst[it.oofs(0)]) return; // in-place
      -
      3116 for (size_t i=0; i<it.length_out(); ++i)
      -
      3117 dst[it.oofs(i)] = src[i];
      -
      3118 }
      -
      -
      3119
      -
      3120template <typename T> struct add_vec { using type = vtype_t<T>; };
      -
      -
      3121template <typename T> struct add_vec<cmplx<T>>
      -
      3122 { using type = cmplx<vtype_t<T>>; };
      -
      -
      3123template <typename T> using add_vec_t = typename add_vec<T>::type;
      -
      3124
      -
      3125template<typename Tplan, typename T, typename T0, typename Exec>
      -
      - -
      3127 const shape_t &axes, T0 fct, size_t nthreads, const Exec & exec,
      -
      3128 const bool allow_inplace=true)
      -
      3129 {
      -
      3130 std::shared_ptr<Tplan> plan;
      -
      3131
      -
      3132 for (size_t iax=0; iax<axes.size(); ++iax)
      -
      3133 {
      -
      3134 size_t len=in.shape(axes[iax]);
      -
      3135 if ((!plan) || (len!=plan->length()))
      -
      3136 plan = get_plan<Tplan>(len);
      -
      3137
      - - -
      3140 [&] {
      -
      3141 constexpr auto vlen = VLEN<T0>::val;
      -
      3142 auto storage = alloc_tmp<T0>(in.shape(), len, sizeof(T));
      -
      3143 const auto &tin(iax==0? in : out);
      -
      3144 multi_iter<vlen> it(tin, out, axes[iax]);
      -
      3145#ifndef POCKETFFT_NO_VECTORS
      -
      3146 if (vlen>1)
      -
      3147 while (it.remaining()>=vlen)
      -
      3148 {
      -
      3149 it.advance(vlen);
      -
      3150 auto tdatav = reinterpret_cast<add_vec_t<T> *>(storage.data());
      -
      3151 exec(it, tin, out, tdatav, *plan, fct);
      -
      3152 }
      -
      3153#endif
      -
      3154 while (it.remaining()>0)
      -
      3155 {
      -
      3156 it.advance(1);
      -
      3157 auto buf = allow_inplace && it.stride_out() == sizeof(T) ?
      -
      3158 &out[it.oofs(0)] : reinterpret_cast<T *>(storage.data());
      -
      3159 exec(it, tin, out, buf, *plan, fct);
      -
      3160 }
      -
      3161 }); // end of parallel region
      -
      3162 fct = T0(1); // factor has been applied, use 1 for remaining axes
      -
      3163 }
      -
      3164 }
      -
      -
      3165
      -
      - -
      3167 {
      - -
      3169
      -
      -
      3170 template <typename T0, typename T, size_t vlen> void operator () (
      -
      3171 const multi_iter<vlen> &it, const cndarr<cmplx<T0>> &in,
      -
      3172 ndarr<cmplx<T0>> &out, T * buf, const pocketfft_c<T0> &plan, T0 fct) const
      -
      3173 {
      -
      3174 copy_input(it, in, buf);
      -
      3175 plan.exec(buf, fct, forward);
      -
      3176 copy_output(it, buf, out);
      -
      3177 }
      -
      -
      3178 };
      -
      -
      3179
      -
      -
      3180template <typename T, size_t vlen> void copy_hartley(const multi_iter<vlen> &it,
      -
      3181 const vtype_t<T> *POCKETFFT_RESTRICT src, ndarr<T> &dst)
      -
      3182 {
      -
      3183 for (size_t j=0; j<vlen; ++j)
      -
      3184 dst[it.oofs(j,0)] = src[0][j];
      -
      3185 size_t i=1, i1=1, i2=it.length_out()-1;
      -
      3186 for (i=1; i<it.length_out()-1; i+=2, ++i1, --i2)
      -
      3187 for (size_t j=0; j<vlen; ++j)
      -
      3188 {
      -
      3189 dst[it.oofs(j,i1)] = src[i][j]+src[i+1][j];
      -
      3190 dst[it.oofs(j,i2)] = src[i][j]-src[i+1][j];
      -
      3191 }
      -
      3192 if (i<it.length_out())
      -
      3193 for (size_t j=0; j<vlen; ++j)
      -
      3194 dst[it.oofs(j,i1)] = src[i][j];
      -
      3195 }
      -
      -
      3196
      -
      -
      3197template <typename T, size_t vlen> void copy_hartley(const multi_iter<vlen> &it,
      -
      3198 const T *POCKETFFT_RESTRICT src, ndarr<T> &dst)
      -
      3199 {
      -
      3200 dst[it.oofs(0)] = src[0];
      -
      3201 size_t i=1, i1=1, i2=it.length_out()-1;
      -
      3202 for (i=1; i<it.length_out()-1; i+=2, ++i1, --i2)
      -
      3203 {
      -
      3204 dst[it.oofs(i1)] = src[i]+src[i+1];
      -
      3205 dst[it.oofs(i2)] = src[i]-src[i+1];
      -
      3206 }
      -
      3207 if (i<it.length_out())
      -
      3208 dst[it.oofs(i1)] = src[i];
      -
      3209 }
      -
      -
      3210
      -
      - -
      3212 {
      -
      -
      3213 template <typename T0, typename T, size_t vlen> void operator () (
      -
      3214 const multi_iter<vlen> &it, const cndarr<T0> &in, ndarr<T0> &out,
      -
      3215 T * buf, const pocketfft_r<T0> &plan, T0 fct) const
      -
      3216 {
      -
      3217 copy_input(it, in, buf);
      -
      3218 plan.exec(buf, fct, true);
      -
      3219 copy_hartley(it, buf, out);
      -
      3220 }
      -
      -
      3221 };
      -
      -
      3222
      -
      - -
      3224 {
      -
      3225 bool ortho;
      -
      3226 int type;
      - -
      3228
      -
      3229 template <typename T0, typename T, typename Tplan, size_t vlen>
      -
      - -
      3231 ndarr<T0> &out, T * buf, const Tplan &plan, T0 fct) const
      -
      3232 {
      -
      3233 copy_input(it, in, buf);
      -
      3234 plan.exec(buf, fct, ortho, type, cosine);
      -
      3235 copy_output(it, buf, out);
      -
      3236 }
      -
      -
      3237 };
      -
      -
      3238
      -
      -
      3239template<typename T> POCKETFFT_NOINLINE void general_r2c(
      -
      3240 const cndarr<T> &in, ndarr<cmplx<T>> &out, size_t axis, bool forward, T fct,
      -
      3241 size_t nthreads)
      -
      3242 {
      -
      3243 auto plan = get_plan<pocketfft_r<T>>(in.shape(axis));
      -
      3244 size_t len=in.shape(axis);
      - - -
      3247 [&] {
      -
      3248 constexpr auto vlen = VLEN<T>::val;
      -
      3249 auto storage = alloc_tmp<T>(in.shape(), len, sizeof(T));
      -
      3250 multi_iter<vlen> it(in, out, axis);
      -
      3251#ifndef POCKETFFT_NO_VECTORS
      -
      3252 if (vlen>1)
      -
      3253 while (it.remaining()>=vlen)
      -
      3254 {
      -
      3255 it.advance(vlen);
      -
      3256 auto tdatav = reinterpret_cast<vtype_t<T> *>(storage.data());
      -
      3257 copy_input(it, in, tdatav);
      -
      3258 plan->exec(tdatav, fct, true);
      -
      3259 for (size_t j=0; j<vlen; ++j)
      -
      3260 out[it.oofs(j,0)].Set(tdatav[0][j]);
      -
      3261 size_t i=1, ii=1;
      -
      3262 if (forward)
      -
      3263 for (; i<len-1; i+=2, ++ii)
      -
      3264 for (size_t j=0; j<vlen; ++j)
      -
      3265 out[it.oofs(j,ii)].Set(tdatav[i][j], tdatav[i+1][j]);
      -
      3266 else
      -
      3267 for (; i<len-1; i+=2, ++ii)
      -
      3268 for (size_t j=0; j<vlen; ++j)
      -
      3269 out[it.oofs(j,ii)].Set(tdatav[i][j], -tdatav[i+1][j]);
      -
      3270 if (i<len)
      -
      3271 for (size_t j=0; j<vlen; ++j)
      -
      3272 out[it.oofs(j,ii)].Set(tdatav[i][j]);
      -
      3273 }
      -
      3274#endif
      -
      3275 while (it.remaining()>0)
      -
      3276 {
      -
      3277 it.advance(1);
      -
      3278 auto tdata = reinterpret_cast<T *>(storage.data());
      -
      3279 copy_input(it, in, tdata);
      -
      3280 plan->exec(tdata, fct, true);
      -
      3281 out[it.oofs(0)].Set(tdata[0]);
      -
      3282 size_t i=1, ii=1;
      -
      3283 if (forward)
      -
      3284 for (; i<len-1; i+=2, ++ii)
      -
      3285 out[it.oofs(ii)].Set(tdata[i], tdata[i+1]);
      -
      3286 else
      -
      3287 for (; i<len-1; i+=2, ++ii)
      -
      3288 out[it.oofs(ii)].Set(tdata[i], -tdata[i+1]);
      -
      3289 if (i<len)
      -
      3290 out[it.oofs(ii)].Set(tdata[i]);
      -
      3291 }
      -
      3292 }); // end of parallel region
      -
      3293 }
      -
      -
      -
      3294template<typename T> POCKETFFT_NOINLINE void general_c2r(
      -
      3295 const cndarr<cmplx<T>> &in, ndarr<T> &out, size_t axis, bool forward, T fct,
      -
      3296 size_t nthreads)
      -
      3297 {
      -
      3298 auto plan = get_plan<pocketfft_r<T>>(out.shape(axis));
      -
      3299 size_t len=out.shape(axis);
      -
      3300 threading::thread_map(
      -
      3301 util::thread_count(nthreads, in.shape(), axis, VLEN<T>::val),
      -
      3302 [&] {
      -
      3303 constexpr auto vlen = VLEN<T>::val;
      -
      3304 auto storage = alloc_tmp<T>(out.shape(), len, sizeof(T));
      -
      3305 multi_iter<vlen> it(in, out, axis);
      -
      3306#ifndef POCKETFFT_NO_VECTORS
      -
      3307 if (vlen>1)
      -
      3308 while (it.remaining()>=vlen)
      -
      3309 {
      -
      3310 it.advance(vlen);
      -
      3311 auto tdatav = reinterpret_cast<vtype_t<T> *>(storage.data());
      -
      3312 for (size_t j=0; j<vlen; ++j)
      -
      3313 tdatav[0][j]=in[it.iofs(j,0)].r;
      -
      3314 {
      -
      3315 size_t i=1, ii=1;
      -
      3316 if (forward)
      -
      3317 for (; i<len-1; i+=2, ++ii)
      -
      3318 for (size_t j=0; j<vlen; ++j)
      -
      3319 {
      -
      3320 tdatav[i ][j] = in[it.iofs(j,ii)].r;
      -
      3321 tdatav[i+1][j] = -in[it.iofs(j,ii)].i;
      -
      3322 }
      -
      3323 else
      -
      3324 for (; i<len-1; i+=2, ++ii)
      -
      3325 for (size_t j=0; j<vlen; ++j)
      -
      3326 {
      -
      3327 tdatav[i ][j] = in[it.iofs(j,ii)].r;
      -
      3328 tdatav[i+1][j] = in[it.iofs(j,ii)].i;
      -
      3329 }
      -
      3330 if (i<len)
      -
      3331 for (size_t j=0; j<vlen; ++j)
      -
      3332 tdatav[i][j] = in[it.iofs(j,ii)].r;
      -
      3333 }
      -
      3334 plan->exec(tdatav, fct, false);
      -
      3335 copy_output(it, tdatav, out);
      -
      3336 }
      -
      3337#endif
      -
      3338 while (it.remaining()>0)
      -
      3339 {
      -
      3340 it.advance(1);
      -
      3341 auto tdata = reinterpret_cast<T *>(storage.data());
      -
      3342 tdata[0]=in[it.iofs(0)].r;
      -
      3343 {
      -
      3344 size_t i=1, ii=1;
      -
      3345 if (forward)
      -
      3346 for (; i<len-1; i+=2, ++ii)
      -
      3347 {
      -
      3348 tdata[i ] = in[it.iofs(ii)].r;
      -
      3349 tdata[i+1] = -in[it.iofs(ii)].i;
      -
      3350 }
      -
      3351 else
      -
      3352 for (; i<len-1; i+=2, ++ii)
      -
      3353 {
      -
      3354 tdata[i ] = in[it.iofs(ii)].r;
      -
      3355 tdata[i+1] = in[it.iofs(ii)].i;
      -
      3356 }
      -
      3357 if (i<len)
      -
      3358 tdata[i] = in[it.iofs(ii)].r;
      -
      3359 }
      -
      3360 plan->exec(tdata, fct, false);
      -
      3361 copy_output(it, tdata, out);
      -
      3362 }
      -
      3363 }); // end of parallel region
      -
      3364 }
      -
      -
      3365
      -
      - -
      3367 {
      -
      3368 bool r2h, forward;
      -
      3369
      -
      -
      3370 template <typename T0, typename T, size_t vlen> void operator () (
      -
      3371 const multi_iter<vlen> &it, const cndarr<T0> &in, ndarr<T0> &out, T * buf,
      -
      3372 const pocketfft_r<T0> &plan, T0 fct) const
      -
      3373 {
      -
      3374 copy_input(it, in, buf);
      -
      3375 if ((!r2h) && forward)
      -
      3376 for (size_t i=2; i<it.length_out(); i+=2)
      -
      3377 buf[i] = -buf[i];
      -
      3378 plan.exec(buf, fct, r2h);
      -
      3379 if (r2h && (!forward))
      -
      3380 for (size_t i=2; i<it.length_out(); i+=2)
      -
      3381 buf[i] = -buf[i];
      -
      3382 copy_output(it, buf, out);
      -
      3383 }
      -
      -
      3384 };
      -
      -
      3385
      -
      -
      3386template<typename T> void c2c(const shape_t &shape, const stride_t &stride_in,
      -
      3387 const stride_t &stride_out, const shape_t &axes, bool forward,
      -
      3388 const std::complex<T> *data_in, std::complex<T> *data_out, T fct,
      -
      3389 size_t nthreads=1)
      -
      3390 {
      -
      3391 if (util::prod(shape)==0) return;
      -
      3392 util::sanity_check(shape, stride_in, stride_out, data_in==data_out, axes);
      -
      3393 cndarr<cmplx<T>> ain(data_in, shape, stride_in);
      -
      3394 ndarr<cmplx<T>> aout(data_out, shape, stride_out);
      - -
      3396 }
      -
      -
      3397
      -
      -
      3398template<typename T> void dct(const shape_t &shape,
      -
      3399 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3400 int type, const T *data_in, T *data_out, T fct, bool ortho, size_t nthreads=1)
      -
      3401 {
      -
      3402 if ((type<1) || (type>4)) throw std::invalid_argument("invalid DCT type");
      -
      3403 if (util::prod(shape)==0) return;
      -
      3404 util::sanity_check(shape, stride_in, stride_out, data_in==data_out, axes);
      -
      3405 cndarr<T> ain(data_in, shape, stride_in);
      -
      3406 ndarr<T> aout(data_out, shape, stride_out);
      -
      3407 const ExecDcst exec{ortho, type, true};
      -
      3408 if (type==1)
      -
      3409 general_nd<T_dct1<T>>(ain, aout, axes, fct, nthreads, exec);
      -
      3410 else if (type==4)
      -
      3411 general_nd<T_dcst4<T>>(ain, aout, axes, fct, nthreads, exec);
      -
      3412 else
      - -
      3414 }
      -
      -
      3415
      -
      -
      3416template<typename T> void dst(const shape_t &shape,
      -
      3417 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3418 int type, const T *data_in, T *data_out, T fct, bool ortho, size_t nthreads=1)
      -
      3419 {
      -
      3420 if ((type<1) || (type>4)) throw std::invalid_argument("invalid DST type");
      -
      3421 if (util::prod(shape)==0) return;
      -
      3422 util::sanity_check(shape, stride_in, stride_out, data_in==data_out, axes);
      -
      3423 cndarr<T> ain(data_in, shape, stride_in);
      -
      3424 ndarr<T> aout(data_out, shape, stride_out);
      -
      3425 const ExecDcst exec{ortho, type, false};
      -
      3426 if (type==1)
      -
      3427 general_nd<T_dst1<T>>(ain, aout, axes, fct, nthreads, exec);
      -
      3428 else if (type==4)
      -
      3429 general_nd<T_dcst4<T>>(ain, aout, axes, fct, nthreads, exec);
      -
      3430 else
      - -
      3432 }
      -
      -
      3433
      -
      -
      3434template<typename T> void r2c(const shape_t &shape_in,
      -
      3435 const stride_t &stride_in, const stride_t &stride_out, size_t axis,
      -
      3436 bool forward, const T *data_in, std::complex<T> *data_out, T fct,
      -
      3437 size_t nthreads=1)
      -
      3438 {
      -
      3439 if (util::prod(shape_in)==0) return;
      -
      3440 util::sanity_check(shape_in, stride_in, stride_out, false, axis);
      -
      3441 cndarr<T> ain(data_in, shape_in, stride_in);
      - -
      3443 shape_out[axis] = shape_in[axis]/2 + 1;
      -
      3444 ndarr<cmplx<T>> aout(data_out, shape_out, stride_out);
      -
      3445 general_r2c(ain, aout, axis, forward, fct, nthreads);
      -
      3446 }
      -
      -
      3447
      -
      -
      3448template<typename T> void r2c(const shape_t &shape_in,
      -
      3449 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3450 bool forward, const T *data_in, std::complex<T> *data_out, T fct,
      -
      3451 size_t nthreads=1)
      -
      3452 {
      -
      3453 if (util::prod(shape_in)==0) return;
      -
      3454 util::sanity_check(shape_in, stride_in, stride_out, false, axes);
      -
      3455 r2c(shape_in, stride_in, stride_out, axes.back(), forward, data_in, data_out,
      -
      3456 fct, nthreads);
      -
      3457 if (axes.size()==1) return;
      -
      3458
      - -
      3460 shape_out[axes.back()] = shape_in[axes.back()]/2 + 1;
      -
      3461 auto newaxes = shape_t{axes.begin(), --axes.end()};
      -
      3462 c2c(shape_out, stride_out, stride_out, newaxes, forward, data_out, data_out,
      -
      3463 T(1), nthreads);
      -
      3464 }
      -
      -
      3465
      -
      -
      3466template<typename T> void c2r(const shape_t &shape_out,
      -
      3467 const stride_t &stride_in, const stride_t &stride_out, size_t axis,
      -
      3468 bool forward, const std::complex<T> *data_in, T *data_out, T fct,
      -
      3469 size_t nthreads=1)
      -
      3470 {
      -
      3471 if (util::prod(shape_out)==0) return;
      -
      3472 util::sanity_check(shape_out, stride_in, stride_out, false, axis);
      - -
      3474 shape_in[axis] = shape_out[axis]/2 + 1;
      -
      3475 cndarr<cmplx<T>> ain(data_in, shape_in, stride_in);
      -
      3476 ndarr<T> aout(data_out, shape_out, stride_out);
      -
      3477 general_c2r(ain, aout, axis, forward, fct, nthreads);
      -
      3478 }
      -
      -
      3479
      -
      -
      3480template<typename T> void c2r(const shape_t &shape_out,
      -
      3481 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3482 bool forward, const std::complex<T> *data_in, T *data_out, T fct,
      -
      3483 size_t nthreads=1)
      -
      3484 {
      -
      3485 if (util::prod(shape_out)==0) return;
      -
      3486 if (axes.size()==1)
      -
      3487 return c2r(shape_out, stride_in, stride_out, axes[0], forward,
      -
      3488 data_in, data_out, fct, nthreads);
      -
      3489 util::sanity_check(shape_out, stride_in, stride_out, false, axes);
      -
      3490 auto shape_in = shape_out;
      -
      3491 shape_in[axes.back()] = shape_out[axes.back()]/2 + 1;
      -
      3492 auto nval = util::prod(shape_in);
      - -
      3494 stride_inter.back() = sizeof(cmplx<T>);
      -
      3495 for (int i=int(shape_in.size())-2; i>=0; --i)
      -
      3496 stride_inter[size_t(i)] =
      -
      3497 stride_inter[size_t(i+1)]*ptrdiff_t(shape_in[size_t(i+1)]);
      - -
      3499 auto newaxes = shape_t{axes.begin(), --axes.end()};
      -
      3500 c2c(shape_in, stride_in, stride_inter, newaxes, forward, data_in, tmp.data(),
      -
      3501 T(1), nthreads);
      -
      3502 c2r(shape_out, stride_inter, stride_out, axes.back(), forward,
      -
      3503 tmp.data(), data_out, fct, nthreads);
      -
      3504 }
      -
      -
      3505
      -
      -
      3506template<typename T> void r2r_fftpack(const shape_t &shape,
      -
      3507 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3508 bool real2hermitian, bool forward, const T *data_in, T *data_out, T fct,
      -
      3509 size_t nthreads=1)
      -
      3510 {
      -
      3511 if (util::prod(shape)==0) return;
      -
      3512 util::sanity_check(shape, stride_in, stride_out, data_in==data_out, axes);
      -
      3513 cndarr<T> ain(data_in, shape, stride_in);
      -
      3514 ndarr<T> aout(data_out, shape, stride_out);
      - -
      3516 ExecR2R{real2hermitian, forward});
      -
      3517 }
      -
      -
      3518
      -
      -
      3519template<typename T> void r2r_separable_hartley(const shape_t &shape,
      -
      3520 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3521 const T *data_in, T *data_out, T fct, size_t nthreads=1)
      -
      3522 {
      -
      3523 if (util::prod(shape)==0) return;
      -
      3524 util::sanity_check(shape, stride_in, stride_out, data_in==data_out, axes);
      -
      3525 cndarr<T> ain(data_in, shape, stride_in);
      -
      3526 ndarr<T> aout(data_out, shape, stride_out);
      - -
      3528 false);
      -
      3529 }
      -
      -
      3530
      -
      -
      3531template<typename T> void r2r_genuine_hartley(const shape_t &shape,
      -
      3532 const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes,
      -
      3533 const T *data_in, T *data_out, T fct, size_t nthreads=1)
      -
      3534 {
      -
      3535 if (util::prod(shape)==0) return;
      -
      3536 if (axes.size()==1)
      -
      3537 return r2r_separable_hartley(shape, stride_in, stride_out, axes, data_in,
      -
      3538 data_out, fct, nthreads);
      -
      3539 util::sanity_check(shape, stride_in, stride_out, data_in==data_out, axes);
      -
      3540 shape_t tshp(shape);
      -
      3541 tshp[axes.back()] = tshp[axes.back()]/2+1;
      -
      3542 arr<std::complex<T>> tdata(util::prod(tshp));
      -
      3543 stride_t tstride(shape.size());
      -
      3544 tstride.back()=sizeof(std::complex<T>);
      -
      3545 for (size_t i=tstride.size()-1; i>0; --i)
      -
      3546 tstride[i-1]=tstride[i]*ptrdiff_t(tshp[i]);
      -
      3547 r2c(shape, stride_in, tstride, axes, true, data_in, tdata.data(), fct, nthreads);
      - -
      3549 ndarr<T> aout(data_out, shape, stride_out);
      - - -
      3552 while(iin.remaining()>0)
      -
      3553 {
      -
      3554 auto v = atmp[iin.ofs()];
      -
      3555 aout[iout.ofs()] = v.r+v.i;
      -
      3556 aout[iout.rev_ofs()] = v.r-v.i;
      -
      3557 iin.advance(); iout.advance();
      -
      3558 }
      -
      3559 }
      -
      -
      3560
      -
      3561} // namespace detail
      -
      -
      3562
      -
      3563using detail::FORWARD;
      -
      3564using detail::BACKWARD;
      -
      3565using detail::shape_t;
      -
      3566using detail::stride_t;
      -
      3567using detail::c2c;
      -
      3568using detail::c2r;
      -
      3569using detail::r2c;
      -
      3570using detail::r2r_fftpack;
      -
      3571using detail::r2r_separable_hartley;
      -
      3572using detail::r2r_genuine_hartley;
      -
      3573using detail::dct;
      -
      3574using detail::dst;
      -
      3575
      -
      3576} // namespace pocketfft
      -
      -
      3577
      -
      3578#undef POCKETFFT_NOINLINE
      -
      3579#undef POCKETFFT_RESTRICT
      -
      3580
      -
      3581#endif // POCKETFFT_HDRONLY_H
      -
      MTL::Buffer * buf
      Definition allocator.h:38
      -
      void fft(const device in_T *in, device out_T *out, constant const int &n, constant const int &batch_size, uint3 elem, uint3 grid)
      Definition fft.h:180
      -
      Definition pocketfft.h:2595
      -
      void exec(T c[], T0 fct, bool ortho, int type, bool cosine) const
      Definition pocketfft.h:2609
      -
      size_t length() const
      Definition pocketfft.h:2661
      -
      T_dcst23(size_t length)
      Definition pocketfft.h:2601
      -
      Definition pocketfft.h:2665
      -
      T_dcst4(size_t length)
      Definition pocketfft.h:2673
      -
      size_t length() const
      Definition pocketfft.h:2761
      -
      void exec(T c[], T0 fct, bool, int, bool cosine) const
      Definition pocketfft.h:2687
      -
      Definition pocketfft.h:2539
      -
      void exec(T c[], T0 fct, bool ortho, int, bool) const
      Definition pocketfft.h:2547
      -
      T_dct1(size_t length)
      Definition pocketfft.h:2544
      -
      size_t length() const
      Definition pocketfft.h:2566
      -
      Definition pocketfft.h:2570
      -
      void exec(T c[], T0 fct, bool, int, bool) const
      Definition pocketfft.h:2578
      -
      size_t length() const
      Definition pocketfft.h:2591
      -
      T_dst1(size_t length)
      Definition pocketfft.h:2575
      -
      Definition pocketfft.h:2823
      -
      size_t size() const
      Definition pocketfft.h:2832
      -
      arr_info(const shape_t &shape_, const stride_t &stride_)
      Definition pocketfft.h:2829
      -
      shape_t shp
      Definition pocketfft.h:2825
      -
      const stride_t & stride() const
      Definition pocketfft.h:2835
      -
      stride_t str
      Definition pocketfft.h:2826
      -
      const ptrdiff_t & stride(size_t i) const
      Definition pocketfft.h:2836
      -
      size_t shape(size_t i) const
      Definition pocketfft.h:2834
      -
      size_t ndim() const
      Definition pocketfft.h:2831
      -
      const shape_t & shape() const
      Definition pocketfft.h:2833
      -
      Definition pocketfft.h:181
      -
      arr(size_t n)
      Definition pocketfft.h:209
      -
      arr(arr &&other)
      Definition pocketfft.h:210
      -
      ~arr()
      Definition pocketfft.h:213
      -
      void resize(size_t n)
      Definition pocketfft.h:215
      -
      size_t size() const
      Definition pocketfft.h:229
      -
      arr()
      Definition pocketfft.h:208
      -
      const T & operator[](size_t idx) const
      Definition pocketfft.h:224
      -
      const T * data() const
      Definition pocketfft.h:227
      -
      T & operator[](size_t idx)
      Definition pocketfft.h:223
      -
      T * data()
      Definition pocketfft.h:226
      -
      Definition pocketfft.h:827
      -
      cfftp(size_t length_)
      Definition pocketfft.h:1537
      -
      void exec(T c[], T0 fct, bool fwd) const
      Definition pocketfft.h:1471
      -
      Definition pocketfft.h:2840
      -
      cndarr(const void *data_, const shape_t &shape_, const stride_t &stride_)
      Definition pocketfft.h:2845
      -
      const char * d
      Definition pocketfft.h:2842
      -
      const T & operator[](ptrdiff_t ofs) const
      Definition pocketfft.h:2848
      -
      Definition pocketfft.h:2362
      -
      void exec(cmplx< T > c[], T0 fct, bool fwd) const
      Definition pocketfft.h:2430
      -
      void exec_r(T c[], T0 fct, bool fwd)
      Definition pocketfft.h:2433
      -
      fftblue(size_t length)
      Definition pocketfft.h:2401
      -
      Definition pocketfft.h:2863
      -
      size_t remaining() const
      Definition pocketfft.h:2935
      -
      size_t length_in() const
      Definition pocketfft.h:2931
      -
      void advance(size_t n)
      Definition pocketfft.h:2916
      -
      ptrdiff_t stride_out() const
      Definition pocketfft.h:2934
      -
      ptrdiff_t oofs(size_t j, size_t i) const
      Definition pocketfft.h:2930
      -
      size_t length_out() const
      Definition pocketfft.h:2932
      -
      ptrdiff_t iofs(size_t j, size_t i) const
      Definition pocketfft.h:2928
      -
      multi_iter(const arr_info &iarr_, const arr_info &oarr_, size_t idim_)
      Definition pocketfft.h:2887
      -
      ptrdiff_t oofs(size_t i) const
      Definition pocketfft.h:2929
      -
      ptrdiff_t stride_in() const
      Definition pocketfft.h:2933
      -
      ptrdiff_t iofs(size_t i) const
      Definition pocketfft.h:2927
      -
      Definition pocketfft.h:2853
      -
      T & operator[](ptrdiff_t ofs)
      Definition pocketfft.h:2858
      -
      ndarr(void *data_, const shape_t &shape_, const stride_t &stride_)
      Definition pocketfft.h:2855
      -
      Definition pocketfft.h:2464
      -
      size_t length() const
      Definition pocketfft.h:2493
      -
      void exec(cmplx< T > c[], T0 fct, bool fwd) const
      Definition pocketfft.h:2490
      -
      pocketfft_c(size_t length)
      Definition pocketfft.h:2471
      -
      Definition pocketfft.h:2501
      -
      void exec(T c[], T0 fct, bool fwd) const
      Definition pocketfft.h:2527
      -
      pocketfft_r(size_t length)
      Definition pocketfft.h:2508
      -
      size_t length() const
      Definition pocketfft.h:2530
      -
      Definition pocketfft.h:2967
      -
      size_t remaining() const
      Definition pocketfft.h:3026
      -
      ptrdiff_t ofs() const
      Definition pocketfft.h:3024
      -
      ptrdiff_t rev_ofs() const
      Definition pocketfft.h:3025
      -
      void advance()
      Definition pocketfft.h:2993
      -
      rev_iter(const arr_info &arr_, const shape_t &axes)
      Definition pocketfft.h:2979
      -
      Definition pocketfft.h:1553
      -
      void exec(T c[], T0 fct, bool r2hc) const
      Definition pocketfft.h:2227
      -
      rfftp(size_t length_)
      Definition pocketfft.h:2346
      -
      Definition pocketfft.h:2939
      -
      simple_iter(const arr_info &arr_)
      Definition pocketfft.h:2947
      -
      void advance()
      Definition pocketfft.h:2949
      -
      size_t remaining() const
      Definition pocketfft.h:2963
      -
      ptrdiff_t ofs() const
      Definition pocketfft.h:2962
      -
      Definition pocketfft.h:296
      -
      cmplx< T > operator[](size_t idx) const
      Definition pocketfft.h:356
      -
      sincos_2pibyn(size_t n)
      Definition pocketfft.h:337
      - -
      bool empty() const
      Definition pocketfft.h:597
      -
      bool try_pop(T &val)
      Definition pocketfft.h:584
      -
      void push(T val)
      Definition pocketfft.h:577
      -
      Definition pocketfft.h:543
      -
      void count_down()
      Definition pocketfft.h:552
      -
      latch(size_t n)
      Definition pocketfft.h:550
      -
      bool is_ready()
      Definition pocketfft.h:565
      -
      void wait()
      Definition pocketfft.h:560
      - -
      void shutdown()
      Definition pocketfft.h:753
      -
      thread_pool(size_t nthreads)
      Definition pocketfft.h:720
      -
      void restart()
      Definition pocketfft.h:759
      -
      ~thread_pool()
      Definition pocketfft.h:726
      -
      void submit(std::function< void()> work)
      Definition pocketfft.h:728
      -
      thread_pool()
      Definition pocketfft.h:724
      -
      void free(Buffer buffer)
      -
      static const size_t max_threads
      Definition pocketfft.h:540
      -
      void thread_map(size_t nthreads, Func f)
      Map a function f over nthreads.
      Definition pocketfft.h:786
      -
      thread_pool & get_pool()
      Definition pocketfft.h:766
      -
      size_t & thread_id()
      Definition pocketfft.h:530
      -
      size_t & num_threads()
      Definition pocketfft.h:535
      -
      void general_r2c(const cndarr< T > &in, ndarr< cmplx< T > > &out, size_t axis, bool forward, T fct, size_t nthreads)
      Definition pocketfft.h:3239
      -
      T sin(T)=delete
      -
      void copy_output(const multi_iter< vlen > &it, const cmplx< vtype_t< T > > *src, ndarr< cmplx< T > > &dst)
      Definition pocketfft.h:3096
      -
      typename VTYPE< T >::type vtype_t
      Definition pocketfft.h:3030
      -
      typename add_vec< T >::type add_vec_t
      Definition pocketfft.h:3123
      -
      T cos(T)=delete
      -
      arr< char > alloc_tmp(const shape_t &shape, size_t axsize, size_t elemsize)
      Definition pocketfft.h:3047
      -
      cmplx< T > conj(const cmplx< T > &a)
      Definition pocketfft.h:279
      -
      T sqrt(T)=delete
      -
      std::vector< size_t > shape_t
      Definition pocketfft.h:102
      -
      void PM(T &a, T &b, T c, T d)
      Definition pocketfft.h:273
      -
      void special_mul(const cmplx< T > &v1, const cmplx< T2 > &v2, cmplx< T > &res)
      Definition pocketfft.h:281
      -
      void ROT90(cmplx< T > &a)
      Definition pocketfft.h:287
      -
      void PMINPLACE(T &a, T &b)
      Definition pocketfft.h:275
      -
      std::shared_ptr< T > get_plan(size_t length)
      Definition pocketfft.h:2769
      -
      void general_nd(const cndarr< T > &in, ndarr< T > &out, const shape_t &axes, T0 fct, size_t nthreads, const Exec &exec, const bool allow_inplace=true)
      Definition pocketfft.h:3126
      -
      void ROTX90(cmplx< T > &a)
      Definition pocketfft.h:289
      -
      void copy_hartley(const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)
      Definition pocketfft.h:3180
      -
      void general_c2r(const cndarr< cmplx< T > > &in, ndarr< T > &out, size_t axis, bool forward, T fct, size_t nthreads)
      Definition pocketfft.h:3294
      -
      void * aligned_alloc(size_t align, size_t size)
      Definition pocketfft.h:166
      -
      void aligned_dealloc(void *ptr)
      Definition pocketfft.h:176
      -
      void MPINPLACE(T &a, T &b)
      Definition pocketfft.h:277
      -
      std::vector< ptrdiff_t > stride_t
      Definition pocketfft.h:103
      -
      void copy_input(const multi_iter< vlen > &it, const cndarr< cmplx< T > > &src, cmplx< vtype_t< T > > *dst)
      Definition pocketfft.h:3069
      -
      Definition pocketfft.h:91
      -
      #define POCKETFFT_PARTSTEP5a(u1, u2, twar, twbr, twai, twbi)
      Definition pocketfft.h:982
      -
      #define POCKETFFT_PARTSTEP11(u1, u2, x1, x2, x3, x4, x5, y1, y2, y3, y4, y5)
      Definition pocketfft.h:1245
      -
      #define POCKETFFT_PARTSTEP7a(u1, u2, x1, x2, x3, y1, y2, y3)
      Definition pocketfft.h:1063
      -
      #define POCKETFFT_PARTSTEP3b(u1, u2, twr, twi)
      Definition pocketfft.h:882
      -
      #define POCKETFFT_PREP11(idx)
      Definition pocketfft.h:1225
      -
      #define POCKETFFT_NOINLINE
      Definition pocketfft.h:87
      -
      #define POCKETFFT_PREP5(idx)
      Definition pocketfft.h:975
      -
      #define POCKETFFT_CACHE_SIZE
      Definition pocketfft.h:51
      -
      #define POCKETFFT_PARTSTEP5b(u1, u2, twar, twbr, twai, twbi)
      Definition pocketfft.h:992
      -
      #define POCKETFFT_RESTRICT
      Definition pocketfft.h:88
      -
      #define POCKETFFT_PARTSTEP3a(u1, u2, twr, twi)
      Definition pocketfft.h:876
      -
      #define POCKETFFT_PARTSTEP11a(u1, u2, x1, x2, x3, x4, x5, y1, y2, y3, y4, y5)
      Definition pocketfft.h:1243
      -
      #define POCKETFFT_REARRANGE(rx, ix, ry, iy)
      Definition pocketfft.h:1604
      -
      #define POCKETFFT_PREP3(idx)
      Definition pocketfft.h:872
      -
      #define POCKETFFT_PREP7(idx)
      Definition pocketfft.h:1046
      -
      #define POCKETFFT_PARTSTEP7(u1, u2, x1, x2, x3, y1, y2, y3)
      Definition pocketfft.h:1065
      -
      Definition pocketfft.h:3167
      -
      void operator()(const multi_iter< vlen > &it, const cndarr< cmplx< T0 > > &in, ndarr< cmplx< T0 > > &out, T *buf, const pocketfft_c< T0 > &plan, T0 fct) const
      Definition pocketfft.h:3170
      -
      bool forward
      Definition pocketfft.h:3168
      -
      Definition pocketfft.h:3224
      -
      bool cosine
      Definition pocketfft.h:3227
      -
      void operator()(const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const Tplan &plan, T0 fct) const
      Definition pocketfft.h:3230
      -
      int type
      Definition pocketfft.h:3226
      -
      bool ortho
      Definition pocketfft.h:3225
      -
      Definition pocketfft.h:3212
      -
      void operator()(const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const pocketfft_r< T0 > &plan, T0 fct) const
      Definition pocketfft.h:3213
      -
      Definition pocketfft.h:3367
      -
      bool forward
      Definition pocketfft.h:3368
      -
      Definition pocketfft.h:129
      -
      static constexpr size_t val
      Definition pocketfft.h:129
      -
      Definition pocketfft.h:3029
      -
      Definition pocketfft.h:3120
      -
      Definition pocketfft.h:232
      -
      cmplx(T r_, T i_)
      Definition pocketfft.h:235
      -
      cmplx & operator-=(const cmplx< T2 > &other)
      Definition pocketfft.h:251
      -
      auto operator*(const T2 &other) const -> cmplx< decltype(r *other)>
      Definition pocketfft.h:253
      -
      auto special_mul(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
      Definition pocketfft.h:265
      -
      T i
      Definition pocketfft.h:233
      -
      void Set(T r_)
      Definition pocketfft.h:237
      -
      auto operator-(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
      Definition pocketfft.h:259
      -
      cmplx()
      Definition pocketfft.h:234
      -
      void Set(T r_, T i_)
      Definition pocketfft.h:236
      -
      cmplx & operator*=(T2 other)
      Definition pocketfft.h:240
      -
      auto operator+(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
      Definition pocketfft.h:256
      -
      cmplx & operator+=(const cmplx &other)
      Definition pocketfft.h:238
      -
      T r
      Definition pocketfft.h:233
      - - -
      void deallocate(T *p, size_t)
      Definition pocketfft.h:614
      -
      T * allocate(size_t n)
      Definition pocketfft.h:608
      -
      aligned_allocator(const aligned_allocator< U > &)
      Definition pocketfft.h:605
      -
      Definition pocketfft.h:370
      -
      static size_t largest_prime_factor(size_t n)
      Definition pocketfft.h:371
      -
      static size_t good_size_real(size_t n)
      Definition pocketfft.h:430
      -
      static void sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, const shape_t &axes)
      Definition pocketfft.h:475
      -
      static size_t prod(const shape_t &shape)
      Definition pocketfft.h:456
      -
      static size_t thread_count(size_t nthreads, const shape_t &shape, size_t axis, size_t vlen)
      Definition pocketfft.h:502
      -
      static void sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace)
      Definition pocketfft.h:464
      -
      static void sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, size_t axis)
      Definition pocketfft.h:489
      -
      static size_t good_size_cmplx(size_t n)
      Definition pocketfft.h:401
      -
      static double cost_guess(size_t n)
      Definition pocketfft.h:383
      -
      float f
      Definition bf16.h:16
      -
      - - - - diff --git a/docs/build/html/primitives_8h.html b/docs/build/html/primitives_8h.html deleted file mode 100644 index 9f44bb20..00000000 --- a/docs/build/html/primitives_8h.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - -MLX: mlx/primitives.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      primitives.h File Reference
      -
      -
      -
      #include <unordered_set>
      -#include "mlx/array.h"
      -#include "mlx/device.h"
      -#include "mlx/io/load.h"
      -#include "mlx/stream.h"
      -
      -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Classes

      class  mlx::core::Primitive
       
      class  mlx::core::UnaryPrimitive
       
      class  mlx::core::Abs
       
      class  mlx::core::Add
       
      class  mlx::core::AddMM
       
      class  mlx::core::Arange
       
      class  mlx::core::ArcCos
       
      class  mlx::core::ArcCosh
       
      class  mlx::core::ArcSin
       
      class  mlx::core::ArcSinh
       
      class  mlx::core::ArcTan
       
      class  mlx::core::ArcTan2
       
      class  mlx::core::ArcTanh
       
      class  mlx::core::ArgPartition
       
      class  mlx::core::ArgReduce
       
      class  mlx::core::ArgSort
       
      class  mlx::core::AsType
       
      class  mlx::core::AsStrided
       
      class  mlx::core::BitwiseBinary
       
      class  mlx::core::BlockMaskedMM
       
      class  mlx::core::GatherMM
       
      class  mlx::core::Broadcast
       
      class  mlx::core::Ceil
       
      class  mlx::core::Compiled
       
      class  mlx::core::Concatenate
       
      class  mlx::core::Conjugate
       
      class  mlx::core::Convolution
       
      class  mlx::core::Copy
       
      class  mlx::core::Cos
       
      class  mlx::core::Cosh
       
      class  mlx::core::CustomTransforms
       
      class  mlx::core::Depends
       
      class  mlx::core::Divide
       
      class  mlx::core::DivMod
       
      class  mlx::core::Select
       
      class  mlx::core::Remainder
       
      class  mlx::core::Equal
       
      class  mlx::core::Erf
       
      class  mlx::core::ErfInv
       
      class  mlx::core::Exp
       
      class  mlx::core::Expm1
       
      class  mlx::core::FFT
       
      class  mlx::core::Floor
       
      class  mlx::core::Full
       
      class  mlx::core::Gather
       
      class  mlx::core::Greater
       
      class  mlx::core::GreaterEqual
       
      class  mlx::core::Hadamard
       
      class  mlx::core::Less
       
      class  mlx::core::LessEqual
       
      class  mlx::core::Load
       
      class  mlx::core::Log
       
      class  mlx::core::Log1p
       
      class  mlx::core::LogicalNot
       
      class  mlx::core::LogicalAnd
       
      class  mlx::core::LogicalOr
       
      class  mlx::core::LogAddExp
       
      class  mlx::core::Matmul
       
      class  mlx::core::Maximum
       
      class  mlx::core::Minimum
       
      class  mlx::core::Multiply
       
      class  mlx::core::Negative
       
      class  mlx::core::NotEqual
       
      class  mlx::core::NumberOfElements
       
      class  mlx::core::Pad
       
      class  mlx::core::Partition
       
      class  mlx::core::Power
       
      class  mlx::core::QuantizedMatmul
       
      class  mlx::core::GatherQMM
       
      class  mlx::core::RandomBits
       
      class  mlx::core::Reshape
       
      class  mlx::core::Reduce
       
      class  mlx::core::Round
       
      class  mlx::core::Scan
       
      class  mlx::core::Scatter
       
      class  mlx::core::Sigmoid
       
      class  mlx::core::Sign
       
      class  mlx::core::Sin
       
      class  mlx::core::Sinh
       
      class  mlx::core::Slice
       
      class  mlx::core::SliceUpdate
       
      class  mlx::core::Softmax
       
      class  mlx::core::Sort
       
      class  mlx::core::Split
       
      class  mlx::core::Square
       
      class  mlx::core::Sqrt
       
      class  mlx::core::StopGradient
       
      class  mlx::core::Subtract
       
      class  mlx::core::Tan
       
      class  mlx::core::Tanh
       
      class  mlx::core::Uniform
       
      class  mlx::core::View
       
      class  mlx::core::Transpose
       
      class  mlx::core::QRF
       
      class  mlx::core::SVD
       
      class  mlx::core::Inverse
       
      class  mlx::core::Cholesky
       
      - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - - - -

      -Macros

      #define DEFINE_VMAP()
       
      #define DEFINE_GRADS()
       
      #define DEFINE_PRINT(PRIMITIVE)
       
      #define DEFINE_DEFAULT_IS_EQUIVALENT()
       
      #define DEFINE_INPUT_OUTPUT_SHAPE()
       
      -

      Macro Definition Documentation

      - -

      ◆ DEFINE_DEFAULT_IS_EQUIVALENT

      - -
      -
      - - - - - - - -
      #define DEFINE_DEFAULT_IS_EQUIVALENT()
      -
      -Value:
      bool is_equivalent(const Primitive& other) const override { \
      -
      return true; \
      -
      }
      -
      -
      -
      - -

      ◆ DEFINE_GRADS

      - -
      -
      - - - - - - - -
      #define DEFINE_GRADS()
      -
      -Value:
      std::vector<array> jvp( \
      -
      const std::vector<array>& primals, \
      -
      const std::vector<array>& tangents, \
      -
      const std::vector<int>& argnums) override; \
      -
      \
      -
      std::vector<array> vjp( \
      -
      const std::vector<array>& primals, \
      -
      const std::vector<array>& cotangents, \
      -
      const std::vector<int>& argnums, \
      -
      const std::vector<array>& outputs) override;
      -
      -
      -
      - -

      ◆ DEFINE_INPUT_OUTPUT_SHAPE

      - -
      -
      - - - - - - - -
      #define DEFINE_INPUT_OUTPUT_SHAPE()
      -
      -Value:
      std::vector<std::vector<int>> output_shapes( \
      -
      const std::vector<array>& inputs) override { \
      -
      return {inputs[0].shape()}; \
      -
      }
      -
      -
      -
      - -

      ◆ DEFINE_PRINT

      - -
      -
      - - - - - - - -
      #define DEFINE_PRINT( PRIMITIVE)
      -
      -Value:
      void print(std::ostream& os) override { \
      -
      os << #PRIMITIVE; \
      -
      }
      -
      -
      -
      - -

      ◆ DEFINE_VMAP

      - -
      -
      - - - - - - - -
      #define DEFINE_VMAP()
      -
      -Value:
      virtual std::pair<std::vector<array>, std::vector<int>> vmap( \
      -
      const std::vector<array>& inputs, const std::vector<int>& axes) \
      -
      override;
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/primitives_8h_source.html b/docs/build/html/primitives_8h_source.html deleted file mode 100644 index d6f4b0ab..00000000 --- a/docs/build/html/primitives_8h_source.html +++ /dev/null @@ -1,3010 +0,0 @@ - - - - - - - -MLX: mlx/primitives.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      primitives.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <unordered_set>
      -
      6
      -
      7#include "mlx/array.h"
      -
      8#include "mlx/device.h"
      -
      9#include "mlx/io/load.h"
      -
      10#include "mlx/stream.h"
      -
      11
      -
      -
      12#define DEFINE_VMAP() \
      -
      13 virtual std::pair<std::vector<array>, std::vector<int>> vmap( \
      -
      14 const std::vector<array>& inputs, const std::vector<int>& axes) \
      -
      15 override;
      -
      -
      16
      -
      -
      17#define DEFINE_GRADS() \
      -
      18 std::vector<array> jvp( \
      -
      19 const std::vector<array>& primals, \
      -
      20 const std::vector<array>& tangents, \
      -
      21 const std::vector<int>& argnums) override; \
      -
      22 \
      -
      23 std::vector<array> vjp( \
      -
      24 const std::vector<array>& primals, \
      -
      25 const std::vector<array>& cotangents, \
      -
      26 const std::vector<int>& argnums, \
      -
      27 const std::vector<array>& outputs) override;
      -
      -
      28
      -
      -
      29#define DEFINE_PRINT(PRIMITIVE) \
      -
      30 void print(std::ostream& os) override { \
      -
      31 os << #PRIMITIVE; \
      -
      32 }
      -
      -
      33
      -
      -
      34#define DEFINE_DEFAULT_IS_EQUIVALENT() \
      -
      35 bool is_equivalent(const Primitive& other) const override { \
      -
      36 return true; \
      -
      37 }
      -
      -
      38
      -
      -
      39#define DEFINE_INPUT_OUTPUT_SHAPE() \
      -
      40 std::vector<std::vector<int>> output_shapes( \
      -
      41 const std::vector<array>& inputs) override { \
      -
      42 return {inputs[0].shape()}; \
      -
      43 }
      -
      -
      44
      -
      45namespace mlx::core {
      -
      46
      -
      47// Abstract base class
      -
      -
      48class Primitive {
      -
      49 public:
      -
      50 explicit Primitive(Stream stream) : stream_(stream) {}
      -
      51
      -
      -
      53 const Device& device() {
      -
      54 return stream().device;
      -
      55 }
      -
      -
      56
      -
      -
      58 const Stream& stream() {
      -
      59 return stream_;
      -
      60 }
      -
      -
      61
      -
      69 virtual void eval_cpu(
      -
      70 const std::vector<array>& inputs,
      -
      71 std::vector<array>& outputs) = 0;
      -
      72 virtual void eval_gpu(
      -
      73 const std::vector<array>& inputs,
      -
      74 std::vector<array>& outputs) = 0;
      -
      75
      -
      79 virtual std::vector<array> jvp(
      -
      80 const std::vector<array>& primals,
      -
      81 const std::vector<array>& tangents,
      -
      82 const std::vector<int>& argnums);
      -
      83
      -
      87 virtual std::vector<array> vjp(
      -
      88 const std::vector<array>& primals,
      -
      89 const std::vector<array>& cotangents,
      -
      90 const std::vector<int>& argnums,
      -
      91 const std::vector<array>& outputs);
      -
      92
      -
      99 virtual std::pair<std::vector<array>, std::vector<int>> vmap(
      -
      100 const std::vector<array>& inputs,
      -
      101 const std::vector<int>& axes);
      -
      102
      -
      104 virtual void print(std::ostream& os) = 0;
      -
      105
      -
      -
      107 virtual bool is_equivalent(const Primitive& other) const {
      -
      108 return false;
      -
      109 }
      -
      -
      110
      -
      113 virtual std::vector<std::vector<int>> output_shapes(
      -
      114 const std::vector<array>& inputs);
      -
      115
      -
      116 virtual ~Primitive() = default;
      -
      117 Primitive(const Primitive& other) = delete;
      -
      118 Primitive(Primitive&& other) = delete;
      -
      119 Primitive& operator=(const Primitive& other) = delete;
      -
      120 Primitive& operator=(Primitive&& other) = delete;
      -
      121
      -
      122 private:
      -
      123 // Every primitive stores the stream it should run in
      -
      124 Stream stream_;
      -
      125};
      -
      -
      126
      -
      -
      127class UnaryPrimitive : public Primitive {
      -
      131 public:
      - -
      133
      -
      134 virtual void eval_cpu(const std::vector<array>& inputs, array& output) = 0;
      -
      135 virtual void eval_gpu(const std::vector<array>& inputs, array& output) = 0;
      -
      136
      -
      -
      137 inline void eval_cpu(
      -
      138 const std::vector<array>& inputs,
      -
      139 std::vector<array>& outputs) override {
      -
      140 eval_cpu(inputs, outputs[0]);
      -
      141 }
      -
      -
      -
      142 inline void eval_gpu(
      -
      143 const std::vector<array>& inputs,
      -
      144 std::vector<array>& outputs) override {
      -
      145 eval_gpu(inputs, outputs[0]);
      -
      146 }
      -
      -
      147
      -
      148 virtual ~UnaryPrimitive() = default;
      -
      149 UnaryPrimitive(const UnaryPrimitive& other) = delete;
      - -
      151 UnaryPrimitive& operator=(const UnaryPrimitive& other) = delete;
      - -
      153};
      -
      -
      154
      -
      -
      155class Abs : public UnaryPrimitive {
      -
      156 public:
      - -
      158
      -
      159 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      160 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      161
      - - - - - -
      167
      -
      168 private:
      -
      169 void eval(const std::vector<array>& inputs, array& out);
      -
      170};
      -
      -
      171
      -
      -
      172class Add : public UnaryPrimitive {
      -
      173 public:
      - -
      175
      -
      176 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      177 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      178
      - - - - - -
      184
      -
      185 private:
      -
      186 void eval(const std::vector<array>& inputs, array& out);
      -
      187};
      -
      -
      188
      -
      -
      189class AddMM : public UnaryPrimitive {
      -
      190 public:
      -
      -
      191 explicit AddMM(Stream stream, float alpha, float beta)
      -
      192 : UnaryPrimitive(stream), alpha_(alpha), beta_(beta) {}
      -
      -
      193
      -
      194 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      195 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      196
      -
      197 std::vector<array> vjp(
      -
      198 const std::vector<array>& primals,
      -
      199 const std::vector<array>& cotangents,
      -
      200 const std::vector<int>& argnums,
      -
      201 const std::vector<array>& outputs) override;
      -
      202
      - - -
      205
      -
      206 bool is_equivalent(const Primitive& other) const override;
      -
      207
      -
      208 private:
      -
      209 const float alpha_;
      -
      210 const float beta_;
      -
      211};
      -
      -
      212
      -
      -
      213class Arange : public UnaryPrimitive {
      -
      214 public:
      -
      -
      215 explicit Arange(Stream stream, double start, double stop, double step)
      -
      216 : UnaryPrimitive(stream), start_(start), stop_(stop), step_(step) {}
      -
      -
      217
      -
      218 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      219 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      220
      - -
      222 bool is_equivalent(const Primitive& other) const override;
      -
      223
      -
      224 private:
      -
      225 double start_;
      -
      226 double stop_;
      -
      227 double step_;
      -
      228
      -
      229 void eval(const std::vector<array>& inputs, array& out);
      -
      230};
      -
      -
      231
      -
      -
      232class ArcCos : public UnaryPrimitive {
      -
      233 public:
      - -
      235
      -
      236 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      237 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      238
      - - - - - -
      244
      -
      245 private:
      -
      246 void eval(const std::vector<array>& inputs, array& out);
      -
      247};
      -
      -
      248
      -
      -
      249class ArcCosh : public UnaryPrimitive {
      -
      250 public:
      - -
      252
      -
      253 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      254 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      255
      - - - - - -
      261
      -
      262 private:
      -
      263 void eval(const std::vector<array>& inputs, array& out);
      -
      264};
      -
      -
      265
      -
      -
      266class ArcSin : public UnaryPrimitive {
      -
      267 public:
      - -
      269
      -
      270 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      271 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      272
      - - - - - -
      278
      -
      279 private:
      -
      280 void eval(const std::vector<array>& inputs, array& out);
      -
      281};
      -
      -
      282
      -
      -
      283class ArcSinh : public UnaryPrimitive {
      -
      284 public:
      - -
      286
      -
      287 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      288 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      289
      - - - - - -
      295
      -
      296 private:
      -
      297 void eval(const std::vector<array>& inputs, array& out);
      -
      298};
      -
      -
      299
      -
      -
      300class ArcTan : public UnaryPrimitive {
      -
      301 public:
      - -
      303
      -
      304 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      305 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      306
      - - - - - -
      312
      -
      313 private:
      -
      314 void eval(const std::vector<array>& inputs, array& out);
      -
      315};
      -
      -
      316
      -
      -
      317class ArcTan2 : public UnaryPrimitive {
      -
      318 public:
      - -
      320
      -
      321 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      322 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      323
      - - - - - -
      329
      -
      330 private:
      -
      331 void eval(const std::vector<array>& inputs, array& out);
      -
      332};
      -
      -
      333
      -
      -
      334class ArcTanh : public UnaryPrimitive {
      -
      335 public:
      - -
      337
      -
      338 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      339 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      340
      - - - - - -
      346
      -
      347 private:
      -
      348 void eval(const std::vector<array>& inputs, array& out);
      -
      349};
      -
      -
      350
      -
      - -
      352 public:
      -
      -
      353 explicit ArgPartition(Stream stream, int kth, int axis)
      -
      354 : UnaryPrimitive(stream), kth_(kth), axis_(axis) {}
      -
      -
      355
      -
      356 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      357 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      358
      - - - -
      362 bool is_equivalent(const Primitive& other) const override;
      -
      363
      -
      364 private:
      -
      365 int kth_;
      -
      366 int axis_;
      -
      367
      -
      368 void eval(const std::vector<array>& inputs, array& out);
      -
      369};
      -
      -
      370
      -
      -
      371class ArgReduce : public UnaryPrimitive {
      -
      372 public:
      -
      - - - -
      376 };
      -
      -
      377
      -
      -
      378 explicit ArgReduce(Stream stream, ReduceType reduce_type, int axis)
      -
      379 : UnaryPrimitive(stream), reduce_type_(reduce_type), axis_(axis) {}
      -
      -
      380
      -
      381 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      382 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      383
      - - -
      386 bool is_equivalent(const Primitive& other) const override;
      -
      387 std::vector<std::vector<int>> output_shapes(
      -
      388 const std::vector<array>& inputs) override;
      -
      389
      -
      390 private:
      -
      391 ReduceType reduce_type_;
      -
      392 int axis_;
      -
      393
      -
      394 void eval(const std::vector<array>& inputs, array& out);
      -
      395};
      -
      -
      396
      -
      -
      397class ArgSort : public UnaryPrimitive {
      -
      398 public:
      -
      -
      399 explicit ArgSort(Stream stream, int axis)
      -
      400 : UnaryPrimitive(stream), axis_(axis) {}
      -
      -
      401
      -
      402 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      403 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      404
      - - - -
      408 bool is_equivalent(const Primitive& other) const override;
      -
      409
      -
      410 private:
      -
      411 int axis_;
      -
      412
      -
      413 void eval(const std::vector<array>& inputs, array& out);
      -
      414};
      -
      -
      415
      -
      -
      416class AsType : public UnaryPrimitive {
      -
      417 public:
      -
      -
      418 explicit AsType(Stream stream, Dtype dtype)
      -
      419 : UnaryPrimitive(stream), dtype_(dtype) {}
      -
      -
      420
      -
      421 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      422 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      423
      - - - - -
      428 bool is_equivalent(const Primitive& other) const override;
      -
      429
      -
      430 private:
      -
      431 Dtype dtype_;
      -
      432
      -
      433 void eval(const std::vector<array>& inputs, array& out);
      -
      434};
      -
      -
      435
      -
      -
      436class AsStrided : public UnaryPrimitive {
      -
      437 public:
      -
      -
      438 explicit AsStrided(
      - -
      440 std::vector<int> shape,
      -
      441 std::vector<size_t> strides,
      -
      442 size_t offset)
      - -
      444 shape_(std::move(shape)),
      -
      445 strides_(std::move(strides)),
      -
      446 offset_(offset) {}
      -
      -
      447
      -
      448 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      449 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      450
      - - -
      453 bool is_equivalent(const Primitive& other) const override;
      -
      454
      -
      455 private:
      -
      456 std::vector<int> shape_;
      -
      457 std::vector<size_t> strides_;
      -
      458 size_t offset_;
      -
      459
      -
      460 void eval(const std::vector<array>& inputs, array& out);
      -
      461};
      -
      -
      462
      -
      - -
      464 public:
      -
      465 enum Op { And, Or, Xor, LeftShift, RightShift };
      -
      466
      -
      - -
      468 : UnaryPrimitive(stream), op_(op) {}
      -
      -
      469
      -
      470 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      471 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      472
      - - -
      475 bool is_equivalent(const Primitive& other) const override;
      -
      476 void print(std::ostream& os) override;
      - -
      478
      -
      479 private:
      -
      480 Op op_;
      -
      481};
      -
      -
      482
      -
      - -
      484 public:
      -
      -
      485 explicit BlockMaskedMM(Stream stream, int block_size)
      -
      486 : UnaryPrimitive(stream), block_size_(block_size) {}
      -
      -
      487
      -
      488 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      489 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      490
      -
      491 std::vector<array> vjp(
      -
      492 const std::vector<array>& primals,
      -
      493 const std::vector<array>& cotangents,
      -
      494 const std::vector<int>& argnums,
      -
      495 const std::vector<array>& outputs) override;
      -
      496
      - -
      498 bool is_equivalent(const Primitive& other) const override;
      -
      499
      -
      500 private:
      -
      501 int block_size_;
      -
      502
      -
      503 void eval(const std::vector<array>& inputs, array& out);
      -
      504};
      -
      -
      505
      -
      -
      506class GatherMM : public UnaryPrimitive {
      -
      507 public:
      - -
      509
      -
      510 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      511 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      512
      -
      513 std::vector<array> vjp(
      -
      514 const std::vector<array>& primals,
      -
      515 const std::vector<array>& cotangents,
      -
      516 const std::vector<int>& argnums,
      -
      517 const std::vector<array>& outputs) override;
      -
      518
      - - -
      521
      -
      522 private:
      -
      523 void eval(const std::vector<array>& inputs, array& out);
      -
      524};
      -
      -
      525
      -
      -
      526class Broadcast : public UnaryPrimitive {
      -
      527 public:
      -
      -
      528 explicit Broadcast(Stream stream, const std::vector<int>& shape)
      -
      529 : UnaryPrimitive(stream), shape_(shape) {}
      -
      -
      530
      -
      531 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      532 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      533
      - - - -
      537 bool is_equivalent(const Primitive& other) const override;
      -
      538
      -
      539 private:
      -
      540 std::vector<int> shape_;
      -
      541
      -
      542 void eval(const std::vector<array>& inputs, array& out);
      -
      543};
      -
      -
      544
      -
      -
      545class Ceil : public UnaryPrimitive {
      -
      546 public:
      - -
      548
      -
      549 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      550 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      551
      - - - - - -
      557
      -
      558 private:
      -
      559 void eval(const std::vector<array>& inputs, array& out);
      -
      560};
      -
      -
      561
      -
      -
      562class Compiled : public Primitive {
      -
      563 public:
      -
      564 /*
      -
      565 * The inputs, outputs and tape are either tracers or constants.
      -
      566 * - The tape should not contain the inputs, but it should contain the
      -
      567 * outputs.
      -
      568 * - The tape should also have only one array per primitive for multi-output
      -
      569 * primitives.
      -
      570 * - The constant_ids contains ids of arrays in the input list that are safe
      -
      571 * to treat as scalar constants.
      -
      572 */
      -
      573 explicit Compiled(
      - -
      575 std::vector<array> inputs,
      -
      576 std::vector<array> outputs,
      -
      577 std::vector<array> tape,
      -
      578 std::unordered_set<uintptr_t> constant_ids);
      -
      579
      -
      580 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      581 override;
      -
      582 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      583 override;
      -
      584
      - - -
      587 std::vector<std::vector<int>> output_shapes(
      -
      588 const std::vector<array>& inputs) override;
      -
      589 void print(std::ostream& os) override;
      -
      590 bool is_equivalent(const Primitive& other) const override;
      -
      591
      -
      -
      592 std::string lib_name() const {
      -
      593 return kernel_lib_;
      -
      594 }
      -
      -
      595
      -
      596 private:
      -
      597 const std::vector<array> inputs_;
      -
      598 const std::vector<array> outputs_;
      -
      599 const std::vector<array> tape_;
      -
      600 const std::unordered_set<uintptr_t> constant_ids_;
      -
      601
      -
      602 std::string kernel_lib_;
      -
      603};
      -
      -
      604
      -
      - -
      606 public:
      -
      -
      607 explicit Concatenate(Stream stream, int axis)
      -
      608 : UnaryPrimitive(stream), axis_(axis) {}
      -
      -
      609
      -
      610 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      611 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      612
      - - - -
      616 bool is_equivalent(const Primitive& other) const override;
      -
      617
      -
      618 private:
      -
      619 int axis_;
      -
      620
      -
      621 void eval(const std::vector<array>& inputs, array& out);
      -
      622};
      -
      -
      623
      -
      -
      624class Conjugate : public UnaryPrimitive {
      -
      625 public:
      -
      626 explicit Conjugate(Stream stream) : UnaryPrimitive(stream) {}
      -
      627
      -
      628 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      629 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      630
      - - - - -
      635
      -
      636 private:
      -
      637 void eval(const std::vector<array>& inputs, array& out);
      -
      638};
      -
      -
      639
      -
      - -
      641 public:
      -
      -
      642 explicit Convolution(
      -
      643 Stream stream,
      -
      644 const std::vector<int>& kernel_strides,
      -
      645 const std::vector<int>& padding,
      -
      646 const std::vector<int>& kernel_dilation,
      -
      647 const std::vector<int>& input_dilation,
      -
      648 const int groups = 1,
      -
      649 const bool flip = false)
      -
      650 : UnaryPrimitive(stream),
      -
      651 padding_(padding),
      -
      652 kernel_strides_(kernel_strides),
      -
      653 kernel_dilation_(kernel_dilation),
      -
      654 input_dilation_(input_dilation),
      -
      655 groups_(groups),
      -
      656 flip_(flip) {}
      -
      -
      657
      -
      658 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      659 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      660
      -
      661 std::vector<array> vjp(
      -
      662 const std::vector<array>& primals,
      -
      663 const std::vector<array>& cotangents,
      -
      664 const std::vector<int>& argnums,
      -
      665 const std::vector<array>& outputs) override;
      -
      666
      - -
      668 bool is_equivalent(const Primitive& other) const override;
      -
      669
      -
      670 private:
      -
      671 std::vector<int> padding_;
      -
      672 std::vector<int> kernel_strides_;
      -
      673 std::vector<int> kernel_dilation_;
      -
      674 std::vector<int> input_dilation_;
      -
      675 int groups_;
      -
      676 bool flip_;
      -
      677
      -
      678 void eval(const std::vector<array>& inputs, array& out);
      -
      679};
      -
      -
      680
      -
      -
      681class Copy : public UnaryPrimitive {
      -
      682 public:
      -
      683 explicit Copy(Stream stream) : UnaryPrimitive(stream) {}
      -
      684
      -
      685 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      686 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      687
      - - - - - -
      693
      -
      694 private:
      -
      695 void eval(const std::vector<array>& inputs, array& out);
      -
      696};
      -
      -
      697
      -
      -
      698class Cos : public UnaryPrimitive {
      -
      699 public:
      -
      700 explicit Cos(Stream stream) : UnaryPrimitive(stream) {}
      -
      701
      -
      702 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      703 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      704
      - - - - - -
      710
      -
      711 private:
      -
      712 void eval(const std::vector<array>& inputs, array& out);
      -
      713};
      -
      -
      714
      -
      -
      715class Cosh : public UnaryPrimitive {
      -
      716 public:
      -
      717 explicit Cosh(Stream stream) : UnaryPrimitive(stream) {}
      -
      718
      -
      719 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      720 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      721
      - - - - - -
      727
      -
      728 private:
      -
      729 void eval(const std::vector<array>& inputs, array& out);
      -
      730};
      -
      -
      731
      -
      - -
      733 public:
      -
      - -
      735 Stream stream,
      -
      736 int num_outputs,
      -
      737 std::function<std::vector<array>(
      -
      738 const std::vector<array>&,
      -
      739 const std::vector<array>&,
      -
      740 const std::vector<array>&)> vjp,
      -
      741 std::function<std::vector<array>(
      -
      742 const std::vector<array>&,
      -
      743 const std::vector<array>&,
      -
      744 const std::vector<int>&)> jvp,
      -
      745 std::function<std::pair<std::vector<array>, std::vector<int>>(
      -
      746 const std::vector<array>&,
      -
      747 const std::vector<int>&)> vmap)
      -
      748 : Primitive(stream),
      -
      749 num_outputs_(num_outputs),
      -
      750 vjp_fun_(std::move(vjp)),
      -
      751 jvp_fun_(std::move(jvp)),
      -
      752 vmap_fun_(std::move(vmap)) {}
      -
      -
      753
      -
      754 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      755 override;
      -
      756 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      757 override;
      -
      758
      - - - -
      762
      -
      763 private:
      -
      764 void eval(const std::vector<array>& inputs, std::vector<array>& outputs);
      -
      765
      -
      766 int num_outputs_;
      -
      767
      -
      768 std::function<std::vector<array>(
      -
      769 const std::vector<array>&,
      -
      770 const std::vector<array>&,
      -
      771 const std::vector<array>&)>
      -
      772 vjp_fun_;
      -
      773 std::function<std::vector<array>(
      -
      774 const std::vector<array>&,
      -
      775 const std::vector<array>&,
      -
      776 const std::vector<int>&)>
      -
      777 jvp_fun_;
      -
      778 std::function<std::pair<std::vector<array>, std::vector<int>>(
      -
      779 const std::vector<array>&,
      -
      780 const std::vector<int>&)>
      -
      781 vmap_fun_;
      -
      782};
      -
      -
      783
      -
      -
      784class Depends : public Primitive {
      -
      785 public:
      -
      786 explicit Depends(Stream stream) : Primitive(stream) {}
      -
      787
      -
      788 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      789 override;
      -
      790 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      791 override;
      -
      792
      -
      793 std::vector<array> vjp(
      -
      794 const std::vector<array>& primals,
      -
      795 const std::vector<array>& cotan,
      -
      796 const std::vector<int>& argnums,
      -
      797 const std::vector<array>& outputs) override;
      -
      798
      - -
      800
      -
      801 private:
      -
      802 void eval(const std::vector<array>& inputs, std::vector<array>& outputs);
      -
      803};
      -
      -
      804
      -
      -
      805class Divide : public UnaryPrimitive {
      -
      806 public:
      -
      807 explicit Divide(Stream stream) : UnaryPrimitive(stream) {}
      -
      808
      -
      809 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      810 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      811
      - - - - - -
      817
      -
      818 private:
      -
      819 void eval(const std::vector<array>& inputs, array& out);
      -
      820};
      -
      -
      821
      -
      -
      822class DivMod : public Primitive {
      -
      823 public:
      -
      824 explicit DivMod(Stream stream) : Primitive(stream) {}
      -
      825
      -
      826 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      827 override;
      -
      828 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      829 override;
      -
      830
      - - - - -
      -
      835 std::vector<std::vector<int>> output_shapes(
      -
      836 const std::vector<array>& inputs) override {
      -
      837 return std::vector{inputs[0].shape(), inputs[0].shape()};
      -
      838 }
      -
      -
      839
      -
      840 private:
      -
      841 void eval(const std::vector<array>& inputs, std::vector<array>& outputs);
      -
      842};
      -
      -
      843
      -
      -
      844class Select : public UnaryPrimitive {
      -
      845 public:
      -
      846 explicit Select(Stream stream) : UnaryPrimitive(stream) {}
      -
      847
      -
      848 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      849 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      850
      - - - - - -
      856
      -
      857 private:
      -
      858 void eval(const std::vector<array>& inputs, array& out);
      -
      859};
      -
      -
      860
      -
      -
      861class Remainder : public UnaryPrimitive {
      -
      862 public:
      -
      863 explicit Remainder(Stream stream) : UnaryPrimitive(stream) {}
      -
      864
      -
      865 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      866 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      867
      - - - - - -
      873
      -
      874 private:
      -
      875 void eval(const std::vector<array>& inputs, array& out);
      -
      876};
      -
      -
      877
      -
      -
      878class Equal : public UnaryPrimitive {
      -
      879 public:
      -
      -
      880 explicit Equal(Stream stream, bool equal_nan = false)
      -
      881 : UnaryPrimitive(stream), equal_nan_(equal_nan) {}
      -
      -
      882
      -
      883 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      884 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      885
      - - - - -
      890
      -
      -
      891 void print(std::ostream& os) override {
      -
      892 if (equal_nan_) {
      -
      893 os << "NaNEqual";
      -
      894 } else {
      -
      895 os << "Equal";
      -
      896 }
      -
      897 }
      -
      -
      898
      -
      899 private:
      -
      900 void eval(const std::vector<array>& inputs, array& out);
      -
      901 bool equal_nan_;
      -
      902};
      -
      -
      903
      -
      -
      904class Erf : public UnaryPrimitive {
      -
      905 public:
      -
      906 explicit Erf(Stream stream) : UnaryPrimitive(stream) {}
      -
      907
      -
      908 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      909 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      910
      - - - - - -
      916
      -
      917 private:
      -
      918 void eval(const std::vector<array>& inputs, array& out);
      -
      919};
      -
      -
      920
      -
      -
      921class ErfInv : public UnaryPrimitive {
      -
      922 public:
      -
      923 explicit ErfInv(Stream stream) : UnaryPrimitive(stream) {}
      -
      924
      -
      925 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      926 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      927
      - - - - - -
      933
      -
      934 private:
      -
      935 void eval(const std::vector<array>& inputs, array& out);
      -
      936};
      -
      -
      937
      -
      -
      938class Exp : public UnaryPrimitive {
      -
      939 public:
      -
      940 explicit Exp(Stream stream) : UnaryPrimitive(stream) {}
      -
      941
      -
      942 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      943 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      944
      - - - - - -
      950
      -
      951 private:
      -
      952 void eval(const std::vector<array>& inputs, array& out);
      -
      953};
      -
      -
      954
      -
      -
      955class Expm1 : public UnaryPrimitive {
      -
      956 public:
      -
      957 explicit Expm1(Stream stream) : UnaryPrimitive(stream) {}
      -
      958
      -
      959 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      960 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      961
      - - - - -
      966
      -
      967 private:
      -
      968 void eval(const std::vector<array>& inputs, array& out);
      -
      969};
      -
      -
      970
      -
      -
      971class FFT : public UnaryPrimitive {
      -
      972 public:
      -
      -
      973 explicit FFT(
      -
      974 Stream stream,
      -
      975 const std::vector<size_t>& axes,
      -
      976 bool inverse,
      -
      977 bool real)
      -
      978 : UnaryPrimitive(stream), axes_(axes), inverse_(inverse), real_(real) {}
      -
      -
      979
      -
      980 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      981 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      982
      - - - -
      986
      -
      987 bool is_equivalent(const Primitive& other) const override;
      -
      988
      -
      989 private:
      -
      990 std::vector<size_t> axes_;
      -
      991 bool inverse_;
      -
      992 bool real_;
      -
      993
      -
      994 void eval(const std::vector<array>& inputs, array& out);
      -
      995};
      -
      -
      996
      -
      -
      997class Floor : public UnaryPrimitive {
      -
      998 public:
      -
      999 explicit Floor(Stream stream) : UnaryPrimitive(stream) {}
      -
      1000
      -
      1001 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1002 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1003
      - - - - - -
      1009
      -
      1010 private:
      -
      1011 void eval(const std::vector<array>& inputs, array& out);
      -
      1012};
      -
      -
      1013
      -
      -
      1014class Full : public UnaryPrimitive {
      -
      1015 public:
      -
      1016 explicit Full(Stream stream) : UnaryPrimitive(stream) {}
      -
      1017
      -
      1018 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1019 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1020
      - - - - -
      1025
      -
      1026 private:
      -
      1027 void eval(const std::vector<array>& inputs, array& out);
      -
      1028};
      -
      -
      1029
      -
      -
      1030class Gather : public UnaryPrimitive {
      -
      1031 public:
      -
      -
      1032 explicit Gather(
      -
      1033 Stream stream,
      -
      1034 const std::vector<int>& axes,
      -
      1035 const std::vector<int>& slice_sizes)
      -
      1036 : UnaryPrimitive(stream), axes_(axes), slice_sizes_(slice_sizes) {}
      -
      -
      1037
      -
      1038 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1039 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1040
      - - - -
      1044 bool is_equivalent(const Primitive& other) const override;
      -
      1045
      -
      1046 private:
      -
      1047 void eval(const std::vector<array>& inputs, array& out);
      -
      1048 std::vector<int> axes_;
      -
      1049 std::vector<int> slice_sizes_;
      -
      1050};
      -
      -
      1051
      -
      -
      1052class Greater : public UnaryPrimitive {
      -
      1053 public:
      -
      1054 explicit Greater(Stream stream) : UnaryPrimitive(stream) {}
      -
      1055
      -
      1056 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1057 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1058
      - - - - - -
      1064
      -
      1065 private:
      -
      1066 void eval(const std::vector<array>& inputs, array& out);
      -
      1067};
      -
      -
      1068
      -
      - -
      1070 public:
      -
      1071 explicit GreaterEqual(Stream stream) : UnaryPrimitive(stream) {}
      -
      1072
      -
      1073 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1074 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1075
      - - - - - -
      1081
      -
      1082 private:
      -
      1083 void eval(const std::vector<array>& inputs, array& out);
      -
      1084};
      -
      -
      1085
      -
      -
      1086class Hadamard : public UnaryPrimitive {
      -
      1087 public:
      -
      -
      1088 explicit Hadamard(Stream stream, float scale)
      -
      1089 : UnaryPrimitive(stream), scale_(scale) {}
      -
      -
      1090
      -
      1091 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1092 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1093
      - - - - -
      1098
      -
      1099 bool is_equivalent(const Primitive& other) const override;
      -
      1100
      -
      1101 private:
      -
      1102 float scale_;
      -
      1103
      -
      1104 void eval(const std::vector<array>& inputs, array& out);
      -
      1105};
      -
      -
      1106
      -
      -
      1107class Less : public UnaryPrimitive {
      -
      1108 public:
      -
      1109 explicit Less(Stream stream) : UnaryPrimitive(stream) {}
      -
      1110
      -
      1111 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1112 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1113
      - - - - - -
      1119
      -
      1120 private:
      -
      1121 void eval(const std::vector<array>& inputs, array& out);
      -
      1122};
      -
      -
      1123
      -
      - -
      1125 public:
      -
      1126 explicit LessEqual(Stream stream) : UnaryPrimitive(stream) {}
      -
      1127
      -
      1128 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1129 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1130
      - - - - - -
      1136
      -
      1137 private:
      -
      1138 void eval(const std::vector<array>& inputs, array& out);
      -
      1139};
      -
      -
      1140
      -
      -
      1141class Load : public UnaryPrimitive {
      -
      1142 public:
      -
      -
      1143 explicit Load(
      -
      1144 Stream stream,
      -
      1145 std::shared_ptr<io::Reader> reader,
      -
      1146 size_t offset,
      -
      1147 bool swap_endianness = false)
      -
      1148 : UnaryPrimitive(stream),
      -
      1149 reader_(std::move(reader)),
      -
      1150 offset_(offset),
      -
      1151 swap_endianness_(swap_endianness) {
      -
      1152 if (stream.device == Device::gpu) {
      -
      1153 io_stream();
      -
      1154 }
      -
      1155 }
      -
      -
      1156
      -
      1157 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1158 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1159
      - -
      1161
      -
      1162 private:
      -
      1163 Stream& io_stream() {
      -
      1164 static Stream io_stream = new_stream(Device::cpu);
      -
      1165 return io_stream;
      -
      1166 };
      -
      1167 void eval(const std::vector<array>& inputs, array& out);
      -
      1168 std::shared_ptr<io::Reader> reader_;
      -
      1169 size_t offset_;
      -
      1170 bool swap_endianness_;
      -
      1171};
      -
      -
      1172
      -
      -
      1173class Log : public UnaryPrimitive {
      -
      1174 public:
      -
      1175 enum Base { two, ten, e };
      -
      1176
      -
      -
      1177 explicit Log(Stream stream, Base base)
      -
      1178 : UnaryPrimitive(stream), base_(base) {}
      -
      -
      1179
      -
      1180 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1181 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1182
      - - - - -
      1187
      -
      -
      1188 void print(std::ostream& os) override {
      -
      1189 switch (base_) {
      -
      1190 case e:
      -
      1191 os << "Log";
      -
      1192 break;
      -
      1193 case two:
      -
      1194 os << "Log2";
      -
      1195 break;
      -
      1196 case ten:
      -
      1197 os << "Log10";
      -
      1198 break;
      -
      1199 }
      -
      1200 }
      -
      -
      1201
      -
      1202 private:
      -
      1203 Base base_;
      -
      1204 void eval(const std::vector<array>& inputs, array& out);
      -
      1205};
      -
      -
      1206
      -
      -
      1207class Log1p : public UnaryPrimitive {
      -
      1208 public:
      -
      1209 explicit Log1p(Stream stream) : UnaryPrimitive(stream) {}
      -
      1210
      -
      1211 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1212 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1213
      - - - - -
      1218
      -
      1219 private:
      -
      1220 void eval(const std::vector<array>& inputs, array& out);
      -
      1221};
      -
      -
      1222
      -
      - -
      1224 public:
      -
      1225 explicit LogicalNot(Stream stream) : UnaryPrimitive(stream) {}
      -
      1226
      -
      1227 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1228 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1229
      - - - - - -
      1235
      -
      1236 private:
      -
      1237 void eval(const std::vector<array>& inputs, array& out);
      -
      1238};
      -
      -
      1239
      -
      - -
      1241 public:
      -
      1242 explicit LogicalAnd(Stream stream) : UnaryPrimitive(stream) {}
      -
      1243
      -
      1244 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1245 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1246
      - - - - - -
      1252
      -
      1253 private:
      -
      1254 void eval(const std::vector<array>& inputs, array& out);
      -
      1255};
      -
      -
      1256
      -
      - -
      1258 public:
      -
      1259 explicit LogicalOr(Stream stream) : UnaryPrimitive(stream) {}
      -
      1260
      -
      1261 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1262 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1263
      - - - - - -
      1269
      -
      1270 private:
      -
      1271 void eval(const std::vector<array>& inputs, array& out);
      -
      1272};
      -
      -
      1273
      -
      - -
      1275 public:
      -
      1276 explicit LogAddExp(Stream stream) : UnaryPrimitive(stream) {}
      -
      1277
      -
      1278 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1279 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1280
      - - - - - -
      1286
      -
      1287 private:
      -
      1288 void eval(const std::vector<array>& inputs, array& out);
      -
      1289};
      -
      -
      1290
      -
      -
      1291class Matmul : public UnaryPrimitive {
      -
      1292 public:
      -
      1293 explicit Matmul(Stream stream) : UnaryPrimitive(stream) {}
      -
      1294
      -
      1295 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1296 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1297
      -
      1298 std::vector<array> vjp(
      -
      1299 const std::vector<array>& primals,
      -
      1300 const std::vector<array>& cotangents,
      -
      1301 const std::vector<int>& argnums,
      -
      1302 const std::vector<array>& outputs) override;
      -
      1303
      - - - -
      1307};
      -
      -
      1308
      -
      -
      1309class Maximum : public UnaryPrimitive {
      -
      1310 public:
      -
      1311 explicit Maximum(Stream stream) : UnaryPrimitive(stream) {}
      -
      1312
      -
      1313 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1314 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1315
      - - - - - -
      1321
      -
      1322 private:
      -
      1323 void eval(const std::vector<array>& inputs, array& out);
      -
      1324};
      -
      -
      1325
      -
      -
      1326class Minimum : public UnaryPrimitive {
      -
      1327 public:
      -
      1328 explicit Minimum(Stream stream) : UnaryPrimitive(stream) {}
      -
      1329
      -
      1330 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1331 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1332
      - - - - - -
      1338
      -
      1339 private:
      -
      1340 void eval(const std::vector<array>& inputs, array& out);
      -
      1341};
      -
      -
      1342
      -
      -
      1343class Multiply : public UnaryPrimitive {
      -
      1344 public:
      -
      1345 explicit Multiply(Stream stream) : UnaryPrimitive(stream) {}
      -
      1346
      -
      1347 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1348 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1349
      - - - - - -
      1355
      -
      1356 private:
      -
      1357 void eval(const std::vector<array>& inputs, array& out);
      -
      1358};
      -
      -
      1359
      -
      -
      1360class Negative : public UnaryPrimitive {
      -
      1361 public:
      -
      1362 explicit Negative(Stream stream) : UnaryPrimitive(stream) {}
      -
      1363
      -
      1364 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1365 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1366
      - - - - - -
      1372
      -
      1373 private:
      -
      1374 void eval(const std::vector<array>& inputs, array& out);
      -
      1375};
      -
      -
      1376
      -
      -
      1377class NotEqual : public UnaryPrimitive {
      -
      1378 public:
      -
      1379 explicit NotEqual(Stream stream) : UnaryPrimitive(stream) {}
      -
      1380
      -
      1381 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1382 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1383
      - - - - - -
      1389
      -
      1390 private:
      -
      1391 void eval(const std::vector<array>& inputs, array& out);
      -
      1392};
      -
      -
      1393
      -
      - -
      1395 public:
      -
      - -
      1397 Stream stream,
      -
      1398 std::vector<int> axes,
      -
      1399 bool inverted,
      -
      1400 Dtype dtype)
      -
      1401 : UnaryPrimitive(stream),
      -
      1402 axes_(std::move(axes)),
      -
      1403 inverted_(inverted),
      -
      1404 dtype_(dtype) {}
      -
      -
      1405
      -
      1406 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1407 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1408
      - - -
      1411 bool is_equivalent(const Primitive& other) const override;
      -
      -
      1412 std::vector<std::vector<int>> output_shapes(
      -
      1413 const std::vector<array>& inputs) override {
      -
      1414 return {{}};
      -
      1415 }
      -
      -
      1416
      -
      1417 private:
      -
      1418 std::vector<int> axes_;
      -
      1419 bool inverted_;
      -
      1420 Dtype dtype_;
      -
      1421
      -
      1422 void eval(const std::vector<array>& inputs, array& out);
      -
      1423};
      -
      -
      1424
      -
      -
      1425class Pad : public UnaryPrimitive {
      -
      1426 public:
      -
      -
      1427 explicit Pad(
      -
      1428 Stream stream,
      -
      1429 const std::vector<int>& axes,
      -
      1430 const std::vector<int>& low_pad_size,
      -
      1431 const std::vector<int>& high_pad_size)
      -
      1432 : UnaryPrimitive(stream),
      -
      1433 axes_(axes),
      -
      1434 low_pad_size_(low_pad_size),
      -
      1435 high_pad_size_(high_pad_size) {}
      -
      -
      1436
      -
      1437 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1438 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1439
      - - - -
      1443 bool is_equivalent(const Primitive& other) const override;
      -
      1444
      -
      1445 private:
      -
      1446 std::vector<int> axes_;
      -
      1447 std::vector<int> low_pad_size_;
      -
      1448 std::vector<int> high_pad_size_;
      -
      1449
      -
      1450 void eval(const std::vector<array>& inputs, array& out);
      -
      1451};
      -
      -
      1452
      -
      - -
      1454 public:
      -
      -
      1455 explicit Partition(Stream stream, int kth, int axis)
      -
      1456 : UnaryPrimitive(stream), kth_(kth), axis_(axis) {}
      -
      -
      1457
      -
      1458 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1459 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1460
      - - - - -
      1465 bool is_equivalent(const Primitive& other) const override;
      -
      1466
      -
      1467 private:
      -
      1468 int kth_;
      -
      1469 int axis_;
      -
      1470
      -
      1471 void eval(const std::vector<array>& inputs, array& out);
      -
      1472};
      -
      -
      1473
      -
      -
      1474class Power : public UnaryPrimitive {
      -
      1475 public:
      -
      1476 explicit Power(Stream stream) : UnaryPrimitive(stream) {}
      -
      1477
      -
      1478 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1479 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1480
      - - - - - -
      1486
      -
      1487 private:
      -
      1488 void eval(const std::vector<array>& inputs, array& out);
      -
      1489};
      -
      -
      1490
      -
      - -
      1492 public:
      -
      - -
      1494 Stream stream,
      -
      1495 int group_size,
      -
      1496 int bits,
      -
      1497 bool transpose)
      -
      1498 : UnaryPrimitive(stream),
      -
      1499 group_size_(group_size),
      -
      1500 bits_(bits),
      -
      1501 transpose_(transpose) {}
      -
      -
      1502
      -
      1503 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1504 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1505
      - - - -
      1509 bool is_equivalent(const Primitive& other) const override;
      -
      1510
      -
      1511 private:
      -
      1512 int group_size_;
      -
      1513 int bits_;
      -
      1514 bool transpose_;
      -
      1515
      -
      1516 void eval(const std::vector<array>& inputs, array& out);
      -
      1517};
      -
      -
      1518
      -
      - -
      1520 public:
      -
      -
      1521 explicit GatherQMM(Stream stream, int group_size, int bits, bool transpose)
      -
      1522 : UnaryPrimitive(stream),
      -
      1523 group_size_(group_size),
      -
      1524 bits_(bits),
      -
      1525 transpose_(transpose) {}
      -
      -
      1526
      -
      1527 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1528 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1529
      - - - -
      1533 bool is_equivalent(const Primitive& other) const override;
      -
      1534
      -
      1535 private:
      -
      1536 int group_size_;
      -
      1537 int bits_;
      -
      1538 bool transpose_;
      -
      1539
      -
      1540 void eval(const std::vector<array>& inputs, array& out);
      -
      1541};
      -
      -
      1542
      -
      - -
      1544 public:
      -
      -
      1545 explicit RandomBits(Stream stream, const std::vector<int>& shape, int width)
      -
      1546 : UnaryPrimitive(stream), shape_(shape), width_(width) {}
      -
      -
      1547
      -
      1548 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1549 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1550
      - - -
      1553 bool is_equivalent(const Primitive& other) const override;
      -
      1554
      -
      1555 private:
      -
      1556 std::vector<int> shape_;
      -
      1557 int width_;
      -
      1558
      -
      1559 void eval(const std::vector<array>& inputs, array& out);
      -
      1560};
      -
      -
      1561
      -
      -
      1562class Reshape : public UnaryPrimitive {
      -
      1563 public:
      -
      -
      1564 explicit Reshape(Stream stream, const std::vector<int>& shape)
      -
      1565 : UnaryPrimitive(stream), shape_(shape) {}
      -
      -
      1566
      -
      1567 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1568 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1569
      - - - -
      1573 bool is_equivalent(const Primitive& other) const override;
      -
      1574
      -
      1575 private:
      -
      1576 std::vector<int> shape_;
      -
      1577
      -
      1578 void eval(const std::vector<array>& inputs, array& out);
      -
      1579
      -
      1580 std::pair<bool, std::vector<size_t>> prepare_reshape(
      -
      1581 const array& in,
      -
      1582 const array& out);
      -
      1583 void shared_buffer_reshape(
      -
      1584 const array& in,
      -
      1585 const std::vector<size_t>& out_strides,
      -
      1586 array& out);
      -
      1587};
      -
      -
      1588
      -
      -
      1589class Reduce : public UnaryPrimitive {
      -
      1590 public:
      -
      1591 enum ReduceType { And, Or, Sum, Prod, Min, Max };
      -
      1592
      -
      -
      1593 explicit Reduce(
      -
      1594 Stream stream,
      -
      1595 ReduceType reduce_type,
      -
      1596 const std::vector<int>& axes)
      -
      1597 : UnaryPrimitive(stream), reduce_type_(reduce_type), axes_(axes) {}
      -
      -
      1598
      -
      1599 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1600 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1601
      - -
      1603
      -
      1604 std::vector<array> vjp(
      -
      1605 const std::vector<array>& primals,
      -
      1606 const std::vector<array>& cotangents,
      -
      1607 const std::vector<int>& argnums,
      -
      1608 const std::vector<array>& outputs) override;
      -
      1609
      -
      1610 std::vector<std::vector<int>> output_shapes(
      -
      1611 const std::vector<array>& inputs) override;
      -
      1612
      -
      -
      1613 void print(std::ostream& os) override {
      -
      1614 switch (reduce_type_) {
      -
      1615 case And:
      -
      1616 os << "And";
      -
      1617 break;
      -
      1618 case Or:
      -
      1619 os << "Or";
      -
      1620 break;
      -
      1621 case Sum:
      -
      1622 os << "Sum";
      -
      1623 break;
      -
      1624 case Prod:
      -
      1625 os << "Prod";
      -
      1626 break;
      -
      1627 case Min:
      -
      1628 os << "Min";
      -
      1629 break;
      -
      1630 case Max:
      -
      1631 os << "Max";
      -
      1632 break;
      -
      1633 }
      -
      1634 }
      -
      -
      1635 bool is_equivalent(const Primitive& other) const override;
      -
      1636
      -
      1637 private:
      -
      1638 ReduceType reduce_type_;
      -
      1639 std::vector<int> axes_;
      -
      1640
      -
      1641 void eval(const std::vector<array>& inputs, array& out);
      -
      1642};
      -
      -
      1643
      -
      -
      1644class Round : public UnaryPrimitive {
      -
      1645 public:
      -
      1646 explicit Round(Stream stream) : UnaryPrimitive(stream) {}
      -
      1647
      -
      1648 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1649 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1650
      - - - - - -
      1656
      -
      1657 private:
      -
      1658 void eval(const std::vector<array>& inputs, array& out);
      -
      1659};
      -
      -
      1660
      -
      -
      1661class Scan : public UnaryPrimitive {
      -
      1662 public:
      - -
      1664
      -
      -
      1665 explicit Scan(
      -
      1666 Stream stream,
      -
      1667 ReduceType reduce_type,
      -
      1668 int axis,
      -
      1669 bool reverse,
      -
      1670 bool inclusive)
      -
      1671 : UnaryPrimitive(stream),
      -
      1672 reduce_type_(reduce_type),
      -
      1673 axis_(axis),
      -
      1674 reverse_(reverse),
      -
      1675 inclusive_(inclusive) {}
      -
      -
      1676
      -
      1677 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1678 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1679
      - - -
      1682
      -
      -
      1683 void print(std::ostream& os) override {
      -
      1684 os << "Cum";
      -
      1685 switch (reduce_type_) {
      -
      1686 case Sum:
      -
      1687 os << "Sum";
      -
      1688 break;
      -
      1689 case Prod:
      -
      1690 os << "Prod";
      -
      1691 break;
      -
      1692 case Min:
      -
      1693 os << "Min";
      -
      1694 break;
      -
      1695 case Max:
      -
      1696 os << "Max";
      -
      1697 break;
      -
      1698 }
      -
      1699 }
      -
      -
      1700 bool is_equivalent(const Primitive& other) const override;
      -
      1701
      -
      1702 private:
      -
      1703 ReduceType reduce_type_;
      -
      1704 int axis_;
      -
      1705 bool reverse_;
      -
      1706 bool inclusive_;
      -
      1707
      -
      1708 void eval(const std::vector<array>& inputs, array& out);
      -
      1709};
      -
      -
      1710
      -
      -
      1711class Scatter : public UnaryPrimitive {
      -
      1712 public:
      - -
      1714
      -
      -
      1715 explicit Scatter(
      -
      1716 Stream stream,
      -
      1717 ReduceType reduce_type,
      -
      1718 const std::vector<int>& axes)
      -
      1719 : UnaryPrimitive(stream), reduce_type_(reduce_type), axes_(axes) {}
      -
      -
      1720
      -
      1721 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1722 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1723
      - - -
      1726
      -
      -
      1727 void print(std::ostream& os) override {
      -
      1728 os << "Scatter";
      -
      1729 switch (reduce_type_) {
      -
      1730 case Sum:
      -
      1731 os << " Sum";
      -
      1732 break;
      -
      1733 case Prod:
      -
      1734 os << " Prod";
      -
      1735 break;
      -
      1736 case Min:
      -
      1737 os << " Min";
      -
      1738 break;
      -
      1739 case Max:
      -
      1740 os << " Max";
      -
      1741 break;
      -
      1742 case None:
      -
      1743 break;
      -
      1744 }
      -
      1745 }
      -
      -
      1746 bool is_equivalent(const Primitive& other) const override;
      -
      1747
      -
      1748 private:
      -
      1749 void eval(const std::vector<array>& inputs, array& out);
      -
      1750 ReduceType reduce_type_;
      -
      1751 std::vector<int> axes_;
      -
      1752};
      -
      -
      1753
      -
      -
      1754class Sigmoid : public UnaryPrimitive {
      -
      1755 public:
      -
      1756 explicit Sigmoid(Stream stream) : UnaryPrimitive(stream) {}
      -
      1757
      -
      1758 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1759 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1760
      - - - - - -
      1766
      -
      1767 private:
      -
      1768 void eval(const std::vector<array>& inputs, array& out);
      -
      1769};
      -
      -
      1770
      -
      -
      1771class Sign : public UnaryPrimitive {
      -
      1772 public:
      -
      1773 explicit Sign(Stream stream) : UnaryPrimitive(stream) {}
      -
      1774
      -
      1775 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1776 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1777
      - - - - - -
      1783
      -
      1784 private:
      -
      1785 void eval(const std::vector<array>& inputs, array& out);
      -
      1786};
      -
      -
      1787
      -
      -
      1788class Sin : public UnaryPrimitive {
      -
      1789 public:
      -
      1790 explicit Sin(Stream stream) : UnaryPrimitive(stream) {}
      -
      1791
      -
      1792 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1793 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1794
      - - - - - -
      1800
      -
      1801 private:
      -
      1802 void eval(const std::vector<array>& inputs, array& out);
      -
      1803};
      -
      -
      1804
      -
      -
      1805class Sinh : public UnaryPrimitive {
      -
      1806 public:
      -
      1807 explicit Sinh(Stream stream) : UnaryPrimitive(stream) {}
      -
      1808
      -
      1809 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1810 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1811
      - - - - - -
      1817
      -
      1818 private:
      -
      1819 void eval(const std::vector<array>& inputs, array& out);
      -
      1820};
      -
      -
      1821
      -
      -
      1822class Slice : public UnaryPrimitive {
      -
      1823 public:
      -
      -
      1824 explicit Slice(
      -
      1825 Stream stream,
      -
      1826 const std::vector<int>& start_indices,
      -
      1827 const std::vector<int>& end_indices,
      -
      1828 const std::vector<int>& strides)
      -
      1829 : UnaryPrimitive(stream),
      -
      1830 start_indices_(start_indices),
      -
      1831 end_indices_(end_indices),
      -
      1832 strides_(strides) {}
      -
      -
      1833
      -
      1834 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1835 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1836
      - - - -
      1840 bool is_equivalent(const Primitive& other) const override;
      -
      1841
      -
      1842 private:
      -
      1843 std::vector<int> start_indices_;
      -
      1844 std::vector<int> end_indices_;
      -
      1845 std::vector<int> strides_;
      -
      1846
      -
      1847 void eval(const std::vector<array>& inputs, array& out);
      -
      1848};
      -
      -
      1849
      -
      - -
      1851 public:
      -
      -
      1852 explicit SliceUpdate(
      -
      1853 Stream stream,
      -
      1854 const std::vector<int>& start_indices,
      -
      1855 const std::vector<int>& end_indices,
      -
      1856 const std::vector<int>& strides)
      -
      1857 : UnaryPrimitive(stream),
      -
      1858 start_indices_(start_indices),
      -
      1859 end_indices_(end_indices),
      -
      1860 strides_(strides) {}
      -
      -
      1861
      -
      1862 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1863 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1864
      - - - -
      1868 bool is_equivalent(const Primitive& other) const override;
      -
      1869
      -
      1870 private:
      -
      1871 std::vector<int> start_indices_;
      -
      1872 std::vector<int> end_indices_;
      -
      1873 std::vector<int> strides_;
      -
      1874
      -
      1875 void eval(const std::vector<array>& inputs, array& out);
      -
      1876
      -
      1877 std::tuple<int64_t, std::vector<int64_t>> prepare_slice(const array& in);
      -
      1878};
      -
      -
      1879
      -
      -
      1880class Softmax : public UnaryPrimitive {
      -
      1881 public:
      -
      -
      1882 explicit Softmax(Stream stream, bool precise)
      -
      1883 : UnaryPrimitive(stream), precise_(precise) {}
      -
      -
      1884
      -
      1885 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1886 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1887
      - - - - -
      1892
      -
      1893 bool is_equivalent(const Primitive& other) const override;
      -
      1894
      -
      1895 private:
      -
      1896 void eval(const std::vector<array>& inputs, array& out);
      -
      1897 bool precise_;
      -
      1898};
      -
      -
      1899
      -
      -
      1900class Sort : public UnaryPrimitive {
      -
      1901 public:
      -
      -
      1902 explicit Sort(Stream stream, int axis)
      -
      1903 : UnaryPrimitive(stream), axis_(axis) {}
      -
      -
      1904
      -
      1905 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1906 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1907
      - - - - -
      1912 bool is_equivalent(const Primitive& other) const override;
      -
      1913
      -
      1914 private:
      -
      1915 int axis_;
      -
      1916
      -
      1917 void eval(const std::vector<array>& inputs, array& out);
      -
      1918};
      -
      -
      1919
      -
      -
      1920class Split : public Primitive {
      -
      1921 public:
      -
      -
      1922 explicit Split(Stream stream, const std::vector<int>& indices, int axis)
      -
      1923 : Primitive(stream), indices_(indices), axis_(axis) {}
      -
      -
      1924
      -
      1925 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      1926 override;
      -
      1927 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      1928 override;
      -
      1929
      - - - -
      1933 bool is_equivalent(const Primitive& other) const override;
      -
      1934
      -
      1935 private:
      -
      1936 void eval(const std::vector<array>& inputs, std::vector<array>& outputs);
      -
      1937
      -
      1938 std::vector<int> indices_;
      -
      1939 int axis_;
      -
      1940};
      -
      -
      1941
      -
      -
      1942class Square : public UnaryPrimitive {
      -
      1943 public:
      -
      1944 explicit Square(Stream stream) : UnaryPrimitive(stream) {}
      -
      1945
      -
      1946 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1947 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1948
      - - - - - -
      1954
      -
      1955 private:
      -
      1956 void eval(const std::vector<array>& inputs, array& out);
      -
      1957};
      -
      -
      1958
      -
      -
      1959class Sqrt : public UnaryPrimitive {
      -
      1960 public:
      -
      -
      1961 explicit Sqrt(Stream stream, bool recip = false)
      -
      1962 : UnaryPrimitive(stream), recip_(recip) {}
      -
      -
      1963
      -
      1964 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1965 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1966
      - - - -
      1970 bool is_equivalent(const Primitive& other) const override;
      -
      1971
      -
      -
      1972 void print(std::ostream& os) override {
      -
      1973 if (recip_) {
      -
      1974 os << "Rsqrt";
      -
      1975 } else {
      -
      1976 os << "Sqrt";
      -
      1977 }
      -
      1978 }
      -
      -
      1979
      -
      1980 private:
      -
      1981 void eval(const std::vector<array>& inputs, array& out);
      -
      1982 bool recip_;
      -
      1983};
      -
      -
      1984
      -
      - -
      1986 public:
      -
      1987 explicit StopGradient(Stream stream) : UnaryPrimitive(stream) {}
      -
      1988
      -
      1989 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      1990 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      1991
      - - - - -
      1996
      -
      1997 private:
      -
      1998 void eval(const std::vector<array>& inputs, array& out);
      -
      1999};
      -
      -
      2000
      -
      -
      2001class Subtract : public UnaryPrimitive {
      -
      2002 public:
      -
      2003 explicit Subtract(Stream stream) : UnaryPrimitive(stream) {}
      -
      2004
      -
      2005 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2006 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2007
      - - - - - -
      2013
      -
      2014 private:
      -
      2015 void eval(const std::vector<array>& inputs, array& out);
      -
      2016};
      -
      -
      2017
      -
      -
      2018class Tan : public UnaryPrimitive {
      -
      2019 public:
      -
      2020 explicit Tan(Stream stream) : UnaryPrimitive(stream) {}
      -
      2021
      -
      2022 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2023 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2024
      - - - - - -
      2030
      -
      2031 private:
      -
      2032 void eval(const std::vector<array>& inputs, array& out);
      -
      2033};
      -
      -
      2034
      -
      -
      2035class Tanh : public UnaryPrimitive {
      -
      2036 public:
      -
      2037 explicit Tanh(Stream stream) : UnaryPrimitive(stream) {}
      -
      2038
      -
      2039 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2040 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2041
      - - - - - -
      2047
      -
      2048 private:
      -
      2049 void eval(const std::vector<array>& inputs, array& out);
      -
      2050};
      -
      -
      2051
      -
      -
      2052class Uniform : public UnaryPrimitive {
      -
      2053 public:
      -
      2054 explicit Uniform(Stream stream) : UnaryPrimitive(stream) {}
      -
      2055
      -
      2056 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2057 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2058
      - - - -
      2062
      -
      2063 private:
      -
      2064 void eval(const std::vector<array>& inputs, array& out);
      -
      2065};
      -
      -
      2066
      -
      -
      2067class View : public UnaryPrimitive {
      -
      2068 public:
      -
      -
      2069 explicit View(Stream stream, Dtype dtype)
      -
      2070 : UnaryPrimitive(stream), dtype_(dtype) {}
      -
      -
      2071
      -
      2072 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2073 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2074
      - -
      2076 void print(std::ostream& os) override;
      -
      2077 bool is_equivalent(const Primitive& other) const override;
      -
      2078
      -
      2079 private:
      -
      2080 Dtype dtype_;
      -
      2081};
      -
      -
      2082
      -
      - -
      2084 public:
      -
      -
      2085 explicit Transpose(Stream stream, const std::vector<int>& axes)
      -
      2086 : UnaryPrimitive(stream), axes_(axes) {}
      -
      -
      2087
      -
      2088 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2089 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2090
      - - - -
      2094 bool is_equivalent(const Primitive& other) const override;
      -
      2095
      -
      2096 private:
      -
      2097 std::vector<int> axes_;
      -
      2098
      -
      2099 void eval(const std::vector<array>& inputs, array& out);
      -
      2100};
      -
      -
      2101
      -
      2102/* QR Factorization primitive. */
      -
      -
      2103class QRF : public Primitive {
      -
      2104 public:
      -
      2105 explicit QRF(Stream stream) : Primitive(stream) {}
      -
      2106
      -
      2107 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      2108 override;
      -
      2109 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      2110 override;
      -
      2111
      - -
      2113
      -
      2114 private:
      -
      2115 void eval(const std::vector<array>& inputs, std::vector<array>& outputs);
      -
      2116};
      -
      -
      2117
      -
      2118/* SVD primitive. */
      -
      -
      2119class SVD : public Primitive {
      -
      2120 public:
      -
      2121 explicit SVD(Stream stream) : Primitive(stream) {}
      -
      2122
      -
      2123 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      2124 override;
      -
      2125 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
      -
      2126 override;
      -
      2127
      - - -
      2130
      -
      2131 private:
      -
      2132 void eval(const std::vector<array>& inputs, std::vector<array>& outputs);
      -
      2133};
      -
      -
      2134
      -
      2135/* Matrix inversion primitive. */
      -
      -
      2136class Inverse : public UnaryPrimitive {
      -
      2137 public:
      -
      -
      2138 explicit Inverse(Stream stream, bool tri, bool upper)
      -
      2139 : UnaryPrimitive(stream), tri_(tri), upper_(upper) {}
      -
      -
      2140
      -
      2141 void eval_cpu(const std::vector<array>& inputs, array& output) override;
      -
      2142 void eval_gpu(const std::vector<array>& inputs, array& output) override;
      -
      2143
      - - -
      2146
      -
      2147 private:
      -
      2148 void eval(const std::vector<array>& inputs, array& output);
      -
      2149 bool tri_;
      -
      2150 bool upper_;
      -
      2151};
      -
      -
      2152
      -
      -
      2153class Cholesky : public UnaryPrimitive {
      -
      2154 public:
      -
      -
      2155 explicit Cholesky(Stream stream, bool upper)
      -
      2156 : UnaryPrimitive(stream), upper_(upper) {}
      -
      -
      2157
      -
      2158 void eval_cpu(const std::vector<array>& inputs, array& out) override;
      -
      2159 void eval_gpu(const std::vector<array>& inputs, array& out) override;
      -
      2160
      - - -
      2163
      -
      2164 private:
      -
      2165 void eval(const std::vector<array>& inputs, array& output);
      -
      2166 bool upper_;
      -
      2167};
      -
      -
      2168
      -
      2169} // namespace mlx::core
      - -
      Definition primitives.h:155
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Abs(Stream stream)
      Definition primitives.h:157
      -
      void print(std::ostream &os) override
      Print the primitive.
      Definition primitives.h:164
      -
      std::vector< std::vector< int > > output_shapes(const std::vector< array > &inputs) override
      Get the output shapes of the primitive.
      Definition primitives.h:166
      -
      bool is_equivalent(const Primitive &other) const override
      Equivalence check defaults to false unless overridden by the primitive.
      Definition primitives.h:165
      -
      Definition primitives.h:172
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Add(Stream stream)
      Definition primitives.h:174
      -
      Definition primitives.h:189
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      AddMM(Stream stream, float alpha, float beta)
      Definition primitives.h:191
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      Definition primitives.h:213
      -
      Arange(Stream stream, double start, double stop, double step)
      Definition primitives.h:215
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:232
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      ArcCos(Stream stream)
      Definition primitives.h:234
      -
      Definition primitives.h:249
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      ArcCosh(Stream stream)
      Definition primitives.h:251
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:266
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      ArcSin(Stream stream)
      Definition primitives.h:268
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:283
      -
      ArcSinh(Stream stream)
      Definition primitives.h:285
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:317
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      ArcTan2(Stream stream)
      Definition primitives.h:319
      -
      Definition primitives.h:300
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      ArcTan(Stream stream)
      Definition primitives.h:302
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:334
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      ArcTanh(Stream stream)
      Definition primitives.h:336
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:351
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      ArgPartition(Stream stream, int kth, int axis)
      Definition primitives.h:353
      -
      Definition primitives.h:371
      -
      ReduceType
      Definition primitives.h:373
      -
      @ ArgMin
      Definition primitives.h:374
      -
      @ ArgMax
      Definition primitives.h:375
      -
      ArgReduce(Stream stream, ReduceType reduce_type, int axis)
      Definition primitives.h:378
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:397
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      ArgSort(Stream stream, int axis)
      Definition primitives.h:399
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:436
      -
      AsStrided(Stream stream, std::vector< int > shape, std::vector< size_t > strides, size_t offset)
      Definition primitives.h:438
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:416
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      AsType(Stream stream, Dtype dtype)
      Definition primitives.h:418
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:463
      -
      BitwiseBinary(Stream stream, Op op)
      Definition primitives.h:467
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Op
      Definition primitives.h:465
      -
      @ And
      Definition primitives.h:465
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:483
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      BlockMaskedMM(Stream stream, int block_size)
      Definition primitives.h:485
      -
      Definition primitives.h:526
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Broadcast(Stream stream, const std::vector< int > &shape)
      Definition primitives.h:528
      -
      Definition primitives.h:545
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Ceil(Stream stream)
      Definition primitives.h:547
      -
      Definition primitives.h:2153
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Cholesky(Stream stream, bool upper)
      Definition primitives.h:2155
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:562
      -
      Compiled(Stream stream, std::vector< array > inputs, std::vector< array > outputs, std::vector< array > tape, std::unordered_set< uintptr_t > constant_ids)
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      Definition primitives.h:605
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Concatenate(Stream stream, int axis)
      Definition primitives.h:607
      -
      Definition primitives.h:624
      -
      Conjugate(Stream stream)
      Definition primitives.h:626
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:640
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Convolution(Stream stream, const std::vector< int > &kernel_strides, const std::vector< int > &padding, const std::vector< int > &kernel_dilation, const std::vector< int > &input_dilation, const int groups=1, const bool flip=false)
      Definition primitives.h:642
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      Definition primitives.h:681
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Copy(Stream stream)
      Definition primitives.h:683
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:698
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Cos(Stream stream)
      Definition primitives.h:700
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:715
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Cosh(Stream stream)
      Definition primitives.h:717
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:732
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      CustomTransforms(Stream stream, int num_outputs, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> vjp, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> jvp, std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> vmap)
      Definition primitives.h:734
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      Definition primitives.h:784
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotan, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      Depends(Stream stream)
      Definition primitives.h:786
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      Definition primitives.h:822
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      DivMod(Stream stream)
      Definition primitives.h:824
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      Definition primitives.h:805
      -
      Divide(Stream stream)
      Definition primitives.h:807
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:878
      -
      Equal(Stream stream, bool equal_nan=false)
      Definition primitives.h:880
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:904
      -
      Erf(Stream stream)
      Definition primitives.h:906
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:921
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      ErfInv(Stream stream)
      Definition primitives.h:923
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:938
      -
      Exp(Stream stream)
      Definition primitives.h:940
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:955
      -
      Expm1(Stream stream)
      Definition primitives.h:957
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:971
      -
      FFT(Stream stream, const std::vector< size_t > &axes, bool inverse, bool real)
      Definition primitives.h:973
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:997
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Floor(Stream stream)
      Definition primitives.h:999
      -
      Definition primitives.h:1014
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Full(Stream stream)
      Definition primitives.h:1016
      -
      Definition primitives.h:1030
      -
      Gather(Stream stream, const std::vector< int > &axes, const std::vector< int > &slice_sizes)
      Definition primitives.h:1032
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:506
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      GatherMM(Stream stream)
      Definition primitives.h:508
      -
      Definition primitives.h:1519
      -
      GatherQMM(Stream stream, int group_size, int bits, bool transpose)
      Definition primitives.h:1521
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1069
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      GreaterEqual(Stream stream)
      Definition primitives.h:1071
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1052
      -
      Greater(Stream stream)
      Definition primitives.h:1054
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1086
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Hadamard(Stream stream, float scale)
      Definition primitives.h:1088
      -
      Definition primitives.h:2136
      -
      void eval_gpu(const std::vector< array > &inputs, array &output) override
      -
      Inverse(Stream stream, bool tri, bool upper)
      Definition primitives.h:2138
      -
      void eval_cpu(const std::vector< array > &inputs, array &output) override
      -
      Definition primitives.h:1124
      -
      LessEqual(Stream stream)
      Definition primitives.h:1126
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1107
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Less(Stream stream)
      Definition primitives.h:1109
      -
      Definition primitives.h:1141
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Load(Stream stream, std::shared_ptr< io::Reader > reader, size_t offset, bool swap_endianness=false)
      Definition primitives.h:1143
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1207
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Log1p(Stream stream)
      Definition primitives.h:1209
      -
      Definition primitives.h:1274
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      LogAddExp(Stream stream)
      Definition primitives.h:1276
      -
      Definition primitives.h:1173
      -
      Base
      Definition primitives.h:1175
      -
      Log(Stream stream, Base base)
      Definition primitives.h:1177
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1240
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      LogicalAnd(Stream stream)
      Definition primitives.h:1242
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1223
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      LogicalNot(Stream stream)
      Definition primitives.h:1225
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1257
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      LogicalOr(Stream stream)
      Definition primitives.h:1259
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1291
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs) override
      The vector-Jacobian product.
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Matmul(Stream stream)
      Definition primitives.h:1293
      -
      Definition primitives.h:1309
      -
      Maximum(Stream stream)
      Definition primitives.h:1311
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1326
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Minimum(Stream stream)
      Definition primitives.h:1328
      -
      Definition primitives.h:1343
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Multiply(Stream stream)
      Definition primitives.h:1345
      -
      Definition primitives.h:1360
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Negative(Stream stream)
      Definition primitives.h:1362
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1377
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      NotEqual(Stream stream)
      Definition primitives.h:1379
      -
      Definition primitives.h:1394
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      NumberOfElements(Stream stream, std::vector< int > axes, bool inverted, Dtype dtype)
      Definition primitives.h:1396
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1425
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Pad(Stream stream, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size)
      Definition primitives.h:1427
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1453
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Partition(Stream stream, int kth, int axis)
      Definition primitives.h:1455
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1474
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Power(Stream stream)
      Definition primitives.h:1476
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:48
      -
      virtual void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      virtual std::vector< array > vjp(const std::vector< array > &primals, const std::vector< array > &cotangents, const std::vector< int > &argnums, const std::vector< array > &outputs)
      The vector-Jacobian product.
      -
      virtual ~Primitive()=default
      -
      Primitive(const Primitive &other)=delete
      -
      Primitive(Primitive &&other)=delete
      -
      const Stream & stream()
      The stream the primitive will run on.
      Definition primitives.h:58
      -
      Primitive & operator=(Primitive &&other)=delete
      -
      virtual bool is_equivalent(const Primitive &other) const
      Equivalence check defaults to false unless overridden by the primitive.
      Definition primitives.h:107
      -
      Primitive & operator=(const Primitive &other)=delete
      -
      virtual std::vector< std::vector< int > > output_shapes(const std::vector< array > &inputs)
      Get the output shapes of the primitive.
      -
      const Device & device()
      The device the primitive will run on.
      Definition primitives.h:53
      -
      virtual std::vector< array > jvp(const std::vector< array > &primals, const std::vector< array > &tangents, const std::vector< int > &argnums)
      The Jacobian-vector product.
      -
      virtual std::pair< std::vector< array >, std::vector< int > > vmap(const std::vector< array > &inputs, const std::vector< int > &axes)
      The primitive must know how to vectorize itself across the given axes.
      -
      virtual void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs)=0
      -
      virtual void print(std::ostream &os)=0
      Print the primitive.
      -
      Primitive(Stream stream)
      Definition primitives.h:50
      -
      Definition primitives.h:2103
      -
      QRF(Stream stream)
      Definition primitives.h:2105
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      Definition primitives.h:1491
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      QuantizedMatmul(Stream stream, int group_size, int bits, bool transpose)
      Definition primitives.h:1493
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1543
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      RandomBits(Stream stream, const std::vector< int > &shape, int width)
      Definition primitives.h:1545
      -
      Definition primitives.h:1589
      -
      Reduce(Stream stream, ReduceType reduce_type, const std::vector< int > &axes)
      Definition primitives.h:1593
      -
      ReduceType
      Definition primitives.h:1591
      -
      @ And
      Definition primitives.h:1591
      -
      bool is_equivalent(const Primitive &other) const override
      Equivalence check defaults to false unless overridden by the primitive.
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:861
      -
      Remainder(Stream stream)
      Definition primitives.h:863
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1562
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Reshape(Stream stream, const std::vector< int > &shape)
      Definition primitives.h:1564
      -
      Definition primitives.h:1644
      -
      Round(Stream stream)
      Definition primitives.h:1646
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:2119
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      SVD(Stream stream)
      Definition primitives.h:2121
      -
      Definition primitives.h:1661
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      ReduceType
      Definition primitives.h:1663
      -
      @ Max
      Definition primitives.h:1663
      -
      bool is_equivalent(const Primitive &other) const override
      Equivalence check defaults to false unless overridden by the primitive.
      -
      Scan(Stream stream, ReduceType reduce_type, int axis, bool reverse, bool inclusive)
      Definition primitives.h:1665
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1711
      -
      bool is_equivalent(const Primitive &other) const override
      Equivalence check defaults to false unless overridden by the primitive.
      -
      ReduceType
      Definition primitives.h:1713
      -
      @ Max
      Definition primitives.h:1713
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void print(std::ostream &os) override
      Print the primitive.
      Definition primitives.h:1727
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Scatter(Stream stream, ReduceType reduce_type, const std::vector< int > &axes)
      Definition primitives.h:1715
      -
      Definition primitives.h:844
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Select(Stream stream)
      Definition primitives.h:846
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1754
      -
      Sigmoid(Stream stream)
      Definition primitives.h:1756
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1771
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Sign(Stream stream)
      Definition primitives.h:1773
      -
      Definition primitives.h:1788
      -
      Sin(Stream stream)
      Definition primitives.h:1790
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1805
      -
      Sinh(Stream stream)
      Definition primitives.h:1807
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1822
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Slice(Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)
      Definition primitives.h:1824
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1850
      -
      SliceUpdate(Stream stream, const std::vector< int > &start_indices, const std::vector< int > &end_indices, const std::vector< int > &strides)
      Definition primitives.h:1852
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1880
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Softmax(Stream stream, bool precise)
      Definition primitives.h:1882
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1900
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Sort(Stream stream, int axis)
      Definition primitives.h:1902
      -
      Definition primitives.h:1920
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      -
      Split(Stream stream, const std::vector< int > &indices, int axis)
      Definition primitives.h:1922
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      -
      Definition primitives.h:1959
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Sqrt(Stream stream, bool recip=false)
      Definition primitives.h:1961
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:1942
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Square(Stream stream)
      Definition primitives.h:1944
      -
      Definition primitives.h:1985
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      StopGradient(Stream stream)
      Definition primitives.h:1987
      -
      Definition primitives.h:2001
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Subtract(Stream stream)
      Definition primitives.h:2003
      -
      Definition primitives.h:2018
      -
      Tan(Stream stream)
      Definition primitives.h:2020
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:2035
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Tanh(Stream stream)
      Definition primitives.h:2037
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:2083
      -
      Transpose(Stream stream, const std::vector< int > &axes)
      Definition primitives.h:2085
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition primitives.h:127
      -
      UnaryPrimitive & operator=(const UnaryPrimitive &other)=delete
      -
      UnaryPrimitive(Stream stream)
      An abstract base class for a primitive with a single output.
      Definition primitives.h:132
      -
      virtual void eval_gpu(const std::vector< array > &inputs, array &output)=0
      -
      UnaryPrimitive(UnaryPrimitive &&other)=delete
      -
      virtual void eval_cpu(const std::vector< array > &inputs, array &output)=0
      -
      void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      Definition primitives.h:142
      -
      UnaryPrimitive(const UnaryPrimitive &other)=delete
      -
      void eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
      A primitive must know how to evaluate itself on the CPU/GPU for the given inputs and populate the out...
      Definition primitives.h:137
      -
      UnaryPrimitive & operator=(UnaryPrimitive &&other)=delete
      -
      virtual ~UnaryPrimitive()=default
      -
      Definition primitives.h:2052
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Uniform(Stream stream)
      Definition primitives.h:2054
      -
      Definition primitives.h:2067
      -
      void eval_cpu(const std::vector< array > &inputs, array &out) override
      -
      View(Stream stream, Dtype dtype)
      Definition primitives.h:2069
      -
      void eval_gpu(const std::vector< array > &inputs, array &out) override
      -
      Definition array.h:20
      -
      Op op
      Definition binary.h:141
      - -
      array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
      Computes the standard deviation of the elements of an array.
      -
      array tri(int n, int m, int k, Dtype type, StreamOrDevice s={})
      -
      array transpose(const array &a, std::vector< int > axes, StreamOrDevice s={})
      Permutes the dimensions according to the given axes.
      - -
      Definition allocator.h:7
      -
      std::pair< std::vector< array >, std::vector< array > > jvp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)
      Computes the output and Jacobian-vector product (JVP) of a function.
      -
      std::pair< std::vector< array >, std::vector< array > > vjp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)
      Computes the output and vector-Jacobian product (VJP) of a function.
      -
      void eval(std::vector< array > outputs)
      -
      std::function< array(const array &) vmap)(const std::function< array(const array &)> &fun, int in_axis=0, int out_axis=0)
      Automatically vectorize a unary function over the requested axes.
      -
      #define DEFINE_DEFAULT_IS_EQUIVALENT()
      Definition primitives.h:34
      -
      #define DEFINE_PRINT(PRIMITIVE)
      Definition primitives.h:29
      -
      #define DEFINE_INPUT_OUTPUT_SHAPE()
      Definition primitives.h:39
      -
      #define DEFINE_GRADS()
      Definition primitives.h:17
      -
      #define DEFINE_VMAP()
      Definition primitives.h:12
      - -
      Definition ops.h:37
      -
      Definition binary_ops.h:270
      -
      Definition ops.h:185
      -
      Definition ops.h:163
      -
      Definition ops.h:29
      -
      Definition ops.h:78
      -
      Definition ops.h:141
      -
      Definition binary_ops.h:277
      -
      Definition ops.h:119
      -
      Definition device.h:7
      -
      Definition dtype.h:13
      -
      Definition stream.h:9
      -
      Device device
      Definition stream.h:11
      -
      - - - - diff --git a/docs/build/html/python/_autosummary/mlx.core.Device.html b/docs/build/html/python/_autosummary/mlx.core.Device.html index ede6677c..a8bcc049 100644 --- a/docs/build/html/python/_autosummary/mlx.core.Device.html +++ b/docs/build/html/python/_autosummary/mlx.core.Device.html @@ -8,7 +8,7 @@ - mlx.core.Device — MLX 0.17.3 documentation + mlx.core.Device — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home +
      @@ -361,6 +361,7 @@
    • mlx.core.pad
    • mlx.core.power
    • mlx.core.prod
    • +
    • mlx.core.put_along_axis
    • mlx.core.quantize
    • mlx.core.quantized_matmul
    • mlx.core.radians
    • @@ -469,6 +470,7 @@
    • mlx.core.linalg.norm
    • mlx.core.linalg.cholesky
    • mlx.core.linalg.cholesky_inv
    • +
    • mlx.core.linalg.cross
    • mlx.core.linalg.qr
    • mlx.core.linalg.svd
    @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    Returns:
    -

    The output array with the specified shape and values.

    +

    The output array.

    Return type:

    array

    diff --git a/docs/build/html/python/_autosummary/mlx.core.tan.html b/docs/build/html/python/_autosummary/mlx.core.tan.html index 703f4993..a38688be 100644 --- a/docs/build/html/python/_autosummary/mlx.core.tan.html +++ b/docs/build/html/python/_autosummary/mlx.core.tan.html @@ -8,7 +8,7 @@ - mlx.core.tan — MLX 0.17.3 documentation + mlx.core.tan — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -361,6 +361,7 @@
  • mlx.core.pad
  • mlx.core.power
  • mlx.core.prod
  • +
  • mlx.core.put_along_axis
  • mlx.core.quantize
  • mlx.core.quantized_matmul
  • mlx.core.radians
  • @@ -469,6 +470,7 @@
  • mlx.core.linalg.norm
  • mlx.core.linalg.cholesky
  • mlx.core.linalg.cholesky_inv
  • +
  • mlx.core.linalg.cross
  • mlx.core.linalg.qr
  • mlx.core.linalg.svd
  • @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
  • +
  • mlx.nn.CELU +
  • mlx.nn.Conv1d @@ -1161,6 +1173,10 @@ parameters as the first argument to the function returned by
  • Embedding
  • +
  • mlx.nn.ELU +
  • mlx.nn.GELU @@ -1205,6 +1221,14 @@ parameters as the first argument to the function returned by
  • Linear
  • +
  • mlx.nn.LogSigmoid +
  • +
  • mlx.nn.LogSoftmax +
  • mlx.nn.LSTM @@ -1265,6 +1289,10 @@ parameters as the first argument to the function returned by
  • Sequential
  • +
  • mlx.nn.Sigmoid +
  • mlx.nn.SiLU @@ -1316,6 +1344,10 @@ parameters as the first argument to the function returned by
  • elu
  • +
  • mlx.nn.celu +
  • mlx.nn.gelu diff --git a/docs/build/html/python/nn/_autosummary/mlx.nn.ALiBi.html b/docs/build/html/python/nn/_autosummary/mlx.nn.ALiBi.html index 5abc0530..8e9ee9f0 100644 --- a/docs/build/html/python/nn/_autosummary/mlx.nn.ALiBi.html +++ b/docs/build/html/python/nn/_autosummary/mlx.nn.ALiBi.html @@ -8,7 +8,7 @@ - mlx.nn.ALiBi — MLX 0.17.3 documentation + mlx.nn.ALiBi — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -361,6 +361,7 @@
  • mlx.core.pad
  • mlx.core.power
  • mlx.core.prod
  • +
  • mlx.core.put_along_axis
  • mlx.core.quantize
  • mlx.core.quantized_matmul
  • mlx.core.radians
  • @@ -469,6 +470,7 @@
  • mlx.core.linalg.norm
  • mlx.core.linalg.cholesky
  • mlx.core.linalg.cholesky_inv
  • +
  • mlx.core.linalg.cross
  • mlx.core.linalg.qr
  • mlx.core.linalg.svd
  • @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • @@ -865,36 +873,42 @@ document.write(`

      BatchNorm(num_features[, eps, momentum, ...])

      Applies Batch Normalization over a 2D or 3D input.

      -

      Conv1d(in_channels, out_channels, kernel_size)

      +

      CELU([alpha])

      +

      Applies the Continuously Differentiable Exponential Linear Unit.

      + +

      Conv1d(in_channels, out_channels, kernel_size)

      Applies a 1-dimensional convolution over the multi-channel input sequence.

      -

      Conv2d(in_channels, out_channels, kernel_size)

      +

      Conv2d(in_channels, out_channels, kernel_size)

      Applies a 2-dimensional convolution over the multi-channel input image.

      -

      Conv3d(in_channels, out_channels, kernel_size)

      +

      Conv3d(in_channels, out_channels, kernel_size)

      Applies a 3-dimensional convolution over the multi-channel input image.

      -

      ConvTranspose1d(in_channels, out_channels, ...)

      +

      ConvTranspose1d(in_channels, out_channels, ...)

      Applies a 1-dimensional transposed convolution over the multi-channel input sequence.

      -

      ConvTranspose2d(in_channels, out_channels, ...)

      +

      ConvTranspose2d(in_channels, out_channels, ...)

      Applies a 2-dimensional transposed convolution over the multi-channel input image.

      -

      ConvTranspose3d(in_channels, out_channels, ...)

      +

      ConvTranspose3d(in_channels, out_channels, ...)

      Applies a 3-dimensional transposed convolution over the multi-channel input image.

      -

      Dropout([p])

      +

      Dropout([p])

      Randomly zero a portion of the elements during training.

      -

      Dropout2d([p])

      +

      Dropout2d([p])

      Apply 2D channel-wise dropout during training.

      -

      Dropout3d([p])

      +

      Dropout3d([p])

      Apply 3D channel-wise dropout during training.

      -

      Embedding(num_embeddings, dims)

      +

      Embedding(num_embeddings, dims)

      Implements a simple lookup table that maps each input integer to a high-dimensional vector.

      +

      ELU([alpha])

      +

      Applies the Exponential Linear Unit.

      +

      GELU([approx])

      Applies the Gaussian Error Linear Units.

      @@ -928,6 +942,12 @@ document.write(`

      Linear(input_dims, output_dims[, bias])

      Applies an affine transformation to the input.

      +

      LogSigmoid()

      +

      Applies the Log Sigmoid function.

      + +

      LogSoftmax()

      +

      Applies the Log Softmax function.

      +

      LSTM(input_size, hidden_size[, bias])

      An LSTM recurrent layer.

      @@ -973,37 +993,40 @@ document.write(`

      Sequential(*modules)

      A layer that calls the passed callables in order.

      -

      SiLU()

      +

      Sigmoid()

      +

      Applies the sigmoid function, element-wise.

      + +

      SiLU()

      Applies the Sigmoid Linear Unit.

      -

      SinusoidalPositionalEncoding(dims[, ...])

      +

      SinusoidalPositionalEncoding(dims[, ...])

      Implements sinusoidal positional encoding.

      -

      Softmin()

      +

      Softmin()

      Applies the Softmin function.

      -

      Softshrink([lambd])

      +

      Softshrink([lambd])

      Applies the Softshrink function.

      -

      Softsign()

      +

      Softsign()

      Applies the Softsign function.

      -

      Softmax()

      +

      Softmax()

      Applies the Softmax function.

      -

      Softplus()

      +

      Softplus()

      Applies the Softplus function.

      -

      Step([threshold])

      +

      Step([threshold])

      Applies the Step Activation Function.

      -

      Tanh()

      +

      Tanh()

      Applies the hyperbolic tangent function.

      -

      Transformer(dims, num_heads, ...)

      +

      Transformer(dims, num_heads, ...)

      Implements a standard Transformer model.

      -

      Upsample(scale_factor[, mode, align_corners])

      +

      Upsample(scale_factor[, mode, align_corners])

      Upsample the input signal spatially.

      diff --git a/docs/build/html/python/nn/losses.html b/docs/build/html/python/nn/losses.html index 96686f78..3550b78a 100644 --- a/docs/build/html/python/nn/losses.html +++ b/docs/build/html/python/nn/losses.html @@ -8,7 +8,7 @@ - Loss Functions — MLX 0.17.3 documentation + Loss Functions — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -132,8 +132,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -362,6 +362,7 @@
    • mlx.core.pad
    • mlx.core.power
    • mlx.core.prod
    • +
    • mlx.core.put_along_axis
    • mlx.core.quantize
    • mlx.core.quantized_matmul
    • mlx.core.radians
    • @@ -470,6 +471,7 @@
    • mlx.core.linalg.norm
    • mlx.core.linalg.cholesky
    • mlx.core.linalg.cholesky_inv
    • +
    • mlx.core.linalg.cross
    • mlx.core.linalg.qr
    • mlx.core.linalg.svd
    @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • @@ -1192,148 +1200,151 @@ document.write(`

      prod(a, /[, axis, keepdims, stream])

      An product reduction over the given axes.

      -

      quantize(w, /[, group_size, bits, stream])

      +

      put_along_axis(a, /, indices, values[, ...])

      +

      Put values along an axis at the specified indices.

      + +

      quantize(w, /[, group_size, bits, stream])

      Quantize the matrix w using bits bits per element.

      -

      quantized_matmul(x, w, /, scales, biases[, ...])

      +

      quantized_matmul(x, w, /, scales, biases[, ...])

      Perform the matrix multiplication with the quantized matrix w.

      -

      radians(a, /, *[, stream])

      +

      radians(a, /, *[, stream])

      Convert angles from degrees to radians.

      -

      reciprocal(a, /, *[, stream])

      +

      reciprocal(a, /, *[, stream])

      Element-wise reciprocal.

      -

      remainder(a, b[, stream])

      +

      remainder(a, b[, stream])

      Element-wise remainder of division.

      -

      repeat(array, repeats[, axis, stream])

      +

      repeat(array, repeats[, axis, stream])

      Repeat an array along a specified axis.

      -

      reshape(a, /, shape, *[, stream])

      +

      reshape(a, /, shape, *[, stream])

      Reshape an array while preserving the size.

      -

      right_shift(a, b[, stream])

      +

      right_shift(a, b[, stream])

      Element-wise right shift.

      -

      round(a, /[, decimals, stream])

      +

      round(a, /[, decimals, stream])

      Round to the given number of decimals.

      -

      rsqrt(a, /, *[, stream])

      +

      rsqrt(a, /, *[, stream])

      Element-wise reciprocal and square root.

      -

      save(file, arr)

      +

      save(file, arr)

      Save the array to a binary file in .npy format.

      -

      savez(file, *args, **kwargs)

      +

      savez(file, *args, **kwargs)

      Save several arrays to a binary file in uncompressed .npz format.

      -

      savez_compressed(file, *args, **kwargs)

      +

      savez_compressed(file, *args, **kwargs)

      Save several arrays to a binary file in compressed .npz format.

      -

      save_gguf(file, arrays, metadata)

      +

      save_gguf(file, arrays, metadata)

      Save array(s) to a binary file in .gguf format.

      -

      save_safetensors(file, arrays[, metadata])

      +

      save_safetensors(file, arrays[, metadata])

      Save array(s) to a binary file in .safetensors format.

      -

      sigmoid(a, /, *[, stream])

      +

      sigmoid(a, /, *[, stream])

      Element-wise logistic sigmoid.

      -

      sign(a, /, *[, stream])

      +

      sign(a, /, *[, stream])

      Element-wise sign.

      -

      sin(a, /, *[, stream])

      +

      sin(a, /, *[, stream])

      Element-wise sine.

      -

      sinh(a, /, *[, stream])

      +

      sinh(a, /, *[, stream])

      Element-wise hyperbolic sine.

      -

      softmax(a, /[, axis, stream])

      +

      softmax(a, /[, axis, stream])

      Perform the softmax along the given axis.

      -

      sort(a, /[, axis, stream])

      +

      sort(a, /[, axis, stream])

      Returns a sorted copy of the array.

      -

      split(a, /, indices_or_sections[, axis, stream])

      +

      split(a, /, indices_or_sections[, axis, stream])

      Split an array along a given axis.

      -

      sqrt(a, /, *[, stream])

      +

      sqrt(a, /, *[, stream])

      Element-wise square root.

      -

      square(a, /, *[, stream])

      +

      square(a, /, *[, stream])

      Element-wise square.

      -

      squeeze(a, /[, axis, stream])

      +

      squeeze(a, /[, axis, stream])

      Remove length one axes from an array.

      -

      stack(arrays[, axis, stream])

      +

      stack(arrays[, axis, stream])

      Stacks the arrays along a new axis.

      -

      std(a, /[, axis, keepdims, ddof, stream])

      +

      std(a, /[, axis, keepdims, ddof, stream])

      Compute the standard deviation(s) over the given axes.

      -

      stop_gradient(a, /, *[, stream])

      +

      stop_gradient(a, /, *[, stream])

      Stop gradients from being computed.

      -

      subtract(a, b[, stream])

      +

      subtract(a, b[, stream])

      Element-wise subtraction.

      -

      sum(a, /[, axis, keepdims, stream])

      +

      sum(a, /[, axis, keepdims, stream])

      Sum reduce the array over the given axes.

      -

      swapaxes(a, /, axis1, axis2, *[, stream])

      +

      swapaxes(a, /, axis1, axis2, *[, stream])

      Swap two axes of an array.

      -

      take(a, /, indices[, axis, stream])

      +

      take(a, /, indices[, axis, stream])

      Take elements along an axis.

      -

      take_along_axis(a, /, indices[, axis, stream])

      +

      take_along_axis(a, /, indices[, axis, stream])

      Take values along an axis at the specified indices.

      -

      tan(a, /, *[, stream])

      +

      tan(a, /, *[, stream])

      Element-wise tangent.

      -

      tanh(a, /, *[, stream])

      +

      tanh(a, /, *[, stream])

      Element-wise hyperbolic tangent.

      -

      tensordot(a, b, /[, axes, stream])

      +

      tensordot(a, b, /[, axes, stream])

      Compute the tensor dot product along the specified axes.

      -

      tile(a, reps, /, *[, stream])

      +

      tile(a, reps, /, *[, stream])

      Construct an array by repeating a the number of times given by reps.

      -

      topk(a, /, k[, axis, stream])

      +

      topk(a, /, k[, axis, stream])

      Returns the k largest elements from the input along a given axis.

      -

      trace(a, /[, offset, axis1, axis2, dtype, ...])

      +

      trace(a, /[, offset, axis1, axis2, dtype, ...])

      Return the sum along a specified diagonal in the given array.

      -

      transpose(a, /[, axes, stream])

      +

      transpose(a, /[, axes, stream])

      Transpose the dimensions of the array.

      -

      tri(n, m, k[, dtype, stream])

      +

      tri(n, m, k[, dtype, stream])

      An array with ones at and below the given diagonal and zeros elsewhere.

      -

      tril(x, k, *[, stream])

      +

      tril(x, k, *[, stream])

      Zeros the array above the given diagonal.

      -

      triu(x, k, *[, stream])

      +

      triu(x, k, *[, stream])

      Zeros the array below the given diagonal.

      -

      var(a, /[, axis, keepdims, ddof, stream])

      +

      var(a, /[, axis, keepdims, ddof, stream])

      Compute the variance(s) over the given axes.

      -

      view(a, dtype[, stream])

      +

      view(a, dtype[, stream])

      View the array as a different type.

      -

      where(condition, x, y, /, *[, stream])

      +

      where(condition, x, y, /, *[, stream])

      Select from x or y according to condition.

      -

      zeros(shape[, dtype, stream])

      +

      zeros(shape[, dtype, stream])

      Construct an array of zeros.

      -

      zeros_like(a, /, *[, stream])

      +

      zeros_like(a, /, *[, stream])

      An array of zeros like the input.

      diff --git a/docs/build/html/python/optimizers.html b/docs/build/html/python/optimizers.html index 65fdf7cf..c8dc9f9c 100644 --- a/docs/build/html/python/optimizers.html +++ b/docs/build/html/python/optimizers.html @@ -8,7 +8,7 @@ - Optimizers — MLX 0.17.3 documentation + Optimizers — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -361,6 +361,7 @@
    • mlx.core.pad
    • mlx.core.power
    • mlx.core.prod
    • +
    • mlx.core.put_along_axis
    • mlx.core.quantize
    • mlx.core.quantized_matmul
    • mlx.core.radians
    • @@ -469,6 +470,7 @@
    • mlx.core.linalg.norm
    • mlx.core.linalg.cholesky
    • mlx.core.linalg.cholesky_inv
    • +
    • mlx.core.linalg.cross
    • mlx.core.linalg.qr
    • mlx.core.linalg.svd
    @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -519,6 +521,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -529,6 +532,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -540,6 +544,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -555,6 +561,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -570,6 +577,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • diff --git a/docs/build/html/quantized_8h.html b/docs/build/html/quantized_8h.html deleted file mode 100644 index 056a07f3..00000000 --- a/docs/build/html/quantized_8h.html +++ /dev/null @@ -1,2102 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/quantized.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      quantized.h File Reference
      -
      -
      -
      #include <metal_simdgroup>
      -#include <metal_stdlib>
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      struct  QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
       
      - - - -

      -Macros

      #define MLX_MTL_CONST   static constant constexpr const
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename U , int values_per_thread, int bits>
      load_vector (const device T *x, thread U *x_thread)
       
      template<typename T , typename U , int values_per_thread, int bits>
      load_vector_safe (const device T *x, thread U *x_thread, int N)
       
      template<typename U , int values_per_thread, int bits>
      qdot (const device uint8_t *w, const thread U *x_thread, U scale, U bias, U sum)
       
      template<typename U , int values_per_thread, int bits>
      qdot_safe (const device uint8_t *w, const thread U *x_thread, U scale, U bias, U sum, int N)
       
      template<typename U , int values_per_thread, int bits>
      void qouter (const thread uint8_t *w, U x, U scale, U bias, thread U *result)
       
      template<typename U , int N, int bits>
      void dequantize (const device uint8_t *w, U scale, U bias, threadgroup U *w_local)
       
      template<typename T , int group_size, int bits>
      METAL_FUNC void qmv_fast_impl (const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , int group_size, int bits>
      METAL_FUNC void qmv_impl (const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits>
      METAL_FUNC void qvm_impl (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits, const bool aligned_N, const int BM = 32, const int BK = 32, const int BN = 32>
      METAL_FUNC void qmm_t_impl (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, threadgroup T *Xs, threadgroup T *Ws, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits, const int BM = 32, const int BK = 32, const int BN = 32>
      METAL_FUNC void qmm_n_impl (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, threadgroup T *Xs, threadgroup T *Ws, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
       
      template<typename T >
      METAL_FUNC void adjust_matrix_offsets (const device T *&x, const device uint32_t *&w, const device T *&scales, const device T *&biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *&y, int output_stride, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid)
       
      template<typename T , int group_size, int bits>
      void qmv_fast (const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits>
      void qmv (const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits>
      void qvm (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits, const bool aligned_N, const int BM = 32, const int BK = 32, const int BN = 32>
      void qmm_t (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits, const int BM = 32, const int BK = 32, const int BN = 32>
      void qmm_n (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
       
      template<typename T , int group_size, int bits>
      void bs_qmv_fast (const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , int group_size, int bits>
      void bs_qmv (const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , int group_size, int bits>
      void bs_qvm (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits, const bool aligned_N, const int BM = 32, const int BK = 32, const int BN = 32>
      void bs_qmm_t (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &M, const constant int &N, const constant int &K, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits, const int BM = 32, const int BK = 32, const int BN = 32>
      void bs_qmm_n (const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &M, const constant int &N, const constant int &K, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
       
      template<typename T , const int group_size, const int bits>
      void affine_quantize (const device T *w, device uint8_t *out, device T *scales, device T *biases, uint2 index, uint2 grid_dim)
       
      template<typename T , const int group_size, const int bits>
      void affine_quantize_scales_biases (const device T *w, const device T *scales, const device T *biases, device uint8_t *out, uint2 index, uint2 grid_dim)
       
      template<typename T , const int group_size, const int bits>
      void affine_dequantize (const device uint8_t *w, const device T *scales, const device T *biases, device T *out, uint2 index, uint2 grid_dim)
       
      - - - -

      -Variables

      static constant constexpr const int SIMD_SIZE = 32
       
      -

      Macro Definition Documentation

      - -

      ◆ MLX_MTL_CONST

      - -
      -
      - - - - -
      #define MLX_MTL_CONST   static constant constexpr const
      -
      - -
      -
      -

      Function Documentation

      - -

      ◆ adjust_matrix_offsets()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void adjust_matrix_offsets (const device T *& x,
      const device uint32_t *& w,
      const device T *& scales,
      const device T *& biases,
      const device uint32_t * lhs_indices,
      const device uint32_t * rhs_indices,
      device T *& y,
      int output_stride,
      const constant int & batch_ndims,
      const constant int * batch_shape,
      const constant size_t * lhs_strides,
      const constant size_t * rhs_strides,
      const constant int & x_batch_ndims,
      const constant int * x_shape,
      const constant size_t * x_strides,
      const constant int & w_batch_ndims,
      const constant int * w_shape,
      const constant size_t * w_strides,
      const constant size_t * s_strides,
      const constant size_t * b_strides,
      uint3 tid )
      -
      - -
      -
      - -

      ◆ affine_dequantize()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void affine_dequantize (const device uint8_t * w,
      const device T * scales,
      const device T * biases,
      device T * out,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ affine_quantize()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void affine_quantize (const device T * w,
      device uint8_t * out,
      device T * scales,
      device T * biases,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ affine_quantize_scales_biases()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void affine_quantize_scales_biases (const device T * w,
      const device T * scales,
      const device T * biases,
      device uint8_t * out,
      uint2 index,
      uint2 grid_dim )
      -
      - -
      -
      - -

      ◆ bs_qmm_n()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits, const int BM = 32, const int BK = 32, const int BN = 32>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void bs_qmm_n (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device uint32_t * lhs_indices,
      const device uint32_t * rhs_indices,
      device T * y,
      const constant int & M,
      const constant int & N,
      const constant int & K,
      const constant int & batch_ndims,
      const constant int * batch_shape,
      const constant size_t * lhs_strides,
      const constant size_t * rhs_strides,
      const constant int & x_batch_ndims,
      const constant int * x_shape,
      const constant size_t * x_strides,
      const constant int & w_batch_ndims,
      const constant int * w_shape,
      const constant size_t * w_strides,
      const constant size_t * s_strides,
      const constant size_t * b_strides,
      uint3 tid,
      uint lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ bs_qmm_t()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits, const bool aligned_N, const int BM = 32, const int BK = 32, const int BN = 32>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void bs_qmm_t (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device uint32_t * lhs_indices,
      const device uint32_t * rhs_indices,
      device T * y,
      const constant int & M,
      const constant int & N,
      const constant int & K,
      const constant int & batch_ndims,
      const constant int * batch_shape,
      const constant size_t * lhs_strides,
      const constant size_t * rhs_strides,
      const constant int & x_batch_ndims,
      const constant int * x_shape,
      const constant size_t * x_strides,
      const constant int & w_batch_ndims,
      const constant int * w_shape,
      const constant size_t * w_strides,
      const constant size_t * s_strides,
      const constant size_t * b_strides,
      uint3 tid,
      uint lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ bs_qmv()

      - -
      -
      -
      -template<typename T , int group_size, int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void bs_qmv (const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device T * x,
      const device uint32_t * lhs_indices,
      const device uint32_t * rhs_indices,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & batch_ndims,
      const constant int * batch_shape,
      const constant size_t * lhs_strides,
      const constant size_t * rhs_strides,
      const constant int & x_batch_ndims,
      const constant int * x_shape,
      const constant size_t * x_strides,
      const constant int & w_batch_ndims,
      const constant int * w_shape,
      const constant size_t * w_strides,
      const constant size_t * s_strides,
      const constant size_t * b_strides,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ bs_qmv_fast()

      - -
      -
      -
      -template<typename T , int group_size, int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void bs_qmv_fast (const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device T * x,
      const device uint32_t * lhs_indices,
      const device uint32_t * rhs_indices,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & batch_ndims,
      const constant int * batch_shape,
      const constant size_t * lhs_strides,
      const constant size_t * rhs_strides,
      const constant int & x_batch_ndims,
      const constant int * x_shape,
      const constant size_t * x_strides,
      const constant int & w_batch_ndims,
      const constant int * w_shape,
      const constant size_t * w_strides,
      const constant size_t * s_strides,
      const constant size_t * b_strides,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ bs_qvm()

      - -
      -
      -
      -template<typename T , int group_size, int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void bs_qvm (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device uint32_t * lhs_indices,
      const device uint32_t * rhs_indices,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & batch_ndims,
      const constant int * batch_shape,
      const constant size_t * lhs_strides,
      const constant size_t * rhs_strides,
      const constant int & x_batch_ndims,
      const constant int * x_shape,
      const constant size_t * x_strides,
      const constant int & w_batch_ndims,
      const constant int * w_shape,
      const constant size_t * w_strides,
      const constant size_t * s_strides,
      const constant size_t * b_strides,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ dequantize()

      - -
      -
      -
      -template<typename U , int N, int bits>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      void dequantize (const device uint8_t * w,
      U scale,
      U bias,
      threadgroup U * w_local )
      -
      -inline
      -
      - -
      -
      - -

      ◆ load_vector()

      - -
      -
      -
      -template<typename T , typename U , int values_per_thread, int bits>
      - - - - - -
      - - - - - - - - - - - -
      U load_vector (const device T * x,
      thread U * x_thread )
      -
      -inline
      -
      - -
      -
      - -

      ◆ load_vector_safe()

      - -
      -
      -
      -template<typename T , typename U , int values_per_thread, int bits>
      - - - - - -
      - - - - - - - - - - - - - - - - -
      U load_vector_safe (const device T * x,
      thread U * x_thread,
      int N )
      -
      -inline
      -
      - -
      -
      - -

      ◆ qdot()

      - -
      -
      -
      -template<typename U , int values_per_thread, int bits>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      U qdot (const device uint8_t * w,
      const thread U * x_thread,
      U scale,
      U bias,
      U sum )
      -
      -inline
      -
      - -
      -
      - -

      ◆ qdot_safe()

      - -
      -
      -
      -template<typename U , int values_per_thread, int bits>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      U qdot_safe (const device uint8_t * w,
      const thread U * x_thread,
      U scale,
      U bias,
      U sum,
      int N )
      -
      -inline
      -
      - -
      -
      - -

      ◆ qmm_n()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits, const int BM = 32, const int BK = 32, const int BN = 32>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void qmm_n (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      device T * y,
      const constant int & M,
      const constant int & N,
      const constant int & K,
      uint3 tid,
      uint lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmm_n_impl()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits, const int BM = 32, const int BK = 32, const int BN = 32>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void qmm_n_impl (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      device T * y,
      threadgroup T * Xs,
      threadgroup T * Ws,
      const constant int & M,
      const constant int & N,
      const constant int & K,
      uint3 tid,
      uint lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmm_t()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits, const bool aligned_N, const int BM = 32, const int BK = 32, const int BN = 32>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void qmm_t (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      device T * y,
      const constant int & M,
      const constant int & N,
      const constant int & K,
      uint3 tid,
      uint lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmm_t_impl()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits, const bool aligned_N, const int BM = 32, const int BK = 32, const int BN = 32>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void qmm_t_impl (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      device T * y,
      threadgroup T * Xs,
      threadgroup T * Ws,
      const constant int & M,
      const constant int & N,
      const constant int & K,
      uint3 tid,
      uint lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmv()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void qmv (const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device T * x,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmv_fast()

      - -
      -
      -
      -template<typename T , int group_size, int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void qmv_fast (const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device T * x,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmv_fast_impl()

      - -
      -
      -
      -template<typename T , int group_size, int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void qmv_fast_impl (const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device T * x,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qmv_impl()

      - -
      -
      -
      -template<typename T , int group_size, int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void qmv_impl (const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      const device T * x,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qouter()

      - -
      -
      -
      -template<typename U , int values_per_thread, int bits>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void qouter (const thread uint8_t * w,
      U x,
      U scale,
      U bias,
      thread U * result )
      -
      -inline
      -
      - -
      -
      - -

      ◆ qvm()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void qvm (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      - -

      ◆ qvm_impl()

      - -
      -
      -
      -template<typename T , const int group_size, const int bits>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void qvm_impl (const device T * x,
      const device uint32_t * w,
      const device T * scales,
      const device T * biases,
      device T * y,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      uint3 tid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ SIMD_SIZE

      - -
      -
      - - - - - -
      - - - - -
      constant constexpr const int SIMD_SIZE = 32
      -
      -staticconstexpr
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/quantized_8h_source.html b/docs/build/html/quantized_8h_source.html deleted file mode 100644 index da0080a2..00000000 --- a/docs/build/html/quantized_8h_source.html +++ /dev/null @@ -1,1817 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/quantized.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      quantized.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#include <metal_simdgroup>
      -
      4#include <metal_stdlib>
      -
      5
      -
      6using namespace metal;
      -
      7
      -
      8#define MLX_MTL_CONST static constant constexpr const
      -
      9
      - -
      11
      -
      12template <typename T, typename U, int values_per_thread, int bits>
      -
      -
      13inline U load_vector(const device T* x, thread U* x_thread) {
      -
      14 static_assert(
      -
      15 bits == 2 || bits == 4 || bits == 8,
      -
      16 "Template undefined for bits not in {2, 4, 8}");
      -
      17
      -
      18 U sum = 0;
      -
      19
      -
      20 if (bits == 2) {
      -
      21 for (int i = 0; i < values_per_thread; i += 4) {
      -
      22 sum += x[i] + x[i + 1] + x[i + 2] + x[i + 3];
      -
      23 x_thread[i] = x[i];
      -
      24 x_thread[i + 1] = x[i + 1] / 4.0f;
      -
      25 x_thread[i + 2] = x[i + 2] / 16.0f;
      -
      26 x_thread[i + 3] = x[i + 3] / 64.0f;
      -
      27 }
      -
      28 }
      -
      29
      -
      30 else if (bits == 4) {
      -
      31 for (int i = 0; i < values_per_thread; i += 4) {
      -
      32 sum += x[i] + x[i + 1] + x[i + 2] + x[i + 3];
      -
      33 x_thread[i] = x[i];
      -
      34 x_thread[i + 1] = x[i + 1] / 16.0f;
      -
      35 x_thread[i + 2] = x[i + 2] / 256.0f;
      -
      36 x_thread[i + 3] = x[i + 3] / 4096.0f;
      -
      37 }
      -
      38 }
      -
      39
      -
      40 else if (bits == 8) {
      -
      41 for (int i = 0; i < values_per_thread; i++) {
      -
      42 sum += x[i];
      -
      43 x_thread[i] = x[i];
      -
      44 }
      -
      45 }
      -
      46
      -
      47 return sum;
      -
      48}
      -
      -
      49
      -
      50template <typename T, typename U, int values_per_thread, int bits>
      -
      -
      51inline U load_vector_safe(const device T* x, thread U* x_thread, int N) {
      -
      52 static_assert(
      -
      53 bits == 2 || bits == 4 || bits == 8,
      -
      54 "Template undefined for bits not in {2, 4, 8}");
      -
      55
      -
      56 U sum = 0;
      -
      57
      -
      58 if (bits == 2) {
      -
      59 for (int i = 0; i < N; i += 4) {
      -
      60 sum += x[i] + x[i + 1] + x[i + 2] + x[i + 3];
      -
      61 x_thread[i] = x[i];
      -
      62 x_thread[i + 1] = x[i + 1] / 4.0f;
      -
      63 x_thread[i + 2] = x[i + 2] / 16.0f;
      -
      64 x_thread[i + 3] = x[i + 3] / 64.0f;
      -
      65 }
      -
      66 for (int i = N; i < values_per_thread; i++) {
      -
      67 x_thread[i] = 0;
      -
      68 }
      -
      69 }
      -
      70
      -
      71 else if (bits == 4) {
      -
      72 for (int i = 0; i < N; i += 4) {
      -
      73 sum += x[i] + x[i + 1] + x[i + 2] + x[i + 3];
      -
      74 x_thread[i] = x[i];
      -
      75 x_thread[i + 1] = x[i + 1] / 16.0f;
      -
      76 x_thread[i + 2] = x[i + 2] / 256.0f;
      -
      77 x_thread[i + 3] = x[i + 3] / 4096.0f;
      -
      78 }
      -
      79 for (int i = N; i < values_per_thread; i++) {
      -
      80 x_thread[i] = 0;
      -
      81 }
      -
      82 }
      -
      83
      -
      84 else if (bits == 8) {
      -
      85 for (int i = 0; i < N; i++) {
      -
      86 sum += x[i];
      -
      87 x_thread[i] = x[i];
      -
      88 }
      -
      89 for (int i = N; i < values_per_thread; i++) {
      -
      90 x_thread[i] = 0;
      -
      91 }
      -
      92 }
      -
      93
      -
      94 return sum;
      -
      95}
      -
      -
      96
      -
      97template <typename U, int values_per_thread, int bits>
      -
      -
      98inline U qdot(
      -
      99 const device uint8_t* w,
      -
      100 const thread U* x_thread,
      -
      101 U scale,
      -
      102 U bias,
      -
      103 U sum) {
      -
      104 static_assert(
      -
      105 bits == 2 || bits == 4 || bits == 8,
      -
      106 "Template undefined for bits not in {2, 4, 8}");
      -
      107
      -
      108 U accum = 0;
      -
      109
      -
      110 if (bits == 2) {
      -
      111 for (int i = 0; i < (values_per_thread / 4); i++) {
      -
      112 accum +=
      -
      113 (x_thread[4 * i] * (w[i] & 0x03) +
      -
      114 x_thread[4 * i + 1] * (w[i] & 0x0c) +
      -
      115 x_thread[4 * i + 2] * (w[i] & 0x30) +
      -
      116 x_thread[4 * i + 3] * (w[i] & 0xc0));
      -
      117 }
      -
      118 }
      -
      119
      -
      120 else if (bits == 4) {
      -
      121 const device uint16_t* ws = (const device uint16_t*)w;
      -
      122 for (int i = 0; i < (values_per_thread / 4); i++) {
      -
      123 accum +=
      -
      124 (x_thread[4 * i] * (ws[i] & 0x000f) +
      -
      125 x_thread[4 * i + 1] * (ws[i] & 0x00f0) +
      -
      126 x_thread[4 * i + 2] * (ws[i] & 0x0f00) +
      -
      127 x_thread[4 * i + 3] * (ws[i] & 0xf000));
      -
      128 }
      -
      129 }
      -
      130
      -
      131 else if (bits == 8) {
      -
      132 for (int i = 0; i < values_per_thread; i++) {
      -
      133 accum += x_thread[i] * w[i];
      -
      134 }
      -
      135 }
      -
      136
      -
      137 return scale * accum + sum * bias;
      -
      138}
      -
      -
      139
      -
      140template <typename U, int values_per_thread, int bits>
      -
      -
      141inline U qdot_safe(
      -
      142 const device uint8_t* w,
      -
      143 const thread U* x_thread,
      -
      144 U scale,
      -
      145 U bias,
      -
      146 U sum,
      -
      147 int N) {
      -
      148 static_assert(
      -
      149 bits == 2 || bits == 4 || bits == 8,
      -
      150 "Template undefined for bits not in {2, 4, 8}");
      -
      151
      -
      152 U accum = 0;
      -
      153
      -
      154 if (bits == 2) {
      -
      155 for (int i = 0; i < (N / 4); i++) {
      -
      156 accum +=
      -
      157 (x_thread[4 * i] * (w[i] & 0x03) +
      -
      158 x_thread[4 * i + 1] * (w[i] & 0x0c) +
      -
      159 x_thread[4 * i + 2] * (w[i] & 0x30) +
      -
      160 x_thread[4 * i + 3] * (w[i] & 0xc0));
      -
      161 }
      -
      162 }
      -
      163
      -
      164 else if (bits == 4) {
      -
      165 const device uint16_t* ws = (const device uint16_t*)w;
      -
      166 for (int i = 0; i < (N / 4); i++) {
      -
      167 accum +=
      -
      168 (x_thread[4 * i] * (ws[i] & 0x000f) +
      -
      169 x_thread[4 * i + 1] * (ws[i] & 0x00f0) +
      -
      170 x_thread[4 * i + 2] * (ws[i] & 0x0f00) +
      -
      171 x_thread[4 * i + 3] * (ws[i] & 0xf000));
      -
      172 }
      -
      173 }
      -
      174
      -
      175 else if (bits == 8) {
      -
      176 for (int i = 0; i < N; i++) {
      -
      177 accum += x_thread[i] * w[i];
      -
      178 }
      -
      179 }
      -
      180
      -
      181 return scale * accum + sum * bias;
      -
      182}
      -
      -
      183
      -
      184template <typename U, int values_per_thread, int bits>
      -
      185inline void
      -
      -
      186qouter(const thread uint8_t* w, U x, U scale, U bias, thread U* result) {
      -
      187 static_assert(
      -
      188 bits == 2 || bits == 4 || bits == 8,
      -
      189 "Template undefined for bits not in {2, 4, 8}");
      -
      190
      -
      191 if (bits == 2) {
      -
      192 U s[4] = {scale, scale / 4.0f, scale / 16.0f, scale / 64.0f};
      -
      193 for (int i = 0; i < (values_per_thread / 4); i++) {
      -
      194 result[4 * i] += x * (s[0] * (w[i] & 0x03) + bias);
      -
      195 result[4 * i + 1] += x * (s[1] * (w[i] & 0x0c) + bias);
      -
      196 result[4 * i + 2] += x * (s[2] * (w[i] & 0x30) + bias);
      -
      197 result[4 * i + 3] += x * (s[3] * (w[i] & 0xc0) + bias);
      -
      198 }
      -
      199 }
      -
      200
      -
      201 else if (bits == 4) {
      -
      202 U s[2] = {scale, scale / 16.0f};
      -
      203 for (int i = 0; i < (values_per_thread / 2); i++) {
      -
      204 result[2 * i] += x * (s[0] * (w[i] & 0x0f) + bias);
      -
      205 result[2 * i + 1] += x * (s[1] * (w[i] & 0xf0) + bias);
      -
      206 }
      -
      207 }
      -
      208
      -
      209 else if (bits == 8) {
      -
      210 for (int i = 0; i < values_per_thread; i++) {
      -
      211 result[i] += x * (scale * w[i] + bias);
      -
      212 }
      -
      213 }
      -
      214}
      -
      -
      215
      -
      216template <typename U, int N, int bits>
      -
      217inline void
      -
      -
      218dequantize(const device uint8_t* w, U scale, U bias, threadgroup U* w_local) {
      -
      219 static_assert(
      -
      220 bits == 2 || bits == 4 || bits == 8,
      -
      221 "Template undefined for bits not in {2, 4, 8}");
      -
      222
      -
      223 if (bits == 2) {
      -
      224 U s[4] = {
      -
      225 scale,
      -
      226 scale / static_cast<U>(4.0f),
      -
      227 scale / static_cast<U>(16.0f),
      -
      228 scale / static_cast<U>(64.0f)};
      -
      229 for (int i = 0; i < (N / 4); i++) {
      -
      230 w_local[4 * i] = s[0] * (w[i] & 0x03) + bias;
      -
      231 w_local[4 * i + 1] = s[1] * (w[i] & 0x0c) + bias;
      -
      232 w_local[4 * i + 2] = s[2] * (w[i] & 0x30) + bias;
      -
      233 w_local[4 * i + 3] = s[3] * (w[i] & 0xc0) + bias;
      -
      234 }
      -
      235 }
      -
      236
      -
      237 else if (bits == 4) {
      -
      238 U s[2] = {scale, scale / static_cast<U>(16.0f)};
      -
      239 for (int i = 0; i < (N / 2); i++) {
      -
      240 w_local[2 * i] = s[0] * (w[i] & 0x0f) + bias;
      -
      241 w_local[2 * i + 1] = s[1] * (w[i] & 0xf0) + bias;
      -
      242 }
      -
      243 }
      -
      244
      -
      245 else if (bits == 8) {
      -
      246 for (int i = 0; i < N; i++) {
      -
      247 w_local[i] = scale * w[i] + bias;
      -
      248 }
      -
      249 }
      -
      250}
      -
      -
      251
      -
      252template <
      -
      253 typename T,
      -
      254 short BROWS,
      -
      255 short BCOLS,
      -
      256 short dst_ld,
      -
      257 short reduction_dim,
      -
      258 short tgp_size,
      -
      259 short group_size,
      -
      260 short bits>
      -
      - -
      262 static_assert(
      -
      263 BCOLS <= group_size,
      -
      264 "The group size should be larger than the columns");
      -
      265 static_assert(
      -
      266 group_size % BCOLS == 0,
      -
      267 "The group size should be divisible by the columns");
      -
      268 static_assert(
      -
      269 bits == 2 || bits == 4 || bits == 8,
      -
      270 "Template undefined for bits not in {2, 4, 8}");
      -
      271
      -
      272 MLX_MTL_CONST short pack_factor = 32 / bits;
      - - -
      275 (BCOLS_PACKED * BROWS < tgp_size) ? 1 : (BCOLS_PACKED * BROWS) / tgp_size;
      -
      276 MLX_MTL_CONST short group_steps = group_size / BCOLS;
      -
      277
      -
      278 const int src_ld;
      -
      279 const int tile_stride;
      - -
      281 const int group_stride;
      -
      282
      -
      283 const short thread_idx;
      -
      284 const short bi;
      -
      285 const short bj;
      -
      286
      -
      287 threadgroup T* dst;
      -
      288 const device uint32_t* src;
      -
      289 const device T* scales;
      -
      290 const device T* biases;
      -
      291
      -
      - -
      293 const device uint32_t* src_,
      -
      294 const device T* scales_,
      -
      295 const device T* biases_,
      -
      296 const int src_ld_,
      -
      297 threadgroup T* dst_,
      -
      298 ushort simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      299 ushort simd_lane_id [[thread_index_in_simdgroup]])
      -
      300 : src_ld(src_ld_),
      - -
      302 reduction_dim ? BCOLS_PACKED : BROWS * src_ld / pack_factor),
      - -
      304 group_stride(BROWS * src_ld / group_size),
      -
      305 thread_idx(simd_group_id * 32 + simd_lane_id),
      - - -
      308 dst(dst_ + bi * dst_ld + bj * pack_factor),
      -
      309 src(src_ + bi * src_ld / pack_factor + bj),
      -
      310 scales(scales_ + bi * src_ld / group_size),
      -
      311 biases(biases_ + bi * src_ld / group_size) {}
      -
      -
      312
      -
      -
      313 void load_unsafe() const {
      -
      314 if (BCOLS_PACKED * BROWS < tgp_size && bi >= BROWS) {
      -
      315 return;
      -
      316 }
      -
      317
      -
      318 T scale = *scales;
      -
      319 T bias = *biases;
      -
      320 for (int i = 0; i < n_reads; i++) {
      -
      321 dequantize<T, pack_factor, bits>(
      -
      322 (device uint8_t*)(src + i), scale, bias, dst + i * pack_factor);
      -
      323 }
      -
      324 }
      -
      -
      325
      -
      -
      326 void load_safe(short2 src_tile_dim) const {
      -
      327 if (BCOLS_PACKED * BROWS < tgp_size && bi >= BROWS) {
      -
      328 return;
      -
      329 }
      -
      330
      -
      331 if (reduction_dim == 1 && bi >= src_tile_dim.y) {
      -
      332 for (int i = 0; i < n_reads * pack_factor; i++) {
      -
      333 dst[i] = T(0);
      -
      334 }
      -
      335 return;
      -
      336 }
      -
      337
      -
      338 if (reduction_dim == 0 && bi >= src_tile_dim.x) {
      -
      339 for (int i = 0; i < n_reads * pack_factor; i++) {
      -
      340 dst[i] = T(0);
      -
      341 }
      -
      342 return;
      -
      343 }
      -
      344
      -
      345 T scale = *scales;
      -
      346 T bias = *biases;
      -
      347 for (int i = 0; i < n_reads; i++) {
      -
      348 dequantize<T, pack_factor, bits>(
      -
      349 (device uint8_t*)(src + i), scale, bias, dst + i * pack_factor);
      -
      350 }
      -
      351 }
      -
      -
      352
      -
      -
      353 void next() {
      -
      354 src += tile_stride;
      -
      355 if (reduction_dim == 1) {
      -
      356 if (group_steps > 1) {
      - - -
      359 group_step_cnt = 0;
      -
      360 scales++;
      -
      361 biases++;
      -
      362 }
      -
      363 } else {
      -
      364 scales++;
      -
      365 biases++;
      -
      366 }
      -
      367 } else {
      - - -
      370 }
      -
      371 }
      -
      -
      372};
      -
      -
      373
      -
      374template <typename T, int group_size, int bits>
      -
      -
      375METAL_FUNC void qmv_fast_impl(
      -
      376 const device uint32_t* w,
      -
      377 const device T* scales,
      -
      378 const device T* biases,
      -
      379 const device T* x,
      -
      380 device T* y,
      -
      381 const constant int& in_vec_size,
      -
      382 const constant int& out_vec_size,
      -
      383 uint3 tid [[threadgroup_position_in_grid]],
      -
      384 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      385 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      386 constexpr int packs_per_thread = bits > 2 ? 2 : 1;
      -
      387 constexpr int num_simdgroups = 2;
      -
      388 constexpr int results_per_simdgroup = 4;
      -
      389 constexpr int pack_factor = 32 / bits;
      -
      390 constexpr int values_per_thread = pack_factor * packs_per_thread;
      -
      391 constexpr int block_size = values_per_thread * SIMD_SIZE;
      -
      392 constexpr int scale_step_per_thread = group_size / values_per_thread;
      -
      393
      -
      394 typedef float U;
      -
      395
      -
      396 thread U x_thread[values_per_thread];
      -
      397 thread U result[results_per_simdgroup] = {0};
      -
      398
      -
      399 // Adjust positions
      -
      400 const int in_vec_size_w = in_vec_size / pack_factor;
      -
      401 const int in_vec_size_g = in_vec_size / group_size;
      -
      402 const int out_row = tid.x * (num_simdgroups * results_per_simdgroup) +
      -
      403 simd_gid * results_per_simdgroup;
      -
      404 w += out_row * in_vec_size_w + simd_lid * packs_per_thread;
      -
      405 scales += out_row * in_vec_size_g + simd_lid / scale_step_per_thread;
      -
      406 biases += out_row * in_vec_size_g + simd_lid / scale_step_per_thread;
      -
      407 x += tid.y * in_vec_size + simd_lid * values_per_thread;
      -
      408 y += tid.y * out_vec_size + out_row;
      -
      409
      -
      410 for (int k = 0; k < in_vec_size; k += block_size) {
      -
      411 U sum = load_vector<T, U, values_per_thread, bits>(x, x_thread);
      -
      412
      -
      413 for (int row = 0; row < results_per_simdgroup; row++) {
      -
      414 const device uint8_t* wl =
      -
      415 (const device uint8_t*)(w + row * in_vec_size_w);
      -
      416 const device T* sl = scales + row * in_vec_size_g;
      -
      417 const device T* bl = biases + row * in_vec_size_g;
      -
      418
      -
      419 U s = sl[0];
      -
      420 U b = bl[0];
      -
      421 result[row] += qdot<U, values_per_thread, bits>(wl, x_thread, s, b, sum);
      -
      422 }
      -
      423
      -
      424 w += block_size / pack_factor;
      -
      425 scales += block_size / group_size;
      -
      426 biases += block_size / group_size;
      -
      427 x += block_size;
      -
      428 }
      -
      429
      -
      430 for (int row = 0; row < results_per_simdgroup; row++) {
      -
      431 result[row] = simd_sum(result[row]);
      -
      432 if (simd_lid == 0) {
      -
      433 y[row] = static_cast<T>(result[row]);
      -
      434 }
      -
      435 }
      -
      436}
      -
      -
      437
      -
      438template <typename T, int group_size, int bits>
      -
      -
      439METAL_FUNC void qmv_impl(
      -
      440 const device uint32_t* w,
      -
      441 const device T* scales,
      -
      442 const device T* biases,
      -
      443 const device T* x,
      -
      444 device T* y,
      -
      445 const constant int& in_vec_size,
      -
      446 const constant int& out_vec_size,
      -
      447 uint3 tid [[threadgroup_position_in_grid]],
      -
      448 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      449 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      450 constexpr int num_simdgroups = 2;
      -
      451 constexpr int results_per_simdgroup = 4;
      -
      452 constexpr int packs_per_thread = 1;
      -
      453 constexpr int pack_factor = 32 / bits;
      -
      454 constexpr int values_per_thread = pack_factor * packs_per_thread;
      -
      455 constexpr int block_size = values_per_thread * SIMD_SIZE;
      -
      456 constexpr int scale_step_per_thread = group_size / values_per_thread;
      -
      457
      -
      458 typedef float U;
      -
      459
      -
      460 thread U x_thread[values_per_thread];
      -
      461 thread U result[results_per_simdgroup] = {0};
      -
      462
      -
      463 // Adjust positions
      -
      464 const int in_vec_size_w = in_vec_size / pack_factor;
      -
      465 const int in_vec_size_g = in_vec_size / group_size;
      -
      466 const int out_row = tid.x * (num_simdgroups * results_per_simdgroup) +
      -
      467 simd_gid * results_per_simdgroup;
      -
      468 const int used_out_row = min(out_vec_size - results_per_simdgroup, out_row);
      -
      469
      -
      470 if (out_row >= out_vec_size) {
      -
      471 return;
      -
      472 }
      -
      473
      -
      474 // In this case we need to properly guard all our reads because there isn't
      -
      475 // even 1 tile in the matrix
      -
      476 if (out_vec_size < (num_simdgroups * results_per_simdgroup)) {
      -
      477 w += out_row * in_vec_size_w + simd_lid * packs_per_thread;
      -
      478 scales += out_row * in_vec_size_g + simd_lid / scale_step_per_thread;
      -
      479 biases += out_row * in_vec_size_g + simd_lid / scale_step_per_thread;
      -
      480 x += tid.y * in_vec_size + simd_lid * values_per_thread;
      -
      481 y += tid.y * out_vec_size + out_row;
      -
      482
      -
      483 int k = 0;
      -
      484 for (; k < in_vec_size - block_size; k += block_size) {
      -
      485 U sum = load_vector<T, U, values_per_thread, bits>(x, x_thread);
      -
      486
      -
      487 for (int row = 0; out_row + row < out_vec_size; row++) {
      -
      488 const device uint8_t* wl =
      -
      489 (const device uint8_t*)(w + row * in_vec_size_w);
      -
      490 const device T* sl = scales + row * in_vec_size_g;
      -
      491 const device T* bl = biases + row * in_vec_size_g;
      -
      492
      -
      493 U s = sl[0];
      -
      494 U b = bl[0];
      -
      495 result[row] +=
      -
      496 qdot<U, values_per_thread, bits>(wl, x_thread, s, b, sum);
      -
      497 }
      -
      498
      -
      499 w += block_size / pack_factor;
      -
      500 scales += block_size / group_size;
      -
      501 biases += block_size / group_size;
      -
      502 x += block_size;
      -
      503 }
      -
      504 const int remaining = clamp(
      -
      505 static_cast<int>(in_vec_size - k - simd_lid * values_per_thread),
      -
      506 0,
      -
      507 values_per_thread);
      -
      508 U sum =
      -
      509 load_vector_safe<T, U, values_per_thread, bits>(x, x_thread, remaining);
      -
      510
      -
      511 for (int row = 0; out_row + row < out_vec_size; row++) {
      -
      512 const device uint8_t* wl =
      -
      513 (const device uint8_t*)(w + row * in_vec_size_w);
      -
      514 const device T* sl = scales + row * in_vec_size_g;
      -
      515 const device T* bl = biases + row * in_vec_size_g;
      -
      516
      -
      517 U s = sl[0];
      -
      518 U b = bl[0];
      -
      519 result[row] += qdot<U, values_per_thread, bits>(wl, x_thread, s, b, sum);
      -
      520 }
      -
      521
      -
      522 for (int row = 0; out_row + row < out_vec_size; row++) {
      -
      523 result[row] = simd_sum(result[row]);
      -
      524 if (simd_lid == 0) {
      -
      525 y[row] = static_cast<T>(result[row]);
      -
      526 }
      -
      527 }
      -
      528 }
      -
      529
      -
      530 // In this case the last tile is moved back to redo some output values
      -
      531 else {
      -
      532 w += used_out_row * in_vec_size_w + simd_lid * packs_per_thread;
      -
      533 scales += used_out_row * in_vec_size_g + simd_lid / scale_step_per_thread;
      -
      534 biases += used_out_row * in_vec_size_g + simd_lid / scale_step_per_thread;
      -
      535 x += tid.y * in_vec_size + simd_lid * values_per_thread;
      -
      536 y += tid.y * out_vec_size + used_out_row;
      -
      537
      -
      538 int k = 0;
      -
      539 for (; k < in_vec_size - block_size; k += block_size) {
      -
      540 U sum = load_vector<T, U, values_per_thread, bits>(x, x_thread);
      -
      541
      -
      542 for (int row = 0; row < results_per_simdgroup; row++) {
      -
      543 const device uint8_t* wl =
      -
      544 (const device uint8_t*)(w + row * in_vec_size_w);
      -
      545 const device T* sl = scales + row * in_vec_size_g;
      -
      546 const device T* bl = biases + row * in_vec_size_g;
      -
      547
      -
      548 U s = sl[0];
      -
      549 U b = bl[0];
      -
      550 result[row] +=
      -
      551 qdot<U, values_per_thread, bits>(wl, x_thread, s, b, sum);
      -
      552 }
      -
      553
      -
      554 w += block_size / pack_factor;
      -
      555 scales += block_size / group_size;
      -
      556 biases += block_size / group_size;
      -
      557 x += block_size;
      -
      558 }
      -
      559 const int remaining = clamp(
      -
      560 static_cast<int>(in_vec_size - k - simd_lid * values_per_thread),
      -
      561 0,
      -
      562 values_per_thread);
      -
      563 U sum =
      -
      564 load_vector_safe<T, U, values_per_thread, bits>(x, x_thread, remaining);
      -
      565
      -
      566 for (int row = 0; row < results_per_simdgroup; row++) {
      -
      567 const device uint8_t* wl =
      -
      568 (const device uint8_t*)(w + row * in_vec_size_w);
      -
      569 const device T* sl = scales + row * in_vec_size_g;
      -
      570 const device T* bl = biases + row * in_vec_size_g;
      -
      571
      -
      572 U s = sl[0];
      -
      573 U b = bl[0];
      -
      574 result[row] += qdot_safe<U, values_per_thread, bits>(
      -
      575 wl, x_thread, s, b, sum, remaining);
      -
      576 }
      -
      577
      -
      578 for (int row = 0; row < results_per_simdgroup; row++) {
      -
      579 result[row] = simd_sum(result[row]);
      -
      580 if (simd_lid == 0) {
      -
      581 y[row] = static_cast<T>(result[row]);
      -
      582 }
      -
      583 }
      -
      584 }
      -
      585}
      -
      -
      586
      -
      587template <typename T, const int group_size, const int bits>
      -
      -
      588METAL_FUNC void qvm_impl(
      -
      589 const device T* x,
      -
      590 const device uint32_t* w,
      -
      591 const device T* scales,
      -
      592 const device T* biases,
      -
      593 device T* y,
      -
      594 const constant int& in_vec_size,
      -
      595 const constant int& out_vec_size,
      -
      596 uint3 tid [[threadgroup_position_in_grid]],
      -
      597 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      598 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      599 constexpr int num_simdgroups = 2;
      -
      600 constexpr int pack_factor = 32 / bits;
      -
      601 constexpr int tn = 32 / pack_factor;
      -
      602 constexpr int blocksize = SIMD_SIZE;
      -
      603
      -
      604 typedef float U;
      -
      605 typedef struct {
      -
      606 uint32_t wi[tn];
      -
      607 } vec_w;
      -
      608
      -
      609 thread vec_w w_local;
      -
      610 thread U result[tn * pack_factor] = {0};
      -
      611 thread U scale = 1;
      -
      612 thread U bias = 0;
      -
      613 thread U x_local = 0;
      -
      614
      -
      615 // Adjust positions
      -
      616 const int out_vec_size_w = out_vec_size / pack_factor;
      -
      617 const int out_vec_size_g = out_vec_size / group_size;
      -
      618 int out_col =
      -
      619 tid.x * (num_simdgroups * pack_factor * tn) + simd_gid * pack_factor * tn;
      -
      620 w += out_col / pack_factor + simd_lid * out_vec_size_w;
      -
      621 scales += out_col / group_size + simd_lid * out_vec_size_g;
      -
      622 biases += out_col / group_size + simd_lid * out_vec_size_g;
      -
      623 x += tid.y * in_vec_size + simd_lid;
      -
      624 y += tid.y * out_vec_size + out_col;
      -
      625
      -
      626 if (out_col >= out_vec_size) {
      -
      627 return;
      -
      628 }
      -
      629
      -
      630 // Loop over in_vec in blocks of blocksize
      -
      631 int remaining = in_vec_size % blocksize;
      -
      632 if (remaining == 0) {
      -
      633 for (int i = 0; i < in_vec_size; i += blocksize) {
      -
      634 x_local = *x;
      -
      635 scale = *scales;
      -
      636 bias = *biases;
      -
      637 w_local = *((device vec_w*)w);
      -
      638
      -
      639 qouter<U, tn * pack_factor, bits>(
      -
      640 (thread uint8_t*)&w_local, x_local, scale, bias, result);
      -
      641
      -
      642 x += blocksize;
      -
      643 scales += blocksize * out_vec_size_g;
      -
      644 biases += blocksize * out_vec_size_g;
      -
      645 w += blocksize * out_vec_size_w;
      -
      646 }
      -
      647 } else {
      -
      648 for (int i = blocksize; i < in_vec_size; i += blocksize) {
      -
      649 x_local = *x;
      -
      650 scale = *scales;
      -
      651 bias = *biases;
      -
      652 w_local = *((device vec_w*)w);
      -
      653
      -
      654 qouter<U, tn * pack_factor, bits>(
      -
      655 (thread uint8_t*)&w_local, x_local, scale, bias, result);
      -
      656
      -
      657 x += blocksize;
      -
      658 scales += blocksize * out_vec_size_g;
      -
      659 biases += blocksize * out_vec_size_g;
      -
      660 w += blocksize * out_vec_size_w;
      -
      661 }
      -
      662 if (static_cast<int>(simd_lid) < remaining) {
      -
      663 x_local = *x;
      -
      664 scale = *scales;
      -
      665 bias = *biases;
      -
      666 w_local = *((device vec_w*)w);
      -
      667 } else {
      -
      668 x_local = 0;
      -
      669 scale = 0;
      -
      670 bias = 0;
      -
      671 }
      -
      672 qouter<U, tn * pack_factor, bits>(
      -
      673 (thread uint8_t*)&w_local, x_local, scale, bias, result);
      -
      674 }
      -
      675
      -
      676// Accumulate in the simdgroup
      -
      677#pragma clang loop unroll(full)
      -
      678 for (int k = 0; k < tn * pack_factor; k++) {
      -
      679 result[k] = simd_sum(result[k]);
      -
      680 }
      -
      681
      -
      682 // Store the result
      -
      683 if (simd_lid == 0) {
      -
      684#pragma clang loop unroll(full)
      -
      685 for (int k = 0; k < tn * pack_factor; k++) {
      -
      686 y[k] = static_cast<T>(result[k]);
      -
      687 }
      -
      688 }
      -
      689}
      -
      -
      690
      -
      691template <
      -
      692 typename T,
      -
      693 const int group_size,
      -
      694 const int bits,
      -
      695 const bool aligned_N,
      -
      696 const int BM = 32,
      -
      697 const int BK = 32,
      -
      698 const int BN = 32>
      -
      -
      699METAL_FUNC void qmm_t_impl(
      -
      700 const device T* x,
      -
      701 const device uint32_t* w,
      -
      702 const device T* scales,
      -
      703 const device T* biases,
      -
      704 device T* y,
      -
      705 threadgroup T* Xs,
      -
      706 threadgroup T* Ws,
      -
      707 const constant int& M,
      -
      708 const constant int& N,
      -
      709 const constant int& K,
      -
      710 uint3 tid [[threadgroup_position_in_grid]],
      -
      711 uint lid [[thread_index_in_threadgroup]],
      -
      712 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      713 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      714 static_assert(BK >= SIMD_SIZE, "BK should be larger than SIMD_SIZE");
      -
      715 static_assert(BK % SIMD_SIZE == 0, "BK should be divisible by SIMD_SIZE");
      -
      716
      -
      717 (void)lid;
      -
      718
      -
      719 constexpr int WM = 2;
      -
      720 constexpr int WN = 2;
      -
      721 constexpr int pack_factor = 32 / bits;
      -
      722 constexpr int BK_padded = (BK + 16 / sizeof(T));
      -
      723
      -
      724 // Instantiate the appropriate BlockMMA and Loader
      -
      725 using mma_t = mlx::steel::
      -
      726 BlockMMA<T, T, BM, BN, BK, WM, WN, false, true, BK_padded, BK_padded>;
      -
      727 using loader_x_t =
      - -
      729 using loader_w_t = QuantizedBlockLoader<
      -
      730 T,
      -
      731 BN,
      -
      732 BK,
      -
      733 BK_padded,
      -
      734 1,
      -
      735 WM * WN * SIMD_SIZE,
      -
      736 group_size,
      -
      737 bits>;
      -
      738
      -
      739 // Set the block
      -
      740 const int K_w = K / pack_factor;
      -
      741 const int K_g = K / group_size;
      -
      742 const int y_row = tid.y * BM;
      -
      743 const int y_col = tid.x * BN;
      -
      744
      -
      745 x += y_row * K;
      -
      746 w += y_col * K_w;
      -
      747 scales += y_col * K_g;
      -
      748 biases += y_col * K_g;
      -
      749 y += y_row * N + y_col;
      -
      750
      -
      751 // Make the x loader and mma operation
      -
      752 const short num_els = min(BM, M - y_row);
      -
      753 const short num_outs = min(BN, N - y_col);
      -
      754 loader_x_t loader_x(x, K, Xs, simd_gid, simd_lid);
      -
      755 loader_w_t loader_w(w, scales, biases, K, Ws, simd_gid, simd_lid);
      -
      756 mma_t mma_op(simd_gid, simd_lid);
      -
      757
      -
      758 if (num_els < BM) {
      -
      759 if (!aligned_N && num_outs < BN) {
      -
      760 for (int k = 0; k < K; k += BK) {
      -
      761 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      762 loader_x.load_safe(short2(BK, num_els));
      -
      763 loader_w.load_safe(short2(BK, num_outs));
      -
      764 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      765 mma_op.mma(Xs, Ws);
      -
      766 loader_x.next();
      -
      767 loader_w.next();
      -
      768 }
      -
      769 } else {
      -
      770 for (int k = 0; k < K; k += BK) {
      -
      771 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      772 loader_x.load_safe(short2(BK, num_els));
      -
      773 loader_w.load_unsafe();
      -
      774 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      775 mma_op.mma(Xs, Ws);
      -
      776 loader_x.next();
      -
      777 loader_w.next();
      -
      778 }
      -
      779 }
      -
      780 } else {
      -
      781 if (!aligned_N && num_outs < BN) {
      -
      782 for (int k = 0; k < K; k += BK) {
      -
      783 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      784 loader_x.load_unsafe();
      -
      785 loader_w.load_safe(short2(BK, num_outs));
      -
      786 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      787 mma_op.mma(Xs, Ws);
      -
      788 loader_x.next();
      -
      789 loader_w.next();
      -
      790 }
      -
      791 } else {
      -
      792 for (int k = 0; k < K; k += BK) {
      -
      793 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      794 loader_x.load_unsafe();
      -
      795 loader_w.load_unsafe();
      -
      796 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      797 mma_op.mma(Xs, Ws);
      -
      798 loader_x.next();
      -
      799 loader_w.next();
      -
      800 }
      -
      801 }
      -
      802 }
      -
      803
      -
      804 // Store results to device memory
      -
      805 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      806 if (num_els < BM || num_outs < BN) {
      -
      807 mma_op.store_result_safe(y, N, short2(num_outs, num_els));
      -
      808 } else {
      -
      809 mma_op.store_result(y, N);
      -
      810 }
      -
      811}
      -
      -
      812
      -
      813template <
      -
      814 typename T,
      -
      815 const int group_size,
      -
      816 const int bits,
      -
      817 const int BM = 32,
      -
      818 const int BK = 32,
      -
      819 const int BN = 32>
      -
      -
      820METAL_FUNC void qmm_n_impl(
      -
      821 const device T* x,
      -
      822 const device uint32_t* w,
      -
      823 const device T* scales,
      -
      824 const device T* biases,
      -
      825 device T* y,
      -
      826 threadgroup T* Xs,
      -
      827 threadgroup T* Ws,
      -
      828 const constant int& M,
      -
      829 const constant int& N,
      -
      830 const constant int& K,
      -
      831 uint3 tid [[threadgroup_position_in_grid]],
      -
      832 uint lid [[thread_index_in_threadgroup]],
      -
      833 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      834 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      835 static_assert(BK >= SIMD_SIZE, "BK should be larger than SIMD_SIZE");
      -
      836 static_assert(BK % SIMD_SIZE == 0, "BK should be divisible by SIMD_SIZE");
      -
      837
      -
      838 (void)lid;
      -
      839
      -
      840 constexpr int WM = 2;
      -
      841 constexpr int WN = 2;
      -
      842 constexpr int pack_factor = 32 / bits;
      -
      843 constexpr int BK_padded = (BK + 16 / sizeof(T));
      -
      844 constexpr int BN_padded = (BN + 16 / sizeof(T));
      -
      845
      -
      846 // Instantiate the appropriate BlockMMA and Loader
      -
      847 using mma_t = mlx::steel::
      -
      848 BlockMMA<T, T, BM, BN, BK, WM, WN, false, false, BK_padded, BN_padded>;
      -
      849 using loader_x_t = mlx::steel::
      -
      850 BlockLoader<T, BM, BK, BK_padded, 1, WM * WN * SIMD_SIZE, 1, 4>;
      -
      851 using loader_w_t = QuantizedBlockLoader<
      -
      852 T,
      -
      853 BK,
      -
      854 BN,
      -
      855 BN_padded,
      -
      856 0,
      -
      857 WM * WN * SIMD_SIZE,
      -
      858 group_size,
      -
      859 bits>;
      -
      860
      -
      861 // Set the block
      -
      862 const int y_row = tid.y * BM;
      -
      863 const int y_col = tid.x * BN;
      -
      864 x += y_row * K;
      -
      865 w += y_col / pack_factor;
      -
      866 scales += y_col / group_size;
      -
      867 biases += y_col / group_size;
      -
      868 y += y_row * N + y_col;
      -
      869
      -
      870 // Make the x loader and mma operation
      -
      871 const short num_els = min(BM, M - y_row);
      -
      872 loader_x_t loader_x(x, K, Xs, simd_gid, simd_lid);
      -
      873 loader_w_t loader_w(w, scales, biases, N, Ws, simd_gid, simd_lid);
      -
      874 mma_t mma_op(simd_gid, simd_lid);
      -
      875
      -
      876 if (num_els < BM) {
      -
      877 if ((K % BK) != 0) {
      -
      878 const int k_blocks = K / BK;
      -
      879 for (int k = 0; k < k_blocks; k++) {
      -
      880 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      881 loader_x.load_safe(short2(BK, num_els));
      -
      882 loader_w.load_unsafe();
      -
      883 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      884 mma_op.mma(Xs, Ws);
      -
      885 loader_x.next();
      -
      886 loader_w.next();
      -
      887 }
      -
      888 const short num_k = K - k_blocks * BK;
      -
      889 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      890 loader_x.load_safe(short2(num_k, num_els));
      -
      891 loader_w.load_safe(short2(BN, num_k));
      -
      892 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      893 mma_op.mma(Xs, Ws);
      -
      894 } else {
      -
      895 for (int k = 0; k < K; k += BK) {
      -
      896 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      897 loader_x.load_safe(short2(BK, num_els));
      -
      898 loader_w.load_unsafe();
      -
      899 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      900 mma_op.mma(Xs, Ws);
      -
      901 loader_x.next();
      -
      902 loader_w.next();
      -
      903 }
      -
      904 }
      -
      905 } else {
      -
      906 if ((K % BK) != 0) {
      -
      907 const int k_blocks = K / BK;
      -
      908 for (int k = 0; k < k_blocks; k++) {
      -
      909 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      910 loader_x.load_unsafe();
      -
      911 loader_w.load_unsafe();
      -
      912 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      913 mma_op.mma(Xs, Ws);
      -
      914 loader_x.next();
      -
      915 loader_w.next();
      -
      916 }
      -
      917 const short num_k = K - k_blocks * BK;
      -
      918 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      919 loader_x.load_safe(short2(num_k, BM));
      -
      920 loader_w.load_safe(short2(BN, num_k));
      -
      921 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      922 mma_op.mma(Xs, Ws);
      -
      923 } else {
      -
      924 for (int k = 0; k < K; k += BK) {
      -
      925 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      926 loader_x.load_unsafe();
      -
      927 loader_w.load_unsafe();
      -
      928 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      929 mma_op.mma(Xs, Ws);
      -
      930 loader_x.next();
      -
      931 loader_w.next();
      -
      932 }
      -
      933 }
      -
      934 }
      -
      935
      -
      936 // Store results to device memory
      -
      937 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      938 if (num_els < BM) {
      -
      939 mma_op.store_result_safe(y, N, short2(BN, num_els));
      -
      940 } else {
      -
      941 mma_op.store_result(y, N);
      -
      942 }
      -
      943}
      -
      -
      944
      -
      945template <typename T>
      -
      -
      946METAL_FUNC void adjust_matrix_offsets(
      -
      947 const device T*& x,
      -
      948 const device uint32_t*& w,
      -
      949 const device T*& scales,
      -
      950 const device T*& biases,
      -
      951 const device uint32_t* lhs_indices,
      -
      952 const device uint32_t* rhs_indices,
      -
      953 device T*& y,
      -
      954 int output_stride,
      -
      955 const constant int& batch_ndims,
      -
      956 const constant int* batch_shape,
      -
      957 const constant size_t* lhs_strides,
      -
      958 const constant size_t* rhs_strides,
      -
      959 const constant int& x_batch_ndims,
      -
      960 const constant int* x_shape,
      -
      961 const constant size_t* x_strides,
      -
      962 const constant int& w_batch_ndims,
      -
      963 const constant int* w_shape,
      -
      964 const constant size_t* w_strides,
      -
      965 const constant size_t* s_strides,
      -
      966 const constant size_t* b_strides,
      -
      967 uint3 tid [[threadgroup_position_in_grid]]) {
      -
      968 // Set the input/output matrices
      -
      969 uint32_t x_idx;
      -
      970 uint32_t w_idx;
      -
      971 if (batch_ndims == 1) {
      -
      972 x_idx = lhs_indices[tid.z * lhs_strides[0]];
      -
      973 w_idx = rhs_indices[tid.z * rhs_strides[0]];
      -
      974 } else {
      -
      975 ulong2 idx = elem_to_loc_broadcast(
      -
      976 tid.z, batch_shape, lhs_strides, rhs_strides, batch_ndims);
      -
      977 x_idx = lhs_indices[idx.x];
      -
      978 w_idx = rhs_indices[idx.y];
      -
      979 }
      -
      980 if (x_batch_ndims == 1) {
      -
      981 x += x_idx * x_strides[0];
      -
      982 } else {
      -
      983 x += elem_to_loc(x_idx, x_shape, x_strides, x_batch_ndims);
      -
      984 }
      -
      985 if (w_batch_ndims == 1) {
      -
      986 w += w_idx * w_strides[0];
      -
      987 scales += w_idx * s_strides[0];
      -
      988 biases += w_idx * b_strides[0];
      -
      989 } else {
      -
      990 ulong3 idx = elem_to_loc_broadcast(
      -
      991 w_idx, w_shape, w_strides, s_strides, b_strides, w_batch_ndims);
      -
      992 w += idx.x;
      -
      993 scales += idx.y;
      -
      994 biases += idx.z;
      -
      995 }
      -
      996 y += tid.z * output_stride;
      -
      997}
      -
      -
      998
      -
      999template <typename T, int group_size, int bits>
      -
      -
      1000[[kernel]] void qmv_fast(
      -
      1001 const device uint32_t* w [[buffer(0)]],
      -
      1002 const device T* scales [[buffer(1)]],
      -
      1003 const device T* biases [[buffer(2)]],
      -
      1004 const device T* x [[buffer(3)]],
      -
      1005 device T* y [[buffer(4)]],
      -
      1006 const constant int& in_vec_size [[buffer(5)]],
      -
      1007 const constant int& out_vec_size [[buffer(6)]],
      -
      1008 uint3 tid [[threadgroup_position_in_grid]],
      -
      1009 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1010 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1011 qmv_fast_impl<T, group_size, bits>(
      -
      1012 w,
      -
      1013 scales,
      -
      1014 biases,
      -
      1015 x,
      -
      1016 y,
      -
      1017 in_vec_size,
      -
      1018 out_vec_size,
      -
      1019 tid,
      -
      1020 simd_gid,
      -
      1021 simd_lid);
      -
      1022}
      -
      -
      1023
      -
      1024template <typename T, const int group_size, const int bits>
      -
      -
      1025[[kernel]] void qmv(
      -
      1026 const device uint32_t* w [[buffer(0)]],
      -
      1027 const device T* scales [[buffer(1)]],
      -
      1028 const device T* biases [[buffer(2)]],
      -
      1029 const device T* x [[buffer(3)]],
      -
      1030 device T* y [[buffer(4)]],
      -
      1031 const constant int& in_vec_size [[buffer(5)]],
      -
      1032 const constant int& out_vec_size [[buffer(6)]],
      -
      1033 uint3 tid [[threadgroup_position_in_grid]],
      -
      1034 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1035 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1036 qmv_impl<T, group_size, bits>(
      -
      1037 w,
      -
      1038 scales,
      -
      1039 biases,
      -
      1040 x,
      -
      1041 y,
      -
      1042 in_vec_size,
      -
      1043 out_vec_size,
      -
      1044 tid,
      -
      1045 simd_gid,
      -
      1046 simd_lid);
      -
      1047}
      -
      -
      1048
      -
      1049template <typename T, const int group_size, const int bits>
      -
      -
      1050[[kernel]] void qvm(
      -
      1051 const device T* x [[buffer(0)]],
      -
      1052 const device uint32_t* w [[buffer(1)]],
      -
      1053 const device T* scales [[buffer(2)]],
      -
      1054 const device T* biases [[buffer(3)]],
      -
      1055 device T* y [[buffer(4)]],
      -
      1056 const constant int& in_vec_size [[buffer(5)]],
      -
      1057 const constant int& out_vec_size [[buffer(6)]],
      -
      1058 uint3 tid [[threadgroup_position_in_grid]],
      -
      1059 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1060 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1061 qvm_impl<T, group_size, bits>(
      -
      1062 x,
      -
      1063 w,
      -
      1064 scales,
      -
      1065 biases,
      -
      1066 y,
      -
      1067 in_vec_size,
      -
      1068 out_vec_size,
      -
      1069 tid,
      -
      1070 simd_gid,
      -
      1071 simd_lid);
      -
      1072}
      -
      -
      1073
      -
      1074template <
      -
      1075 typename T,
      -
      1076 const int group_size,
      -
      1077 const int bits,
      -
      1078 const bool aligned_N,
      -
      1079 const int BM = 32,
      -
      1080 const int BK = 32,
      -
      1081 const int BN = 32>
      -
      -
      1082[[kernel]] void qmm_t(
      -
      1083 const device T* x [[buffer(0)]],
      -
      1084 const device uint32_t* w [[buffer(1)]],
      -
      1085 const device T* scales [[buffer(2)]],
      -
      1086 const device T* biases [[buffer(3)]],
      -
      1087 device T* y [[buffer(4)]],
      -
      1088 const constant int& M [[buffer(5)]],
      -
      1089 const constant int& N [[buffer(6)]],
      -
      1090 const constant int& K [[buffer(7)]],
      -
      1091 uint3 tid [[threadgroup_position_in_grid]],
      -
      1092 uint lid [[thread_index_in_threadgroup]],
      -
      1093 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1094 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1095 (void)lid;
      -
      1096
      -
      1097 constexpr int BK_padded = (BK + 16 / sizeof(T));
      -
      1098
      -
      1099 threadgroup T Xs[BM * BK_padded];
      -
      1100 threadgroup T Ws[BN * BK_padded];
      -
      1101
      -
      1102 qmm_t_impl<T, group_size, bits, aligned_N, BM, BK, BN>(
      -
      1103 x, w, scales, biases, y, Xs, Ws, M, N, K, tid, lid, simd_gid, simd_lid);
      -
      1104}
      -
      -
      1105
      -
      1106template <
      -
      1107 typename T,
      -
      1108 const int group_size,
      -
      1109 const int bits,
      -
      1110 const int BM = 32,
      -
      1111 const int BK = 32,
      -
      1112 const int BN = 32>
      -
      -
      1113[[kernel]] void qmm_n(
      -
      1114 const device T* x [[buffer(0)]],
      -
      1115 const device uint32_t* w [[buffer(1)]],
      -
      1116 const device T* scales [[buffer(2)]],
      -
      1117 const device T* biases [[buffer(3)]],
      -
      1118 device T* y [[buffer(4)]],
      -
      1119 const constant int& M [[buffer(5)]],
      -
      1120 const constant int& N [[buffer(6)]],
      -
      1121 const constant int& K [[buffer(7)]],
      -
      1122 uint3 tid [[threadgroup_position_in_grid]],
      -
      1123 uint lid [[thread_index_in_threadgroup]],
      -
      1124 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1125 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1126 (void)lid;
      -
      1127
      -
      1128 constexpr int BK_padded = (BK + 16 / sizeof(T));
      -
      1129 constexpr int BN_padded = (BN + 16 / sizeof(T));
      -
      1130
      -
      1131 threadgroup T Xs[BM * BK_padded];
      -
      1132 threadgroup T Ws[BK * BN_padded];
      -
      1133
      -
      1134 qmm_n_impl<T, group_size, bits, BM, BK, BN>(
      -
      1135 x, w, scales, biases, y, Xs, Ws, M, N, K, tid, lid, simd_gid, simd_lid);
      -
      1136}
      -
      -
      1137
      -
      1138template <typename T, int group_size, int bits>
      -
      -
      1139[[kernel]] void bs_qmv_fast(
      -
      1140 const device uint32_t* w [[buffer(0)]],
      -
      1141 const device T* scales [[buffer(1)]],
      -
      1142 const device T* biases [[buffer(2)]],
      -
      1143 const device T* x [[buffer(3)]],
      -
      1144 const device uint32_t* lhs_indices [[buffer(4)]],
      -
      1145 const device uint32_t* rhs_indices [[buffer(5)]],
      -
      1146 device T* y [[buffer(6)]],
      -
      1147 const constant int& in_vec_size [[buffer(7)]],
      -
      1148 const constant int& out_vec_size [[buffer(8)]],
      -
      1149 const constant int& batch_ndims [[buffer(9)]],
      -
      1150 const constant int* batch_shape [[buffer(10)]],
      -
      1151 const constant size_t* lhs_strides [[buffer(11)]],
      -
      1152 const constant size_t* rhs_strides [[buffer(12)]],
      -
      1153 const constant int& x_batch_ndims [[buffer(13)]],
      -
      1154 const constant int* x_shape [[buffer(14)]],
      -
      1155 const constant size_t* x_strides [[buffer(15)]],
      -
      1156 const constant int& w_batch_ndims [[buffer(16)]],
      -
      1157 const constant int* w_shape [[buffer(17)]],
      -
      1158 const constant size_t* w_strides [[buffer(18)]],
      -
      1159 const constant size_t* s_strides [[buffer(19)]],
      -
      1160 const constant size_t* b_strides [[buffer(20)]],
      -
      1161 uint3 tid [[threadgroup_position_in_grid]],
      -
      1162 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1163 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1164 adjust_matrix_offsets<T>(
      -
      1165 x,
      -
      1166 w,
      -
      1167 scales,
      -
      1168 biases,
      -
      1169 lhs_indices,
      -
      1170 rhs_indices,
      -
      1171 y,
      -
      1172 out_vec_size,
      -
      1173 batch_ndims,
      -
      1174 batch_shape,
      -
      1175 lhs_strides,
      -
      1176 rhs_strides,
      -
      1177 x_batch_ndims,
      -
      1178 x_shape,
      -
      1179 x_strides,
      -
      1180 w_batch_ndims,
      -
      1181 w_shape,
      -
      1182 w_strides,
      -
      1183 s_strides,
      -
      1184 b_strides,
      -
      1185 tid);
      -
      1186 qmv_fast_impl<T, group_size, bits>(
      -
      1187 w,
      -
      1188 scales,
      -
      1189 biases,
      -
      1190 x,
      -
      1191 y,
      -
      1192 in_vec_size,
      -
      1193 out_vec_size,
      -
      1194 tid,
      -
      1195 simd_gid,
      -
      1196 simd_lid);
      -
      1197}
      -
      -
      1198
      -
      1199template <typename T, int group_size, int bits>
      -
      -
      1200[[kernel]] void bs_qmv(
      -
      1201 const device uint32_t* w [[buffer(0)]],
      -
      1202 const device T* scales [[buffer(1)]],
      -
      1203 const device T* biases [[buffer(2)]],
      -
      1204 const device T* x [[buffer(3)]],
      -
      1205 const device uint32_t* lhs_indices [[buffer(4)]],
      -
      1206 const device uint32_t* rhs_indices [[buffer(5)]],
      -
      1207 device T* y [[buffer(6)]],
      -
      1208 const constant int& in_vec_size [[buffer(7)]],
      -
      1209 const constant int& out_vec_size [[buffer(8)]],
      -
      1210 const constant int& batch_ndims [[buffer(9)]],
      -
      1211 const constant int* batch_shape [[buffer(10)]],
      -
      1212 const constant size_t* lhs_strides [[buffer(11)]],
      -
      1213 const constant size_t* rhs_strides [[buffer(12)]],
      -
      1214 const constant int& x_batch_ndims [[buffer(13)]],
      -
      1215 const constant int* x_shape [[buffer(14)]],
      -
      1216 const constant size_t* x_strides [[buffer(15)]],
      -
      1217 const constant int& w_batch_ndims [[buffer(16)]],
      -
      1218 const constant int* w_shape [[buffer(17)]],
      -
      1219 const constant size_t* w_strides [[buffer(18)]],
      -
      1220 const constant size_t* s_strides [[buffer(19)]],
      -
      1221 const constant size_t* b_strides [[buffer(20)]],
      -
      1222 uint3 tid [[threadgroup_position_in_grid]],
      -
      1223 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1224 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1225 adjust_matrix_offsets<T>(
      -
      1226 x,
      -
      1227 w,
      -
      1228 scales,
      -
      1229 biases,
      -
      1230 lhs_indices,
      -
      1231 rhs_indices,
      -
      1232 y,
      -
      1233 out_vec_size,
      -
      1234 batch_ndims,
      -
      1235 batch_shape,
      -
      1236 lhs_strides,
      -
      1237 rhs_strides,
      -
      1238 x_batch_ndims,
      -
      1239 x_shape,
      -
      1240 x_strides,
      -
      1241 w_batch_ndims,
      -
      1242 w_shape,
      -
      1243 w_strides,
      -
      1244 s_strides,
      -
      1245 b_strides,
      -
      1246 tid);
      -
      1247 qmv_impl<T, group_size, bits>(
      -
      1248 w,
      -
      1249 scales,
      -
      1250 biases,
      -
      1251 x,
      -
      1252 y,
      -
      1253 in_vec_size,
      -
      1254 out_vec_size,
      -
      1255 tid,
      -
      1256 simd_gid,
      -
      1257 simd_lid);
      -
      1258}
      -
      -
      1259
      -
      1260template <typename T, int group_size, int bits>
      -
      -
      1261[[kernel]] void bs_qvm(
      -
      1262 const device T* x [[buffer(0)]],
      -
      1263 const device uint32_t* w [[buffer(1)]],
      -
      1264 const device T* scales [[buffer(2)]],
      -
      1265 const device T* biases [[buffer(3)]],
      -
      1266 const device uint32_t* lhs_indices [[buffer(4)]],
      -
      1267 const device uint32_t* rhs_indices [[buffer(5)]],
      -
      1268 device T* y [[buffer(6)]],
      -
      1269 const constant int& in_vec_size [[buffer(7)]],
      -
      1270 const constant int& out_vec_size [[buffer(8)]],
      -
      1271 const constant int& batch_ndims [[buffer(9)]],
      -
      1272 const constant int* batch_shape [[buffer(10)]],
      -
      1273 const constant size_t* lhs_strides [[buffer(11)]],
      -
      1274 const constant size_t* rhs_strides [[buffer(12)]],
      -
      1275 const constant int& x_batch_ndims [[buffer(13)]],
      -
      1276 const constant int* x_shape [[buffer(14)]],
      -
      1277 const constant size_t* x_strides [[buffer(15)]],
      -
      1278 const constant int& w_batch_ndims [[buffer(16)]],
      -
      1279 const constant int* w_shape [[buffer(17)]],
      -
      1280 const constant size_t* w_strides [[buffer(18)]],
      -
      1281 const constant size_t* s_strides [[buffer(19)]],
      -
      1282 const constant size_t* b_strides [[buffer(20)]],
      -
      1283 uint3 tid [[threadgroup_position_in_grid]],
      -
      1284 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1285 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1286 adjust_matrix_offsets<T>(
      -
      1287 x,
      -
      1288 w,
      -
      1289 scales,
      -
      1290 biases,
      -
      1291 lhs_indices,
      -
      1292 rhs_indices,
      -
      1293 y,
      -
      1294 out_vec_size,
      -
      1295 batch_ndims,
      -
      1296 batch_shape,
      -
      1297 lhs_strides,
      -
      1298 rhs_strides,
      -
      1299 x_batch_ndims,
      -
      1300 x_shape,
      -
      1301 x_strides,
      -
      1302 w_batch_ndims,
      -
      1303 w_shape,
      -
      1304 w_strides,
      -
      1305 s_strides,
      -
      1306 b_strides,
      -
      1307 tid);
      -
      1308 qvm_impl<T, group_size, bits>(
      -
      1309 x,
      -
      1310 w,
      -
      1311 scales,
      -
      1312 biases,
      -
      1313 y,
      -
      1314 in_vec_size,
      -
      1315 out_vec_size,
      -
      1316 tid,
      -
      1317 simd_gid,
      -
      1318 simd_lid);
      -
      1319}
      -
      -
      1320
      -
      1321template <
      -
      1322 typename T,
      -
      1323 const int group_size,
      -
      1324 const int bits,
      -
      1325 const bool aligned_N,
      -
      1326 const int BM = 32,
      -
      1327 const int BK = 32,
      -
      1328 const int BN = 32>
      -
      -
      1329[[kernel]] void bs_qmm_t(
      -
      1330 const device T* x [[buffer(0)]],
      -
      1331 const device uint32_t* w [[buffer(1)]],
      -
      1332 const device T* scales [[buffer(2)]],
      -
      1333 const device T* biases [[buffer(3)]],
      -
      1334 const device uint32_t* lhs_indices [[buffer(4)]],
      -
      1335 const device uint32_t* rhs_indices [[buffer(5)]],
      -
      1336 device T* y [[buffer(6)]],
      -
      1337 const constant int& M [[buffer(7)]],
      -
      1338 const constant int& N [[buffer(8)]],
      -
      1339 const constant int& K [[buffer(9)]],
      -
      1340 const constant int& batch_ndims [[buffer(10)]],
      -
      1341 const constant int* batch_shape [[buffer(11)]],
      -
      1342 const constant size_t* lhs_strides [[buffer(12)]],
      -
      1343 const constant size_t* rhs_strides [[buffer(13)]],
      -
      1344 const constant int& x_batch_ndims [[buffer(14)]],
      -
      1345 const constant int* x_shape [[buffer(15)]],
      -
      1346 const constant size_t* x_strides [[buffer(16)]],
      -
      1347 const constant int& w_batch_ndims [[buffer(17)]],
      -
      1348 const constant int* w_shape [[buffer(18)]],
      -
      1349 const constant size_t* w_strides [[buffer(19)]],
      -
      1350 const constant size_t* s_strides [[buffer(20)]],
      -
      1351 const constant size_t* b_strides [[buffer(21)]],
      -
      1352 uint3 tid [[threadgroup_position_in_grid]],
      -
      1353 uint lid [[thread_index_in_threadgroup]],
      -
      1354 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1355 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1356 (void)lid;
      -
      1357
      -
      1358 constexpr int BK_padded = (BK + 16 / sizeof(T));
      -
      1359
      -
      1360 threadgroup T Xs[BM * BK_padded];
      -
      1361 threadgroup T Ws[BN * BK_padded];
      -
      1362
      -
      1363 adjust_matrix_offsets<T>(
      -
      1364 x,
      -
      1365 w,
      -
      1366 scales,
      -
      1367 biases,
      -
      1368 lhs_indices,
      -
      1369 rhs_indices,
      -
      1370 y,
      -
      1371 M * N,
      -
      1372 batch_ndims,
      -
      1373 batch_shape,
      -
      1374 lhs_strides,
      -
      1375 rhs_strides,
      -
      1376 x_batch_ndims,
      -
      1377 x_shape,
      -
      1378 x_strides,
      -
      1379 w_batch_ndims,
      -
      1380 w_shape,
      -
      1381 w_strides,
      -
      1382 s_strides,
      -
      1383 b_strides,
      -
      1384 tid);
      -
      1385 qmm_t_impl<T, group_size, bits, aligned_N, BM, BK, BN>(
      -
      1386 x, w, scales, biases, y, Xs, Ws, M, N, K, tid, lid, simd_gid, simd_lid);
      -
      1387}
      -
      -
      1388
      -
      1389template <
      -
      1390 typename T,
      -
      1391 const int group_size,
      -
      1392 const int bits,
      -
      1393 const int BM = 32,
      -
      1394 const int BK = 32,
      -
      1395 const int BN = 32>
      -
      -
      1396[[kernel]] void bs_qmm_n(
      -
      1397 const device T* x [[buffer(0)]],
      -
      1398 const device uint32_t* w [[buffer(1)]],
      -
      1399 const device T* scales [[buffer(2)]],
      -
      1400 const device T* biases [[buffer(3)]],
      -
      1401 const device uint32_t* lhs_indices [[buffer(4)]],
      -
      1402 const device uint32_t* rhs_indices [[buffer(5)]],
      -
      1403 device T* y [[buffer(6)]],
      -
      1404 const constant int& M [[buffer(7)]],
      -
      1405 const constant int& N [[buffer(8)]],
      -
      1406 const constant int& K [[buffer(9)]],
      -
      1407 const constant int& batch_ndims [[buffer(10)]],
      -
      1408 const constant int* batch_shape [[buffer(11)]],
      -
      1409 const constant size_t* lhs_strides [[buffer(12)]],
      -
      1410 const constant size_t* rhs_strides [[buffer(13)]],
      -
      1411 const constant int& x_batch_ndims [[buffer(14)]],
      -
      1412 const constant int* x_shape [[buffer(15)]],
      -
      1413 const constant size_t* x_strides [[buffer(16)]],
      -
      1414 const constant int& w_batch_ndims [[buffer(17)]],
      -
      1415 const constant int* w_shape [[buffer(18)]],
      -
      1416 const constant size_t* w_strides [[buffer(19)]],
      -
      1417 const constant size_t* s_strides [[buffer(20)]],
      -
      1418 const constant size_t* b_strides [[buffer(21)]],
      -
      1419 uint3 tid [[threadgroup_position_in_grid]],
      -
      1420 uint lid [[thread_index_in_threadgroup]],
      -
      1421 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      1422 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      1423 (void)lid;
      -
      1424
      -
      1425 constexpr int BK_padded = (BK + 16 / sizeof(T));
      -
      1426 constexpr int BN_padded = (BN + 16 / sizeof(T));
      -
      1427
      -
      1428 threadgroup T Xs[BM * BK_padded];
      -
      1429 threadgroup T Ws[BK * BN_padded];
      -
      1430
      -
      1431 adjust_matrix_offsets<T>(
      -
      1432 x,
      -
      1433 w,
      -
      1434 scales,
      -
      1435 biases,
      -
      1436 lhs_indices,
      -
      1437 rhs_indices,
      -
      1438 y,
      -
      1439 M * N,
      -
      1440 batch_ndims,
      -
      1441 batch_shape,
      -
      1442 lhs_strides,
      -
      1443 rhs_strides,
      -
      1444 x_batch_ndims,
      -
      1445 x_shape,
      -
      1446 x_strides,
      -
      1447 w_batch_ndims,
      -
      1448 w_shape,
      -
      1449 w_strides,
      -
      1450 s_strides,
      -
      1451 b_strides,
      -
      1452 tid);
      -
      1453 qmm_n_impl<T, group_size, bits, BM, BK, BN>(
      -
      1454 x, w, scales, biases, y, Xs, Ws, M, N, K, tid, lid, simd_gid, simd_lid);
      -
      1455}
      -
      -
      1456
      -
      1457template <typename T, const int group_size, const int bits>
      -
      -
      1458[[kernel]] void affine_quantize(
      -
      1459 const device T* w [[buffer(0)]],
      -
      1460 device uint8_t* out [[buffer(1)]],
      -
      1461 device T* scales [[buffer(2)]],
      -
      1462 device T* biases [[buffer(3)]],
      -
      1463 uint2 index [[thread_position_in_grid]],
      -
      1464 uint2 grid_dim [[threads_per_grid]]) {
      -
      1465 constexpr T eps = T(1e-7);
      -
      1466 constexpr int simd_size = 32;
      -
      1467 constexpr int uint8_bits = 8;
      -
      1468 constexpr T n_bins = (1 << bits) - 1;
      -
      1469 constexpr int packs_per_int = uint8_bits / bits;
      -
      1470 constexpr int values_per_reduce = group_size / simd_size;
      -
      1471 constexpr int writes_per_reduce = packs_per_int / values_per_reduce;
      -
      1472 constexpr int writes_per_pack =
      -
      1473 writes_per_reduce > 1 ? 1 : values_per_reduce / packs_per_int;
      -
      1474
      -
      1475 static_assert(
      -
      1476 group_size % simd_size == 0,
      -
      1477 "Group size must be divisible by simd size.");
      -
      1478
      -
      1479 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      1480 size_t in_index = offset * values_per_reduce;
      -
      1481 size_t out_index = offset * writes_per_pack;
      -
      1482
      -
      1483 T w_thread[values_per_reduce];
      -
      1484 T w_min = Limits<T>::max;
      -
      1485 T w_max = 0;
      -
      1486
      -
      1487#pragma clang loop unroll(full)
      -
      1488 for (int i = 0; i < values_per_reduce; i++) {
      -
      1489 T val = w[in_index + i];
      -
      1490 w_thread[i] = val;
      -
      1491 w_min = min(w_min, val);
      -
      1492 w_max = max(w_max, val);
      -
      1493 }
      -
      1494
      -
      1495 w_min = simd_min(w_min);
      -
      1496 w_max = simd_max(w_max);
      -
      1497
      -
      1498 T scale = max((w_max - w_min) / n_bins, eps);
      -
      1499 bool side = abs(w_min) > abs(w_max);
      -
      1500 scale = side ? scale : -scale;
      -
      1501 T edge = side ? w_min : w_max;
      -
      1502 T q0 = round(edge / scale);
      -
      1503 bool at_zero = q0 == 0.0f;
      -
      1504 scale = at_zero ? scale : edge / q0;
      -
      1505 T bias = at_zero ? T(0) : edge;
      -
      1506
      -
      1507 // Write out the scales and biases
      -
      1508 size_t gindex = in_index / group_size;
      -
      1509 if (in_index % group_size == 0) {
      -
      1510 scales[gindex] = scale;
      -
      1511 biases[gindex] = bias;
      -
      1512 }
      -
      1513
      -
      1514 uint8_t output = 0;
      -
      1515#pragma clang loop unroll(full)
      -
      1516 for (int i = 0; i < values_per_reduce; i++) {
      -
      1517 uint8_t val = min(round((w_thread[i] - bias) / scale), n_bins);
      -
      1518 if (bits == 8) {
      -
      1519 output = val;
      -
      1520 } else {
      -
      1521 output += val << (bits * (i % packs_per_int));
      -
      1522 }
      -
      1523
      -
      1524 if (packs_per_int < values_per_reduce &&
      -
      1525 i % packs_per_int == packs_per_int - 1) {
      -
      1526 out[out_index + i / packs_per_int] = output;
      -
      1527 output = 0;
      -
      1528 } else {
      -
      1529#pragma clang loop unroll(full)
      -
      1530 for (int j = 0; j < writes_per_reduce - 1; j++) {
      -
      1531 uint8_t sval = simd_shuffle_down(val, j + 1);
      -
      1532 output += sval << (bits * (values_per_reduce + j + i));
      -
      1533 }
      -
      1534 }
      -
      1535 }
      -
      1536 if (writes_per_reduce > 0 && out_index % writes_per_reduce == 0) {
      -
      1537 out[out_index / writes_per_reduce] = output;
      -
      1538 }
      -
      1539}
      -
      -
      1540
      -
      1541template <typename T, const int group_size, const int bits>
      -
      - -
      1543 const device T* w [[buffer(0)]],
      -
      1544 const device T* scales [[buffer(1)]],
      -
      1545 const device T* biases [[buffer(2)]],
      -
      1546 device uint8_t* out [[buffer(3)]],
      -
      1547 uint2 index [[thread_position_in_grid]],
      -
      1548 uint2 grid_dim [[threads_per_grid]]) {
      -
      1549 constexpr int uint8_bits = 8;
      -
      1550 constexpr int packs_per_int = uint8_bits / bits;
      -
      1551 constexpr T n_bins = (1 << bits) - 1;
      -
      1552
      -
      1553 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      1554 size_t in_index = offset * packs_per_int;
      -
      1555 size_t gindex = in_index / group_size;
      -
      1556
      -
      1557 T scale = scales[gindex];
      -
      1558 T bias = biases[gindex];
      -
      1559
      -
      1560 uint8_t output = 0;
      -
      1561#pragma clang loop unroll(full)
      -
      1562 for (int i = 0; i < packs_per_int; i++) {
      -
      1563 uint8_t val = min(round((w[in_index + i] - bias) / scale), n_bins);
      -
      1564 if (bits == 8) {
      -
      1565 output = val;
      -
      1566 } else {
      -
      1567 output += val << (bits * i);
      -
      1568 }
      -
      1569 }
      -
      1570 out[offset] = output;
      -
      1571}
      -
      -
      1572
      -
      1573template <typename T, const int group_size, const int bits>
      -
      -
      1574[[kernel]] void affine_dequantize(
      -
      1575 const device uint8_t* w [[buffer(0)]],
      -
      1576 const device T* scales [[buffer(1)]],
      -
      1577 const device T* biases [[buffer(2)]],
      -
      1578 device T* out [[buffer(3)]],
      -
      1579 uint2 index [[thread_position_in_grid]],
      -
      1580 uint2 grid_dim [[threads_per_grid]]) {
      -
      1581 constexpr int uint8_bits = 8;
      -
      1582 constexpr int packs_per_int = uint8_bits / bits;
      -
      1583
      -
      1584 size_t offset = index.x + grid_dim.x * size_t(index.y);
      -
      1585 size_t oindex = offset * packs_per_int;
      -
      1586 size_t gindex = oindex / group_size;
      -
      1587 T scale = scales[gindex];
      -
      1588 T bias = biases[gindex];
      -
      1589 uint val = w[offset];
      -
      1590
      -
      1591#pragma clang loop unroll(full)
      -
      1592 for (int i = 0; i < packs_per_int; i++) {
      -
      1593 uint8_t d;
      -
      1594 if (bits == 2) {
      -
      1595 d = (val >> (bits * i)) & 0x03;
      -
      1596 } else if (bits == 4) {
      -
      1597 d = (val >> (bits * i)) & 0x0f;
      -
      1598 } else if (bits == 8) {
      -
      1599 d = val;
      -
      1600 }
      -
      1601 out[oindex + i] = scale * d + bias;
      -
      1602 }
      -
      1603}
      -
      -
      static constant constexpr const uint8_t simd_size
      Definition ops.h:22
      -
      METAL_FUNC ulong2 elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
      Definition utils.h:7
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Definition bf16.h:265
      -
      METAL_FUNC bfloat16_t simd_max(bfloat16_t data)
      Definition bf16_math.h:392
      -
      METAL_FUNC bfloat16_t round(bfloat16_t x)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t simd_sum(bfloat16_t data)
      Definition bf16_math.h:392
      -
      METAL_FUNC bfloat16_t max(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t abs(bfloat16_t x)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t simd_min(bfloat16_t data)
      Definition bf16_math.h:392
      -
      METAL_FUNC bfloat16_t simd_shuffle_down(bfloat16_t data, ushort delta)
      Definition bf16_math.h:391
      -
      array bits(const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate an array with type uint32 filled with random bits.
      -
      #define MLX_MTL_CONST
      Definition quantized.h:8
      -
      void bs_qmv(const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1200
      -
      U qdot_safe(const device uint8_t *w, const thread U *x_thread, U scale, U bias, U sum, int N)
      Definition quantized.h:141
      -
      void qvm(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1050
      -
      METAL_FUNC void adjust_matrix_offsets(const device T *&x, const device uint32_t *&w, const device T *&scales, const device T *&biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *&y, int output_stride, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid)
      Definition quantized.h:946
      -
      void bs_qmm_t(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &M, const constant int &N, const constant int &K, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1329
      -
      void bs_qvm(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1261
      -
      void affine_quantize(const device T *w, device uint8_t *out, device T *scales, device T *biases, uint2 index, uint2 grid_dim)
      Definition quantized.h:1458
      -
      METAL_FUNC void qmm_n_impl(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, threadgroup T *Xs, threadgroup T *Ws, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
      Definition quantized.h:820
      -
      void affine_dequantize(const device uint8_t *w, const device T *scales, const device T *biases, device T *out, uint2 index, uint2 grid_dim)
      Definition quantized.h:1574
      -
      static constant constexpr const int SIMD_SIZE
      Definition quantized.h:10
      -
      void bs_qmv_fast(const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1139
      -
      void affine_quantize_scales_biases(const device T *w, const device T *scales, const device T *biases, device uint8_t *out, uint2 index, uint2 grid_dim)
      Definition quantized.h:1542
      -
      U load_vector(const device T *x, thread U *x_thread)
      Definition quantized.h:13
      -
      METAL_FUNC void qmv_impl(const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:439
      -
      METAL_FUNC void qvm_impl(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:588
      -
      U load_vector_safe(const device T *x, thread U *x_thread, int N)
      Definition quantized.h:51
      -
      U qdot(const device uint8_t *w, const thread U *x_thread, U scale, U bias, U sum)
      Definition quantized.h:98
      -
      void qmm_n(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1113
      -
      METAL_FUNC void qmv_fast_impl(const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:375
      -
      METAL_FUNC void qmm_t_impl(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, threadgroup T *Xs, threadgroup T *Ws, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
      Definition quantized.h:699
      -
      void bs_qmm_n(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, const device uint32_t *lhs_indices, const device uint32_t *rhs_indices, device T *y, const constant int &M, const constant int &N, const constant int &K, const constant int &batch_ndims, const constant int *batch_shape, const constant size_t *lhs_strides, const constant size_t *rhs_strides, const constant int &x_batch_ndims, const constant int *x_shape, const constant size_t *x_strides, const constant int &w_batch_ndims, const constant int *w_shape, const constant size_t *w_strides, const constant size_t *s_strides, const constant size_t *b_strides, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1396
      -
      void qmv_fast(const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1000
      -
      void qmv(const device uint32_t *w, const device T *scales, const device T *biases, const device T *x, device T *y, const constant int &in_vec_size, const constant int &out_vec_size, uint3 tid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1025
      -
      void qouter(const thread uint8_t *w, U x, U scale, U bias, thread U *result)
      Definition quantized.h:186
      -
      void dequantize(const device uint8_t *w, U scale, U bias, threadgroup U *w_local)
      Definition quantized.h:218
      -
      void qmm_t(const device T *x, const device uint32_t *w, const device T *scales, const device T *biases, device T *y, const constant int &M, const constant int &N, const constant int &K, uint3 tid, uint lid, uint simd_gid, uint simd_lid)
      Definition quantized.h:1082
      -
      Definition utils.h:17
      -
      Definition quantized.h:261
      -
      const int group_stride
      Definition quantized.h:281
      -
      static constant constexpr const short BCOLS_PACKED
      Definition quantized.h:273
      -
      const device T * biases
      Definition quantized.h:290
      -
      short group_step_cnt
      Definition quantized.h:280
      -
      static constant constexpr const short group_steps
      Definition quantized.h:276
      -
      const short thread_idx
      Definition quantized.h:283
      -
      const device T * scales
      Definition quantized.h:289
      -
      static constant constexpr const short n_reads
      Definition quantized.h:274
      -
      void next()
      Definition quantized.h:353
      -
      void load_safe(short2 src_tile_dim) const
      Definition quantized.h:326
      -
      const int src_ld
      Definition quantized.h:278
      -
      const short bi
      Definition quantized.h:284
      -
      void load_unsafe() const
      Definition quantized.h:313
      -
      static constant constexpr const short pack_factor
      Definition quantized.h:272
      -
      threadgroup T * dst
      Definition quantized.h:287
      -
      const int tile_stride
      Definition quantized.h:279
      -
      const device uint32_t * src
      Definition quantized.h:288
      -
      const short bj
      Definition quantized.h:285
      -
      QuantizedBlockLoader(const device uint32_t *src_, const device T *scales_, const device T *biases_, const int src_ld_, threadgroup T *dst_, ushort simd_group_id, ushort simd_lane_id)
      Definition quantized.h:292
      -
      Definition loader.h:25
      -
      - - - - diff --git a/docs/build/html/radix_8h.html b/docs/build/html/radix_8h.html deleted file mode 100644 index 582d12eb..00000000 --- a/docs/build/html/radix_8h.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft/radix.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      radix.h File Reference
      -
      -
      -
      #include <metal_common>
      -#include <metal_math>
      -#include <metal_stdlib>
      -
      -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      METAL_FUNC float2 complex_mul (float2 a, float2 b)
       
      METAL_FUNC float2 complex_mul_conj (float2 a, float2 b)
       
      METAL_FUNC float2 get_twiddle (int k, int p)
       
      METAL_FUNC void radix2 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix3 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix4 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix5 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix6 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix7 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix8 (thread float2 *x, thread float2 *y)
       
      template<bool raders_perm>
      METAL_FUNC void radix10 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix11 (thread float2 *x, thread float2 *y)
       
      template<bool raders_perm>
      METAL_FUNC void radix12 (thread float2 *x, thread float2 *y)
       
      METAL_FUNC void radix13 (thread float2 *x, thread float2 *y)
       
      -

      Function Documentation

      - -

      ◆ complex_mul()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC float2 complex_mul (float2 a,
      float2 b )
      -
      - -
      -
      - -

      ◆ complex_mul_conj()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC float2 complex_mul_conj (float2 a,
      float2 b )
      -
      - -
      -
      - -

      ◆ get_twiddle()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC float2 get_twiddle (int k,
      int p )
      -
      - -
      -
      - -

      ◆ radix10()

      - -
      -
      -
      -template<bool raders_perm>
      - - - - - - - - - - - -
      METAL_FUNC void radix10 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix11()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix11 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix12()

      - -
      -
      -
      -template<bool raders_perm>
      - - - - - - - - - - - -
      METAL_FUNC void radix12 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix13()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix13 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix2()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix2 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix3()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix3 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix4()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix4 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix5()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix5 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix6()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix6 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix7()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix7 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      - -

      ◆ radix8()

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void radix8 (thread float2 * x,
      thread float2 * y )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/radix_8h_source.html b/docs/build/html/radix_8h_source.html deleted file mode 100644 index bb5bd6da..00000000 --- a/docs/build/html/radix_8h_source.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft/radix.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      radix.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3/* Radix kernels
      -
      4
      -
      5We provide optimized, single threaded Radix codelets
      -
      6for n=2,3,4,5,6,7,8,10,11,12,13.
      -
      7
      -
      8For n=2,3,4,5,6 we hand write the codelets.
      -
      9For n=8,10,12 we combine smaller codelets.
      -
      10For n=7,11,13 we use Rader's algorithm which decomposes
      -
      11them into (n-1)=6,10,12 codelets. */
      -
      12
      -
      13#pragma once
      -
      14
      -
      15#include <metal_common>
      -
      16#include <metal_math>
      -
      17#include <metal_stdlib>
      -
      18
      -
      -
      19METAL_FUNC float2 complex_mul(float2 a, float2 b) {
      -
      20 return float2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
      -
      21}
      -
      -
      22
      -
      23// Complex mul followed by conjugate
      -
      -
      24METAL_FUNC float2 complex_mul_conj(float2 a, float2 b) {
      -
      25 return float2(a.x * b.x - a.y * b.y, -a.x * b.y - a.y * b.x);
      -
      26}
      -
      -
      27
      -
      28// Compute an FFT twiddle factor
      -
      -
      29METAL_FUNC float2 get_twiddle(int k, int p) {
      -
      30 float theta = -2.0f * k * M_PI_F / p;
      -
      31
      -
      32 float2 twiddle = {metal::fast::cos(theta), metal::fast::sin(theta)};
      -
      33 return twiddle;
      -
      34}
      -
      -
      35
      -
      -
      36METAL_FUNC void radix2(thread float2* x, thread float2* y) {
      -
      37 y[0] = x[0] + x[1];
      -
      38 y[1] = x[0] - x[1];
      -
      39}
      -
      -
      40
      -
      -
      41METAL_FUNC void radix3(thread float2* x, thread float2* y) {
      -
      42 float pi_2_3 = -0.8660254037844387;
      -
      43
      -
      44 float2 a_1 = x[1] + x[2];
      -
      45 float2 a_2 = x[1] - x[2];
      -
      46
      -
      47 y[0] = x[0] + a_1;
      -
      48 float2 b_1 = x[0] - 0.5 * a_1;
      -
      49 float2 b_2 = pi_2_3 * a_2;
      -
      50
      -
      51 float2 b_2_j = {-b_2.y, b_2.x};
      -
      52 y[1] = b_1 + b_2_j;
      -
      53 y[2] = b_1 - b_2_j;
      -
      54}
      -
      -
      55
      -
      -
      56METAL_FUNC void radix4(thread float2* x, thread float2* y) {
      -
      57 float2 z_0 = x[0] + x[2];
      -
      58 float2 z_1 = x[0] - x[2];
      -
      59 float2 z_2 = x[1] + x[3];
      -
      60 float2 z_3 = x[1] - x[3];
      -
      61 float2 z_3_i = {z_3.y, -z_3.x};
      -
      62
      -
      63 y[0] = z_0 + z_2;
      -
      64 y[1] = z_1 + z_3_i;
      -
      65 y[2] = z_0 - z_2;
      -
      66 y[3] = z_1 - z_3_i;
      -
      67}
      -
      -
      68
      -
      -
      69METAL_FUNC void radix5(thread float2* x, thread float2* y) {
      -
      70 float2 root_5_4 = 0.5590169943749475;
      -
      71 float2 sin_2pi_5 = 0.9510565162951535;
      -
      72 float2 sin_1pi_5 = 0.5877852522924731;
      -
      73
      -
      74 float2 a_1 = x[1] + x[4];
      -
      75 float2 a_2 = x[2] + x[3];
      -
      76 float2 a_3 = x[1] - x[4];
      -
      77 float2 a_4 = x[2] - x[3];
      -
      78
      -
      79 float2 a_5 = a_1 + a_2;
      -
      80 float2 a_6 = root_5_4 * (a_1 - a_2);
      -
      81 float2 a_7 = x[0] - a_5 / 4;
      -
      82 float2 a_8 = a_7 + a_6;
      -
      83 float2 a_9 = a_7 - a_6;
      -
      84 float2 a_10 = sin_2pi_5 * a_3 + sin_1pi_5 * a_4;
      -
      85 float2 a_11 = sin_1pi_5 * a_3 - sin_2pi_5 * a_4;
      -
      86 float2 a_10_j = {a_10.y, -a_10.x};
      -
      87 float2 a_11_j = {a_11.y, -a_11.x};
      -
      88
      -
      89 y[0] = x[0] + a_5;
      -
      90 y[1] = a_8 + a_10_j;
      -
      91 y[2] = a_9 + a_11_j;
      -
      92 y[3] = a_9 - a_11_j;
      -
      93 y[4] = a_8 - a_10_j;
      -
      94}
      -
      -
      95
      -
      -
      96METAL_FUNC void radix6(thread float2* x, thread float2* y) {
      -
      97 float sin_pi_3 = 0.8660254037844387;
      -
      98 float2 a_1 = x[2] + x[4];
      -
      99 float2 a_2 = x[0] - a_1 / 2;
      -
      100 float2 a_3 = sin_pi_3 * (x[2] - x[4]);
      -
      101 float2 a_4 = x[5] + x[1];
      -
      102 float2 a_5 = x[3] - a_4 / 2;
      -
      103 float2 a_6 = sin_pi_3 * (x[5] - x[1]);
      -
      104 float2 a_7 = x[0] + a_1;
      -
      105
      -
      106 float2 a_3_i = {a_3.y, -a_3.x};
      -
      107 float2 a_6_i = {a_6.y, -a_6.x};
      -
      108 float2 a_8 = a_2 + a_3_i;
      -
      109 float2 a_9 = a_2 - a_3_i;
      -
      110 float2 a_10 = x[3] + a_4;
      -
      111 float2 a_11 = a_5 + a_6_i;
      -
      112 float2 a_12 = a_5 - a_6_i;
      -
      113
      -
      114 y[0] = a_7 + a_10;
      -
      115 y[1] = a_8 - a_11;
      -
      116 y[2] = a_9 + a_12;
      -
      117 y[3] = a_7 - a_10;
      -
      118 y[4] = a_8 + a_11;
      -
      119 y[5] = a_9 - a_12;
      -
      120}
      -
      -
      121
      -
      -
      122METAL_FUNC void radix7(thread float2* x, thread float2* y) {
      -
      123 // Rader's algorithm
      -
      124 float2 inv = {1 / 6.0, -1 / 6.0};
      -
      125
      -
      126 // fft
      -
      127 float2 in1[6] = {x[1], x[3], x[2], x[6], x[4], x[5]};
      -
      128 radix6(in1, y + 1);
      -
      129
      -
      130 y[0] = y[1] + x[0];
      -
      131
      -
      132 // b_q
      -
      133 y[1] = complex_mul_conj(y[1], float2(-1, 0));
      -
      134 y[2] = complex_mul_conj(y[2], float2(2.44013336, -1.02261879));
      -
      135 y[3] = complex_mul_conj(y[3], float2(2.37046941, -1.17510629));
      -
      136 y[4] = complex_mul_conj(y[4], float2(0, -2.64575131));
      -
      137 y[5] = complex_mul_conj(y[5], float2(2.37046941, 1.17510629));
      -
      138 y[6] = complex_mul_conj(y[6], float2(-2.44013336, -1.02261879));
      -
      139
      -
      140 // ifft
      -
      141 radix6(y + 1, x + 1);
      -
      142
      -
      143 y[1] = x[1] * inv + x[0];
      -
      144 y[5] = x[2] * inv + x[0];
      -
      145 y[4] = x[3] * inv + x[0];
      -
      146 y[6] = x[4] * inv + x[0];
      -
      147 y[2] = x[5] * inv + x[0];
      -
      148 y[3] = x[6] * inv + x[0];
      -
      149}
      -
      -
      150
      -
      -
      151METAL_FUNC void radix8(thread float2* x, thread float2* y) {
      -
      152 float cos_pi_4 = 0.7071067811865476;
      -
      153 float2 w_0 = {cos_pi_4, -cos_pi_4};
      -
      154 float2 w_1 = {-cos_pi_4, -cos_pi_4};
      -
      155 float2 temp[8] = {x[0], x[2], x[4], x[6], x[1], x[3], x[5], x[7]};
      -
      156 radix4(temp, x);
      -
      157 radix4(temp + 4, x + 4);
      -
      158
      -
      159 y[0] = x[0] + x[4];
      -
      160 y[4] = x[0] - x[4];
      -
      161 float2 x_5 = complex_mul(x[5], w_0);
      -
      162 y[1] = x[1] + x_5;
      -
      163 y[5] = x[1] - x_5;
      -
      164 float2 x_6 = {x[6].y, -x[6].x};
      -
      165 y[2] = x[2] + x_6;
      -
      166 y[6] = x[2] - x_6;
      -
      167 float2 x_7 = complex_mul(x[7], w_1);
      -
      168 y[3] = x[3] + x_7;
      -
      169 y[7] = x[3] - x_7;
      -
      170}
      -
      -
      171
      -
      172template <bool raders_perm>
      -
      -
      173METAL_FUNC void radix10(thread float2* x, thread float2* y) {
      -
      174 float2 w[4];
      -
      175 w[0] = {0.8090169943749475, -0.5877852522924731};
      -
      176 w[1] = {0.30901699437494745, -0.9510565162951535};
      -
      177 w[2] = {-w[1].x, w[1].y};
      -
      178 w[3] = {-w[0].x, w[0].y};
      -
      179
      -
      180 if (raders_perm) {
      -
      181 float2 temp[10] = {
      -
      182 x[0], x[3], x[4], x[8], x[2], x[1], x[7], x[9], x[6], x[5]};
      -
      183 radix5(temp, x);
      -
      184 radix5(temp + 5, x + 5);
      -
      185 } else {
      -
      186 float2 temp[10] = {
      -
      187 x[0], x[2], x[4], x[6], x[8], x[1], x[3], x[5], x[7], x[9]};
      -
      188 radix5(temp, x);
      -
      189 radix5(temp + 5, x + 5);
      -
      190 }
      -
      191
      -
      192 y[0] = x[0] + x[5];
      -
      193 y[5] = x[0] - x[5];
      -
      194 for (int t = 1; t < 5; t++) {
      -
      195 float2 a = complex_mul(x[t + 5], w[t - 1]);
      -
      196 y[t] = x[t] + a;
      -
      197 y[t + 5] = x[t] - a;
      -
      198 }
      -
      199}
      -
      -
      200
      -
      -
      201METAL_FUNC void radix11(thread float2* x, thread float2* y) {
      -
      202 // Raders Algorithm
      -
      203 float2 inv = {1 / 10.0, -1 / 10.0};
      -
      204
      -
      205 // fft
      -
      206 radix10<true>(x + 1, y + 1);
      -
      207
      -
      208 y[0] = y[1] + x[0];
      -
      209
      -
      210 // b_q
      -
      211 y[1] = complex_mul_conj(y[1], float2(-1, 0));
      -
      212 y[2] = complex_mul_conj(y[2], float2(0.955301878, -3.17606649));
      -
      213 y[3] = complex_mul_conj(y[3], float2(2.63610556, 2.01269656));
      -
      214 y[4] = complex_mul_conj(y[4], float2(2.54127802, 2.13117479));
      -
      215 y[5] = complex_mul_conj(y[5], float2(2.07016210, 2.59122150));
      -
      216 y[6] = complex_mul_conj(y[6], float2(0, -3.31662479));
      -
      217 y[7] = complex_mul_conj(y[7], float2(2.07016210, -2.59122150));
      -
      218 y[8] = complex_mul_conj(y[8], float2(-2.54127802, 2.13117479));
      -
      219 y[9] = complex_mul_conj(y[9], float2(2.63610556, -2.01269656));
      -
      220 y[10] = complex_mul_conj(y[10], float2(-0.955301878, -3.17606649));
      -
      221
      -
      222 // ifft
      -
      223 radix10<false>(y + 1, x + 1);
      -
      224
      -
      225 y[1] = x[1] * inv + x[0];
      -
      226 y[6] = x[2] * inv + x[0];
      -
      227 y[3] = x[3] * inv + x[0];
      -
      228 y[7] = x[4] * inv + x[0];
      -
      229 y[9] = x[5] * inv + x[0];
      -
      230 y[10] = x[6] * inv + x[0];
      -
      231 y[5] = x[7] * inv + x[0];
      -
      232 y[8] = x[8] * inv + x[0];
      -
      233 y[4] = x[9] * inv + x[0];
      -
      234 y[2] = x[10] * inv + x[0];
      -
      235}
      -
      -
      236
      -
      237template <bool raders_perm>
      -
      -
      238METAL_FUNC void radix12(thread float2* x, thread float2* y) {
      -
      239 float2 w[6];
      -
      240 float sin_pi_3 = 0.8660254037844387;
      -
      241 w[0] = {sin_pi_3, -0.5};
      -
      242 w[1] = {0.5, -sin_pi_3};
      -
      243 w[2] = {0, -1};
      -
      244 w[3] = {-0.5, -sin_pi_3};
      -
      245 w[4] = {-sin_pi_3, -0.5};
      -
      246
      -
      247 if (raders_perm) {
      -
      248 float2 temp[12] = {
      -
      249 x[0],
      -
      250 x[3],
      -
      251 x[2],
      -
      252 x[11],
      -
      253 x[8],
      -
      254 x[9],
      -
      255 x[1],
      -
      256 x[7],
      -
      257 x[5],
      -
      258 x[10],
      -
      259 x[4],
      -
      260 x[6]};
      -
      261 radix6(temp, x);
      -
      262 radix6(temp + 6, x + 6);
      -
      263 } else {
      -
      264 float2 temp[12] = {
      -
      265 x[0],
      -
      266 x[2],
      -
      267 x[4],
      -
      268 x[6],
      -
      269 x[8],
      -
      270 x[10],
      -
      271 x[1],
      -
      272 x[3],
      -
      273 x[5],
      -
      274 x[7],
      -
      275 x[9],
      -
      276 x[11]};
      -
      277 radix6(temp, x);
      -
      278 radix6(temp + 6, x + 6);
      -
      279 }
      -
      280
      -
      281 y[0] = x[0] + x[6];
      -
      282 y[6] = x[0] - x[6];
      -
      283 for (int t = 1; t < 6; t++) {
      -
      284 float2 a = complex_mul(x[t + 6], w[t - 1]);
      -
      285 y[t] = x[t] + a;
      -
      286 y[t + 6] = x[t] - a;
      -
      287 }
      -
      288}
      -
      -
      289
      -
      -
      290METAL_FUNC void radix13(thread float2* x, thread float2* y) {
      -
      291 // Raders Algorithm
      -
      292 float2 inv = {1 / 12.0, -1 / 12.0};
      -
      293
      -
      294 // fft
      -
      295 radix12<true>(x + 1, y + 1);
      -
      296
      -
      297 y[0] = y[1] + x[0];
      -
      298
      -
      299 // b_q
      -
      300 y[1] = complex_mul_conj(y[1], float2(-1, 0));
      -
      301 y[2] = complex_mul_conj(y[2], float2(3.07497206, -1.88269669));
      -
      302 y[3] = complex_mul_conj(y[3], float2(3.09912468, 1.84266823));
      -
      303 y[4] = complex_mul_conj(y[4], float2(3.45084438, -1.04483161));
      -
      304 y[5] = complex_mul_conj(y[5], float2(0.91083583, 3.48860690));
      -
      305 y[6] = complex_mul_conj(y[6], float2(-3.60286363, 0.139189267));
      -
      306 y[7] = complex_mul_conj(y[7], float2(3.60555128, 0));
      -
      307 y[8] = complex_mul_conj(y[8], float2(3.60286363, 0.139189267));
      -
      308 y[9] = complex_mul_conj(y[9], float2(0.91083583, -3.48860690));
      -
      309 y[10] = complex_mul_conj(y[10], float2(-3.45084438, -1.04483161));
      -
      310 y[11] = complex_mul_conj(y[11], float2(3.09912468, -1.84266823));
      -
      311 y[12] = complex_mul_conj(y[12], float2(-3.07497206, -1.88269669));
      -
      312
      -
      313 // ifft
      -
      314 radix12<false>(y + 1, x + 1);
      -
      315
      -
      316 y[1] = x[1] * inv + x[0];
      -
      317 y[7] = x[2] * inv + x[0];
      -
      318 y[10] = x[3] * inv + x[0];
      -
      319 y[5] = x[4] * inv + x[0];
      -
      320 y[9] = x[5] * inv + x[0];
      -
      321 y[11] = x[6] * inv + x[0];
      -
      322 y[12] = x[7] * inv + x[0];
      -
      323 y[6] = x[8] * inv + x[0];
      -
      324 y[3] = x[9] * inv + x[0];
      -
      325 y[8] = x[10] * inv + x[0];
      -
      326 y[4] = x[11] * inv + x[0];
      -
      327 y[2] = x[12] * inv + x[0];
      -
      328}
      -
      -
      METAL_FUNC bfloat16_t sin(bfloat16_t x)
      Definition bf16_math.h:242
      -
      METAL_FUNC bfloat16_t cos(bfloat16_t x)
      Definition bf16_math.h:242
      -
      METAL_FUNC void radix5(thread float2 *x, thread float2 *y)
      Definition radix.h:69
      -
      METAL_FUNC float2 complex_mul_conj(float2 a, float2 b)
      Definition radix.h:24
      -
      METAL_FUNC void radix4(thread float2 *x, thread float2 *y)
      Definition radix.h:56
      -
      METAL_FUNC void radix10(thread float2 *x, thread float2 *y)
      Definition radix.h:173
      -
      METAL_FUNC void radix11(thread float2 *x, thread float2 *y)
      Definition radix.h:201
      -
      METAL_FUNC void radix12(thread float2 *x, thread float2 *y)
      Definition radix.h:238
      -
      METAL_FUNC void radix3(thread float2 *x, thread float2 *y)
      Definition radix.h:41
      -
      METAL_FUNC float2 complex_mul(float2 a, float2 b)
      Definition radix.h:19
      -
      METAL_FUNC void radix8(thread float2 *x, thread float2 *y)
      Definition radix.h:151
      -
      METAL_FUNC void radix7(thread float2 *x, thread float2 *y)
      Definition radix.h:122
      -
      METAL_FUNC void radix2(thread float2 *x, thread float2 *y)
      Definition radix.h:36
      -
      METAL_FUNC void radix13(thread float2 *x, thread float2 *y)
      Definition radix.h:290
      -
      METAL_FUNC float2 get_twiddle(int k, int p)
      Definition radix.h:29
      -
      METAL_FUNC void radix6(thread float2 *x, thread float2 *y)
      Definition radix.h:96
      -
      - - - - diff --git a/docs/build/html/random_8h.html b/docs/build/html/random_8h.html deleted file mode 100644 index a2b1095c..00000000 --- a/docs/build/html/random_8h.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - -MLX: mlx/random.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      random.h File Reference
      -
      -
      -
      #include <chrono>
      -#include <optional>
      -#include "mlx/array.h"
      -#include "mlx/stream.h"
      -#include "mlx/utils.h"
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      class  mlx::core::random::KeySequence
       
      - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::random
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      array mlx::core::random::key (uint64_t seed)
       Get a PRNG key from a seed.
       
      void mlx::core::random::seed (uint64_t seed)
       Seed the default PRNG key.
       
      array mlx::core::random::bits (const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate an array with type uint32 filled with random bits.
       
      array mlx::core::random::bits (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      std::pair< array, arraymlx::core::random::split (const array &key, StreamOrDevice s={})
       Split the rng key into a pair of keys.
       
      array mlx::core::random::split (const array &key, int num, StreamOrDevice s={})
       Split the rng key into num keys.
       
      array mlx::core::random::uniform (const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate uniform random numbers between low and high.
       
      template<typename T , typename U >
      array mlx::core::random::uniform (T low, U high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::uniform (const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate uniform random numbers between 0 and 1.
       
      array mlx::core::random::uniform (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::normal (const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate samples from the standard normal distribution.
       
      array mlx::core::random::normal (const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::normal (const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::normal (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::multivariate_normal (const array &mean, const array &cov, const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate samples from a multivariate normal distribution.
       
      array mlx::core::random::randint (const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate integer samples uniformly at random.
       
      template<typename T , typename U >
      array mlx::core::random::randint (T low, U high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::bernoulli (const array &p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate binary variables with probability to be true equal to p.
       
      array mlx::core::random::bernoulli (const array &p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      template<typename T >
      array mlx::core::random::bernoulli (T p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      template<typename T >
      array mlx::core::random::bernoulli (T p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::bernoulli (const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::truncated_normal (const array &lower, const array &upper, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::truncated_normal (const array &lower, const array &upper, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::gumbel (const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::categorical (const array &logits, int axis, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::categorical (const array &logits_, int axis, int num_samples, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::categorical (const array &logits, int axis=-1, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::laplace (const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       Generate samples from the laplace distribution.
       
      array mlx::core::random::laplace (const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::laplace (const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      array mlx::core::random::laplace (const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
       
      -
      - - - - diff --git a/docs/build/html/random_8h_source.html b/docs/build/html/random_8h_source.html deleted file mode 100644 index 7afbda9a..00000000 --- a/docs/build/html/random_8h_source.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - -MLX: mlx/random.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      random.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <chrono>
      -
      6#include <optional>
      -
      7
      -
      8#include "mlx/array.h"
      -
      9#include "mlx/stream.h"
      -
      10#include "mlx/utils.h"
      -
      11
      -
      12namespace mlx::core::random {
      -
      13
      -
      - -
      15 public:
      -
      16 explicit KeySequence(uint64_t seed);
      -
      17
      -
      18 void seed(uint64_t seed);
      - -
      20
      -
      21 // static default
      -
      - -
      23 static KeySequence ks(get_current_time_seed());
      -
      24 return ks;
      -
      25 }
      -
      -
      26
      -
      27 private:
      -
      28 array key_;
      -
      29 static uint64_t get_current_time_seed() {
      -
      30 auto now = std::chrono::system_clock::now();
      -
      31 return std::chrono::duration_cast<std::chrono::milliseconds>(
      -
      32 now.time_since_epoch())
      -
      33 .count();
      -
      34 }
      -
      35};
      -
      -
      36
      -
      38array key(uint64_t seed);
      -
      39
      -
      41void seed(uint64_t seed);
      -
      42
      - -
      45 const std::vector<int>& shape,
      -
      46 int width,
      -
      47 const std::optional<array>& key = std::nullopt,
      -
      48 StreamOrDevice s = {});
      -
      -
      49inline array bits(
      -
      50 const std::vector<int>& shape,
      -
      51 const std::optional<array>& key = std::nullopt,
      -
      52 StreamOrDevice s = {}) {
      -
      53 return bits(shape, 4, key, s);
      -
      54}
      -
      -
      55
      -
      57std::pair<array, array> split(const array& key, StreamOrDevice s = {});
      -
      58
      -
      60array split(const array& key, int num, StreamOrDevice s = {});
      -
      61
      - -
      64 const array& low,
      -
      65 const array& high,
      -
      66 const std::vector<int>& shape,
      -
      67 Dtype dtype = float32,
      -
      68 const std::optional<array>& key = std::nullopt,
      -
      69 StreamOrDevice s = {});
      -
      70
      -
      71template <typename T, typename U>
      -
      - -
      73 T low,
      -
      74 U high,
      -
      75 const std::vector<int>& shape,
      -
      76 Dtype dtype = float32,
      -
      77 const std::optional<array>& key = std::nullopt,
      -
      78 StreamOrDevice s = {}) {
      -
      79 return uniform(array(low), array(high), shape, dtype, key, to_stream(s));
      -
      80}
      -
      -
      81
      - -
      84 const std::vector<int>& shape,
      -
      85 Dtype dtype,
      -
      86 const std::optional<array>& key = std::nullopt,
      -
      87 StreamOrDevice s = {});
      -
      - -
      89 const std::vector<int>& shape,
      -
      90 const std::optional<array>& key = std::nullopt,
      -
      91 StreamOrDevice s = {}) {
      -
      92 return uniform(shape, float32, key);
      -
      93}
      -
      -
      94
      - -
      97 const std::vector<int>& shape,
      -
      98 Dtype dtype,
      -
      99 const float loc,
      -
      100 const float scale,
      -
      101 const std::optional<array>& key = std::nullopt,
      -
      102 StreamOrDevice s = {});
      -
      - -
      104 const std::vector<int>& shape,
      -
      105 const float loc,
      -
      106 const float scale,
      -
      107 const std::optional<array>& key = std::nullopt,
      -
      108 StreamOrDevice s = {}) {
      -
      109 return normal(shape, float32, loc, scale, key, s);
      -
      110}
      -
      -
      - -
      112 const std::vector<int>& shape,
      -
      113 const Dtype dtype,
      -
      114 const std::optional<array>& key = std::nullopt,
      -
      115 StreamOrDevice s = {}) {
      -
      116 return normal(shape, dtype, 0.0, 1.0, key, s);
      -
      117}
      -
      -
      - -
      119 const std::vector<int>& shape,
      -
      120 const std::optional<array>& key = std::nullopt,
      -
      121 StreamOrDevice s = {}) {
      -
      122 return normal(shape, float32, 0.0, 1.0, key, s);
      -
      123}
      -
      -
      124
      - -
      127 const array& mean,
      -
      128 const array& cov,
      -
      129 const std::vector<int>& shape,
      -
      130 Dtype dtype,
      -
      131 const std::optional<array>& key = std::nullopt,
      -
      132 StreamOrDevice s = {});
      -
      133
      - -
      136 const array& low,
      -
      137 const array& high,
      -
      138 const std::vector<int>& shape,
      -
      139 Dtype dtype = int32,
      -
      140 const std::optional<array>& key = std::nullopt,
      -
      141 StreamOrDevice s = {});
      -
      142
      -
      143template <typename T, typename U>
      -
      - -
      145 T low,
      -
      146 U high,
      -
      147 const std::vector<int>& shape,
      -
      148 Dtype dtype = int32,
      -
      149 const std::optional<array>& key = std::nullopt,
      -
      150 StreamOrDevice s = {}) {
      -
      151 return randint(array(low), array(high), shape, dtype, key, to_stream(s));
      -
      152}
      -
      -
      153
      - -
      156 const array& p,
      -
      157 const std::vector<int>& shape,
      -
      158 const std::optional<array>& key = std::nullopt,
      -
      159 StreamOrDevice s = {});
      - -
      161 const array& p,
      -
      162 const std::optional<array>& key = std::nullopt,
      -
      163 StreamOrDevice s = {});
      -
      164
      -
      165template <typename T>
      -
      - -
      167 T p,
      -
      168 const std::optional<array>& key = std::nullopt,
      -
      169 StreamOrDevice s = {}) {
      -
      170 return bernoulli(array(p), key, s);
      -
      171}
      -
      -
      172
      -
      173template <typename T>
      -
      - -
      175 T p,
      -
      176 const std::vector<int>& shape,
      -
      177 const std::optional<array>& key = std::nullopt,
      -
      178 StreamOrDevice s = {}) {
      -
      179 return bernoulli(array(p), shape, key, s);
      -
      180}
      -
      -
      181
      - -
      183 const std::optional<array>& key = std::nullopt,
      -
      184 StreamOrDevice s = {});
      -
      185
      - -
      187 const array& lower,
      -
      188 const array& upper,
      -
      189 const std::vector<int>& shape,
      -
      190 Dtype dtype = float32,
      -
      191 const std::optional<array>& key = std::nullopt,
      -
      192 StreamOrDevice s = {});
      -
      193
      - -
      195 const array& lower,
      -
      196 const array& upper,
      -
      197 Dtype dtype = float32,
      -
      198 const std::optional<array>& key = std::nullopt,
      -
      199 StreamOrDevice s = {});
      -
      200
      - -
      202 const std::vector<int>& shape,
      -
      203 Dtype dtype = float32,
      -
      204 const std::optional<array>& key = std::nullopt,
      -
      205 StreamOrDevice s = {});
      -
      206
      - -
      208 const array& logits,
      -
      209 int axis,
      -
      210 const std::vector<int>& shape,
      -
      211 const std::optional<array>& key = std::nullopt,
      -
      212 StreamOrDevice s = {});
      -
      213
      - -
      215 const array& logits_,
      -
      216 int axis,
      -
      217 int num_samples,
      -
      218 const std::optional<array>& key = std::nullopt,
      -
      219 StreamOrDevice s = {});
      -
      220
      - -
      222 const array& logits,
      -
      223 int axis = -1,
      -
      224 const std::optional<array>& key = std::nullopt,
      -
      225 StreamOrDevice s = {});
      -
      226
      - -
      229 const std::vector<int>& shape,
      -
      230 Dtype dtype,
      -
      231 const float loc,
      -
      232 const float scale,
      -
      233 const std::optional<array>& key = std::nullopt,
      -
      234 StreamOrDevice s = {});
      -
      - -
      236 const std::vector<int>& shape,
      -
      237 const float loc,
      -
      238 const float scale,
      -
      239 const std::optional<array>& key = std::nullopt,
      -
      240 StreamOrDevice s = {}) {
      -
      241 return laplace(shape, float32, loc, scale, key, s);
      -
      242}
      -
      -
      - -
      244 const std::vector<int>& shape,
      -
      245 const Dtype dtype,
      -
      246 const std::optional<array>& key = std::nullopt,
      -
      247 StreamOrDevice s = {}) {
      -
      248 return laplace(shape, dtype, 0.0, 1.0, key, s);
      -
      249}
      -
      -
      - -
      251 const std::vector<int>& shape,
      -
      252 const std::optional<array>& key = std::nullopt,
      -
      253 StreamOrDevice s = {}) {
      -
      254 return laplace(shape, float32, 0.0, 1.0, key, s);
      -
      255}
      -
      -
      256
      -
      257} // namespace mlx::core::random
      - -
      Definition array.h:20
      -
      Definition random.h:14
      - - -
      void seed(uint64_t seed)
      -
      static KeySequence & default_()
      Definition random.h:22
      -
      array mean(const array &a, bool keepdims, StreamOrDevice s={})
      Computes the mean of the elements of an array.
      -
      Definition threefry.h:8
      -
      array truncated_normal(const array &lower, const array &upper, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      -
      array categorical(const array &logits, int axis, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      -
      std::pair< array, array > split(const array &key, StreamOrDevice s={})
      Split the rng key into a pair of keys.
      -
      array randint(const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate integer samples uniformly at random.
      -
      array multivariate_normal(const array &mean, const array &cov, const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate samples from a multivariate normal distribution.
      -
      array normal(const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate samples from the standard normal distribution.
      -
      array gumbel(const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      -
      array bits(const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate an array with type uint32 filled with random bits.
      -
      void seed(uint64_t seed)
      Seed the default PRNG key.
      -
      array bernoulli(const array &p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate binary variables with probability to be true equal to p.
      -
      array key(uint64_t seed)
      Get a PRNG key from a seed.
      -
      array laplace(const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate samples from the laplace distribution.
      -
      array uniform(const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})
      Generate uniform random numbers between low and high.
      -
      Stream to_stream(StreamOrDevice s)
      -
      constexpr Dtype int32
      Definition dtype.h:67
      -
      constexpr Dtype float32
      Definition dtype.h:71
      -
      std::variant< std::monostate, Stream, Device > StreamOrDevice
      Definition utils.h:14
      - -
      Definition dtype.h:13
      - -
      - - - - diff --git a/docs/build/html/readwrite_8h.html b/docs/build/html/readwrite_8h.html deleted file mode 100644 index f003a363..00000000 --- a/docs/build/html/readwrite_8h.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft/readwrite.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      readwrite.h File Reference
      -
      -
      -
      #include <metal_common>
      -#include "mlx/backend/metal/kernels/fft/radix.h"
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      struct  ReadWriter< in_T, out_T, step, four_step_real >
       
      - - - -

      -Macros

      #define MAX_RADIX   13
       
      -

      Macro Definition Documentation

      - -

      ◆ MAX_RADIX

      - -
      -
      - - - - -
      #define MAX_RADIX   13
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/readwrite_8h_source.html b/docs/build/html/readwrite_8h_source.html deleted file mode 100644 index 716306f8..00000000 --- a/docs/build/html/readwrite_8h_source.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/fft/readwrite.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      readwrite.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#include <metal_common>
      -
      4
      - -
      6
      -
      7/* FFT helpers for reading and writing from/to device memory.
      -
      8
      -
      9For many sizes, GPU FFTs are memory bandwidth bound so
      -
      10read/write performance is important.
      -
      11
      -
      12Where possible, we read 128 bits sequentially in each thread,
      -
      13coalesced with accesses from adajcent threads for optimal performance.
      -
      14
      -
      15We implement specialized reading/writing for:
      -
      16 - FFT
      -
      17 - RFFT
      -
      18 - IRFFT
      -
      19
      -
      20Each with support for:
      -
      21 - Contiguous reads
      -
      22 - Padded reads
      -
      23 - Strided reads
      -
      24*/
      -
      25
      -
      26#define MAX_RADIX 13
      -
      27
      -
      28using namespace metal;
      -
      29
      -
      30template <
      -
      31 typename in_T,
      -
      32 typename out_T,
      -
      33 int step = 0,
      -
      34 bool four_step_real = false>
      -
      -
      35struct ReadWriter {
      -
      36 const device in_T* in;
      -
      37 threadgroup float2* buf;
      -
      38 device out_T* out;
      -
      39 int n;
      - - -
      42 uint3 elem;
      -
      43 uint3 grid;
      - -
      45 bool inv;
      -
      46
      -
      47 // Used for strided access
      - - -
      50
      -
      -
      51 METAL_FUNC ReadWriter(
      -
      52 const device in_T* in_,
      -
      53 threadgroup float2* buf_,
      -
      54 device out_T* out_,
      -
      55 const short n_,
      -
      56 const int batch_size_,
      -
      57 const short elems_per_thread_,
      -
      58 const uint3 elem_,
      -
      59 const uint3 grid_,
      -
      60 const bool inv_)
      -
      61 : in(in_),
      -
      62 buf(buf_),
      -
      63 out(out_),
      -
      64 n(n_),
      -
      65 batch_size(batch_size_),
      - -
      67 elem(elem_),
      -
      68 grid(grid_),
      -
      69 inv(inv_) {
      -
      70 // Account for padding on last threadgroup
      -
      71 threads_per_tg = elem.x == grid.x - 1
      -
      72 ? (batch_size - (grid.x - 1) * grid.y) * grid.z
      -
      73 : grid.y * grid.z;
      -
      74 }
      -
      -
      75
      -
      76 // ifft(x) = 1/n * conj(fft(conj(x)))
      -
      -
      77 METAL_FUNC float2 post_in(float2 elem) const {
      -
      78 return inv ? float2(elem.x, -elem.y) : elem;
      -
      79 }
      -
      -
      80
      -
      81 // Handle float case for generic RFFT alg
      -
      -
      82 METAL_FUNC float2 post_in(float elem) const {
      -
      83 return float2(elem, 0);
      -
      84 }
      -
      -
      85
      -
      -
      86 METAL_FUNC float2 pre_out(float2 elem) const {
      -
      87 return inv ? float2(elem.x / n, -elem.y / n) : elem;
      -
      88 }
      -
      -
      89
      -
      -
      90 METAL_FUNC float2 pre_out(float2 elem, int length) const {
      -
      91 return inv ? float2(elem.x / length, -elem.y / length) : elem;
      -
      92 }
      -
      -
      93
      -
      -
      94 METAL_FUNC bool out_of_bounds() const {
      -
      95 // Account for possible extra threadgroups
      -
      96 int grid_index = elem.x * grid.y + elem.y;
      -
      97 return grid_index >= batch_size;
      -
      98 }
      -
      -
      99
      -
      -
      100 METAL_FUNC void load() const {
      -
      101 int batch_idx = elem.x * grid.y * n;
      -
      102 short tg_idx = elem.y * grid.z + elem.z;
      -
      103 short max_index = grid.y * n - 2;
      -
      104
      -
      105 // 2 complex64s = 128 bits
      -
      106 constexpr int read_width = 2;
      -
      107 for (short e = 0; e < (elems_per_thread / read_width); e++) {
      -
      108 short index = read_width * tg_idx + read_width * threads_per_tg * e;
      -
      109 index = metal::min(index, max_index);
      -
      110 // vectorized reads
      -
      111 buf[index] = post_in(in[batch_idx + index]);
      -
      112 buf[index + 1] = post_in(in[batch_idx + index + 1]);
      -
      113 }
      -
      114 max_index += 1;
      -
      115 if (elems_per_thread % 2 != 0) {
      -
      116 short index = tg_idx +
      -
      117 read_width * threads_per_tg * (elems_per_thread / read_width);
      -
      118 index = metal::min(index, max_index);
      -
      119 buf[index] = post_in(in[batch_idx + index]);
      -
      120 }
      -
      121 }
      -
      -
      122
      -
      -
      123 METAL_FUNC void write() const {
      -
      124 int batch_idx = elem.x * grid.y * n;
      -
      125 short tg_idx = elem.y * grid.z + elem.z;
      -
      126 short max_index = grid.y * n - 2;
      -
      127
      -
      128 constexpr int read_width = 2;
      -
      129 for (short e = 0; e < (elems_per_thread / read_width); e++) {
      -
      130 short index = read_width * tg_idx + read_width * threads_per_tg * e;
      -
      131 index = metal::min(index, max_index);
      -
      132 // vectorized reads
      -
      133 out[batch_idx + index] = pre_out(buf[index]);
      -
      134 out[batch_idx + index + 1] = pre_out(buf[index + 1]);
      -
      135 }
      -
      136 max_index += 1;
      -
      137 if (elems_per_thread % 2 != 0) {
      -
      138 short index = tg_idx +
      -
      139 read_width * threads_per_tg * (elems_per_thread / read_width);
      -
      140 index = metal::min(index, max_index);
      -
      141 out[batch_idx + index] = pre_out(buf[index]);
      -
      142 }
      -
      143 }
      -
      -
      144
      -
      145 // Padded IO for Bluestein's algorithm
      -
      -
      146 METAL_FUNC void load_padded(int length, const device float2* w_k) const {
      -
      147 int batch_idx = elem.x * grid.y * length + elem.y * length;
      -
      148 int fft_idx = elem.z;
      -
      149 int m = grid.z;
      -
      150
      -
      151 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      152 for (int e = 0; e < elems_per_thread; e++) {
      -
      153 int index = metal::min(fft_idx + e * m, n - 1);
      -
      154 if (index < length) {
      -
      155 float2 elem = post_in(in[batch_idx + index]);
      -
      156 seq_buf[index] = complex_mul(elem, w_k[index]);
      -
      157 } else {
      -
      158 seq_buf[index] = 0.0;
      -
      159 }
      -
      160 }
      -
      161 }
      -
      -
      162
      -
      -
      163 METAL_FUNC void write_padded(int length, const device float2* w_k) const {
      -
      164 int batch_idx = elem.x * grid.y * length + elem.y * length;
      -
      165 int fft_idx = elem.z;
      -
      166 int m = grid.z;
      -
      167 float2 inv_factor = {1.0f / n, -1.0f / n};
      -
      168
      -
      169 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      170 for (int e = 0; e < elems_per_thread; e++) {
      -
      171 int index = metal::min(fft_idx + e * m, n - 1);
      -
      172 if (index < length) {
      -
      173 float2 elem = seq_buf[index + length - 1] * inv_factor;
      -
      174 out[batch_idx + index] = pre_out(complex_mul(elem, w_k[index]), length);
      -
      175 }
      -
      176 }
      -
      177 }
      -
      -
      178
      -
      179 // Strided IO for four step FFT
      -
      -
      180 METAL_FUNC void compute_strided_indices(int stride, int overall_n) {
      -
      181 // Use the batch threadgroup dimension to coalesce memory accesses:
      -
      182 // e.g. stride = 12
      -
      183 // device | shared mem
      -
      184 // 0 1 2 3 | 0 12 - -
      -
      185 // - - - - | 1 13 - -
      -
      186 // - - - - | 2 14 - -
      -
      187 // 12 13 14 15 | 3 15 - -
      -
      188 int coalesce_width = grid.y;
      -
      189 int tg_idx = elem.y * grid.z + elem.z;
      -
      190 int outer_batch_size = stride / coalesce_width;
      -
      191
      -
      192 int strided_batch_idx = (elem.x % outer_batch_size) * coalesce_width +
      -
      193 overall_n * (elem.x / outer_batch_size);
      -
      194 strided_device_idx = strided_batch_idx +
      -
      195 tg_idx / coalesce_width * elems_per_thread * stride +
      -
      196 tg_idx % coalesce_width;
      -
      197 strided_shared_idx = (tg_idx % coalesce_width) * n +
      -
      198 tg_idx / coalesce_width * elems_per_thread;
      -
      199 }
      -
      -
      200
      -
      201 // Four Step FFT First Step
      -
      -
      202 METAL_FUNC void load_strided(int stride, int overall_n) {
      -
      203 compute_strided_indices(stride, overall_n);
      -
      204 for (int e = 0; e < elems_per_thread; e++) {
      - -
      206 post_in(in[strided_device_idx + e * stride]);
      -
      207 }
      -
      208 }
      -
      -
      209
      -
      -
      210 METAL_FUNC void write_strided(int stride, int overall_n) {
      -
      211 for (int e = 0; e < elems_per_thread; e++) {
      -
      212 float2 output = buf[strided_shared_idx + e];
      -
      213 int combined_idx = (strided_device_idx + e * stride) % overall_n;
      -
      214 int ij = (combined_idx / stride) * (combined_idx % stride);
      -
      215 // Apply four step twiddles at end of first step
      -
      216 float2 twiddle = get_twiddle(ij, overall_n);
      -
      217 out[strided_device_idx + e * stride] = complex_mul(output, twiddle);
      -
      218 }
      -
      219 }
      -
      -
      220};
      -
      -
      221
      -
      222// Four Step FFT Second Step
      -
      223template <>
      -
      -
      224METAL_FUNC void ReadWriter<float2, float2, /*step=*/1>::load_strided(
      -
      225 int stride,
      -
      226 int overall_n) {
      -
      227 // Silence compiler warnings
      -
      228 (void)stride;
      -
      229 (void)overall_n;
      -
      230 // Don't invert between steps
      -
      231 bool default_inv = inv;
      -
      232 inv = false;
      -
      233 load();
      -
      234 inv = default_inv;
      -
      235}
      -
      -
      236
      -
      237template <>
      -
      -
      238METAL_FUNC void ReadWriter<float2, float2, /*step=*/1>::write_strided(
      -
      239 int stride,
      -
      240 int overall_n) {
      -
      241 compute_strided_indices(stride, overall_n);
      -
      242 for (int e = 0; e < elems_per_thread; e++) {
      -
      243 float2 output = buf[strided_shared_idx + e];
      -
      244 out[strided_device_idx + e * stride] = pre_out(output, overall_n);
      -
      245 }
      -
      246}
      -
      -
      247
      -
      248// For RFFT, we interleave batches of two real sequences into one complex one:
      -
      249//
      -
      250// z_k = x_k + j.y_k
      -
      251// X_k = (Z_k + Z_(N-k)*) / 2
      -
      252// Y_k = -j * ((Z_k - Z_(N-k)*) / 2)
      -
      253//
      -
      254// This roughly doubles the throughput over the regular FFT.
      -
      255template <>
      -
      - -
      257 int grid_index = elem.x * grid.y + elem.y;
      -
      258 // We pack two sequences into one for RFFTs
      -
      259 return grid_index * 2 >= batch_size;
      -
      260}
      -
      -
      261
      -
      262template <>
      -
      -
      263METAL_FUNC void ReadWriter<float, float2>::load() const {
      -
      264 int batch_idx = elem.x * grid.y * n * 2 + elem.y * n * 2;
      -
      265 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      266
      -
      267 // No out of bounds accesses on odd batch sizes
      -
      268 int grid_index = elem.x * grid.y + elem.y;
      -
      269 short next_in =
      -
      270 batch_size % 2 == 1 && grid_index * 2 == batch_size - 1 ? 0 : n;
      -
      271
      -
      272 short m = grid.z;
      -
      273 short fft_idx = elem.z;
      -
      274
      -
      275 for (int e = 0; e < elems_per_thread; e++) {
      -
      276 int index = metal::min(fft_idx + e * m, n - 1);
      -
      277 seq_buf[index].x = in[batch_idx + index];
      -
      278 seq_buf[index].y = in[batch_idx + index + next_in];
      -
      279 }
      -
      280}
      -
      -
      281
      -
      282template <>
      -
      -
      283METAL_FUNC void ReadWriter<float, float2>::write() const {
      -
      284 short n_over_2 = (n / 2) + 1;
      -
      285
      -
      286 int batch_idx = elem.x * grid.y * n_over_2 * 2 + elem.y * n_over_2 * 2;
      -
      287 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      288
      -
      289 int grid_index = elem.x * grid.y + elem.y;
      -
      290 short next_out =
      -
      291 batch_size % 2 == 1 && grid_index * 2 == batch_size - 1 ? 0 : n_over_2;
      -
      292
      -
      293 float2 conj = {1, -1};
      -
      294 float2 minus_j = {0, -1};
      -
      295
      -
      296 short m = grid.z;
      -
      297 short fft_idx = elem.z;
      -
      298
      -
      299 for (int e = 0; e < elems_per_thread / 2 + 1; e++) {
      -
      300 int index = metal::min(fft_idx + e * m, n_over_2 - 1);
      -
      301 // x_0 = z_0.real
      -
      302 // y_0 = z_0.imag
      -
      303 if (index == 0) {
      -
      304 out[batch_idx + index] = {seq_buf[index].x, 0};
      -
      305 out[batch_idx + index + next_out] = {seq_buf[index].y, 0};
      -
      306 } else {
      -
      307 float2 x_k = seq_buf[index];
      -
      308 float2 x_n_minus_k = seq_buf[n - index] * conj;
      -
      309 out[batch_idx + index] = (x_k + x_n_minus_k) / 2;
      -
      310 out[batch_idx + index + next_out] =
      -
      311 complex_mul(((x_k - x_n_minus_k) / 2), minus_j);
      -
      312 }
      -
      313 }
      -
      314}
      -
      -
      315
      -
      316template <>
      -
      - -
      318 int length,
      -
      319 const device float2* w_k) const {
      -
      320 int batch_idx = elem.x * grid.y * length * 2 + elem.y * length * 2;
      -
      321 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      322
      -
      323 // No out of bounds accesses on odd batch sizes
      -
      324 int grid_index = elem.x * grid.y + elem.y;
      -
      325 short next_in =
      -
      326 batch_size % 2 == 1 && grid_index * 2 == batch_size - 1 ? 0 : length;
      -
      327
      -
      328 short m = grid.z;
      -
      329 short fft_idx = elem.z;
      -
      330
      -
      331 for (int e = 0; e < elems_per_thread; e++) {
      -
      332 int index = metal::min(fft_idx + e * m, n - 1);
      -
      333 if (index < length) {
      -
      334 float2 elem =
      -
      335 float2(in[batch_idx + index], in[batch_idx + index + next_in]);
      -
      336 seq_buf[index] = complex_mul(elem, w_k[index]);
      -
      337 } else {
      -
      338 seq_buf[index] = 0;
      -
      339 }
      -
      340 }
      -
      341}
      -
      -
      342
      -
      343template <>
      -
      - -
      345 int length,
      -
      346 const device float2* w_k) const {
      -
      347 int length_over_2 = (length / 2) + 1;
      -
      348 int batch_idx =
      -
      349 elem.x * grid.y * length_over_2 * 2 + elem.y * length_over_2 * 2;
      -
      350 threadgroup float2* seq_buf = buf + elem.y * n + length - 1;
      -
      351
      -
      352 int grid_index = elem.x * grid.y + elem.y;
      -
      353 short next_out = batch_size % 2 == 1 && grid_index * 2 == batch_size - 1
      -
      354 ? 0
      -
      355 : length_over_2;
      -
      356
      -
      357 float2 conj = {1, -1};
      -
      358 float2 inv_factor = {1.0f / n, -1.0f / n};
      -
      359 float2 minus_j = {0, -1};
      -
      360
      -
      361 short m = grid.z;
      -
      362 short fft_idx = elem.z;
      -
      363
      -
      364 for (int e = 0; e < elems_per_thread / 2 + 1; e++) {
      -
      365 int index = metal::min(fft_idx + e * m, length_over_2 - 1);
      -
      366 // x_0 = z_0.real
      -
      367 // y_0 = z_0.imag
      -
      368 if (index == 0) {
      -
      369 float2 elem = complex_mul(w_k[index], seq_buf[index] * inv_factor);
      -
      370 out[batch_idx + index] = float2(elem.x, 0);
      -
      371 out[batch_idx + index + next_out] = float2(elem.y, 0);
      -
      372 } else {
      -
      373 float2 x_k = complex_mul(w_k[index], seq_buf[index] * inv_factor);
      -
      374 float2 x_n_minus_k = complex_mul(
      -
      375 w_k[length - index], seq_buf[length - index] * inv_factor);
      -
      376 x_n_minus_k *= conj;
      -
      377 // w_k should happen before this extraction
      -
      378 out[batch_idx + index] = (x_k + x_n_minus_k) / 2;
      -
      379 out[batch_idx + index + next_out] =
      -
      380 complex_mul(((x_k - x_n_minus_k) / 2), minus_j);
      -
      381 }
      -
      382 }
      -
      383}
      -
      -
      384
      -
      385// For IRFFT, we do the opposite
      -
      386//
      -
      387// Z_k = X_k + j.Y_k
      -
      388// x_k = Re(Z_k)
      -
      389// Y_k = Imag(Z_k)
      -
      390template <>
      -
      - -
      392 int grid_index = elem.x * grid.y + elem.y;
      -
      393 // We pack two sequences into one for IRFFTs
      -
      394 return grid_index * 2 >= batch_size;
      -
      395}
      -
      -
      396
      -
      397template <>
      -
      -
      398METAL_FUNC void ReadWriter<float2, float>::load() const {
      -
      399 short n_over_2 = (n / 2) + 1;
      -
      400 int batch_idx = elem.x * grid.y * n_over_2 * 2 + elem.y * n_over_2 * 2;
      -
      401 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      402
      -
      403 // No out of bounds accesses on odd batch sizes
      -
      404 int grid_index = elem.x * grid.y + elem.y;
      -
      405 short next_in =
      -
      406 batch_size % 2 == 1 && grid_index * 2 == batch_size - 1 ? 0 : n_over_2;
      -
      407
      -
      408 short m = grid.z;
      -
      409 short fft_idx = elem.z;
      -
      410
      -
      411 float2 conj = {1, -1};
      -
      412 float2 plus_j = {0, 1};
      -
      413
      -
      414 for (int t = 0; t < elems_per_thread / 2 + 1; t++) {
      -
      415 int index = metal::min(fft_idx + t * m, n_over_2 - 1);
      -
      416 float2 x = in[batch_idx + index];
      -
      417 float2 y = in[batch_idx + index + next_in];
      -
      418 // NumPy forces first input to be real
      -
      419 bool first_val = index == 0;
      -
      420 // NumPy forces last input on even irffts to be real
      -
      421 bool last_val = n % 2 == 0 && index == n_over_2 - 1;
      -
      422 if (first_val || last_val) {
      -
      423 x = float2(x.x, 0);
      -
      424 y = float2(y.x, 0);
      -
      425 }
      -
      426 seq_buf[index] = x + complex_mul(y, plus_j);
      -
      427 seq_buf[index].y = -seq_buf[index].y;
      -
      428 if (index > 0 && !last_val) {
      -
      429 seq_buf[n - index] = (x * conj) + complex_mul(y * conj, plus_j);
      -
      430 seq_buf[n - index].y = -seq_buf[n - index].y;
      -
      431 }
      -
      432 }
      -
      433}
      -
      -
      434
      -
      435template <>
      -
      -
      436METAL_FUNC void ReadWriter<float2, float>::write() const {
      -
      437 int batch_idx = elem.x * grid.y * n * 2 + elem.y * n * 2;
      -
      438 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      439
      -
      440 int grid_index = elem.x * grid.y + elem.y;
      -
      441 short next_out =
      -
      442 batch_size % 2 == 1 && grid_index * 2 == batch_size - 1 ? 0 : n;
      -
      443
      -
      444 short m = grid.z;
      -
      445 short fft_idx = elem.z;
      -
      446
      -
      447 for (int e = 0; e < elems_per_thread; e++) {
      -
      448 int index = metal::min(fft_idx + e * m, n - 1);
      -
      449 out[batch_idx + index] = seq_buf[index].x / n;
      -
      450 out[batch_idx + index + next_out] = seq_buf[index].y / -n;
      -
      451 }
      -
      452}
      -
      -
      453
      -
      454template <>
      -
      - -
      456 int length,
      -
      457 const device float2* w_k) const {
      -
      458 int n_over_2 = (n / 2) + 1;
      -
      459 int length_over_2 = (length / 2) + 1;
      -
      460
      -
      461 int batch_idx =
      -
      462 elem.x * grid.y * length_over_2 * 2 + elem.y * length_over_2 * 2;
      -
      463 threadgroup float2* seq_buf = buf + elem.y * n;
      -
      464
      -
      465 // No out of bounds accesses on odd batch sizes
      -
      466 int grid_index = elem.x * grid.y + elem.y;
      -
      467 short next_in = batch_size % 2 == 1 && grid_index * 2 == batch_size - 1
      -
      468 ? 0
      -
      469 : length_over_2;
      -
      470
      -
      471 short m = grid.z;
      -
      472 short fft_idx = elem.z;
      -
      473
      -
      474 float2 conj = {1, -1};
      -
      475 float2 plus_j = {0, 1};
      -
      476
      -
      477 for (int t = 0; t < elems_per_thread / 2 + 1; t++) {
      -
      478 int index = metal::min(fft_idx + t * m, n_over_2 - 1);
      -
      479 float2 x = in[batch_idx + index];
      -
      480 float2 y = in[batch_idx + index + next_in];
      -
      481 if (index < length_over_2) {
      -
      482 bool last_val = length % 2 == 0 && index == length_over_2 - 1;
      -
      483 if (last_val) {
      -
      484 x = float2(x.x, 0);
      -
      485 y = float2(y.x, 0);
      -
      486 }
      -
      487 float2 elem1 = x + complex_mul(y, plus_j);
      -
      488 seq_buf[index] = complex_mul(elem1 * conj, w_k[index]);
      -
      489 if (index > 0 && !last_val) {
      -
      490 float2 elem2 = (x * conj) + complex_mul(y * conj, plus_j);
      -
      491 seq_buf[length - index] =
      -
      492 complex_mul(elem2 * conj, w_k[length - index]);
      -
      493 }
      -
      494 } else {
      -
      495 short pad_index = metal::min(length + (index - length_over_2) * 2, n - 2);
      -
      496 seq_buf[pad_index] = 0;
      -
      497 seq_buf[pad_index + 1] = 0;
      -
      498 }
      -
      499 }
      -
      500}
      -
      -
      501
      -
      502template <>
      -
      - -
      504 int length,
      -
      505 const device float2* w_k) const {
      -
      506 int batch_idx = elem.x * grid.y * length * 2 + elem.y * length * 2;
      -
      507 threadgroup float2* seq_buf = buf + elem.y * n + length - 1;
      -
      508
      -
      509 int grid_index = elem.x * grid.y + elem.y;
      -
      510 short next_out =
      -
      511 batch_size % 2 == 1 && grid_index * 2 == batch_size - 1 ? 0 : length;
      -
      512
      -
      513 short m = grid.z;
      -
      514 short fft_idx = elem.z;
      -
      515
      -
      516 float2 inv_factor = {1.0f / n, -1.0f / n};
      -
      517 for (int e = 0; e < elems_per_thread; e++) {
      -
      518 int index = fft_idx + e * m;
      -
      519 if (index < length) {
      -
      520 float2 output = complex_mul(seq_buf[index] * inv_factor, w_k[index]);
      -
      521 out[batch_idx + index] = output.x / length;
      -
      522 out[batch_idx + index + next_out] = output.y / -length;
      -
      523 }
      -
      524 }
      -
      525}
      -
      -
      526
      -
      527// Four Step RFFT
      -
      528template <>
      -
      529METAL_FUNC void
      -
      -
      530ReadWriter<float2, float2, /*step=*/1, /*real=*/true>::load_strided(
      -
      531 int stride,
      -
      532 int overall_n) {
      -
      533 // Silence compiler warnings
      -
      534 (void)stride;
      -
      535 (void)overall_n;
      -
      536 // Don't invert between steps
      -
      537 bool default_inv = inv;
      -
      538 inv = false;
      -
      539 load();
      -
      540 inv = default_inv;
      -
      541}
      -
      -
      542
      -
      543template <>
      -
      544METAL_FUNC void
      -
      -
      545ReadWriter<float2, float2, /*step=*/1, /*real=*/true>::write_strided(
      -
      546 int stride,
      -
      547 int overall_n) {
      -
      548 int overall_n_over_2 = overall_n / 2 + 1;
      -
      549 int coalesce_width = grid.y;
      -
      550 int tg_idx = elem.y * grid.z + elem.z;
      -
      551 int outer_batch_size = stride / coalesce_width;
      -
      552
      -
      553 int strided_batch_idx = (elem.x % outer_batch_size) * coalesce_width +
      -
      554 overall_n_over_2 * (elem.x / outer_batch_size);
      -
      555 strided_device_idx = strided_batch_idx +
      -
      556 tg_idx / coalesce_width * elems_per_thread / 2 * stride +
      -
      557 tg_idx % coalesce_width;
      -
      558 strided_shared_idx = (tg_idx % coalesce_width) * n +
      -
      559 tg_idx / coalesce_width * elems_per_thread / 2;
      -
      560 for (int e = 0; e < elems_per_thread / 2; e++) {
      -
      561 float2 output = buf[strided_shared_idx + e];
      -
      562 out[strided_device_idx + e * stride] = output;
      -
      563 }
      -
      564
      -
      565 // Add on n/2 + 1 element
      -
      566 if (tg_idx == 0 && elem.x % outer_batch_size == 0) {
      -
      567 out[strided_batch_idx + overall_n / 2] = buf[n / 2];
      -
      568 }
      -
      569}
      -
      -
      570
      -
      571// Four Step IRFFT
      -
      572template <>
      -
      573METAL_FUNC void
      -
      -
      574ReadWriter<float2, float2, /*step=*/0, /*real=*/true>::load_strided(
      -
      575 int stride,
      -
      576 int overall_n) {
      -
      577 int overall_n_over_2 = overall_n / 2 + 1;
      -
      578 auto conj = float2(1, -1);
      -
      579
      -
      580 compute_strided_indices(stride, overall_n);
      -
      581 // Translate indices in terms of N - k
      -
      582 for (int e = 0; e < elems_per_thread; e++) {
      -
      583 int device_idx = strided_device_idx + e * stride;
      -
      584 int overall_batch = device_idx / overall_n;
      -
      585 int overall_index = device_idx % overall_n;
      -
      586 if (overall_index < overall_n_over_2) {
      -
      587 device_idx -= overall_batch * (overall_n - overall_n_over_2);
      -
      588 buf[strided_shared_idx + e] = in[device_idx] * conj;
      -
      589 } else {
      -
      590 int conj_idx = overall_n - overall_index;
      -
      591 device_idx = overall_batch * overall_n_over_2 + conj_idx;
      -
      592 buf[strided_shared_idx + e] = in[device_idx];
      -
      593 }
      -
      594 }
      -
      595}
      -
      -
      596
      -
      597template <>
      -
      598METAL_FUNC void
      -
      -
      599ReadWriter<float2, float, /*step=*/1, /*real=*/true>::load_strided(
      -
      600 int stride,
      -
      601 int overall_n) {
      -
      602 // Silence compiler warnings
      -
      603 (void)stride;
      -
      604 (void)overall_n;
      -
      605 bool default_inv = inv;
      -
      606 inv = false;
      -
      607 load();
      -
      608 inv = default_inv;
      -
      609}
      -
      -
      610
      -
      611template <>
      -
      612METAL_FUNC void
      -
      -
      613ReadWriter<float2, float, /*step=*/1, /*real=*/true>::write_strided(
      -
      614 int stride,
      -
      615 int overall_n) {
      -
      616 compute_strided_indices(stride, overall_n);
      -
      617
      -
      618 for (int e = 0; e < elems_per_thread; e++) {
      -
      619 out[strided_device_idx + e * stride] =
      -
      620 pre_out(buf[strided_shared_idx + e], overall_n).x;
      -
      621 }
      -
      622}
      -
      -
      MTL::Buffer * buf
      Definition allocator.h:38
      -
      STEEL_CONST bool inv_
      Definition fft.h:23
      -
      STEEL_CONST int elems_per_thread_
      Definition fft.h:25
      -
      Definition bf16.h:265
      -
      METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      - -
      METAL_FUNC float2 complex_mul(float2 a, float2 b)
      Definition radix.h:19
      -
      METAL_FUNC float2 get_twiddle(int k, int p)
      Definition radix.h:29
      -
      Definition readwrite.h:35
      -
      METAL_FUNC bool out_of_bounds() const
      Definition readwrite.h:94
      -
      METAL_FUNC void load() const
      Definition readwrite.h:100
      -
      METAL_FUNC float2 pre_out(float2 elem, int length) const
      Definition readwrite.h:90
      -
      METAL_FUNC ReadWriter(const device in_T *in_, threadgroup float2 *buf_, device out_T *out_, const short n_, const int batch_size_, const short elems_per_thread_, const uint3 elem_, const uint3 grid_, const bool inv_)
      Definition readwrite.h:51
      -
      threadgroup float2 * buf
      Definition readwrite.h:37
      -
      uint3 elem
      Definition readwrite.h:42
      -
      int elems_per_thread
      Definition readwrite.h:41
      -
      int strided_device_idx
      Definition readwrite.h:48
      -
      int threads_per_tg
      Definition readwrite.h:44
      -
      int n
      Definition readwrite.h:39
      -
      int batch_size
      Definition readwrite.h:40
      -
      METAL_FUNC float2 post_in(float elem) const
      Definition readwrite.h:82
      -
      bool inv
      Definition readwrite.h:45
      -
      METAL_FUNC void write_strided(int stride, int overall_n)
      Definition readwrite.h:210
      -
      METAL_FUNC void compute_strided_indices(int stride, int overall_n)
      Definition readwrite.h:180
      -
      METAL_FUNC float2 pre_out(float2 elem) const
      Definition readwrite.h:86
      -
      METAL_FUNC void write_padded(int length, const device float2 *w_k) const
      Definition readwrite.h:163
      -
      METAL_FUNC void load_strided(int stride, int overall_n)
      Definition readwrite.h:202
      -
      METAL_FUNC float2 post_in(float2 elem) const
      Definition readwrite.h:77
      -
      const device in_T * in
      Definition readwrite.h:36
      -
      device out_T * out
      Definition readwrite.h:38
      -
      METAL_FUNC void write() const
      Definition readwrite.h:123
      -
      uint3 grid
      Definition readwrite.h:43
      -
      int strided_shared_idx
      Definition readwrite.h:49
      -
      METAL_FUNC void load_padded(int length, const device float2 *w_k) const
      Definition readwrite.h:146
      -
      - - - - diff --git a/docs/build/html/reduce__all_8h.html b/docs/build/html/reduce__all_8h.html deleted file mode 100644 index f96854b9..00000000 --- a/docs/build/html/reduce__all_8h.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_all.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      reduce_all.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - -

      -Functions

      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS>
      void all_reduce (const device T *in, device U *out, const constant size_t &in_size, const constant size_t &row_size, uint3 gid, uint3 lid, uint3 lsize, uint simd_per_group, uint simd_lane_id, uint simd_group_id)
       
      -

      Function Documentation

      - -

      ◆ all_reduce()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void all_reduce (const device T * in,
      device U * out,
      const constant size_t & in_size,
      const constant size_t & row_size,
      uint3 gid,
      uint3 lid,
      uint3 lsize,
      uint simd_per_group,
      uint simd_lane_id,
      uint simd_group_id )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/reduce__all_8h_source.html b/docs/build/html/reduce__all_8h_source.html deleted file mode 100644 index 0f34d095..00000000 --- a/docs/build/html/reduce__all_8h_source.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_all.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce_all.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename U, typename Op, int N_READS = REDUCE_N_READS>
      -
      -
      4[[kernel]] void all_reduce(
      -
      5 const device T* in [[buffer(0)]],
      -
      6 device U* out [[buffer(1)]],
      -
      7 const constant size_t& in_size [[buffer(2)]],
      -
      8 const constant size_t& row_size [[buffer(3)]],
      -
      9 uint3 gid [[threadgroup_position_in_grid]],
      -
      10 uint3 lid [[thread_position_in_threadgroup]],
      -
      11 uint3 lsize [[threads_per_threadgroup]],
      -
      12 uint simd_per_group [[simdgroups_per_threadgroup]],
      -
      13 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      14 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      15 Op op;
      -
      16 threadgroup U shared_vals[simd_size];
      -
      17
      -
      18 U total = Op::init;
      -
      19 int64_t start_idx = gid.y * row_size;
      -
      20 int64_t actual_row =
      -
      21 (start_idx + row_size <= in_size) ? row_size : in_size - start_idx;
      -
      22 int64_t blocks = actual_row / (lsize.x * N_READS);
      -
      23 int extra = actual_row - blocks * (lsize.x * N_READS);
      -
      24 extra -= lid.x * N_READS;
      -
      25 start_idx += lid.x * N_READS;
      -
      26 in += start_idx;
      -
      27
      -
      28 if (extra >= N_READS) {
      -
      29 blocks++;
      -
      30 extra = 0;
      -
      31 }
      -
      32
      -
      33 for (int64_t b = 0; b < blocks; b++) {
      -
      34 for (int i = 0; i < N_READS; i++) {
      -
      35 total = op(static_cast<U>(in[i]), total);
      -
      36 }
      -
      37 in += lsize.x * N_READS;
      -
      38 }
      -
      39 if (extra > 0) {
      -
      40 for (int i = 0; i < extra; i++) {
      -
      41 total = op(static_cast<U>(in[i]), total);
      -
      42 }
      -
      43 }
      -
      44
      -
      45 // Reduction within simd group
      -
      46 total = op.simd_reduce(total);
      -
      47 if (simd_per_group > 1) {
      -
      48 if (simd_lane_id == 0) {
      -
      49 shared_vals[simd_group_id] = total;
      -
      50 }
      -
      51
      -
      52 // Reduction within thread group
      -
      53 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      54 total = lid.x < simd_per_group ? shared_vals[lid.x] : op.init;
      -
      55 total = op.simd_reduce(total);
      -
      56 }
      -
      57
      -
      58 if (lid.x == 0) {
      -
      59 out[gid.y] = total;
      -
      60 }
      -
      61}
      -
      -
      static constant constexpr const uint8_t simd_size
      Definition ops.h:22
      -
      Op op
      Definition binary.h:141
      -
      void all_reduce(const device T *in, device U *out, const constant size_t &in_size, const constant size_t &row_size, uint3 gid, uint3 lid, uint3 lsize, uint simd_per_group, uint simd_lane_id, uint simd_group_id)
      Definition reduce_all.h:4
      -
      - - - - diff --git a/docs/build/html/reduce__col_8h.html b/docs/build/html/reduce__col_8h.html deleted file mode 100644 index 8f4ef16e..00000000 --- a/docs/build/html/reduce__col_8h.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_col.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      reduce_col.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - -

      -Functions

      template<typename T , typename U , typename Op , int NDIMS, int N_READS = REDUCE_N_READS>
      void col_reduce_small (const device T *in, device U *out, const constant size_t &reduction_size, const constant size_t &reduction_stride, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, const constant size_t &non_col_reductions, uint3 gid, uint3 gsize, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 tsize)
       
      template<typename T , typename U , typename Op , int NDIMS, int BM, int BN>
      void col_reduce_looped (const device T *in, device U *out, const constant size_t &reduction_size, const constant size_t &reduction_stride, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, const constant size_t &non_col_reductions, uint3 gid, uint3 gsize, uint simd_lane_id, uint simd_group_id)
       Our approach is the following simple looped approach:
       
      -

      Function Documentation

      - -

      ◆ col_reduce_looped()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int NDIMS, int BM, int BN>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void col_reduce_looped (const device T * in,
      device U * out,
      const constant size_t & reduction_size,
      const constant size_t & reduction_stride,
      const constant int * shape,
      const constant size_t * strides,
      const constant int & ndim,
      const constant int * reduce_shape,
      const constant size_t * reduce_strides,
      const constant int & reduce_ndim,
      const constant size_t & non_col_reductions,
      uint3 gid,
      uint3 gsize,
      uint simd_lane_id,
      uint simd_group_id )
      -
      - -

      Our approach is the following simple looped approach:

      -
        -
      1. Each thread keeps running totals for BN / n_simdgroups outputs.
      2. -
      3. Load a tile BM, BN in registers and accumulate in the running totals
      4. -
      5. Move ahead by BM steps until the column axis and the non column reductions are exhausted.
      6. -
      7. If BM == 32 then transpose in SM and simd reduce the running totals. Otherwise write in shared memory and BN threads accumulate the running totals with a loop.
      8. -
      9. Write them to the output
      10. -
      - -
      -
      - -

      ◆ col_reduce_small()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int NDIMS, int N_READS = REDUCE_N_READS>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void col_reduce_small (const device T * in,
      device U * out,
      const constant size_t & reduction_size,
      const constant size_t & reduction_stride,
      const constant int * shape,
      const constant size_t * strides,
      const constant int & ndim,
      const constant int * reduce_shape,
      const constant size_t * reduce_strides,
      const constant int & reduce_ndim,
      const constant size_t & non_col_reductions,
      uint3 gid,
      uint3 gsize,
      uint simd_lane_id,
      uint simd_group_id,
      uint3 tid,
      uint3 tsize )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/reduce__col_8h_source.html b/docs/build/html/reduce__col_8h_source.html deleted file mode 100644 index f641b7a3..00000000 --- a/docs/build/html/reduce__col_8h_source.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_col.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce_col.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3template <
      -
      4 typename T,
      -
      5 typename U,
      -
      6 typename Op,
      -
      7 int NDIMS,
      -
      8 int N_READS = REDUCE_N_READS>
      -
      -
      9[[kernel]] void col_reduce_small(
      -
      10 const device T* in [[buffer(0)]],
      -
      11 device U* out [[buffer(1)]],
      -
      12 const constant size_t& reduction_size [[buffer(2)]],
      -
      13 const constant size_t& reduction_stride [[buffer(3)]],
      -
      14 const constant int* shape [[buffer(4)]],
      -
      15 const constant size_t* strides [[buffer(5)]],
      -
      16 const constant int& ndim [[buffer(6)]],
      -
      17 const constant int* reduce_shape [[buffer(7)]],
      -
      18 const constant size_t* reduce_strides [[buffer(8)]],
      -
      19 const constant int& reduce_ndim [[buffer(9)]],
      -
      20 const constant size_t& non_col_reductions [[buffer(10)]],
      -
      21 uint3 gid [[threadgroup_position_in_grid]],
      -
      22 uint3 gsize [[threadgroups_per_grid]],
      -
      23 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      24 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      25 uint3 tid [[thread_position_in_grid]],
      -
      26 uint3 tsize [[threads_per_grid]]) {
      -
      27 Op op;
      - -
      29 const device T* row;
      -
      30
      -
      31 // Case 1: Small row small column
      -
      32 if (reduction_size * non_col_reductions < 64 && reduction_stride < 32) {
      -
      33 U totals[31];
      -
      34 for (int i = 0; i < 31; i++) {
      -
      35 totals[i] = Op::init;
      -
      36 }
      -
      37
      -
      38 short stride = reduction_stride;
      -
      39 short size = reduction_size;
      -
      40 short blocks = stride / N_READS;
      -
      41 short extra = stride - blocks * N_READS;
      -
      42
      -
      43 size_t out_idx = tid.x + tsize.y * size_t(tid.y);
      -
      44 in += elem_to_loc(out_idx, shape, strides, ndim);
      -
      45
      -
      46 for (uint r = 0; r < non_col_reductions; r++) {
      -
      47 row = in + loop.location(r, reduce_shape, reduce_strides, reduce_ndim);
      -
      48
      -
      49 for (short i = 0; i < size; i++) {
      -
      50 for (short j = 0; j < blocks; j++) {
      -
      51 for (short k = 0; k < N_READS; k++) {
      -
      52 totals[j * N_READS + k] =
      -
      53 op(totals[j * N_READS + k],
      -
      54 static_cast<U>(row[i * stride + j * N_READS + k]));
      -
      55 }
      -
      56 }
      -
      57 for (short k = 0; k < extra; k++) {
      -
      58 totals[blocks * N_READS + k] =
      -
      59 op(totals[blocks * N_READS + k],
      -
      60 static_cast<U>(row[i * stride + blocks * N_READS + k]));
      -
      61 }
      -
      62 }
      -
      63
      -
      64 loop.next(reduce_shape, reduce_strides);
      -
      65 }
      -
      66 out += out_idx * reduction_stride;
      -
      67 for (short j = 0; j < stride; j++) {
      -
      68 out[j] = totals[j];
      -
      69 }
      -
      70 }
      -
      71
      -
      72 // Case 2: Long row small column
      -
      73 else if (reduction_size * non_col_reductions < 32) {
      -
      74 U totals[N_READS];
      -
      75 for (int i = 0; i < N_READS; i++) {
      -
      76 totals[i] = Op::init;
      -
      77 }
      -
      78
      -
      79 short size = reduction_size;
      -
      80 size_t offset = size_t(tid.x) * N_READS;
      -
      81 bool safe = offset + N_READS <= reduction_stride;
      -
      82 short extra = reduction_stride - offset;
      -
      83
      -
      84 size_t out_idx = tid.y + tsize.z * size_t(tid.z);
      -
      85 in += elem_to_loc(out_idx, shape, strides, ndim) + offset;
      -
      86
      -
      87 for (uint r = 0; r < non_col_reductions; r++) {
      -
      88 row = in + loop.location(r, reduce_shape, reduce_strides, reduce_ndim);
      -
      89
      -
      90 if (safe) {
      -
      91 for (short i = 0; i < size; i++) {
      -
      92 for (short j = 0; j < N_READS; j++) {
      -
      93 totals[j] =
      -
      94 op(static_cast<U>(row[i * reduction_stride + j]), totals[j]);
      -
      95 }
      -
      96 }
      -
      97 } else {
      -
      98 for (short i = 0; i < size; i++) {
      -
      99 for (short j = 0; j < extra; j++) {
      -
      100 totals[j] =
      -
      101 op(static_cast<U>(row[i * reduction_stride + j]), totals[j]);
      -
      102 }
      -
      103 }
      -
      104 }
      -
      105
      -
      106 loop.next(reduce_shape, reduce_strides);
      -
      107 }
      -
      108 out += out_idx * reduction_stride + offset;
      -
      109 if (safe) {
      -
      110 for (short i = 0; i < N_READS; i++) {
      -
      111 out[i] = totals[i];
      -
      112 }
      -
      113 } else {
      -
      114 for (short i = 0; i < extra; i++) {
      -
      115 out[i] = totals[i];
      -
      116 }
      -
      117 }
      -
      118 }
      -
      119
      -
      120 // Case 3: Long row medium column
      -
      121 else {
      -
      122 threadgroup U shared_vals[1024];
      -
      123 U totals[N_READS];
      -
      124 for (int i = 0; i < N_READS; i++) {
      -
      125 totals[i] = Op::init;
      -
      126 }
      -
      127
      -
      128 short stride = reduction_stride;
      -
      129 short lid = simd_group_id * simd_size + simd_lane_id;
      -
      130 short2 tile((stride + N_READS - 1) / N_READS, 32);
      -
      131 short2 offset((lid % tile.x) * N_READS, lid / tile.x);
      -
      132 short sm_stride = tile.x * N_READS;
      -
      133 bool safe = offset.x + N_READS <= stride;
      -
      134
      -
      135 size_t out_idx = gid.y + gsize.y * size_t(gid.z);
      -
      136 in += elem_to_loc(out_idx, shape, strides, ndim) + offset.x;
      -
      137
      -
      138 // Read cooperatively and contiguously and aggregate the partial results.
      -
      139 size_t total = non_col_reductions * reduction_size;
      -
      140 loop.next(offset.y, reduce_shape, reduce_strides);
      -
      141 for (size_t r = offset.y; r < total; r += simd_size) {
      -
      142 row = in + loop.location(r, reduce_shape, reduce_strides, reduce_ndim);
      -
      143
      -
      144 if (safe) {
      -
      145 for (int i = 0; i < N_READS; i++) {
      -
      146 totals[i] = op(static_cast<U>(row[i]), totals[i]);
      -
      147 }
      -
      148 } else {
      -
      149 U vals[N_READS];
      -
      150 for (int i = 0; i < N_READS; i++) {
      -
      151 vals[i] = (offset.x + i < stride) ? static_cast<U>(row[i]) : op.init;
      -
      152 }
      -
      153 for (int i = 0; i < N_READS; i++) {
      -
      154 totals[i] = op(vals[i], totals[i]);
      -
      155 }
      -
      156 }
      -
      157
      -
      158 loop.next(simd_size, reduce_shape, reduce_strides);
      -
      159 }
      -
      160
      -
      161 // Each thread holds N_READS partial results but the simdgroups are not
      -
      162 // aligned to do the reduction across the simdgroup so we write our results
      -
      163 // in the shared memory and read them back according to the simdgroup.
      -
      164 for (int i = 0; i < N_READS; i++) {
      -
      165 shared_vals[offset.y * sm_stride + offset.x + i] = totals[i];
      -
      166 }
      -
      167 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      168 for (int i = 0; i < N_READS; i++) {
      -
      169 totals[i] = op.simd_reduce(
      -
      170 shared_vals[simd_lane_id * sm_stride + simd_group_id * N_READS + i]);
      -
      171 }
      -
      172
      -
      173 // Write the output.
      -
      174 if (simd_lane_id == 0) {
      -
      175 short column = simd_group_id * N_READS;
      -
      176 out += out_idx * reduction_stride + column;
      -
      177 if (column + N_READS <= stride) {
      -
      178 for (int i = 0; i < N_READS; i++) {
      -
      179 out[i] = totals[i];
      -
      180 }
      -
      181 } else {
      -
      182 for (int i = 0; column + i < stride; i++) {
      -
      183 out[i] = totals[i];
      -
      184 }
      -
      185 }
      -
      186 }
      -
      187 }
      -
      188}
      -
      -
      189
      -
      201template <typename T, typename U, typename Op, int NDIMS, int BM, int BN>
      -
      -
      202[[kernel]] void col_reduce_looped(
      -
      203 const device T* in [[buffer(0)]],
      -
      204 device U* out [[buffer(1)]],
      -
      205 const constant size_t& reduction_size [[buffer(2)]],
      -
      206 const constant size_t& reduction_stride [[buffer(3)]],
      -
      207 const constant int* shape [[buffer(4)]],
      -
      208 const constant size_t* strides [[buffer(5)]],
      -
      209 const constant int& ndim [[buffer(6)]],
      -
      210 const constant int* reduce_shape [[buffer(7)]],
      -
      211 const constant size_t* reduce_strides [[buffer(8)]],
      -
      212 const constant int& reduce_ndim [[buffer(9)]],
      -
      213 const constant size_t& non_col_reductions [[buffer(10)]],
      -
      214 uint3 gid [[threadgroup_position_in_grid]],
      -
      215 uint3 gsize [[threadgroups_per_grid]],
      -
      216 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      217 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      218 Op op;
      -
      219 constexpr int n_simdgroups = 4;
      -
      220 constexpr short tgp_size = n_simdgroups * simd_size;
      -
      221 constexpr short n_reads = (BM * BN) / tgp_size;
      -
      222 constexpr short n_read_blocks = BN / n_reads;
      -
      223
      -
      224 threadgroup U shared_vals[BN * BM];
      -
      225 U totals[n_reads];
      - -
      227 const device T* row;
      -
      228
      -
      229 for (int i = 0; i < n_reads; i++) {
      -
      230 totals[i] = Op::init;
      -
      231 }
      -
      232
      -
      233 short lid = simd_group_id * simd_size + simd_lane_id;
      -
      234 short2 offset((lid % n_read_blocks) * n_reads, lid / n_read_blocks);
      -
      235 size_t column = BN * gid.x + offset.x;
      -
      236 bool safe = column + n_reads <= reduction_stride;
      -
      237
      -
      238 size_t out_idx = gid.y + gsize.y * size_t(gid.z);
      -
      239 size_t in_idx = elem_to_loc(out_idx, shape, strides, ndim);
      -
      240 in += in_idx + column;
      -
      241
      -
      242 size_t total = non_col_reductions * reduction_size;
      -
      243 loop.next(offset.y, reduce_shape, reduce_strides);
      -
      244 for (size_t r = offset.y; r < total; r += BM) {
      -
      245 row = in + loop.location(r, reduce_shape, reduce_strides, reduce_ndim);
      -
      246
      -
      247 if (safe) {
      -
      248 for (int i = 0; i < n_reads; i++) {
      -
      249 totals[i] = op(static_cast<U>(row[i]), totals[i]);
      -
      250 }
      -
      251 } else {
      -
      252 U vals[n_reads];
      -
      253 for (int i = 0; i < n_reads; i++) {
      -
      254 vals[i] =
      -
      255 (column + i < reduction_stride) ? static_cast<U>(row[i]) : op.init;
      -
      256 }
      -
      257 for (int i = 0; i < n_reads; i++) {
      -
      258 totals[i] = op(vals[i], totals[i]);
      -
      259 }
      -
      260 }
      -
      261
      -
      262 loop.next(BM, reduce_shape, reduce_strides);
      -
      263 }
      -
      264
      -
      265 // We can use a simd reduction to accumulate across BM so each thread writes
      -
      266 // the partial output to SM and then each simdgroup does BN / n_simdgroups
      -
      267 // accumulations.
      -
      268 if (BM == 32) {
      -
      269 constexpr int n_outputs = BN / n_simdgroups;
      -
      270 static_assert(
      -
      271 BM != 32 || n_outputs == n_reads,
      -
      272 "The tile should be selected such that n_outputs == n_reads");
      -
      273 for (int i = 0; i < n_reads; i++) {
      -
      274 shared_vals[offset.y * BN + offset.x + i] = totals[i];
      -
      275 }
      -
      276 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      277 short2 out_offset(simd_group_id * n_outputs, simd_lane_id);
      -
      278 for (int i = 0; i < n_outputs; i++) {
      -
      279 totals[i] =
      -
      280 op.simd_reduce(shared_vals[out_offset.y * BN + out_offset.x + i]);
      -
      281 }
      -
      282
      -
      283 // Write the output.
      -
      284 if (simd_lane_id == 0) {
      -
      285 size_t out_column = BN * gid.x + out_offset.x;
      -
      286 out += out_idx * reduction_stride + out_column;
      -
      287 if (out_column + n_outputs <= reduction_stride) {
      -
      288 for (int i = 0; i < n_outputs; i++) {
      -
      289 out[i] = totals[i];
      -
      290 }
      -
      291 } else {
      -
      292 for (int i = 0; out_column + i < reduction_stride; i++) {
      -
      293 out[i] = totals[i];
      -
      294 }
      -
      295 }
      -
      296 }
      -
      297 }
      -
      298
      -
      299 // Each thread holds n_reads partial results. We write them all out to shared
      -
      300 // memory and threads with offset.y == 0 aggregate the columns and write the
      -
      301 // outputs.
      -
      302 else {
      -
      303 short x_block = offset.x / n_reads;
      -
      304 for (int i = 0; i < n_reads; i++) {
      -
      305 shared_vals[x_block * BM * n_reads + i * BM + offset.y] = totals[i];
      -
      306 }
      -
      307 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      308 if (offset.y == 0) {
      -
      309 for (int i = 0; i < n_reads; i++) {
      -
      310 for (int j = 1; j < BM; j++) {
      -
      311 totals[i] =
      -
      312 op(shared_vals[x_block * BM * n_reads + i * BM + j], totals[i]);
      -
      313 }
      -
      314 }
      -
      315 }
      -
      316
      -
      317 // Write the output.
      -
      318 if (offset.y == 0) {
      -
      319 out += out_idx * reduction_stride + column;
      -
      320 if (safe) {
      -
      321 for (int i = 0; i < n_reads; i++) {
      -
      322 out[i] = totals[i];
      -
      323 }
      -
      324 } else {
      -
      325 for (int i = 0; column + i < reduction_stride; i++) {
      -
      326 out[i] = totals[i];
      -
      327 }
      -
      328 }
      -
      329 }
      -
      330 }
      -
      331}
      -
      -
      static constant constexpr const uint8_t simd_size
      Definition ops.h:22
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Op op
      Definition binary.h:141
      -
      static constexpr int REDUCE_N_READS
      Definition defines.h:12
      -
      void col_reduce_looped(const device T *in, device U *out, const constant size_t &reduction_size, const constant size_t &reduction_stride, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, const constant size_t &non_col_reductions, uint3 gid, uint3 gsize, uint simd_lane_id, uint simd_group_id)
      Our approach is the following simple looped approach:
      Definition reduce_col.h:202
      -
      void col_reduce_small(const device T *in, device U *out, const constant size_t &reduction_size, const constant size_t &reduction_stride, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, const constant size_t &non_col_reductions, uint3 gid, uint3 gsize, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 tsize)
      Definition reduce_col.h:9
      -
      Definition utils.h:334
      -
      void next(const constant int *shape, const constant size_t *strides)
      Definition utils.h:339
      -
      offset_t location(offset_t, const constant int *, const constant size_t *, int)
      Definition utils.h:366
      -
      - - - - diff --git a/docs/build/html/reduce__init_8h.html b/docs/build/html/reduce__init_8h.html deleted file mode 100644 index a5596417..00000000 --- a/docs/build/html/reduce__init_8h.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_init.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      reduce_init.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - -

      -Functions

      template<typename T , typename Op >
      void init_reduce (device T *out, uint tid)
       
      -

      Function Documentation

      - -

      ◆ init_reduce()

      - -
      -
      -
      -template<typename T , typename Op >
      - - - - - - - - - - - -
      void init_reduce (device T * out,
      uint tid )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/reduce__init_8h_source.html b/docs/build/html/reduce__init_8h_source.html deleted file mode 100644 index af4b1131..00000000 --- a/docs/build/html/reduce__init_8h_source.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_init.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce_init.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3template <typename T, typename Op>
      -
      -
      4[[kernel]] void init_reduce(
      -
      5 device T* out [[buffer(0)]],
      -
      6 uint tid [[thread_position_in_grid]]) {
      -
      7 out[tid] = Op::init;
      -
      8}
      -
      -
      void init_reduce(device T *out, uint tid)
      Definition reduce_init.h:4
      -
      - - - - diff --git a/docs/build/html/reduce__row_8h.html b/docs/build/html/reduce__row_8h.html deleted file mode 100644 index 89975ff6..00000000 --- a/docs/build/html/reduce__row_8h.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_row.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      reduce_row.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      METAL_FUNC void per_thread_row_reduce (thread U totals[N_WRITES], const device T *inputs[N_WRITES], int blocks, int extra, uint lsize_x, uint lid_x)
       The thread group collaboratively reduces across the rows with bounds checking.
       
      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      METAL_FUNC void per_thread_row_reduce (thread U totals[N_WRITES], const device T *in, const constant size_t &reduction_size, int blocks, int extra, uint lsize_x, uint lid_x)
       Consecutive rows in a contiguous array.
       
      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      METAL_FUNC void per_thread_row_reduce (thread U totals[N_WRITES], const device T *in, const size_t row_idx, int blocks, int extra, const constant int *shape, const constant size_t *strides, const constant int &ndim, uint lsize_x, uint lid_x)
       Consecutive rows in an arbitrarily ordered array.
       
      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      METAL_FUNC void threadgroup_reduce (thread U totals[N_WRITES], threadgroup U *shared_vals, uint3 lid, uint simd_lane_id, uint simd_per_group, uint simd_group_id)
       Reduce within the threadgroup.
       
      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS>
      METAL_FUNC void thread_reduce (thread U &total, const device T *row, int blocks, int extra)
       
      template<typename T , typename U , typename Op , int NDIMS, int N_READS = REDUCE_N_READS>
      void row_reduce_small (const device T *in, device U *out, const constant size_t &row_size, const constant size_t &non_row_reductions, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, uint simd_lane_id, uint3 gid, uint3 gsize, uint3 tid, uint3 tsize)
       
      template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      void row_reduce_simple (const device T *in, device U *out, const constant size_t &reduction_size, const constant size_t &out_size, uint3 gid, uint3 gsize, uint3 lid, uint3 lsize, uint simd_lane_id, uint simd_per_group, uint simd_group_id)
       
      template<typename T , typename U , typename Op , int NDIMS, int N_READS = REDUCE_N_READS>
      void row_reduce_looped (const device T *in, device U *out, const constant size_t &row_size, const constant size_t &non_row_reductions, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, uint3 gid, uint3 gsize, uint3 lid, uint3 lsize, uint simd_lane_id, uint simd_per_group, uint simd_group_id)
       
      -

      Function Documentation

      - -

      ◆ per_thread_row_reduce() [1/3]

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void per_thread_row_reduce (thread U totals[N_WRITES],
      const device T * in,
      const constant size_t & reduction_size,
      int blocks,
      int extra,
      uint lsize_x,
      uint lid_x )
      -
      - -

      Consecutive rows in a contiguous array.

      - -
      -
      - -

      ◆ per_thread_row_reduce() [2/3]

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void per_thread_row_reduce (thread U totals[N_WRITES],
      const device T * in,
      const size_t row_idx,
      int blocks,
      int extra,
      const constant int * shape,
      const constant size_t * strides,
      const constant int & ndim,
      uint lsize_x,
      uint lid_x )
      -
      - -

      Consecutive rows in an arbitrarily ordered array.

      - -
      -
      - -

      ◆ per_thread_row_reduce() [3/3]

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void per_thread_row_reduce (thread U totals[N_WRITES],
      const device T * inputs[N_WRITES],
      int blocks,
      int extra,
      uint lsize_x,
      uint lid_x )
      -
      - -

      The thread group collaboratively reduces across the rows with bounds checking.

      -

      In the end each thread holds a part of the reduction.

      - -
      -
      - -

      ◆ row_reduce_looped()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int NDIMS, int N_READS = REDUCE_N_READS>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void row_reduce_looped (const device T * in,
      device U * out,
      const constant size_t & row_size,
      const constant size_t & non_row_reductions,
      const constant int * shape,
      const constant size_t * strides,
      const constant int & ndim,
      const constant int * reduce_shape,
      const constant size_t * reduce_strides,
      const constant int & reduce_ndim,
      uint3 gid,
      uint3 gsize,
      uint3 lid,
      uint3 lsize,
      uint simd_lane_id,
      uint simd_per_group,
      uint simd_group_id )
      -
      - -
      -
      - -

      ◆ row_reduce_simple()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void row_reduce_simple (const device T * in,
      device U * out,
      const constant size_t & reduction_size,
      const constant size_t & out_size,
      uint3 gid,
      uint3 gsize,
      uint3 lid,
      uint3 lsize,
      uint simd_lane_id,
      uint simd_per_group,
      uint simd_group_id )
      -
      - -
      -
      - -

      ◆ row_reduce_small()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int NDIMS, int N_READS = REDUCE_N_READS>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void row_reduce_small (const device T * in,
      device U * out,
      const constant size_t & row_size,
      const constant size_t & non_row_reductions,
      const constant int * shape,
      const constant size_t * strides,
      const constant int & ndim,
      const constant int * reduce_shape,
      const constant size_t * reduce_strides,
      const constant int & reduce_ndim,
      uint simd_lane_id,
      uint3 gid,
      uint3 gsize,
      uint3 tid,
      uint3 tsize )
      -
      - -
      -
      - -

      ◆ thread_reduce()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS>
      - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void thread_reduce (thread U & total,
      const device T * row,
      int blocks,
      int extra )
      -
      - -
      -
      - -

      ◆ threadgroup_reduce()

      - -
      -
      -
      -template<typename T , typename U , typename Op , int N_READS = REDUCE_N_READS, int N_WRITES = REDUCE_N_WRITES>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void threadgroup_reduce (thread U totals[N_WRITES],
      threadgroup U * shared_vals,
      uint3 lid,
      uint simd_lane_id,
      uint simd_per_group,
      uint simd_group_id )
      -
      - -

      Reduce within the threadgroup.

      - -
      -
      -
      - - - - diff --git a/docs/build/html/reduce__row_8h_source.html b/docs/build/html/reduce__row_8h_source.html deleted file mode 100644 index 08d1d20c..00000000 --- a/docs/build/html/reduce__row_8h_source.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduction/reduce_row.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce_row.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3// Row reduction utilities
      -
      4// - `per_thread_row_reduce` collaborative partial reduction in the threadgroup
      -
      5// - `threadgroup_reduce` collaborative reduction in the threadgroup such that
      -
      6// lid.x == 0 holds the reduced value
      -
      7// - `thread_reduce` simple loop and reduce the row
      -
      8
      -
      13template <
      -
      14 typename T,
      -
      15 typename U,
      -
      16 typename Op,
      -
      17 int N_READS = REDUCE_N_READS,
      -
      18 int N_WRITES = REDUCE_N_WRITES>
      -
      -
      19METAL_FUNC void per_thread_row_reduce(
      -
      20 thread U totals[N_WRITES],
      -
      21 const device T* inputs[N_WRITES],
      -
      22 int blocks,
      -
      23 int extra,
      -
      24 uint lsize_x,
      -
      25 uint lid_x) {
      -
      26 Op op;
      -
      27
      -
      28 // Set up the accumulator registers
      -
      29 for (int i = 0; i < N_WRITES; i++) {
      -
      30 totals[i] = Op::init;
      -
      31 }
      -
      32
      -
      33 // Loop over the reduction size within thread group
      -
      34 for (int i = 0; i < blocks; i++) {
      -
      35 for (int j = 0; j < N_WRITES; j++) {
      -
      36 for (int i = 0; i < N_READS; i++) {
      -
      37 totals[j] = op(static_cast<U>(inputs[j][i]), totals[j]);
      -
      38 }
      -
      39
      -
      40 inputs[j] += lsize_x * N_READS;
      -
      41 }
      -
      42 }
      -
      43
      -
      44 // Separate case for the last set as we close the reduction size
      -
      45 int index = lid_x * N_READS;
      -
      46 if (index + N_READS <= extra) {
      -
      47 for (int j = 0; j < N_WRITES; j++) {
      -
      48 for (int i = 0; i < N_READS; i++) {
      -
      49 totals[j] = op(static_cast<U>(inputs[j][i]), totals[j]);
      -
      50 }
      -
      51 }
      -
      52 } else {
      -
      53 for (int j = 0; j < N_WRITES; j++) {
      -
      54 for (int i = 0; index + i < extra; i++) {
      -
      55 totals[j] = op(static_cast<U>(inputs[j][i]), totals[j]);
      -
      56 }
      -
      57 }
      -
      58 }
      -
      59}
      -
      -
      60
      -
      64template <
      -
      65 typename T,
      -
      66 typename U,
      -
      67 typename Op,
      -
      68 int N_READS = REDUCE_N_READS,
      -
      69 int N_WRITES = REDUCE_N_WRITES>
      -
      -
      70METAL_FUNC void per_thread_row_reduce(
      -
      71 thread U totals[N_WRITES],
      -
      72 const device T* in,
      -
      73 const constant size_t& reduction_size,
      -
      74 int blocks,
      -
      75 int extra,
      -
      76 uint lsize_x,
      -
      77 uint lid_x) {
      -
      78 // Set up the input pointers
      -
      79 const device T* inputs[N_WRITES];
      -
      80 inputs[0] = in + lid_x * N_READS;
      -
      81 for (int i = 1; i < N_READS; i++) {
      -
      82 inputs[i] = inputs[i - 1] + reduction_size;
      -
      83 }
      -
      84
      -
      85 per_thread_row_reduce<T, U, Op, N_READS, N_WRITES>(
      -
      86 totals, inputs, blocks, extra, lsize_x, lid_x);
      -
      87}
      -
      -
      88
      -
      92template <
      -
      93 typename T,
      -
      94 typename U,
      -
      95 typename Op,
      -
      96 int N_READS = REDUCE_N_READS,
      -
      97 int N_WRITES = REDUCE_N_WRITES>
      -
      -
      98METAL_FUNC void per_thread_row_reduce(
      -
      99 thread U totals[N_WRITES],
      -
      100 const device T* in,
      -
      101 const size_t row_idx,
      -
      102 int blocks,
      -
      103 int extra,
      -
      104 const constant int* shape,
      -
      105 const constant size_t* strides,
      -
      106 const constant int& ndim,
      -
      107 uint lsize_x,
      -
      108 uint lid_x) {
      -
      109 // Set up the input pointers
      -
      110 const device T* inputs[N_WRITES];
      -
      111 in += lid_x * N_READS;
      -
      112 for (int i = 0; i < N_READS; i++) {
      -
      113 inputs[i] = in + elem_to_loc(row_idx + i, shape, strides, ndim);
      -
      114 }
      -
      115
      -
      116 per_thread_row_reduce<T, U, Op, N_READS, N_WRITES>(
      -
      117 totals, inputs, blocks, extra, lsize_x, lid_x);
      -
      118}
      -
      -
      119
      -
      123template <
      -
      124 typename T,
      -
      125 typename U,
      -
      126 typename Op,
      -
      127 int N_READS = REDUCE_N_READS,
      -
      128 int N_WRITES = REDUCE_N_WRITES>
      -
      -
      129METAL_FUNC void threadgroup_reduce(
      -
      130 thread U totals[N_WRITES],
      -
      131 threadgroup U* shared_vals,
      -
      132 uint3 lid [[thread_position_in_threadgroup]],
      -
      133 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      134 uint simd_per_group [[simdgroups_per_threadgroup]],
      -
      135 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      136 Op op;
      -
      137
      -
      138 // Simdgroup first
      -
      139 for (int i = 0; i < N_WRITES; i++) {
      -
      140 totals[i] = op.simd_reduce(totals[i]);
      -
      141 }
      -
      142
      -
      143 // Across simdgroups
      -
      144 if (simd_per_group > 1) {
      -
      145 if (simd_lane_id == 0) {
      -
      146 for (int i = 0; i < N_WRITES; i++) {
      -
      147 shared_vals[simd_group_id * N_WRITES + i] = totals[i];
      -
      148 }
      -
      149 }
      -
      150 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      151
      -
      152 U values[N_WRITES];
      -
      153 for (int i = 0; i < N_WRITES; i++) {
      -
      154 values[i] = (lid.x < simd_per_group) ? shared_vals[lid.x * N_WRITES + i]
      -
      155 : op.init;
      -
      156 }
      -
      157
      -
      158 for (int i = 0; i < N_WRITES; i++) {
      -
      159 totals[i] = op.simd_reduce(values[i]);
      -
      160 }
      -
      161 }
      -
      162}
      -
      -
      163
      -
      164template <typename T, typename U, typename Op, int N_READS = REDUCE_N_READS>
      -
      165METAL_FUNC void
      -
      -
      166thread_reduce(thread U& total, const device T* row, int blocks, int extra) {
      -
      167 Op op;
      -
      168 for (int i = 0; i < blocks; i++) {
      -
      169 U vals[N_READS];
      -
      170 for (int j = 0; j < N_READS; j++) {
      -
      171 vals[j] = row[j];
      -
      172 }
      -
      173 for (int j = 0; j < N_READS; j++) {
      -
      174 total = op(vals[j], total);
      -
      175 }
      -
      176 row += N_READS;
      -
      177 }
      -
      178 for (int i = 0; i < extra; i++) {
      -
      179 total = op(*row++, total);
      -
      180 }
      -
      181}
      -
      -
      182
      -
      183// Reduction kernels
      -
      184// - `row_reduce_small` depending on the non-row reductions and row size it
      -
      185// either just loops over everything or a simd collaboratively reduces the
      -
      186// non_row reductions. In the first case one thread is responsible for one
      -
      187// output on the 2nd one simd is responsible for one output.
      -
      188// - `row_reduce_simple` simple contiguous row reduction
      -
      189// - `row_reduce_looped` simply loop and reduce each row for each non-row
      -
      190// reduction. One threadgroup is responsible for one output.
      -
      191
      -
      192template <
      -
      193 typename T,
      -
      194 typename U,
      -
      195 typename Op,
      -
      196 int NDIMS,
      -
      197 int N_READS = REDUCE_N_READS>
      -
      -
      198[[kernel]] void row_reduce_small(
      -
      199 const device T* in [[buffer(0)]],
      -
      200 device U* out [[buffer(1)]],
      -
      201 const constant size_t& row_size [[buffer(2)]],
      -
      202 const constant size_t& non_row_reductions [[buffer(3)]],
      -
      203 const constant int* shape [[buffer(4)]],
      -
      204 const constant size_t* strides [[buffer(5)]],
      -
      205 const constant int& ndim [[buffer(6)]],
      -
      206 const constant int* reduce_shape [[buffer(7)]],
      -
      207 const constant size_t* reduce_strides [[buffer(8)]],
      -
      208 const constant int& reduce_ndim [[buffer(9)]],
      -
      209 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      210 uint3 gid [[threadgroup_position_in_grid]],
      -
      211 uint3 gsize [[threadgroups_per_grid]],
      -
      212 uint3 tid [[thread_position_in_grid]],
      -
      213 uint3 tsize [[threads_per_grid]]) {
      -
      214 Op op;
      -
      215
      -
      216 U total_val = Op::init;
      - -
      218
      -
      219 // Precompute some row reduction numbers
      -
      220 const device T* row;
      -
      221 int blocks = row_size / N_READS;
      -
      222 int extra = row_size % N_READS;
      -
      223
      -
      224 if ((non_row_reductions < 32 && row_size <= 8) || non_row_reductions <= 8) {
      -
      225 // Simple loop over non_row_reductions and reduce the row in the thread.
      -
      226 size_t out_idx = tid.x + tsize.y * size_t(tid.y);
      -
      227 in += elem_to_loc(out_idx, shape, strides, ndim);
      -
      228
      -
      229 for (uint r = 0; r < non_row_reductions; r++) {
      -
      230 row = in + loop.location(r, reduce_shape, reduce_strides, reduce_ndim);
      -
      231 thread_reduce<T, U, Op, N_READS>(total_val, row, blocks, extra);
      -
      232 loop.next(reduce_shape, reduce_strides);
      -
      233 }
      -
      234
      -
      235 out[out_idx] = total_val;
      -
      236 } else {
      -
      237 // Collaboratively reduce over non_row_reductions in the simdgroup. Each
      -
      238 // thread reduces every 32nd row and then a simple simd reduce.
      -
      239 size_t out_idx = gid.y + gsize.y * size_t(gid.z);
      -
      240 in += elem_to_loc(out_idx, shape, strides, ndim);
      -
      241
      -
      242 loop.next(simd_lane_id, reduce_shape, reduce_strides);
      -
      243
      -
      244 for (uint r = simd_lane_id; r < non_row_reductions; r += simd_size) {
      -
      245 row = in + loop.location(r, reduce_shape, reduce_strides, reduce_ndim);
      -
      246 thread_reduce<T, U, Op, N_READS>(total_val, row, blocks, extra);
      -
      247 loop.next(simd_size, reduce_shape, reduce_strides);
      -
      248 }
      -
      249
      -
      250 total_val = op.simd_reduce(total_val);
      -
      251
      -
      252 if (simd_lane_id == 0) {
      -
      253 out[out_idx] = total_val;
      -
      254 }
      -
      255 }
      -
      256}
      -
      -
      257
      -
      258template <
      -
      259 typename T,
      -
      260 typename U,
      -
      261 typename Op,
      -
      262 int N_READS = REDUCE_N_READS,
      -
      263 int N_WRITES = REDUCE_N_WRITES>
      -
      -
      264[[kernel]] void row_reduce_simple(
      -
      265 const device T* in [[buffer(0)]],
      -
      266 device U* out [[buffer(1)]],
      -
      267 const constant size_t& reduction_size [[buffer(2)]],
      -
      268 const constant size_t& out_size [[buffer(3)]],
      -
      269 uint3 gid [[threadgroup_position_in_grid]],
      -
      270 uint3 gsize [[threadgroups_per_grid]],
      -
      271 uint3 lid [[thread_position_in_threadgroup]],
      -
      272 uint3 lsize [[threads_per_threadgroup]],
      -
      273 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      274 uint simd_per_group [[simdgroups_per_threadgroup]],
      -
      275 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      276 threadgroup U shared_vals[simd_size * N_WRITES];
      -
      277 U totals[N_WRITES];
      -
      278
      -
      279 // Move to the row
      -
      280 size_t out_idx = N_WRITES * (gid.y + gsize.y * size_t(gid.z));
      -
      281 if (out_idx + N_WRITES > out_size) {
      -
      282 out_idx = out_size - N_WRITES;
      -
      283 }
      -
      284 in += out_idx * reduction_size;
      -
      285 out += out_idx;
      -
      286
      -
      287 // Each thread reduces across the row
      -
      288 int blocks = reduction_size / (lsize.x * N_READS);
      -
      289 int extra = reduction_size - blocks * (lsize.x * N_READS);
      -
      290 per_thread_row_reduce<T, U, Op, N_READS, N_WRITES>(
      -
      291 totals, in, reduction_size, blocks, extra, lsize.x, lid.x);
      -
      292
      -
      293 // Reduce across the threadgroup
      -
      294 threadgroup_reduce<T, U, Op, N_READS, N_WRITES>(
      -
      295 totals, shared_vals, lid, simd_lane_id, simd_per_group, simd_group_id);
      -
      296
      -
      297 // Write the output
      -
      298 if (lid.x == 0) {
      -
      299 for (int i = 0; i < N_WRITES; i++) {
      -
      300 out[i] = totals[i];
      -
      301 }
      -
      302 }
      -
      303}
      -
      -
      304
      -
      305template <
      -
      306 typename T,
      -
      307 typename U,
      -
      308 typename Op,
      -
      309 int NDIMS,
      -
      310 int N_READS = REDUCE_N_READS>
      -
      -
      311[[kernel]] void row_reduce_looped(
      -
      312 const device T* in [[buffer(0)]],
      -
      313 device U* out [[buffer(1)]],
      -
      314 const constant size_t& row_size [[buffer(2)]],
      -
      315 const constant size_t& non_row_reductions [[buffer(3)]],
      -
      316 const constant int* shape [[buffer(4)]],
      -
      317 const constant size_t* strides [[buffer(5)]],
      -
      318 const constant int& ndim [[buffer(6)]],
      -
      319 const constant int* reduce_shape [[buffer(7)]],
      -
      320 const constant size_t* reduce_strides [[buffer(8)]],
      -
      321 const constant int& reduce_ndim [[buffer(9)]],
      -
      322 uint3 gid [[threadgroup_position_in_grid]],
      -
      323 uint3 gsize [[threadgroups_per_grid]],
      -
      324 uint3 lid [[thread_position_in_threadgroup]],
      -
      325 uint3 lsize [[threads_per_threadgroup]],
      -
      326 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      327 uint simd_per_group [[simdgroups_per_threadgroup]],
      -
      328 uint simd_group_id [[simdgroup_index_in_threadgroup]]) {
      -
      329 Op op;
      -
      330 threadgroup U shared_vals[simd_size];
      -
      331 U total = Op::init;
      -
      332
      -
      333 size_t out_idx = gid.y + gsize.y * size_t(gid.z);
      -
      334
      -
      335 // lid.x * N_READS breaks the per_thread_row_reduce interface a bit. Maybe it
      -
      336 // needs a small refactor.
      -
      337 in += elem_to_loc(out_idx, shape, strides, ndim) + lid.x * N_READS;
      -
      338
      - -
      340 const device T* row;
      -
      341 int blocks = row_size / (lsize.x * N_READS);
      -
      342 int extra = row_size - blocks * (lsize.x * N_READS);
      -
      343
      -
      344 for (size_t i = 0; i < non_row_reductions; i++) {
      -
      345 row = in + loop.location(i, reduce_shape, reduce_strides, reduce_ndim);
      -
      346
      -
      347 // Each thread reduces across the row
      -
      348 U row_total;
      -
      349 per_thread_row_reduce<T, U, Op, N_READS, 1>(
      -
      350 &row_total, &row, blocks, extra, lsize.x, lid.x);
      -
      351
      -
      352 // Aggregate across rows
      -
      353 total = op(total, row_total);
      -
      354
      -
      355 loop.next(reduce_shape, reduce_strides);
      -
      356 }
      -
      357
      -
      358 // Reduce across the threadgroup
      -
      359 threadgroup_reduce<T, U, Op, N_READS, 1>(
      -
      360 &total, shared_vals, lid, simd_lane_id, simd_per_group, simd_group_id);
      -
      361
      -
      362 // Write the output
      -
      363 if (lid.x == 0) {
      -
      364 out[out_idx] = total;
      -
      365 }
      -
      366}
      -
      -
      static constant constexpr const uint8_t simd_size
      Definition ops.h:22
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Op op
      Definition binary.h:141
      -
      static constexpr int REDUCE_N_READS
      Definition defines.h:12
      -
      static constexpr int REDUCE_N_WRITES
      Definition defines.h:13
      -
      void row_reduce_small(const device T *in, device U *out, const constant size_t &row_size, const constant size_t &non_row_reductions, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, uint simd_lane_id, uint3 gid, uint3 gsize, uint3 tid, uint3 tsize)
      Definition reduce_row.h:198
      -
      METAL_FUNC void per_thread_row_reduce(thread U totals[N_WRITES], const device T *inputs[N_WRITES], int blocks, int extra, uint lsize_x, uint lid_x)
      The thread group collaboratively reduces across the rows with bounds checking.
      Definition reduce_row.h:19
      -
      METAL_FUNC void threadgroup_reduce(thread U totals[N_WRITES], threadgroup U *shared_vals, uint3 lid, uint simd_lane_id, uint simd_per_group, uint simd_group_id)
      Reduce within the threadgroup.
      Definition reduce_row.h:129
      -
      void row_reduce_simple(const device T *in, device U *out, const constant size_t &reduction_size, const constant size_t &out_size, uint3 gid, uint3 gsize, uint3 lid, uint3 lsize, uint simd_lane_id, uint simd_per_group, uint simd_group_id)
      Definition reduce_row.h:264
      -
      void row_reduce_looped(const device T *in, device U *out, const constant size_t &row_size, const constant size_t &non_row_reductions, const constant int *shape, const constant size_t *strides, const constant int &ndim, const constant int *reduce_shape, const constant size_t *reduce_strides, const constant int &reduce_ndim, uint3 gid, uint3 gsize, uint3 lid, uint3 lsize, uint simd_lane_id, uint simd_per_group, uint simd_group_id)
      Definition reduce_row.h:311
      -
      METAL_FUNC void thread_reduce(thread U &total, const device T *row, int blocks, int extra)
      Definition reduce_row.h:166
      -
      Definition utils.h:334
      -
      void next(const constant int *shape, const constant size_t *strides)
      Definition utils.h:339
      -
      offset_t location(offset_t, const constant int *, const constant size_t *, int)
      Definition utils.h:366
      -
      - - - - diff --git a/docs/build/html/reduce__utils_8h.html b/docs/build/html/reduce__utils_8h.html deleted file mode 100644 index cddc9287..00000000 --- a/docs/build/html/reduce__utils_8h.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduce_utils.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce_utils.h File Reference
      -
      - - - - - diff --git a/docs/build/html/reduce__utils_8h_source.html b/docs/build/html/reduce__utils_8h_source.html deleted file mode 100644 index 7e24ef08..00000000 --- a/docs/build/html/reduce__utils_8h_source.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/reduce_utils.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      reduce_utils.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - - - - -
      - - - - diff --git a/docs/build/html/scaled__dot__product__attention__params_8h.html b/docs/build/html/scaled__dot__product__attention__params_8h.html deleted file mode 100644 index d552f980..00000000 --- a/docs/build/html/scaled__dot__product__attention__params_8h.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/scaled_dot_product_attention_params.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      scaled_dot_product_attention_params.h File Reference
      -
      - - - - - diff --git a/docs/build/html/scaled__dot__product__attention__params_8h_source.html b/docs/build/html/scaled__dot__product__attention__params_8h_source.html deleted file mode 100644 index 0148a210..00000000 --- a/docs/build/html/scaled__dot__product__attention__params_8h_source.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/scaled_dot_product_attention_params.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      scaled_dot_product_attention_params.h
      -
      -
      -Go to the documentation of this file.
      1//
      -
      2// scaled_dot_product_attention_params.h
      -
      3// mlx
      -
      4
      -
      5#pragma once
      -
      6
      -
      - -
      8 const int M;
      -
      9 const int N;
      -
      10 const int K;
      -
      11
      -
      12 const int ldq; // ldq == ldo
      -
      13 const int ldk;
      -
      14 const int ldv;
      -
      15 const int lds;
      -
      16 const int ldo;
      -
      17
      -
      18 const int tiles_n;
      -
      19 const int tiles_m;
      -
      20
      -
      21 const int batch_stride_q;
      -
      22 const int batch_stride_k;
      -
      23 const int batch_stride_v;
      -
      24 const int batch_stride_o;
      -
      25
      -
      26 const int swizzle_log;
      - - - -
      30
      -
      31 const int batch_ndim;
      -
      32 const float alpha;
      -
      33};
      -
      -
      34
      -
      - -
      36 // Associated dimensions & transposition information
      -
      37 const uint QUERY_SEQUENCE_LENGTH = 1;
      -
      38 const uint N_Q_HEADS = 32;
      -
      39 const uint N_KV_HEADS = 32;
      -
      40 const uint KV_TILES = 1;
      -
      41 const float INV_ALPHA = 0.08838834764831843f;
      -
      42};
      -
      -
      Definition scaled_dot_product_attention_params.h:7
      -
      const int tiles_m
      Definition scaled_dot_product_attention_params.h:19
      -
      const int batch_stride_v
      Definition scaled_dot_product_attention_params.h:23
      -
      const int batch_stride_k
      Definition scaled_dot_product_attention_params.h:22
      -
      const int ldk
      Definition scaled_dot_product_attention_params.h:13
      -
      const int lds
      Definition scaled_dot_product_attention_params.h:15
      -
      const int gemm_sv_m_block_iterations
      Definition scaled_dot_product_attention_params.h:29
      -
      const int batch_stride_o
      Definition scaled_dot_product_attention_params.h:24
      -
      const int M
      Definition scaled_dot_product_attention_params.h:8
      -
      const int tiles_n
      Definition scaled_dot_product_attention_params.h:18
      -
      const int swizzle_log
      Definition scaled_dot_product_attention_params.h:26
      -
      const int batch_ndim
      Definition scaled_dot_product_attention_params.h:31
      -
      const float alpha
      Definition scaled_dot_product_attention_params.h:32
      -
      const int batch_stride_q
      Definition scaled_dot_product_attention_params.h:21
      -
      const int ldo
      Definition scaled_dot_product_attention_params.h:16
      -
      const int N
      Definition scaled_dot_product_attention_params.h:9
      -
      const int gemm_n_iterations_aligned
      Definition scaled_dot_product_attention_params.h:27
      -
      const int K
      Definition scaled_dot_product_attention_params.h:10
      -
      const int gemm_k_iterations_aligned
      Definition scaled_dot_product_attention_params.h:28
      -
      const int ldv
      Definition scaled_dot_product_attention_params.h:14
      -
      const int ldq
      Definition scaled_dot_product_attention_params.h:12
      -
      Definition scaled_dot_product_attention_params.h:35
      -
      const uint N_Q_HEADS
      Definition scaled_dot_product_attention_params.h:38
      -
      const uint QUERY_SEQUENCE_LENGTH
      Definition scaled_dot_product_attention_params.h:37
      -
      const uint KV_TILES
      Definition scaled_dot_product_attention_params.h:40
      -
      const uint N_KV_HEADS
      Definition scaled_dot_product_attention_params.h:39
      -
      const float INV_ALPHA
      Definition scaled_dot_product_attention_params.h:41
      -
      - - - - diff --git a/docs/build/html/scatter_8h.html b/docs/build/html/scatter_8h.html deleted file mode 100644 index ce02011c..00000000 --- a/docs/build/html/scatter_8h.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/scatter.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      scatter.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - -

      -Functions

      template<typename T , typename IdxT , typename Op , int NIDX>
      METAL_FUNC void scatter_1d_index_impl (const device T *updates, device mlx_atomic< T > *out, const constant int *out_shape, const constant size_t *out_strides, const constant size_t &out_ndim, const constant int *upd_shape, const constant size_t &upd_ndim, const constant size_t &upd_size, const thread array< const device IdxT *, NIDX > &idx_buffers, uint2 gid)
       
      template<typename T , typename IdxT , typename Op , int NIDX>
      METAL_FUNC void scatter_impl (const device T *updates, device mlx_atomic< T > *out, const constant int *upd_shape, const constant size_t *upd_strides, const constant size_t &upd_ndim, const constant size_t &upd_size, const constant int *out_shape, const constant size_t *out_strides, const constant size_t &out_ndim, const constant int *axes, const thread Indices< IdxT, NIDX > &indices, uint2 gid)
       
      -

      Function Documentation

      - -

      ◆ scatter_1d_index_impl()

      - -
      -
      -
      -template<typename T , typename IdxT , typename Op , int NIDX>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void scatter_1d_index_impl (const device T * updates,
      device mlx_atomic< T > * out,
      const constant int * out_shape,
      const constant size_t * out_strides,
      const constant size_t & out_ndim,
      const constant int * upd_shape,
      const constant size_t & upd_ndim,
      const constant size_t & upd_size,
      const thread array< const device IdxT *, NIDX > & idx_buffers,
      uint2 gid )
      -
      - -
      -
      - -

      ◆ scatter_impl()

      - -
      -
      -
      -template<typename T , typename IdxT , typename Op , int NIDX>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC void scatter_impl (const device T * updates,
      device mlx_atomic< T > * out,
      const constant int * upd_shape,
      const constant size_t * upd_strides,
      const constant size_t & upd_ndim,
      const constant size_t & upd_size,
      const constant int * out_shape,
      const constant size_t * out_strides,
      const constant size_t & out_ndim,
      const constant int * axes,
      const thread Indices< IdxT, NIDX > & indices,
      uint2 gid )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/scatter_8h_source.html b/docs/build/html/scatter_8h_source.html deleted file mode 100644 index 6c665fe6..00000000 --- a/docs/build/html/scatter_8h_source.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/scatter.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      scatter.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      - -
      6
      -
      7template <typename T, typename IdxT, typename Op, int NIDX>
      -
      -
      8METAL_FUNC void scatter_1d_index_impl(
      -
      9 const device T* updates [[buffer(1)]],
      -
      10 device mlx_atomic<T>* out [[buffer(2)]],
      -
      11 const constant int* out_shape [[buffer(3)]],
      -
      12 const constant size_t* out_strides [[buffer(4)]],
      -
      13 const constant size_t& out_ndim [[buffer(5)]],
      -
      14 const constant int* upd_shape [[buffer(6)]],
      -
      15 const constant size_t& upd_ndim [[buffer(7)]],
      -
      16 const constant size_t& upd_size [[buffer(8)]],
      -
      17 const thread array<const device IdxT*, NIDX>& idx_buffers,
      -
      18 uint2 gid [[thread_position_in_grid]]) {
      -
      19 Op op;
      -
      20
      -
      21 size_t out_idx = 0;
      -
      22 for (int i = 0; i < NIDX; i++) {
      -
      23 auto idx_val = offset_neg_idx(idx_buffers[i][gid.y], out_shape[i]);
      -
      24 out_idx += idx_val * out_strides[i];
      -
      25 }
      -
      26
      -
      27 if (upd_ndim > 1) {
      -
      28 auto out_offset = elem_to_loc(gid.x, upd_shape + 1, out_strides, out_ndim);
      -
      29 out_idx += out_offset;
      -
      30 } else {
      -
      31 out_idx += gid.x;
      -
      32 }
      -
      33
      -
      34 op.atomic_update(out, updates[gid.y * upd_size + gid.x], out_idx);
      -
      35}
      -
      -
      36
      -
      37template <typename T, typename IdxT, typename Op, int NIDX>
      -
      -
      38METAL_FUNC void scatter_impl(
      -
      39 const device T* updates [[buffer(1)]],
      -
      40 device mlx_atomic<T>* out [[buffer(2)]],
      -
      41 const constant int* upd_shape [[buffer(3)]],
      -
      42 const constant size_t* upd_strides [[buffer(4)]],
      -
      43 const constant size_t& upd_ndim [[buffer(5)]],
      -
      44 const constant size_t& upd_size [[buffer(6)]],
      -
      45 const constant int* out_shape [[buffer(7)]],
      -
      46 const constant size_t* out_strides [[buffer(8)]],
      -
      47 const constant size_t& out_ndim [[buffer(9)]],
      -
      48 const constant int* axes [[buffer(10)]],
      -
      49 const thread Indices<IdxT, NIDX>& indices,
      -
      50 uint2 gid [[thread_position_in_grid]]) {
      -
      51 Op op;
      -
      52 auto ind_idx = gid.y;
      -
      53 auto ind_offset = gid.x;
      -
      54
      -
      55 size_t out_idx = 0;
      -
      56 for (int i = 0; i < NIDX; ++i) {
      -
      57 auto idx_loc = elem_to_loc(
      -
      58 ind_idx,
      -
      59 &indices.shapes[indices.ndim * i],
      -
      60 &indices.strides[indices.ndim * i],
      -
      61 indices.ndim);
      -
      62 auto ax = axes[i];
      -
      63 auto idx_val = offset_neg_idx(indices.buffers[i][idx_loc], out_shape[ax]);
      -
      64 out_idx += idx_val * out_strides[ax];
      -
      65 }
      -
      66
      -
      67 if (upd_size > 1) {
      -
      68 auto out_offset = elem_to_loc(
      -
      69 ind_offset, upd_shape + indices.ndim, out_strides, out_ndim);
      -
      70 out_idx += out_offset;
      -
      71 }
      -
      72
      -
      73 auto upd_idx =
      -
      74 elem_to_loc(gid.y * upd_size + gid.x, upd_shape, upd_strides, upd_ndim);
      -
      75 op.atomic_update(out, updates[upd_idx], out_idx);
      -
      76}
      -
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Op op
      Definition binary.h:141
      - -
      METAL_FUNC size_t offset_neg_idx(IdxT idx, size_t size)
      Definition indexing.h:16
      -
      METAL_FUNC void scatter_impl(const device T *updates, device mlx_atomic< T > *out, const constant int *upd_shape, const constant size_t *upd_strides, const constant size_t &upd_ndim, const constant size_t &upd_size, const constant int *out_shape, const constant size_t *out_strides, const constant size_t &out_ndim, const constant int *axes, const thread Indices< IdxT, NIDX > &indices, uint2 gid)
      Definition scatter.h:38
      -
      METAL_FUNC void scatter_1d_index_impl(const device T *updates, device mlx_atomic< T > *out, const constant int *out_shape, const constant size_t *out_strides, const constant size_t &out_ndim, const constant int *upd_shape, const constant size_t &upd_ndim, const constant size_t &upd_size, const thread array< const device IdxT *, NIDX > &idx_buffers, uint2 gid)
      Definition scatter.h:8
      -
      Definition indexing.h:8
      -
      Definition atomic.h:25
      -
      - - - - diff --git a/docs/build/html/scheduler_8h.html b/docs/build/html/scheduler_8h.html deleted file mode 100644 index ae80a47f..00000000 --- a/docs/build/html/scheduler_8h.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -MLX: mlx/scheduler.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      scheduler.h File Reference
      -
      -
      -
      #include <atomic>
      -#include <future>
      -#include <queue>
      -#include <thread>
      -#include <unordered_map>
      -#include "mlx/backend/metal/metal.h"
      -#include "mlx/backend/metal/metal_impl.h"
      -#include "mlx/device.h"
      -#include "mlx/stream.h"
      -
      -

      Go to the source code of this file.

      - - - - - - -

      -Classes

      struct  mlx::core::scheduler::StreamThread
       
      class  mlx::core::scheduler::Scheduler
       
      - - - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      namespace  mlx::core::scheduler
       
      - - - - - - - - - - - - - - -

      -Functions

      Schedulermlx::core::scheduler::scheduler ()
       
      template<typename F >
      void mlx::core::scheduler::enqueue (const Stream &stream, F &&f)
       
      int mlx::core::scheduler::n_active_tasks ()
       
      void mlx::core::scheduler::notify_new_task (const Stream &stream)
       
      void mlx::core::scheduler::notify_task_completion (const Stream &stream)
       
      void mlx::core::scheduler::wait_for_one ()
       
      -
      - - - - diff --git a/docs/build/html/scheduler_8h_source.html b/docs/build/html/scheduler_8h_source.html deleted file mode 100644 index dcb574c6..00000000 --- a/docs/build/html/scheduler_8h_source.html +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - -MLX: mlx/scheduler.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      scheduler.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include <atomic>
      -
      6#include <future>
      -
      7#include <queue>
      -
      8#include <thread>
      -
      9#include <unordered_map>
      -
      10
      - - -
      13#include "mlx/device.h"
      -
      14#include "mlx/stream.h"
      -
      15
      -
      - -
      17
      -
      - -
      19 std::mutex mtx;
      -
      20 std::queue<std::function<void()>> q;
      -
      21 std::condition_variable cond;
      -
      22 bool stop;
      - -
      24 std::thread thread;
      -
      25
      - -
      30
      -
      - - -
      33 {
      -
      34 std::lock_guard<std::mutex> lk(mtx);
      -
      35 stop = true;
      -
      36 }
      -
      37 cond.notify_one();
      -
      38 thread.join();
      -
      39 }
      -
      -
      40
      -
      -
      41 void thread_fn() {
      -
      42 while (true) {
      -
      43 std::function<void()> task;
      -
      44 {
      -
      45 std::unique_lock<std::mutex> lk(mtx);
      -
      46 cond.wait(lk, [this] { return !this->q.empty() || this->stop; });
      -
      47 if (q.empty() && stop) {
      -
      48 return;
      -
      49 }
      -
      50 task = std::move(q.front());
      -
      51 q.pop();
      -
      52 }
      -
      53
      -
      54 task();
      -
      55 }
      -
      56 }
      -
      -
      57
      -
      58 template <typename F>
      -
      -
      59 void enqueue(F&& f) {
      -
      60 {
      -
      61 std::lock_guard<std::mutex> lk(mtx);
      -
      62 if (stop) {
      -
      63 throw std::runtime_error(
      -
      64 "Cannot enqueue work after stream is stopped.");
      -
      65 }
      -
      66 q.emplace(std::forward<F>(f));
      -
      67 }
      -
      68 cond.notify_one();
      -
      69 }
      -
      -
      70};
      -
      -
      71
      -
      -
      72class Scheduler {
      -
      73 public:
      -
      -
      74 Scheduler() : n_active_tasks_(0) {
      -
      75 if (metal::is_available()) {
      -
      76 default_streams_.insert({Device::gpu, new_stream(Device::gpu)});
      -
      77 }
      -
      78 default_streams_.insert({Device::cpu, new_stream(Device::cpu)});
      -
      79 }
      -
      -
      80
      -
      81 // Not copyable or moveable
      -
      82 Scheduler(const Scheduler&) = delete;
      -
      83 Scheduler(Scheduler&&) = delete;
      -
      84 Scheduler& operator=(const Scheduler&) = delete;
      - -
      86
      -
      - -
      88 auto stream = Stream(streams_.size(), d);
      -
      89 streams_.push_back(new StreamThread{stream});
      -
      90 return stream;
      -
      91 }
      -
      -
      92
      -
      93 template <typename F>
      -
      94 void enqueue(const Stream& stream, F&& f);
      -
      95
      -
      - -
      97 return default_streams_.at(d.type);
      -
      98 }
      -
      -
      99
      -
      -
      100 void set_default_stream(const Stream& s) {
      -
      101 default_streams_.at(s.device.type) = s;
      -
      102 }
      -
      -
      103
      -
      -
      104 void notify_new_task(const Stream& stream) {
      -
      105 {
      -
      106 std::lock_guard<std::mutex> lk(mtx);
      -
      107 n_active_tasks_++;
      -
      108 }
      -
      109 completion_cv.notify_all();
      -
      110 }
      -
      -
      111
      -
      -
      112 void notify_task_completion(const Stream& stream) {
      -
      113 {
      -
      114 std::lock_guard<std::mutex> lk(mtx);
      -
      115 n_active_tasks_--;
      -
      116 }
      -
      117 completion_cv.notify_all();
      -
      118 }
      -
      -
      119
      -
      -
      120 int n_active_tasks() const {
      -
      121 return n_active_tasks_;
      -
      122 }
      -
      -
      123
      -
      - -
      125 std::unique_lock<std::mutex> lk(mtx);
      -
      126 int n_tasks_old = n_active_tasks();
      -
      127 if (n_tasks_old > 1) {
      -
      128 completion_cv.wait(lk, [this, n_tasks_old] {
      -
      129 return this->n_active_tasks() != n_tasks_old;
      -
      130 });
      -
      131 }
      -
      132 }
      -
      -
      133
      -
      - -
      135 for (auto s : streams_) {
      -
      136 delete s;
      -
      137 }
      -
      138 }
      -
      -
      139
      -
      140 private:
      -
      141 int n_active_tasks_;
      -
      142 std::vector<StreamThread*> streams_;
      -
      143 std::unordered_map<Device::DeviceType, Stream> default_streams_;
      -
      144 std::condition_variable completion_cv;
      -
      145 std::mutex mtx;
      -
      146};
      -
      -
      147
      -
      148template <typename F>
      -
      -
      149void Scheduler::enqueue(const Stream& stream, F&& f) {
      -
      150 streams_[stream.index]->enqueue(std::forward<F>(f));
      -
      151}
      -
      -
      152
      - -
      154
      -
      155template <typename F>
      -
      -
      156void enqueue(const Stream& stream, F&& f) {
      -
      157 scheduler().enqueue(stream, std::forward<F>(f));
      -
      158}
      -
      -
      159
      -
      -
      160inline int n_active_tasks() {
      -
      161 return scheduler().n_active_tasks();
      -
      162}
      -
      -
      163
      -
      -
      164inline void notify_new_task(const Stream& stream) {
      -
      165 scheduler().notify_new_task(stream);
      -
      166}
      -
      -
      167
      -
      -
      168inline void notify_task_completion(const Stream& stream) {
      - -
      170}
      -
      -
      171
      -
      -
      172inline void wait_for_one() {
      - -
      174}
      -
      -
      175
      -
      176} // namespace mlx::core::scheduler
      -
      -
      Definition scheduler.h:72
      -
      void wait_for_one()
      Definition scheduler.h:124
      -
      Scheduler & operator=(Scheduler &&)=delete
      -
      void enqueue(const Stream &stream, F &&f)
      Definition scheduler.h:149
      -
      Stream new_stream(const Device &d)
      Definition scheduler.h:87
      -
      Stream get_default_stream(const Device &d) const
      Definition scheduler.h:96
      -
      Scheduler()
      Definition scheduler.h:74
      -
      int n_active_tasks() const
      Definition scheduler.h:120
      -
      Scheduler(const Scheduler &)=delete
      -
      ~Scheduler()
      Definition scheduler.h:134
      -
      void set_default_stream(const Stream &s)
      Definition scheduler.h:100
      -
      Scheduler & operator=(const Scheduler &)=delete
      -
      void notify_task_completion(const Stream &stream)
      Definition scheduler.h:112
      -
      Scheduler(Scheduler &&)=delete
      -
      void notify_new_task(const Stream &stream)
      Definition scheduler.h:104
      - - - - -
      void new_stream(Stream stream)
      -
      Definition scheduler.h:16
      -
      void notify_task_completion(const Stream &stream)
      Definition scheduler.h:168
      -
      void notify_new_task(const Stream &stream)
      Definition scheduler.h:164
      -
      void wait_for_one()
      Definition scheduler.h:172
      -
      int n_active_tasks()
      Definition scheduler.h:160
      -
      void enqueue(const Stream &stream, F &&f)
      Definition scheduler.h:156
      -
      Scheduler & scheduler()
      -
      void synchronize()
      - -
      Definition device.h:7
      -
      static constexpr DeviceType gpu
      Definition device.h:14
      -
      static constexpr DeviceType cpu
      Definition device.h:13
      -
      DeviceType type
      Definition device.h:18
      -
      Definition stream.h:9
      -
      Device device
      Definition stream.h:11
      -
      int index
      Definition stream.h:10
      -
      Definition scheduler.h:18
      -
      void thread_fn()
      Definition scheduler.h:41
      -
      std::thread thread
      Definition scheduler.h:24
      -
      bool stop
      Definition scheduler.h:22
      -
      void enqueue(F &&f)
      Definition scheduler.h:59
      -
      std::condition_variable cond
      Definition scheduler.h:21
      -
      std::mutex mtx
      Definition scheduler.h:19
      -
      ~StreamThread()
      Definition scheduler.h:31
      -
      Stream stream
      Definition scheduler.h:23
      -
      StreamThread(Stream stream)
      Definition scheduler.h:26
      -
      std::queue< std::function< void()> > q
      Definition scheduler.h:20
      -
      float f
      Definition bf16.h:16
      -
      - - - - diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 508015ac..5185b7a9 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -6,7 +6,7 @@ - Search - MLX 0.17.3 documentation + Search - MLX 0.18.0 documentation @@ -34,7 +34,7 @@ - + @@ -130,8 +130,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -360,6 +360,7 @@
    • mlx.core.pad
    • mlx.core.power
    • mlx.core.prod
    • +
    • mlx.core.put_along_axis
    • mlx.core.quantize
    • mlx.core.quantized_matmul
    • mlx.core.radians
    • @@ -468,6 +469,7 @@
    • mlx.core.linalg.norm
    • mlx.core.linalg.cholesky
    • mlx.core.linalg.cholesky_inv
    • +
    • mlx.core.linalg.cross
    • mlx.core.linalg.qr
    • mlx.core.linalg.svd
    @@ -517,6 +519,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -527,6 +530,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -538,6 +542,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -553,6 +559,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -568,6 +575,7 @@
  • Functions
    • mlx.nn.elu
    • +
    • mlx.nn.celu
    • mlx.nn.gelu
    • mlx.nn.gelu_approx
    • mlx.nn.gelu_fast_approx
    • diff --git a/docs/build/html/search/all_0.js b/docs/build/html/search/all_0.js deleted file mode 100644 index c87a7436..00000000 --- a/docs/build/html/search/all_0.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['_5f_5fmlx_5fbfloat_5fnan_5f_5f_0',['__MLX_BFLOAT_NAN__',['../types_2bf16_8h.html#a78cafe726142a0166894e0c0a70b19f6',1,'bf16.h']]], - ['_5f_5fmlx_5fhalf_5fnan_5f_5f_1',['__MLX_HALF_NAN__',['../fp16_8h.html#a10abf57a099efdbb9db0c78e9c120e50',1,'fp16.h']]], - ['_5fmlx_5fbfloat16_2',['_MLX_BFloat16',['../struct___m_l_x___b_float16.html',1,'_MLX_BFloat16'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html',1,'mlx::core::_MLX_BFloat16'],['../struct___m_l_x___b_float16.html#ab1af7700f5d1e4ab567da6a34fa84668',1,'_MLX_BFloat16::_MLX_BFloat16() thread=default'],['../struct___m_l_x___b_float16.html#ae5c51644c3bd7cda6b796cb63c60c0b4',1,'_MLX_BFloat16::_MLX_BFloat16() threadgroup=default'],['../struct___m_l_x___b_float16.html#a21998a3c852d0e0f52681f8b453172bf',1,'_MLX_BFloat16::_MLX_BFloat16() device=default'],['../struct___m_l_x___b_float16.html#a64d8fc2e2463d7fa19cd3d5dd1ffdae8',1,'_MLX_BFloat16::_MLX_BFloat16() const ant=default'],['../struct___m_l_x___b_float16.html#a50d825f05a162d0ac133ad8b6f3c3112',1,'_MLX_BFloat16::_MLX_BFloat16(uint16_t bits, bits_to_bfloat_struct)'],['../struct___m_l_x___b_float16.html#a24c5736f234e09a0c82b00c7e44cc547',1,'_MLX_BFloat16::_MLX_BFloat16(T x) thread'],['../struct___m_l_x___b_float16.html#adeb880f31121c6dc40ce47765c6c7455',1,'_MLX_BFloat16::_MLX_BFloat16(T x) threadgroup'],['../struct___m_l_x___b_float16.html#ad2701d003e8fad168c89abc3907c6e53',1,'_MLX_BFloat16::_MLX_BFloat16(T x) device'],['../struct___m_l_x___b_float16.html#aec7fa716fd621ce1843338027bcb0118',1,'_MLX_BFloat16::_MLX_BFloat16(T x) const ant'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#a2c81f14fea4c01255a191f2146515917',1,'mlx::core::_MLX_BFloat16::_MLX_BFloat16()=default'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#ad43561d38ca00f9c37e8b130220233c0',1,'mlx::core::_MLX_BFloat16::_MLX_BFloat16(_MLX_BFloat16 const &)=default'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#aedbead2d935a12e8d5a4ff6269ba9ab2',1,'mlx::core::_MLX_BFloat16::_MLX_BFloat16(const float &x)']]], - ['_5fmlx_5ffloat16_3',['_MLX_Float16',['../structmlx_1_1core_1_1___m_l_x___float16.html',1,'mlx::core::_MLX_Float16'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a69a4ab5b456c4f3b786f43632e9a4fbc',1,'mlx::core::_MLX_Float16::_MLX_Float16()=default'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a0d7ed78b78c6d446f220f83b0cdebb86',1,'mlx::core::_MLX_Float16::_MLX_Float16(_MLX_Float16 const &)=default'],['../structmlx_1_1core_1_1___m_l_x___float16.html#afde284cbe678e0333ae277ffc8b131c0',1,'mlx::core::_MLX_Float16::_MLX_Float16(const float &x)']]], - ['_5fnomask_4',['_NoMask',['../struct___no_mask.html',1,'']]], - ['_5fnumeric_5flimits_5fimpl_3c_20bfloat16_5ft_20_3e_5',['_numeric_limits_impl< bfloat16_t >',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html',1,'metal']]] -]; diff --git a/docs/build/html/search/all_1.js b/docs/build/html/search/all_1.js deleted file mode 100644 index 2cd3bae9..00000000 --- a/docs/build/html/search/all_1.js +++ /dev/null @@ -1,113 +0,0 @@ -var searchData= -[ - ['a_0',['a',['../struct_max.html#adfee65117dbf49404241861d374b9c4d',1,'Max']]], - ['abs_1',['Abs',['../struct_abs.html',1,'Abs'],['../classmlx_1_1core_1_1_abs.html',1,'mlx::core::Abs'],['../structmlx_1_1core_1_1detail_1_1_abs.html',1,'mlx::core::detail::Abs'],['../classmlx_1_1core_1_1_abs.html#a1247e72feb640fb562d036b2dd1ae4ad',1,'mlx::core::Abs::Abs()']]], - ['abs_2',['abs',['../namespacemetal.html#a87c5122c60f9a12afceb9925a5b78ffb',1,'metal::abs()'],['../namespacemetal_1_1fast.html#a90d2973f71f83180e7f02e38d11c7a8f',1,'metal::fast::abs()'],['../namespacemetal_1_1precise.html#a99f2b2746e813b9ca7b4249afbaf2a14',1,'metal::precise::abs()'],['../group__ops.html#ga5528e80f5e8bad71e106a0cf9edd8920',1,'mlx::core::abs()']]], - ['accum_5ftype_3',['accum_type',['../structmlx_1_1steel_1_1_accum_helper.html#ae52abf69e7ba6af1a73d65d57182ed26',1,'mlx::steel::AccumHelper']]], - ['accumhelper_4',['AccumHelper',['../structmlx_1_1steel_1_1_accum_helper.html',1,'mlx::steel']]], - ['acos_5',['acos',['../namespacemetal.html#ad4537748b3c832b6569ff7ccb209fcb2',1,'metal::acos()'],['../namespacemetal_1_1fast.html#a805ce5c3a94b618b7349d70bbb82f0b2',1,'metal::fast::acos()'],['../namespacemetal_1_1precise.html#a8a2bcc89fc0b7e74f0453f82f89a8604',1,'metal::precise::acos()']]], - ['acosh_6',['acosh',['../namespacemetal.html#a2d0efb92b7f61eff342d776bd6c5f3a0',1,'metal::acosh()'],['../namespacemetal_1_1fast.html#afb656fc3406649a238b6f1e0509de751',1,'metal::fast::acosh()'],['../namespacemetal_1_1precise.html#a1f489fabffab969b8677b56bb1136067',1,'metal::precise::acosh()']]], - ['add_7',['Add',['../struct_add.html',1,'Add'],['../classmlx_1_1core_1_1_add.html',1,'mlx::core::Add'],['../structmlx_1_1core_1_1detail_1_1_add.html',1,'mlx::core::detail::Add'],['../classmlx_1_1core_1_1_add.html#ae3fd5483f3454eac3df256e3f5f3cdae',1,'mlx::core::Add::Add()']]], - ['add_8',['add',['../group__ops.html#ga2d32d67cfd76785a72c43d89b94dc7d7',1,'mlx::core']]], - ['add_5fhalf_5fbinops_9',['ADD_HALF_BINOPS',['../half__types_8h.html#a6bc906918877a7084068a9f0ed571dca',1,'ADD_HALF_BINOPS: half_types.h'],['../half__types_8h.html#a6bc906918877a7084068a9f0ed571dca',1,'ADD_HALF_BINOPS: half_types.h']]], - ['add_5fvec_10',['add_vec',['../structpocketfft_1_1detail_1_1add__vec.html',1,'pocketfft::detail']]], - ['add_5fvec_3c_20cmplx_3c_20t_20_3e_20_3e_11',['add_vec< cmplx< T > >',['../structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html',1,'pocketfft::detail']]], - ['add_5fvec_5ft_12',['add_vec_t',['../namespacepocketfft_1_1detail.html#a421aa74fbee775a96463246f72b144d6',1,'pocketfft::detail']]], - ['addmm_13',['AddMM',['../classmlx_1_1core_1_1_add_m_m.html',1,'mlx::core::AddMM'],['../classmlx_1_1core_1_1_add_m_m.html#a8ae4372b3f96e72e8a5a06d59de8a550',1,'mlx::core::AddMM::AddMM()']]], - ['addmm_14',['addmm',['../group__ops.html#ga82a53e083205a965387b3c3e2463244a',1,'mlx::core']]], - ['adj_5fimplicit_5fm_15',['adj_implicit_m',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a5bfca3bc43055013d28430cb1f023756',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['adj_5fout_5fh_16',['adj_out_h',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a879cc9757f59605a87d936ec4156040d',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['adj_5fout_5fhw_17',['adj_out_hw',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#aed0ffd63fbc85fd5d5c4cc7b43f68363',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['adj_5fout_5fw_18',['adj_out_w',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#ab971bf879079895189331fbeaf33c211',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['adjust_5fmatrix_5foffsets_19',['adjust_matrix_offsets',['../quantized_8h.html#a3ab400746ad77be89c30d25638e01698',1,'quantized.h']]], - ['advance_20',['advance',['../classpocketfft_1_1detail_1_1multi__iter.html#a5ddcc0666125b3cb6c0d62b30befdd2c',1,'pocketfft::detail::multi_iter::advance()'],['../classpocketfft_1_1detail_1_1simple__iter.html#a73a9ecd3008d2bd35aaa00bf9fac074f',1,'pocketfft::detail::simple_iter::advance()'],['../classpocketfft_1_1detail_1_1rev__iter.html#ad1918c84ae963188afc7599629b29686',1,'pocketfft::detail::rev_iter::advance()']]], - ['affine_5fdequantize_21',['affine_dequantize',['../quantized_8h.html#a6076203615038eb06816158f7b3869c6',1,'affine_dequantize(): quantized.h'],['../namespacemlx_1_1core_1_1fast.html#a12c7ef41409d6fb378008e67b6fab328',1,'mlx::core::fast::affine_dequantize()']]], - ['affine_5fquantize_22',['affine_quantize',['../quantized_8h.html#a47bcf4a14566e01e14bd3c155811db59',1,'affine_quantize(): quantized.h'],['../namespacemlx_1_1core_1_1fast.html#aa4b5f6886b2288cb6dfdd8598579f080',1,'mlx::core::fast::affine_quantize(const array &w, int group_size=64, int bits=4, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fast.html#a638c7e9b9ea8677f01786d8f9738baf8',1,'mlx::core::fast::affine_quantize(const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})']]], - ['affine_5fquantize_5fscales_5fbiases_23',['affine_quantize_scales_biases',['../quantized_8h.html#a7561acefd7b55e7e2b25393be08bb99c',1,'quantized.h']]], - ['affinequantize_24',['AffineQuantize',['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html',1,'mlx::core::fast::AffineQuantize'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a84d5fa9e8c3de407fbcc5f38d2ed1473',1,'mlx::core::fast::AffineQuantize::AffineQuantize()']]], - ['align_5fk_25',['align_K',['../steel__gemm__fused_8h.html#a8bdd2cecf97aa5b033152b1d0f0d2416',1,'steel_gemm_fused.h']]], - ['align_5fm_26',['align_M',['../steel__gemm__fused_8h.html#a55af226dc74b0026b7d4b865142a6d21',1,'steel_gemm_fused.h']]], - ['align_5fn_27',['align_N',['../steel__gemm__fused_8h.html#aa3b267252df2dcbfdde8c5f174d27036',1,'steel_gemm_fused.h']]], - ['aligned_5falloc_28',['aligned_alloc',['../namespacepocketfft_1_1detail.html#ae397445c61400f47a8fe3f8e1b6d0b76',1,'pocketfft::detail']]], - ['aligned_5fallocator_29',['aligned_allocator',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html',1,'pocketfft::detail::threading::aligned_allocator< T >'],['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a57c07047ac09c6cf48a269429de2b0fb',1,'pocketfft::detail::threading::aligned_allocator::aligned_allocator(const aligned_allocator< U > &)'],['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a0c390851ec37c5cdc5c1e7c6232a0b94',1,'pocketfft::detail::threading::aligned_allocator::aligned_allocator()=default']]], - ['aligned_5fdealloc_30',['aligned_dealloc',['../namespacepocketfft_1_1detail.html#aec7820e36a33e0a8bb83aa03b04b81e8',1,'pocketfft::detail']]], - ['all_31',['all',['../group__ops.html#ga3b1b90ef1275ca17655b6d7f25d3ee68',1,'mlx::core::all(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga3689e12e8f42dadb4cbe2b07dc4099f4',1,'mlx::core::all(const array &a, StreamOrDevice s={})'],['../group__ops.html#gac0919c6ba53aea35a7683dea7e9a9a59',1,'mlx::core::all(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gae2d5fcc5b62d673cca76c08b7b4afbbc',1,'mlx::core::all(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['all_5fgather_32',['all_gather',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aeb5a1726358213bc75756506f7b54d04',1,'mlx::core::distributed::detail::all_gather()'],['../namespacemlx_1_1core_1_1distributed.html#a82ef5e8cc7ac62cd228e51b1c1b77cb7',1,'mlx::core::distributed::all_gather()']]], - ['all_5freduce_33',['all_reduce',['../reduce__all_8h.html#a99ef48ae72b3e715c5f4d7ea07cd213d',1,'reduce_all.h']]], - ['all_5freduce_5fdispatch_34',['all_reduce_dispatch',['../namespacemlx_1_1core.html#af7b7ca7c6aa87558d9f98cee5c7a99a8',1,'mlx::core']]], - ['all_5fsum_35',['all_sum',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aa1d225b25f7b6426c48c5e35860ee960',1,'mlx::core::distributed::detail::all_sum()'],['../namespacemlx_1_1core_1_1distributed.html#a67ccb1a5445fc6f5db49dd36a15e5980',1,'mlx::core::distributed::all_sum()']]], - ['allclose_36',['allclose',['../group__ops.html#gaf0cd4257de7542daf9faf5e605e31020',1,'mlx::core']]], - ['allgather_37',['AllGather',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html',1,'mlx::core::distributed::AllGather'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#af4b10a5b61f160fb64353057c185b661',1,'mlx::core::distributed::AllGather::AllGather()']]], - ['alloc_5ftmp_38',['alloc_tmp',['../namespacepocketfft_1_1detail.html#a4db03cbcd9d43d9e0b0b9067713c80e9',1,'pocketfft::detail::alloc_tmp(const shape_t &shape, size_t axsize, size_t elemsize)'],['../namespacepocketfft_1_1detail.html#a13832735696303b9559c4663631d5475',1,'pocketfft::detail::alloc_tmp(const shape_t &shape, const shape_t &axes, size_t elemsize)']]], - ['allocate_39',['allocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a4f785747b898980756af9e5515363826',1,'pocketfft::detail::threading::aligned_allocator']]], - ['allocator_40',['Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html',1,'mlx::core::allocator']]], - ['allocator_41',['allocator',['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#abf84c726a37df68345589b897b2e35f0',1,'mlx::core::allocator::CommonAllocator::allocator'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#afa1c5a725309caff163c492b5b84491e',1,'mlx::core::metal::MetalAllocator::allocator']]], - ['allocator_42',['Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a5803678a418fef687fc65fa9d5c37b65',1,'mlx::core::allocator::Allocator::Allocator()=default'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#aa05c081ce80dc036f9d3dd8c195259d2',1,'mlx::core::allocator::Allocator::Allocator(const Allocator &other)=delete'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a8e8ce346a16cf0c62847bed9289f9959',1,'mlx::core::allocator::Allocator::Allocator(Allocator &&other)=delete']]], - ['allocator_43',['allocator',['../namespacemlx_1_1core_1_1allocator.html#aa23e2f20a336d0b159c097087194634e',1,'mlx::core::allocator::allocator()'],['../namespacemlx_1_1core_1_1metal.html#a74b3558bd518aecde6b14b0ba5e1a0d5',1,'mlx::core::metal::allocator()']]], - ['allocator_2eh_44',['allocator.h',['../allocator_8h.html',1,'(Global Namespace)'],['../backend_2metal_2allocator_8h.html',1,'(Global Namespace)']]], - ['allreduce_45',['AllReduce',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html',1,'mlx::core::distributed::AllReduce'],['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a2d1ea56cbf72a316680ea90aa6da1c2d',1,'mlx::core::distributed::AllReduce::AllReduce()']]], - ['alpha_46',['alpha',['../struct_m_l_x_fast_attention_params.html#a932266d04fa7d6e27d4a4a2c175f1477',1,'MLXFastAttentionParams::alpha'],['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html#af8693d96512eff3e125d33d203920710',1,'mlx::steel::GEMMAddMMParams::alpha'],['../structmlx_1_1steel_1_1_transform_axpby.html#ab3223b49c6b3b7f89eba91aeaff9dcff',1,'mlx::steel::TransformAxpby::alpha']]], - ['and_47',['And',['../struct_and.html',1,'And< U >'],['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924aba3b7fb927f6b6c8b198a9cdc3dd9e02',1,'mlx::core::distributed::AllReduce::And'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dab14e7d426f45ae7f029f4e00210fbae4',1,'mlx::core::BitwiseBinary::And'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a5cc3412a1f243dcb11661bca42daea93',1,'mlx::core::Reduce::And']]], - ['any_48',['any',['../group__ops.html#ga8598dd718fb05cb28535e250372d4e6f',1,'mlx::core::any(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#gad37df97f253a963bece124198dbaf9ba',1,'mlx::core::any(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaf240618fc8b06debf5f56e97e84f18ef',1,'mlx::core::any(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gab1d56277d468a55227f4dad6bc2fc1ce',1,'mlx::core::any(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['apply_49',['apply',['../struct_scale_op.html#a69f82bc925843a4e1c14dfe8ad2f3218',1,'ScaleOp::apply(InT x) const'],['../struct_scale_op.html#a69f82bc925843a4e1c14dfe8ad2f3218',1,'ScaleOp::apply(InT x) const'],['../structmlx_1_1steel_1_1_transform_none.html#a84daa89be5b3348b5715bf8c5a01da75',1,'mlx::steel::TransformNone::apply(InT x)'],['../structmlx_1_1steel_1_1_transform_none.html#ae4c397038f386b13eaa386638a0fce90',1,'mlx::steel::TransformNone::apply(InT x, OutT)'],['../structmlx_1_1steel_1_1_transform_add.html#afbb688d84443fd622b4dd2768cfe0acf',1,'mlx::steel::TransformAdd::apply(InT x)'],['../structmlx_1_1steel_1_1_transform_add.html#a4923b0059d88099b2739f2cf0273ea19',1,'mlx::steel::TransformAdd::apply(InT x, OutT c)'],['../structmlx_1_1steel_1_1_transform_axpby.html#a14ad48b0189d6bdde06c66f1b567ae87',1,'mlx::steel::TransformAxpby::apply(InT x)'],['../structmlx_1_1steel_1_1_transform_axpby.html#aaf3a45e25d7abf7a34b48cc612e631ba',1,'mlx::steel::TransformAxpby::apply(InT x, OutT c) const']]], - ['apply_5fepilogue_50',['apply_epilogue',['../structmlx_1_1steel_1_1_block_m_m_a.html#af653c0808ba4fa9a25286f1febb7baff',1,'mlx::steel::BlockMMA::apply_epilogue(thread const UnaryEpilogue &epilogue_op)'],['../structmlx_1_1steel_1_1_block_m_m_a.html#a823c56cbd2086f10272df7284a5247ae',1,'mlx::steel::BlockMMA::apply_epilogue(const device U *C, const int ldc, const int fdc, thread const BinaryEpilogue &epilogue_op)']]], - ['apply_5fepilogue_5fsafe_51',['apply_epilogue_safe',['../structmlx_1_1steel_1_1_block_m_m_a.html#a9e48f2d51099ec00171506724faab54a',1,'mlx::steel::BlockMMA']]], - ['apply_5finplace_5fop_52',['apply_inplace_op',['../structmlx_1_1steel_1_1_block_loader.html#adb4ca2cc193630a779de552fa8847ddf',1,'mlx::steel::BlockLoader']]], - ['arange_53',['Arange',['../classmlx_1_1core_1_1_arange.html',1,'mlx::core::Arange'],['../classmlx_1_1core_1_1_arange.html#a1a70c3b0b9c67d5a9446c141c5b7c574',1,'mlx::core::Arange::Arange()']]], - ['arange_54',['arange',['../namespacemlx_1_1core.html#a369aa886219b83cf219e7a7862ce260b',1,'mlx::core::arange()'],['../namespacemlx_1_1core_1_1metal.html#a272c36f0faf2570cbb2f36030e9a3f26',1,'mlx::core::metal::arange()'],['../metal_2kernels_2arange_8h.html#a1e5126ee6ae0164c2343230c4d87c03e',1,'arange(): arange.h'],['../group__ops.html#ga7ca088b8090b9f84f2e08345cf3f835a',1,'mlx::core::arange(double start, double stop, double step, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga4c36b841dc5cba391dad029be5a0ad98',1,'mlx::core::arange(double start, double stop, double step, StreamOrDevice s={})'],['../group__ops.html#ga8d7cf9eb15e2daf1469058907e8abc85',1,'mlx::core::arange(double start, double stop, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga74566a14e69ba6a25f5a35e7ade5c282',1,'mlx::core::arange(double start, double stop, StreamOrDevice s={})'],['../group__ops.html#ga345aa27af3dae3646b8b4b1068e89a3e',1,'mlx::core::arange(double stop, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#gaae179075d0fe23f4bd53fdf8c41f4c70',1,'mlx::core::arange(double stop, StreamOrDevice s={})'],['../group__ops.html#ga6b945f513077c2978afc1a952c884860',1,'mlx::core::arange(int start, int stop, int step, StreamOrDevice s={})'],['../group__ops.html#ga1c39fcc6eaa1c1867735c7f849d708d6',1,'mlx::core::arange(int start, int stop, StreamOrDevice s={})'],['../group__ops.html#gafe6e4580452c873cac294f16129e633f',1,'mlx::core::arange(int stop, StreamOrDevice s={})']]], - ['arange_2eh_55',['arange.h',['../common_2arange_8h.html',1,'(Global Namespace)'],['../metal_2jit_2arange_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2arange_8h.html',1,'(Global Namespace)']]], - ['arange_5fkernels_56',['arange_kernels',['../metal_2jit_2arange_8h.html#a2f49fb7bdc0a90230077fe2023e6e5c0',1,'arange.h']]], - ['arccos_57',['ArcCos',['../struct_arc_cos.html',1,'ArcCos'],['../classmlx_1_1core_1_1_arc_cos.html',1,'mlx::core::ArcCos'],['../structmlx_1_1core_1_1detail_1_1_arc_cos.html',1,'mlx::core::detail::ArcCos'],['../classmlx_1_1core_1_1_arc_cos.html#a66f4ee841d17923d93241b71ea5103e9',1,'mlx::core::ArcCos::ArcCos()']]], - ['arccos_58',['arccos',['../group__ops.html#ga08bec7cb10c84466487b507fc5bf9776',1,'mlx::core']]], - ['arccosh_59',['ArcCosh',['../struct_arc_cosh.html',1,'ArcCosh'],['../classmlx_1_1core_1_1_arc_cosh.html',1,'mlx::core::ArcCosh'],['../structmlx_1_1core_1_1detail_1_1_arc_cosh.html',1,'mlx::core::detail::ArcCosh'],['../classmlx_1_1core_1_1_arc_cosh.html#a34597054db467941a2a883c653ba4d71',1,'mlx::core::ArcCosh::ArcCosh()']]], - ['arccosh_60',['arccosh',['../group__ops.html#gaafafcfcebdf7248679c8543d0c0497e5',1,'mlx::core']]], - ['arcsin_61',['ArcSin',['../struct_arc_sin.html',1,'ArcSin'],['../classmlx_1_1core_1_1_arc_sin.html',1,'mlx::core::ArcSin'],['../structmlx_1_1core_1_1detail_1_1_arc_sin.html',1,'mlx::core::detail::ArcSin'],['../classmlx_1_1core_1_1_arc_sin.html#a97cb8c3d4d9d6abc627dec49a404f013',1,'mlx::core::ArcSin::ArcSin()']]], - ['arcsin_62',['arcsin',['../group__ops.html#ga8770e8c8f23f13343911f4c9d6e1c619',1,'mlx::core']]], - ['arcsinh_63',['ArcSinh',['../struct_arc_sinh.html',1,'ArcSinh'],['../classmlx_1_1core_1_1_arc_sinh.html',1,'mlx::core::ArcSinh'],['../structmlx_1_1core_1_1detail_1_1_arc_sinh.html',1,'mlx::core::detail::ArcSinh'],['../classmlx_1_1core_1_1_arc_sinh.html#a30076b222788deeaaf9ad92d3c535f20',1,'mlx::core::ArcSinh::ArcSinh()']]], - ['arcsinh_64',['arcsinh',['../group__ops.html#gac62e2cedc49ef2c90dd8584000317450',1,'mlx::core']]], - ['arctan_65',['ArcTan',['../struct_arc_tan.html',1,'ArcTan'],['../classmlx_1_1core_1_1_arc_tan.html',1,'mlx::core::ArcTan'],['../structmlx_1_1core_1_1detail_1_1_arc_tan.html',1,'mlx::core::detail::ArcTan'],['../classmlx_1_1core_1_1_arc_tan.html#a3511153bbd421e89fd9294cdb3f79b44',1,'mlx::core::ArcTan::ArcTan()']]], - ['arctan_66',['arctan',['../group__ops.html#gaa041f3f070e68f4946db07516b7d092e',1,'mlx::core']]], - ['arctan2_67',['ArcTan2',['../struct_arc_tan2.html',1,'ArcTan2'],['../classmlx_1_1core_1_1_arc_tan2.html',1,'mlx::core::ArcTan2'],['../structmlx_1_1core_1_1detail_1_1_arc_tan2.html',1,'mlx::core::detail::ArcTan2'],['../classmlx_1_1core_1_1_arc_tan2.html#aa1a4ebab9924b6bcc80df5b52ed0121a',1,'mlx::core::ArcTan2::ArcTan2()']]], - ['arctan2_68',['arctan2',['../group__ops.html#ga6caba9c92b5989123501f909cc7da354',1,'mlx::core']]], - ['arctanh_69',['ArcTanh',['../struct_arc_tanh.html',1,'ArcTanh'],['../classmlx_1_1core_1_1_arc_tanh.html',1,'mlx::core::ArcTanh'],['../structmlx_1_1core_1_1detail_1_1_arc_tanh.html',1,'mlx::core::detail::ArcTanh'],['../classmlx_1_1core_1_1_arc_tanh.html#a17857bd0e2a3ecf1f7bf8e1a3d354358',1,'mlx::core::ArcTanh::ArcTanh()']]], - ['arctanh_70',['arctanh',['../group__ops.html#gab46a35925a04c5a9d2ec7898ee55358e',1,'mlx::core']]], - ['argmax_71',['ArgMax',['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e',1,'mlx::core::ArgReduce']]], - ['argmax_72',['argmax',['../group__ops.html#gae60b0b5339b9c50b9970260faf613e83',1,'mlx::core::argmax(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#gae6f6c5a840320b336fdc9687e0ed56c8',1,'mlx::core::argmax(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga2efa67466510fc26ab9ea8dff30f2ba5',1,'mlx::core::argmax(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['argmin_73',['ArgMin',['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9',1,'mlx::core::ArgReduce']]], - ['argmin_74',['argmin',['../group__ops.html#ga7c3bd5ef430a71dfd298e626741e3c71',1,'mlx::core::argmin(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga6bc577c5ab10cd9c848ba81321595070',1,'mlx::core::argmin(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaf66dc3c77b88e4009e0678eda41eca81',1,'mlx::core::argmin(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['argpartition_75',['ArgPartition',['../classmlx_1_1core_1_1_arg_partition.html',1,'mlx::core::ArgPartition'],['../classmlx_1_1core_1_1_arg_partition.html#ab54b13dbf92351ba1ac06fd3e5a802df',1,'mlx::core::ArgPartition::ArgPartition()']]], - ['argpartition_76',['argpartition',['../group__ops.html#gaf301c49c10fa9b95a9e8dc52ead1a8dd',1,'mlx::core::argpartition(const array &a, int kth, StreamOrDevice s={})'],['../group__ops.html#ga7b15c654c7463def57857a0e239989a3',1,'mlx::core::argpartition(const array &a, int kth, int axis, StreamOrDevice s={})']]], - ['argreduce_77',['ArgReduce',['../classmlx_1_1core_1_1_arg_reduce.html',1,'mlx::core::ArgReduce'],['../classmlx_1_1core_1_1_arg_reduce.html#aaccf8021dc24895656e25142eb65aa03',1,'mlx::core::ArgReduce::ArgReduce()']]], - ['argsort_78',['ArgSort',['../classmlx_1_1core_1_1_arg_sort.html',1,'mlx::core::ArgSort'],['../classmlx_1_1core_1_1_arg_sort.html#a38507a8445302a81cb44674c4a5fc0b0',1,'mlx::core::ArgSort::ArgSort()']]], - ['argsort_79',['argsort',['../group__ops.html#ga8df3b2703bf671457422894dd870cdc5',1,'mlx::core::argsort(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga7878e0daa5a75f44e57b5fe948fa3ef6',1,'mlx::core::argsort(const array &a, int axis, StreamOrDevice s={})']]], - ['argument_5fencoder_80',['argument_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#a6e33e2b1287324fb4a6575e0da5e5881',1,'mlx::core::metal::Device']]], - ['arr_81',['arr',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail::arr< T >'],['../classpocketfft_1_1detail_1_1arr.html#a961a24410638b35129cd6b81850d2a42',1,'pocketfft::detail::arr::arr()'],['../classpocketfft_1_1detail_1_1arr.html#a04f832b780a4453fdf3b69bf75b182bd',1,'pocketfft::detail::arr::arr(size_t n)'],['../classpocketfft_1_1detail_1_1arr.html#a0cd8fb4a588a74d428a7349d38b477d0',1,'pocketfft::detail::arr::arr(arr &&other)']]], - ['arr_3c_20pocketfft_3a_3adetail_3a_3acmplx_3c_20t0_20_3e_20_3e_82',['arr< pocketfft::detail::cmplx< T0 > >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_3c_20pocketfft_3a_3adetail_3a_3acmplx_3c_20thigh_20_3e_20_3e_83',['arr< pocketfft::detail::cmplx< Thigh > >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_3c_20t0_20_3e_84',['arr< T0 >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_5finfo_85',['arr_info',['../classpocketfft_1_1detail_1_1arr__info.html',1,'pocketfft::detail::arr_info'],['../classpocketfft_1_1detail_1_1arr__info.html#a0dbddb7d86ca306159fc9ef9a453b21e',1,'pocketfft::detail::arr_info::arr_info()']]], - ['array_86',['array',['../classmlx_1_1core_1_1array.html',1,'mlx::core::array'],['../classmlx_1_1core_1_1array.html#a75fac72da3ce214fa3737df92a64b232',1,'mlx::core::array::array(T val, Dtype dtype=TypeToDtype< T >())'],['../classmlx_1_1core_1_1array.html#a6db4b8c28c767cc16ad2785ece496dca',1,'mlx::core::array::array(const std::complex< float > &val, Dtype dtype=complex64)'],['../classmlx_1_1core_1_1array.html#a3e506a53b9c7567448f7809dda680210',1,'mlx::core::array::array(It data, std::vector< int > shape, Dtype dtype=TypeToDtype< typename std::iterator_traits< It >::value_type >())'],['../classmlx_1_1core_1_1array.html#a87f170384f4fb93decf2b80ae7280f00',1,'mlx::core::array::array(std::initializer_list< T > data, Dtype dtype=TypeToDtype< T >())'],['../classmlx_1_1core_1_1array.html#a46642301da11e3eb4312c37349fbc9d7',1,'mlx::core::array::array(std::initializer_list< float > data)'],['../classmlx_1_1core_1_1array.html#a5e1812029394bfb1a706c83611286f49',1,'mlx::core::array::array(std::initializer_list< int > data, Dtype dtype)'],['../classmlx_1_1core_1_1array.html#a44e57a41819321e0d796e08cb9a06e4b',1,'mlx::core::array::array(std::initializer_list< T > data, std::vector< int > shape, Dtype dtype=TypeToDtype< T >())'],['../classmlx_1_1core_1_1array.html#a5b5f562ff14c150842cb61628e531663',1,'mlx::core::array::array(allocator::Buffer data, std::vector< int > shape, Dtype dtype, deleter_t deleter=allocator::free)'],['../classmlx_1_1core_1_1array.html#a297df274e2da5cb884257bbeffd6b187',1,'mlx::core::array::array(const array &other)=default'],['../classmlx_1_1core_1_1array.html#ab6cbccbba66cc54acda4390b19f0397c',1,'mlx::core::array::array(array &&other)=default'],['../classmlx_1_1core_1_1array.html#adaade8f4bb7f8ecc0ba07efb17cd2620',1,'mlx::core::array::array(std::vector< int > shape, Dtype dtype, std::shared_ptr< Primitive > primitive, std::vector< array > inputs)']]], - ['array_20operations_87',['Core array operations',['../group__ops.html',1,'']]], - ['array_2eh_88',['array.h',['../array_8h.html',1,'']]], - ['array_5fequal_89',['array_equal',['../group__ops.html#ga8f3059336ee0c87207b1f8c6ab312645',1,'mlx::core::array_equal(const array &a, const array &b, bool equal_nan, StreamOrDevice s={})'],['../group__ops.html#gaf79cf0271ca0105d7b14295a90d0ed14',1,'mlx::core::array_equal(const array &a, const array &b, StreamOrDevice s={})']]], - ['arrayiterator_90',['ArrayIterator',['../structmlx_1_1core_1_1array_1_1_array_iterator.html',1,'mlx::core::array::ArrayIterator'],['../structmlx_1_1core_1_1array_1_1_array_iterator.html#ad3afcb24c6db7642bbc06835f7f3e27a',1,'mlx::core::array::ArrayIterator::ArrayIterator()']]], - ['as_5foffset_91',['As_offset',['../structmlx_1_1steel_1_1_block_m_m_a.html#a138ed1bbad2ca88d3a3c7d162cd36562',1,'mlx::steel::BlockMMA']]], - ['as_5fstrided_92',['as_strided',['../group__ops.html#ga8de80ecef30fc560003d40f61a38b99d',1,'mlx::core']]], - ['asimd_93',['Asimd',['../structmlx_1_1steel_1_1_block_m_m_a.html#a92ac4b483cb58c361d7a657e0738c070',1,'mlx::steel::BlockMMA']]], - ['asin_94',['asin',['../namespacemetal.html#a16e843194df3fd136404bf80ba5ac95c',1,'metal::asin()'],['../namespacemetal_1_1fast.html#a769455a283da99654b6e42c3acf13eb1',1,'metal::fast::asin()'],['../namespacemetal_1_1precise.html#adc7b8b6e12e320cb32030f728dcbf438',1,'metal::precise::asin()']]], - ['asinh_95',['asinh',['../namespacemetal.html#abcc3251866930cfe880f89e7473d0e63',1,'metal::asinh()'],['../namespacemetal_1_1fast.html#a4367034b7b3e14310803bb2be975a556',1,'metal::fast::asinh()'],['../namespacemetal_1_1precise.html#aaad1cdde6687c8011fbc5fda1bb13424',1,'metal::precise::asinh()']]], - ['asstrided_96',['AsStrided',['../classmlx_1_1core_1_1_as_strided.html',1,'mlx::core::AsStrided'],['../classmlx_1_1core_1_1_as_strided.html#a80c0547f72ed53374eafc57d57b5d4af',1,'mlx::core::AsStrided::AsStrided()']]], - ['astype_97',['AsType',['../classmlx_1_1core_1_1_as_type.html',1,'mlx::core::AsType'],['../classmlx_1_1core_1_1_as_type.html#a8c3241d402a8977bb4db037e225f5b47',1,'mlx::core::AsType::AsType()']]], - ['astype_98',['astype',['../group__ops.html#ga0e58c24fc5668e5a521e5b45e8370a62',1,'mlx::core']]], - ['async_5feval_99',['async_eval',['../namespacemlx_1_1core.html#a15dda19aa7fa1fc5fca35df5cf963297',1,'mlx::core']]], - ['atan_100',['atan',['../namespacemetal.html#a80a771553d9a0012b93620d19c48b00f',1,'metal::atan()'],['../namespacemetal_1_1fast.html#a769503b4b7f89071d0983258c5a3ac5a',1,'metal::fast::atan()'],['../namespacemetal_1_1precise.html#aaaf4b5f4786a912089bbf0ae7619a6be',1,'metal::precise::atan()']]], - ['atan2_101',['atan2',['../namespacemetal.html#a1d430793eaa38ccf0d07145e3fcd1e61',1,'metal::atan2()'],['../namespacemetal_1_1fast.html#a00e687ea46f5affe26e6aef8fd62b89a',1,'metal::fast::atan2()'],['../namespacemetal_1_1precise.html#a6f161b049cc6884f87b09b33c2d1cd7f',1,'metal::precise::atan2()']]], - ['atanh_102',['atanh',['../namespacemetal.html#a57116427997ba71dd3863bfb15de33bf',1,'metal::atanh()'],['../namespacemetal_1_1fast.html#af24608fc605db9a14427d37c36dc1c53',1,'metal::fast::atanh()'],['../namespacemetal_1_1precise.html#a902994837653b90c47f4285673e712c4',1,'metal::precise::atanh()']]], - ['atleast_5f1d_103',['atleast_1d',['../group__ops.html#gaba4d25e7a2bf87ba4feb7837ec7fa396',1,'mlx::core::atleast_1d(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga08ca172ce80157c916c89dd0b45b95c5',1,'mlx::core::atleast_1d(const std::vector< array > &a, StreamOrDevice s={})']]], - ['atleast_5f2d_104',['atleast_2d',['../group__ops.html#gaeeb7f5bb88aa32a3ac2be1f39c5f8087',1,'mlx::core::atleast_2d(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga9950299a80c2562f13448758f856d1f5',1,'mlx::core::atleast_2d(const std::vector< array > &a, StreamOrDevice s={})']]], - ['atleast_5f3d_105',['atleast_3d',['../group__ops.html#ga4afd919601e67782ff964465919956a0',1,'mlx::core::atleast_3d(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaffdf742ad79440a60dda40062a8074fe',1,'mlx::core::atleast_3d(const std::vector< array > &a, StreamOrDevice s={})']]], - ['atomic_2eh_106',['atomic.h',['../atomic_8h.html',1,'']]], - ['atomic_5fupdate_107',['atomic_update',['../struct_none.html#aecbce7c97e8b1d5dc4afd2e788c24e06',1,'None']]], - ['attach_5fevent_108',['attach_event',['../classmlx_1_1core_1_1array.html#a000c3cfe13cb378bf0523b62816190da',1,'mlx::core::array']]], - ['available_109',['available',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078a308bd3e5bf976888b120dd36d0c2d2ae',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/all_10.js b/docs/build/html/search/all_10.js deleted file mode 100644 index fe71a816..00000000 --- a/docs/build/html/search/all_10.js +++ /dev/null @@ -1,72 +0,0 @@ -var searchData= -[ - ['pack_5ffactor_0',['pack_factor',['../struct_quantized_block_loader.html#a8eae73a0c04bf1e41fb96131f6aa500d',1,'QuantizedBlockLoader']]], - ['pad_1',['Pad',['../classmlx_1_1core_1_1_pad.html',1,'mlx::core']]], - ['pad_2',['pad',['../struct_m_l_x_conv_params.html#ae84a9afb3a95b57e0b763bb0ebda0753',1,'MLXConvParams']]], - ['pad_3',['Pad',['../classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43',1,'mlx::core::Pad']]], - ['pad_4',['pad',['../group__ops.html#ga81c2f138ea81d78affd42e9a646cacbc',1,'mlx::core::pad(const array &a, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})'],['../group__ops.html#ga8495c9902b0a67f288918cb528d5abeb',1,'mlx::core::pad(const array &a, const std::vector< std::pair< int, int > > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})'],['../group__ops.html#gaeaae2f9637b0b3e2b4c6c0517e285935',1,'mlx::core::pad(const array &a, const std::pair< int, int > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})'],['../group__ops.html#ga5b8684361f57cbfd5e6eedf82a62ded0',1,'mlx::core::pad(const array &a, int pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})']]], - ['pad_5fgpu_5',['pad_gpu',['../namespacemlx_1_1core.html#a6e2054d396ae487d810642dc19cdd0b0',1,'mlx::core']]], - ['parallelfilereader_6',['ParallelFileReader',['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html',1,'mlx::core::io::ParallelFileReader'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a6cdb4547408f8cbca9e2ddd82514e697',1,'mlx::core::io::ParallelFileReader::ParallelFileReader()']]], - ['params_7',['params',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a09b4719415c5bddb0bb70c704b1d8d02',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::params'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a4f8c792ede675d14b70dd19fcf3c5aee',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::params'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a1fed11be2e8d9d594dcdf60e32b936b1',1,'mlx::steel::Conv2DWeightBlockLoader::params'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a335c573456ede3dd34bda1eec9842fe2',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::params'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#af67adf4550d69231a259e79c1aae9acc',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::params'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a09fd92c74ef57c20b48bc780153365ba',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::params'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#ae4759d18c0e5cc3530b3da8493008419',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::params']]], - ['params_2eh_8',['params.h',['../conv_2params_8h.html',1,'(Global Namespace)'],['../gemm_2params_8h.html',1,'(Global Namespace)']]], - ['partition_9',['Partition',['../classmlx_1_1core_1_1_partition.html',1,'mlx::core::Partition'],['../classmlx_1_1core_1_1_partition.html#a7b82ca3895b6654308fac566b277ac0d',1,'mlx::core::Partition::Partition()']]], - ['partition_10',['partition',['../group__ops.html#gac1b30830a972fb9a2601379ad2b32405',1,'mlx::core::partition(const array &a, int kth, StreamOrDevice s={})'],['../group__ops.html#ga4fbea3a5f66cf81e3c119d1661119321',1,'mlx::core::partition(const array &a, int kth, int axis, StreamOrDevice s={})']]], - ['per_5fthread_5frow_5freduce_11',['per_thread_row_reduce',['../reduce__row_8h.html#a9d5e0049a2276f43702fc6907e74a35f',1,'per_thread_row_reduce(thread U totals[N_WRITES], const device T *inputs[N_WRITES], int blocks, int extra, uint lsize_x, uint lid_x): reduce_row.h'],['../reduce__row_8h.html#a045ec34228e77c79ec67d11c39ff097a',1,'per_thread_row_reduce(thread U totals[N_WRITES], const device T *in, const constant size_t &reduction_size, int blocks, int extra, uint lsize_x, uint lid_x): reduce_row.h'],['../reduce__row_8h.html#a4d00c44e5f4a13be529ff8b664a0a342',1,'per_thread_row_reduce(thread U totals[N_WRITES], const device T *in, const size_t row_idx, int blocks, int extra, const constant int *shape, const constant size_t *strides, const constant int &ndim, uint lsize_x, uint lid_x): reduce_row.h']]], - ['perform_5ffft_12',['perform_fft',['../backend_2metal_2kernels_2fft_8h.html#a050ead8fa5cacdaec13d68ca3c0dcb81',1,'fft.h']]], - ['pinv_13',['pinv',['../namespacemlx_1_1core_1_1linalg.html#ad9f8348091e5ff4f74ad456e9fbd3e01',1,'mlx::core::linalg']]], - ['pm_14',['PM',['../namespacepocketfft_1_1detail.html#a8c6ec35091d5136d991577623133fcf2',1,'pocketfft::detail']]], - ['pminplace_15',['PMINPLACE',['../namespacepocketfft_1_1detail.html#aa3477781ef54788c9fa7755cb8ea75fd',1,'pocketfft::detail']]], - ['pocketfft_16',['pocketfft',['../namespacepocketfft.html',1,'']]], - ['pocketfft_2eh_17',['pocketfft.h',['../pocketfft_8h.html',1,'']]], - ['pocketfft_3a_3adetail_18',['detail',['../namespacepocketfft_1_1detail.html',1,'pocketfft']]], - ['pocketfft_3a_3adetail_3a_3athreading_19',['threading',['../namespacepocketfft_1_1detail_1_1threading.html',1,'pocketfft::detail']]], - ['pocketfft_5fc_20',['pocketfft_c',['../classpocketfft_1_1detail_1_1pocketfft__c.html',1,'pocketfft::detail::pocketfft_c< T0 >'],['../classpocketfft_1_1detail_1_1pocketfft__c.html#a44f46cf06f572b42ad8b53c7c6f38e4d',1,'pocketfft::detail::pocketfft_c::pocketfft_c()']]], - ['pocketfft_5fcache_5fsize_21',['POCKETFFT_CACHE_SIZE',['../pocketfft_8h.html#a9e604bcf20603d70b62b233d3f306714',1,'pocketfft.h']]], - ['pocketfft_5fno_5fvectors_22',['POCKETFFT_NO_VECTORS',['../pocketfft_8h.html#aa9cdaed0819c48f97fcd19f05c289160',1,'pocketfft.h']]], - ['pocketfft_5fnoinline_23',['POCKETFFT_NOINLINE',['../pocketfft_8h.html#a7020984e0ca1d6e565629ca6e7c1a7e0',1,'pocketfft.h']]], - ['pocketfft_5fpartstep11_24',['POCKETFFT_PARTSTEP11',['../pocketfft_8h.html#a1793d0d00f2e13101eb5ad0719c40817',1,'pocketfft.h']]], - ['pocketfft_5fpartstep11a_25',['POCKETFFT_PARTSTEP11a',['../pocketfft_8h.html#ac35e1aa5ae84d655256b7a0afd9051c2',1,'pocketfft.h']]], - ['pocketfft_5fpartstep11a0_26',['POCKETFFT_PARTSTEP11a0',['../pocketfft_8h.html#ab2df44457945ab625fb38a777a46af1b',1,'pocketfft.h']]], - ['pocketfft_5fpartstep3a_27',['POCKETFFT_PARTSTEP3a',['../pocketfft_8h.html#ac112b26e5130636ac1d91c2f0af45e0b',1,'pocketfft.h']]], - ['pocketfft_5fpartstep3b_28',['POCKETFFT_PARTSTEP3b',['../pocketfft_8h.html#a41e646e5535a3a1c6e0d0e67122382f5',1,'pocketfft.h']]], - ['pocketfft_5fpartstep5a_29',['POCKETFFT_PARTSTEP5a',['../pocketfft_8h.html#a078bc2bd38ab0ffb15b981878c9de03c',1,'pocketfft.h']]], - ['pocketfft_5fpartstep5b_30',['POCKETFFT_PARTSTEP5b',['../pocketfft_8h.html#ab8a5da142555e059c5e9c618f75b46fa',1,'pocketfft.h']]], - ['pocketfft_5fpartstep7_31',['POCKETFFT_PARTSTEP7',['../pocketfft_8h.html#af7de1f82911a973d8446cf3f40ff3044',1,'pocketfft.h']]], - ['pocketfft_5fpartstep7a_32',['POCKETFFT_PARTSTEP7a',['../pocketfft_8h.html#a2b27f6e1f0ee131765186870517255c6',1,'pocketfft.h']]], - ['pocketfft_5fpartstep7a0_33',['POCKETFFT_PARTSTEP7a0',['../pocketfft_8h.html#a9c2fc2de74a031c38e9d8a21249ae1cd',1,'pocketfft.h']]], - ['pocketfft_5fprep11_34',['POCKETFFT_PREP11',['../pocketfft_8h.html#a536d2ea61479d4b074bf52ce09fdbc3a',1,'pocketfft.h']]], - ['pocketfft_5fprep3_35',['POCKETFFT_PREP3',['../pocketfft_8h.html#ae2fd9d433c417f0768fe1b58145b2e59',1,'pocketfft.h']]], - ['pocketfft_5fprep5_36',['POCKETFFT_PREP5',['../pocketfft_8h.html#a73077c26d2a82754db2a9c48bc0e11a6',1,'pocketfft.h']]], - ['pocketfft_5fprep7_37',['POCKETFFT_PREP7',['../pocketfft_8h.html#ae7c4d0cda5b3824f84eac54addabd6ec',1,'pocketfft.h']]], - ['pocketfft_5fr_38',['pocketfft_r',['../classpocketfft_1_1detail_1_1pocketfft__r.html',1,'pocketfft::detail::pocketfft_r< T0 >'],['../classpocketfft_1_1detail_1_1pocketfft__r.html#a60e9b3d1f9b20ec5b86d46b0398f6f7d',1,'pocketfft::detail::pocketfft_r::pocketfft_r()']]], - ['pocketfft_5frearrange_39',['POCKETFFT_REARRANGE',['../pocketfft_8h.html#acffdf2e1ab84f36a7a097e1b8b87a9f9',1,'pocketfft.h']]], - ['pocketfft_5frestrict_40',['POCKETFFT_RESTRICT',['../pocketfft_8h.html#abbe177c4872821b32d76d5ce08d6ce82',1,'pocketfft.h']]], - ['post_5fin_41',['post_in',['../struct_read_writer.html#ab555cec93b66eead607e6a03d9324e1c',1,'ReadWriter::post_in(float2 elem) const'],['../struct_read_writer.html#a6c47a25b2135393045fa5f95ada59d9d',1,'ReadWriter::post_in(float elem) const']]], - ['pow_42',['pow',['../namespacemetal.html#acd288d4552215bd10455584a214c57b8',1,'metal::pow()'],['../namespacemetal_1_1fast.html#ade2367eaec894bd2e14a1351c363e003',1,'metal::fast::pow()'],['../namespacemetal_1_1precise.html#a4cce64f1f20c1c6dfd29115bdb7c8d42',1,'metal::precise::pow()']]], - ['power_43',['Power',['../structmlx_1_1core_1_1detail_1_1_power.html',1,'mlx::core::detail::Power'],['../classmlx_1_1core_1_1_power.html',1,'mlx::core::Power'],['../struct_power.html',1,'Power'],['../classmlx_1_1core_1_1_power.html#a7bc6c64179b7a2aef56fe1dafb6459b2',1,'mlx::core::Power::Power()']]], - ['power_44',['power',['../group__ops.html#ga7972058715c26559dff9c9ae2a3ef76d',1,'mlx::core']]], - ['powr_45',['powr',['../namespacemetal.html#ae529e431f178bafedc18a889323c0bc2',1,'metal::powr()'],['../namespacemetal_1_1fast.html#a4293cbc94175b4dcc724fe4747eb5d5a',1,'metal::fast::powr()'],['../namespacemetal_1_1precise.html#ac9dbab0bd99b2b94e364aba5353bdcd7',1,'metal::precise::powr()']]], - ['pre_5fout_46',['pre_out',['../struct_read_writer.html#a94da8aa85fa2916eaa3eaeb11499234a',1,'ReadWriter::pre_out(float2 elem) const'],['../struct_read_writer.html#a185553204b07a407ef02c41dd78e8239',1,'ReadWriter::pre_out(float2 elem, int length) const']]], - ['prepare_5fslice_47',['prepare_slice',['../namespacemlx_1_1core.html#a70f45639df899de421fe0f22f90877f2',1,'mlx::core']]], - ['prev_48',['prev',['../backend_2metal_2allocator_8h.html#aadb9e075b376adbd9ff6ba23663113bd',1,'allocator.h']]], - ['primitive_49',['Primitive',['../classmlx_1_1core_1_1_primitive.html',1,'mlx::core']]], - ['primitive_50',['primitive',['../classmlx_1_1core_1_1array.html#a790548666511d8c6d9f92ee79d2ce14c',1,'mlx::core::array']]], - ['primitive_51',['Primitive',['../classmlx_1_1core_1_1_primitive.html#afc69f22ee1f6e8a9ecc2c3a8f43b8fdb',1,'mlx::core::Primitive::Primitive(Stream stream)'],['../classmlx_1_1core_1_1_primitive.html#a3349f745fae50ca7627f79a731a19e32',1,'mlx::core::Primitive::Primitive(const Primitive &other)=delete'],['../classmlx_1_1core_1_1_primitive.html#a342da891b9882bdee9a0e0c1ac826eda',1,'mlx::core::Primitive::Primitive(Primitive &&other)=delete']]], - ['primitive_5fid_52',['primitive_id',['../classmlx_1_1core_1_1array.html#af5ad83605d4eea81561246873bee1d7c',1,'mlx::core::array']]], - ['primitive_5fptr_53',['primitive_ptr',['../classmlx_1_1core_1_1array.html#a5119cd616ec3c05d65878944b8889469',1,'mlx::core::array']]], - ['primitives_2eh_54',['primitives.h',['../distributed_2primitives_8h.html',1,'(Global Namespace)'],['../primitives_8h.html',1,'(Global Namespace)']]], - ['print_55',['print',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a6814f9008a683c6911d5b8991ef770ab',1,'mlx::core::distributed::AllReduce::print()'],['../classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb',1,'mlx::core::Primitive::print()'],['../classmlx_1_1core_1_1_abs.html#a643d6db5116eed978e3208804a992107',1,'mlx::core::Abs::print()'],['../classmlx_1_1core_1_1_add.html#a8a96345aa63724f22b68bca7b861211d',1,'mlx::core::Add::print()'],['../classmlx_1_1core_1_1_add_m_m.html#a1262ac2c4c6e9ff6b6047bf7605e5cc9',1,'mlx::core::AddMM::print()'],['../classmlx_1_1core_1_1_arange.html#abd73d2b793da796dc7cf04c9f7d5c19e',1,'mlx::core::Arange::print()'],['../classmlx_1_1core_1_1_arc_cos.html#aa48d8bec4efbac569d809cf11648b739',1,'mlx::core::ArcCos::print()'],['../classmlx_1_1core_1_1_arc_cosh.html#a6a9a2ab0cc360d7e2f9676db17f8e630',1,'mlx::core::ArcCosh::print()'],['../classmlx_1_1core_1_1_arc_sin.html#a895a35c9dd22fdb06e7b971bfd6fde87',1,'mlx::core::ArcSin::print()'],['../classmlx_1_1core_1_1_arc_sinh.html#aa8b2934a8a0b2eedec8257bbb5726430',1,'mlx::core::ArcSinh::print()'],['../classmlx_1_1core_1_1_arc_tan.html#ab0309e4feca36f221b3d672dc92cac05',1,'mlx::core::ArcTan::print()'],['../classmlx_1_1core_1_1_arc_tan2.html#abdfef9f572d06df1251c28222756a361',1,'mlx::core::ArcTan2::print()'],['../classmlx_1_1core_1_1_arc_tanh.html#aa9549311240d7ba225b84e1df9ad8523',1,'mlx::core::ArcTanh::print()'],['../classmlx_1_1core_1_1_arg_partition.html#aa8678d94fa1571ea71a7bf790cdb8d63',1,'mlx::core::ArgPartition::print()'],['../classmlx_1_1core_1_1_arg_reduce.html#a153a6d8dba7301c4fcd0e429154ead8f',1,'mlx::core::ArgReduce::print()'],['../classmlx_1_1core_1_1_arg_sort.html#a0b59ce43e0982d634a01631728b419bd',1,'mlx::core::ArgSort::print()'],['../classmlx_1_1core_1_1_as_type.html#aa617e29147c14bd5d1fa8ad0bf65af0c',1,'mlx::core::AsType::print()'],['../classmlx_1_1core_1_1_as_strided.html#af2e21b77ea9e6c70bca45224967745bf',1,'mlx::core::AsStrided::print()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a69b28e239da7fdb89f0a9f9467dd797d',1,'mlx::core::BitwiseBinary::print()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#a37ecf6fa296d28efb7651a3c510fe159',1,'mlx::core::BlockMaskedMM::print()'],['../classmlx_1_1core_1_1_gather_m_m.html#ae7a6f4eecb15e95b21e6c87068ebd758',1,'mlx::core::GatherMM::print()'],['../classmlx_1_1core_1_1_broadcast.html#a6a610412861c6e472f930b6721b99a11',1,'mlx::core::Broadcast::print()'],['../classmlx_1_1core_1_1_ceil.html#a14a0048dd6496341cacaddada68276ee',1,'mlx::core::Ceil::print()'],['../classmlx_1_1core_1_1_compiled.html#a271521f92eef49c39799f38e26b64a9b',1,'mlx::core::Compiled::print()'],['../classmlx_1_1core_1_1_concatenate.html#a56f29b585a6d1d958954a68dcc893f33',1,'mlx::core::Concatenate::print()'],['../classmlx_1_1core_1_1_conjugate.html#a40281539bbd543ac8fd8e28650de17e4',1,'mlx::core::Conjugate::print()'],['../classmlx_1_1core_1_1_convolution.html#a844eab7c4cc99e775cfb561265ed14fd',1,'mlx::core::Convolution::print()'],['../classmlx_1_1core_1_1_copy.html#acfa1a02ab9cdab593e928faa515a8008',1,'mlx::core::Copy::print()'],['../classmlx_1_1core_1_1_cos.html#a81858457e4bea931a4bc6f6e38b0f696',1,'mlx::core::Cos::print()'],['../classmlx_1_1core_1_1_cosh.html#ac247faad68c1050cda9f72d7d6d040e2',1,'mlx::core::Cosh::print()'],['../classmlx_1_1core_1_1_custom_transforms.html#a2ddbacbc468271b11caee0ad97005298',1,'mlx::core::CustomTransforms::print()'],['../classmlx_1_1core_1_1_depends.html#aed575b0d927f4341f60442c70adeeb82',1,'mlx::core::Depends::print()'],['../classmlx_1_1core_1_1_divide.html#af3c15337ac15522cc34ed98b97895bb6',1,'mlx::core::Divide::print()'],['../classmlx_1_1core_1_1_div_mod.html#a7edbed50d07869d921e529157931b7a1',1,'mlx::core::DivMod::print()'],['../classmlx_1_1core_1_1_select.html#a678285f2c0b9dae85692399c3aa692a7',1,'mlx::core::Select::print()'],['../classmlx_1_1core_1_1_remainder.html#aeaecac5ea8e606d7ecd393d8019029e4',1,'mlx::core::Remainder::print()'],['../classmlx_1_1core_1_1_equal.html#a0787bf32f0b405a8b2ac809d2d990774',1,'mlx::core::Equal::print()'],['../classmlx_1_1core_1_1_erf.html#a186af7b783cf832c3b25eec3a09f5a0c',1,'mlx::core::Erf::print()'],['../classmlx_1_1core_1_1_erf_inv.html#a0acb31bd5780abf61877bd1a3e0fd4f9',1,'mlx::core::ErfInv::print()'],['../classmlx_1_1core_1_1_exp.html#ad87cc1b2ae595a613b03b0fdca63ae6a',1,'mlx::core::Exp::print()'],['../classmlx_1_1core_1_1_expm1.html#af1a99266fc50aa5948cdd298e2916ef1',1,'mlx::core::Expm1::print()'],['../classmlx_1_1core_1_1_f_f_t.html#a15a2a5f7647f5fb78611a251d3270edf',1,'mlx::core::FFT::print()'],['../classmlx_1_1core_1_1_floor.html#ac289e87c5fac15e2f491e2513be610f6',1,'mlx::core::Floor::print()'],['../classmlx_1_1core_1_1_full.html#a68e08303f4960ab373b84a3312edc013',1,'mlx::core::Full::print()'],['../classmlx_1_1core_1_1_gather.html#a9d57637a8a65008683c3847251bdcf91',1,'mlx::core::Gather::print()'],['../classmlx_1_1core_1_1_greater.html#aa2980e45cd2c79ebfb394012d3108a04',1,'mlx::core::Greater::print()'],['../classmlx_1_1core_1_1_greater_equal.html#ab98045c861d2d2ffb0398c2c1d671cef',1,'mlx::core::GreaterEqual::print()'],['../classmlx_1_1core_1_1_hadamard.html#a3df6e7e3b3b71bf50be5f1a05d0870b6',1,'mlx::core::Hadamard::print()'],['../classmlx_1_1core_1_1_less.html#ad67e6f66d7b75546fd98dbee6b631d78',1,'mlx::core::Less::print()'],['../classmlx_1_1core_1_1_less_equal.html#a409842d3862113c53cbbdf7467a06950',1,'mlx::core::LessEqual::print()'],['../classmlx_1_1core_1_1_load.html#a54e08a0ca41b7c9f1a76b00c889f0bfa',1,'mlx::core::Load::print()'],['../classmlx_1_1core_1_1_log.html#a7b946d98d4a228c6be9f606a3bd8a30d',1,'mlx::core::Log::print()'],['../classmlx_1_1core_1_1_log1p.html#a8a1569dde30440ce11ea466ccc69d2d4',1,'mlx::core::Log1p::print()'],['../classmlx_1_1core_1_1_logical_not.html#a001ff3eca46440f0d8a287e0b98a8a2c',1,'mlx::core::LogicalNot::print()'],['../classmlx_1_1core_1_1_logical_and.html#a9a5220eb56e1fd94fd879394ee5ad397',1,'mlx::core::LogicalAnd::print()'],['../classmlx_1_1core_1_1_logical_or.html#a6becc5fbfadde850de9857099dcd5003',1,'mlx::core::LogicalOr::print()'],['../classmlx_1_1core_1_1_log_add_exp.html#a702a2eff0bd1ae7b6fb829dd0b0b11b9',1,'mlx::core::LogAddExp::print()'],['../classmlx_1_1core_1_1_matmul.html#abb4a16a265a05d56a2f5d2e89d6f9dfd',1,'mlx::core::Matmul::print()'],['../classmlx_1_1core_1_1_maximum.html#a3b708a1d6b526719c62850294776f8ca',1,'mlx::core::Maximum::print()'],['../classmlx_1_1core_1_1_minimum.html#a137677bf32c626a768b732a7b8575512',1,'mlx::core::Minimum::print()'],['../classmlx_1_1core_1_1_multiply.html#aa4f1f7af68346ce80c2636df415c9909',1,'mlx::core::Multiply::print()'],['../classmlx_1_1core_1_1_negative.html#a0d5c30e267ff6468d64f1987f9f83f91',1,'mlx::core::Negative::print()'],['../classmlx_1_1core_1_1_not_equal.html#a12aa2f764880d29e627540610b63af09',1,'mlx::core::NotEqual::print()'],['../classmlx_1_1core_1_1_number_of_elements.html#aecde30826970938f3aa688979a668f52',1,'mlx::core::NumberOfElements::print()'],['../classmlx_1_1core_1_1_pad.html#af87754daaf51f6a6cf8bd4949ca1e70a',1,'mlx::core::Pad::print()'],['../classmlx_1_1core_1_1_partition.html#ab5c7aa4fed325475b33d4004649f0dc0',1,'mlx::core::Partition::print()'],['../classmlx_1_1core_1_1_power.html#a33e2d7ff078426fe66ea2370ceb5af60',1,'mlx::core::Power::print()'],['../classmlx_1_1core_1_1_quantized_matmul.html#aaef8c96d4d40b4fa08ced540d341a4db',1,'mlx::core::QuantizedMatmul::print()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a53c3fa7beb51ce2e1c2da28633406fe0',1,'mlx::core::GatherQMM::print()'],['../classmlx_1_1core_1_1_random_bits.html#a8a5593c34fd868d94b36a8ced1390271',1,'mlx::core::RandomBits::print()'],['../classmlx_1_1core_1_1_reshape.html#a0f2323d5d67ece0eb25ecff565b21862',1,'mlx::core::Reshape::print()'],['../classmlx_1_1core_1_1_reduce.html#a399be3a89553787a0a687706881f03cd',1,'mlx::core::Reduce::print()'],['../classmlx_1_1core_1_1_round.html#af0dfe8943109c936b35ab0082f566f72',1,'mlx::core::Round::print()'],['../classmlx_1_1core_1_1_scan.html#ad5b6308c79e9b985a49df35eadd15b22',1,'mlx::core::Scan::print()'],['../classmlx_1_1core_1_1_scatter.html#aa9d45cbfb27b814517f6016092b30efa',1,'mlx::core::Scatter::print()'],['../classmlx_1_1core_1_1_sigmoid.html#ad4cd19938e5159754aa7516f405580c2',1,'mlx::core::Sigmoid::print()'],['../classmlx_1_1core_1_1_sign.html#a2aa0720fe0a6d2408eb43c25d3d45b0a',1,'mlx::core::Sign::print()'],['../classmlx_1_1core_1_1_sin.html#a73b31005551015897f15c00e8b0222e4',1,'mlx::core::Sin::print()'],['../classmlx_1_1core_1_1_sinh.html#a5b4753d52e80799d4fea0b9172d25a77',1,'mlx::core::Sinh::print()'],['../classmlx_1_1core_1_1_slice.html#a50851148948d924b71817cfbd4401504',1,'mlx::core::Slice::print()'],['../classmlx_1_1core_1_1_slice_update.html#a751eefb9922c56479b4b0de2ad45439b',1,'mlx::core::SliceUpdate::print()'],['../classmlx_1_1core_1_1_softmax.html#aa783610ef6b82b92681e78fc99412d83',1,'mlx::core::Softmax::print()'],['../classmlx_1_1core_1_1_sort.html#ada81b9343f80958174eba708452927a2',1,'mlx::core::Sort::print()'],['../classmlx_1_1core_1_1_split.html#ad0c31fe5972643cc75fde10445fc47f2',1,'mlx::core::Split::print()'],['../classmlx_1_1core_1_1_square.html#a75feb558cd1d615e96309dd7d1e81384',1,'mlx::core::Square::print()'],['../classmlx_1_1core_1_1_sqrt.html#a8681c8de2f50049848d320c47f713c0f',1,'mlx::core::Sqrt::print()'],['../classmlx_1_1core_1_1_stop_gradient.html#acc7a7d51cbf014dae8ba3d20bedcad50',1,'mlx::core::StopGradient::print()'],['../classmlx_1_1core_1_1_subtract.html#a3834fd305435fb5a8e512566832e372b',1,'mlx::core::Subtract::print()'],['../classmlx_1_1core_1_1_tan.html#aeea7c284d595a2a928d5f28a55e9be7f',1,'mlx::core::Tan::print()'],['../classmlx_1_1core_1_1_tanh.html#a73f4976d641daf697cc1a231d773d78e',1,'mlx::core::Tanh::print()'],['../classmlx_1_1core_1_1_uniform.html#a01510998719b19df137451cc37850b8d',1,'mlx::core::Uniform::print()'],['../classmlx_1_1core_1_1_view.html#a513b034919a8a494add3155f910a360c',1,'mlx::core::View::print()'],['../classmlx_1_1core_1_1_transpose.html#ac6c87b850f4e5560aa13a5e1e9f9fe04',1,'mlx::core::Transpose::print()'],['../classmlx_1_1core_1_1_q_r_f.html#aba3526722b3a52b41fa8103b909f7f3b',1,'mlx::core::QRF::print()'],['../classmlx_1_1core_1_1_s_v_d.html#ab87a4e7ef857936bea66ba9e24662f53',1,'mlx::core::SVD::print()'],['../classmlx_1_1core_1_1_inverse.html#a543f18f1ce5c06c897141091e95a66e9',1,'mlx::core::Inverse::print()'],['../classmlx_1_1core_1_1_cholesky.html#a0a8b51ff7f5369d22bdc58910d4aaf84',1,'mlx::core::Cholesky::print()'],['../structmlx_1_1core_1_1_print_formatter.html#a79fad4cf5844db8c92b066539146281b',1,'mlx::core::PrintFormatter::print(std::ostream &os, bool val)'],['../structmlx_1_1core_1_1_print_formatter.html#a8da448a8adae671b26359341ea514316',1,'mlx::core::PrintFormatter::print(std::ostream &os, int16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#a9d750c134a6fbfa8251c5b1d01d73287',1,'mlx::core::PrintFormatter::print(std::ostream &os, uint16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#adbbb9cbff767f9db73c659a0c07ba633',1,'mlx::core::PrintFormatter::print(std::ostream &os, int32_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#a520adb07fafd911b22bc24b295e4f6cf',1,'mlx::core::PrintFormatter::print(std::ostream &os, uint32_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ab0c702f1ae201e17cd328c9855cf522e',1,'mlx::core::PrintFormatter::print(std::ostream &os, int64_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ac59a5137ddd8b32aae057bb9826ee80d',1,'mlx::core::PrintFormatter::print(std::ostream &os, uint64_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ac4b7895d1168cfc1a3d1186d8a414d2f',1,'mlx::core::PrintFormatter::print(std::ostream &os, float16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ae21005f92bc641f2d657096f5d176a6d',1,'mlx::core::PrintFormatter::print(std::ostream &os, bfloat16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#a57af5c32561b95d6ac2a3a1dc4f5d43e',1,'mlx::core::PrintFormatter::print(std::ostream &os, float val)'],['../structmlx_1_1core_1_1_print_formatter.html#a9e1dc67c9afb0a09966336504790823d',1,'mlx::core::PrintFormatter::print(std::ostream &os, complex64_t val)']]], - ['print_5fcomplex_5fconstant_56',['print_complex_constant',['../namespacemlx_1_1core.html#a2b78f270942c6eb185e8045f1c5b4286',1,'mlx::core']]], - ['print_5fconstant_57',['print_constant',['../namespacemlx_1_1core.html#a7d11b000895d44d183260634f4192d92',1,'mlx::core']]], - ['print_5ffloat_5fconstant_58',['print_float_constant',['../namespacemlx_1_1core.html#a93a8ac59c644b801ec8881a58368caf2',1,'mlx::core']]], - ['print_5fgraph_59',['print_graph',['../namespacemlx_1_1core.html#a8ac23fb7f4d4c52e592d6296e63b80d4',1,'mlx::core::print_graph(std::ostream &os, const std::vector< array > &outputs)'],['../namespacemlx_1_1core.html#a17505ed8064dcaddc011cb3d52da2523',1,'mlx::core::print_graph(std::ostream &os, Arrays &&... outputs)']]], - ['print_5fint_5fconstant_60',['print_int_constant',['../namespacemlx_1_1core.html#a948ce3dfc4520d3aa98b33e42f617c64',1,'mlx::core']]], - ['printformatter_61',['PrintFormatter',['../structmlx_1_1core_1_1_print_formatter.html',1,'mlx::core']]], - ['prod_62',['Prod',['../struct_prod.html',1,'']]], - ['prod_63',['prod',['../structpocketfft_1_1detail_1_1util.html#a33acae07b20b28fe4658bc338fce1b89',1,'pocketfft::detail::util']]], - ['prod_64',['Prod',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924acdd1ec09a2fd99c81c561b5c63a4b482',1,'mlx::core::distributed::AllReduce::Prod'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9ac5b077bfec55fe2b141b197dfa00ecf7',1,'mlx::core::Reduce::Prod'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1a33edce755ed1a74632c302ad93a14789',1,'mlx::core::Scan::Prod'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca5e43e8ffd1f5ba49826e2e7ac3450466',1,'mlx::core::Scatter::Prod']]], - ['prod_65',['prod',['../group__ops.html#ga4a09b7241d564d92548bc2773eb1d544',1,'mlx::core::prod(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga61832191f3c42ea549cf04953edc3602',1,'mlx::core::prod(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga2b3935108f641e20a70dbf63f540d970',1,'mlx::core::prod(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga8a10a10b81c69996d0aca8ba401f8ff0',1,'mlx::core::prod(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['promote_5ftypes_66',['promote_types',['../namespacemlx_1_1core.html#a505922e54acd43114308e3bdbda0e497',1,'mlx::core']]], - ['ptr_67',['ptr',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#a990643feac06961c5599aac098c17b94',1,'mlx::core::allocator::Buffer::ptr() const'],['../classmlx_1_1core_1_1allocator_1_1_buffer.html#acb15b2f057568828ea09635ed968b62a',1,'mlx::core::allocator::Buffer::ptr()']]], - ['push_68',['push',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#ae8ebd6bc1b4d18e75bd046005e7dde7b',1,'pocketfft::detail::threading::concurrent_queue']]] -]; diff --git a/docs/build/html/search/all_11.js b/docs/build/html/search/all_11.js deleted file mode 100644 index e58249e9..00000000 --- a/docs/build/html/search/all_11.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['q_0',['q',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#adf608e22d0c0397217472408aab52631',1,'mlx::core::scheduler::StreamThread']]], - ['qdot_1',['qdot',['../quantized_8h.html#ab364d58ab652e3ad87a8f80910556071',1,'quantized.h']]], - ['qdot_5fsafe_2',['qdot_safe',['../quantized_8h.html#a07b26d2d0b0d65dfe925c452c453fa42',1,'quantized.h']]], - ['qmm_5fn_3',['qmm_n',['../quantized_8h.html#ab5c4cfe531d7a0e1c19353060e3d3a6c',1,'quantized.h']]], - ['qmm_5fn_5fimpl_4',['qmm_n_impl',['../quantized_8h.html#a5f7b71eef2e328af3225d7c777ffb339',1,'quantized.h']]], - ['qmm_5ft_5',['qmm_t',['../quantized_8h.html#af9b25269ab95632e343631eeef79dc8d',1,'quantized.h']]], - ['qmm_5ft_5fimpl_6',['qmm_t_impl',['../quantized_8h.html#ac7b6accc41b026ef8efc312987aa9efe',1,'quantized.h']]], - ['qmv_7',['qmv',['../quantized_8h.html#ae024e11c3e38dda71fef772ff0a82fe2',1,'quantized.h']]], - ['qmv_5ffast_8',['qmv_fast',['../quantized_8h.html#ad6d0aa9b080358581844d6583aa2f4ea',1,'quantized.h']]], - ['qmv_5ffast_5fimpl_9',['qmv_fast_impl',['../quantized_8h.html#aba7687e6f8f1d29c0a1b2a3db150bd81',1,'quantized.h']]], - ['qmv_5fimpl_10',['qmv_impl',['../quantized_8h.html#a8e13c7d895624f738d2a6d9893b687fd',1,'quantized.h']]], - ['qouter_11',['qouter',['../quantized_8h.html#ae756f6817b584c60f5dcdd1d9c6b4f58',1,'quantized.h']]], - ['qr_12',['qr',['../namespacemlx_1_1core_1_1linalg.html#ae6d97829459353fe3b31c8a0867c0ca2',1,'mlx::core::linalg']]], - ['qrf_13',['QRF',['../classmlx_1_1core_1_1_q_r_f.html',1,'mlx::core::QRF'],['../classmlx_1_1core_1_1_q_r_f.html#a44ed2924dc574c4aeb79b1188b5c3983',1,'mlx::core::QRF::QRF()']]], - ['quantize_14',['quantize',['../group__ops.html#gab43cc28690da7cdd43b43065adbd31da',1,'mlx::core']]], - ['quantized_15',['quantized',['../namespacemlx_1_1core_1_1metal.html#a949f029424218ab5c5588563d2e076f5',1,'mlx::core::metal']]], - ['quantized_2eh_16',['quantized.h',['../quantized_8h.html',1,'']]], - ['quantized_5fmatmul_17',['quantized_matmul',['../group__ops.html#ga6381c7062b232ac21f3fdc3136aaf86e',1,'mlx::core']]], - ['quantizedblockloader_18',['QuantizedBlockLoader',['../struct_quantized_block_loader.html',1,'QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >'],['../struct_quantized_block_loader.html#af59b054750a65e7e79c1cd05c4acac93',1,'QuantizedBlockLoader::QuantizedBlockLoader()']]], - ['quantizedmatmul_19',['QuantizedMatmul',['../classmlx_1_1core_1_1_quantized_matmul.html',1,'mlx::core::QuantizedMatmul'],['../classmlx_1_1core_1_1_quantized_matmul.html#a5bd164d038d9dc21919f7e0bfdeaa25c',1,'mlx::core::QuantizedMatmul::QuantizedMatmul()']]], - ['query_5fsequence_5flength_20',['QUERY_SEQUENCE_LENGTH',['../struct_m_l_x_scaled_dot_product_attention_params.html#a46cc2da6a069d822f36983ee18467e5c',1,'MLXScaledDotProductAttentionParams']]], - ['quiet_5fnan_21',['quiet_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['qvm_22',['qvm',['../quantized_8h.html#a2cce78e6692cfcbab8f6aa89afa61580',1,'quantized.h']]], - ['qvm_5fimpl_23',['qvm_impl',['../quantized_8h.html#a9d466e3e3af0d75cfc4eddcf46cb13e4',1,'quantized.h']]] -]; diff --git a/docs/build/html/search/all_12.js b/docs/build/html/search/all_12.js deleted file mode 100644 index 936f2530..00000000 --- a/docs/build/html/search/all_12.js +++ /dev/null @@ -1,127 +0,0 @@ -var searchData= -[ - ['r_0',['r',['../structpocketfft_1_1detail_1_1cmplx.html#afc51cdf222d77690953a8cb8ce3ee692',1,'pocketfft::detail::cmplx']]], - ['r2c_1',['r2c',['../namespacepocketfft_1_1detail.html#a4e46762466d399e35b79c324cfe21616',1,'pocketfft::detail::r2c(const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)'],['../namespacepocketfft_1_1detail.html#a454179497c44714d4b7425f116468c17',1,'pocketfft::detail::r2c(const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)']]], - ['r2h_2',['r2h',['../structpocketfft_1_1detail_1_1_exec_r2_r.html#a925b398c8e1868614ce9eaf381d02b7e',1,'pocketfft::detail::ExecR2R']]], - ['r2r_5ffftpack_3',['r2r_fftpack',['../namespacepocketfft_1_1detail.html#a1ccca4cbbc6150d65620e2f9cdff62ac',1,'pocketfft::detail']]], - ['r2r_5fgenuine_5fhartley_4',['r2r_genuine_hartley',['../namespacepocketfft_1_1detail.html#a072a67f2c4b3b3ebd030604f3383e1ed',1,'pocketfft::detail']]], - ['r2r_5fseparable_5fhartley_5',['r2r_separable_hartley',['../namespacepocketfft_1_1detail.html#a40b56ae882eea17e6960618415f8eb42',1,'pocketfft::detail']]], - ['rader_5f11_5fsteps_5f_6',['rader_11_steps_',['../backend_2metal_2kernels_2fft_8h.html#ae1538cb224d84bfedf6655f8ea05aac8',1,'fft.h']]], - ['rader_5f13_5fsteps_5f_7',['rader_13_steps_',['../backend_2metal_2kernels_2fft_8h.html#a7fe88d81170dc4e2e8993c58b887dce6',1,'fft.h']]], - ['rader_5f2_5fsteps_5f_8',['rader_2_steps_',['../backend_2metal_2kernels_2fft_8h.html#a6faebd7ba948a4b572b7933f6d3b8646',1,'fft.h']]], - ['rader_5f3_5fsteps_5f_9',['rader_3_steps_',['../backend_2metal_2kernels_2fft_8h.html#aab5dd8c9141fbee09048ba6837ab8aae',1,'fft.h']]], - ['rader_5f4_5fsteps_5f_10',['rader_4_steps_',['../backend_2metal_2kernels_2fft_8h.html#add993232d88c3203960852a6de6a03c3',1,'fft.h']]], - ['rader_5f5_5fsteps_5f_11',['rader_5_steps_',['../backend_2metal_2kernels_2fft_8h.html#ad64f06afe2ff8ada7449556e1c41b39a',1,'fft.h']]], - ['rader_5f6_5fsteps_5f_12',['rader_6_steps_',['../backend_2metal_2kernels_2fft_8h.html#a97d2f30278a31635497d7c6c3443206a',1,'fft.h']]], - ['rader_5f7_5fsteps_5f_13',['rader_7_steps_',['../backend_2metal_2kernels_2fft_8h.html#a9946b98d3350cb1b3c08ad4f7b67f880',1,'fft.h']]], - ['rader_5f8_5fsteps_5f_14',['rader_8_steps_',['../backend_2metal_2kernels_2fft_8h.html#adb9b3944eb792a4f518b5e151a3e1591',1,'fft.h']]], - ['rader_5ffft_15',['rader_fft',['../backend_2metal_2kernels_2fft_8h.html#ad123452303f6415904f3592f660769b8',1,'fft.h']]], - ['rader_5fm_5f_16',['rader_m_',['../backend_2metal_2kernels_2fft_8h.html#a5d03e78eedb9a084645f8f63185bcf2f',1,'fft.h']]], - ['radians_17',['radians',['../group__ops.html#ga07aa8059adba5b9a8818027b8aafd31e',1,'mlx::core']]], - ['radix_18',['radix',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aaefa8c2cadd11ac7e22f7b2c5edbd1cd',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['radix_2eh_19',['radix.h',['../radix_8h.html',1,'']]], - ['radix10_20',['radix10',['../radix_8h.html#a27054992e148bfcd9f7a69c96d75d926',1,'radix.h']]], - ['radix11_21',['radix11',['../radix_8h.html#a34f7dcefd29f8a7f6bddf9a17609a8a7',1,'radix.h']]], - ['radix12_22',['radix12',['../radix_8h.html#a3c61aa04a4b38575722d864cc9ffd0b7',1,'radix.h']]], - ['radix13_23',['radix13',['../radix_8h.html#a833b7b31facbd62f6971bb108c54d1db',1,'radix.h']]], - ['radix2_24',['radix2',['../radix_8h.html#a745e50244f1470bba233d8b6b993729c',1,'radix.h']]], - ['radix3_25',['radix3',['../radix_8h.html#a497b31cfa28418e1c2fad53d09f7bc0b',1,'radix.h']]], - ['radix4_26',['radix4',['../radix_8h.html#a12cb26bd3ad635d16a195ccea750256d',1,'radix.h']]], - ['radix5_27',['radix5',['../radix_8h.html#a026e6779e6d2ecdef39ff4aad186091e',1,'radix.h']]], - ['radix6_28',['radix6',['../radix_8h.html#afaaa5de58a97f0a5e6a84fc0d598a884',1,'radix.h']]], - ['radix7_29',['radix7',['../radix_8h.html#a6d37e483d806c550deefabf56caf4ec8',1,'radix.h']]], - ['radix8_30',['radix8',['../radix_8h.html#a6b306e1afe1c5b6af4cd80aa02adb138',1,'radix.h']]], - ['radix_5f11_5fsteps_5f_31',['radix_11_steps_',['../backend_2metal_2kernels_2fft_8h.html#af17a5682878a88283d995f2ca37681e4',1,'fft.h']]], - ['radix_5f13_5fsteps_5f_32',['radix_13_steps_',['../backend_2metal_2kernels_2fft_8h.html#a40c698855591f5d73b0d9258049571a2',1,'fft.h']]], - ['radix_5f2_5fsteps_5f_33',['radix_2_steps_',['../backend_2metal_2kernels_2fft_8h.html#ae76b69e0b030b8cf1ee7ca9011f3e504',1,'fft.h']]], - ['radix_5f3_5fsteps_5f_34',['radix_3_steps_',['../backend_2metal_2kernels_2fft_8h.html#a7b23fe1ca5b7f650cc3e8b03efc55434',1,'fft.h']]], - ['radix_5f4_5fsteps_5f_35',['radix_4_steps_',['../backend_2metal_2kernels_2fft_8h.html#ad28408cc4ff0a4f820afd1aa18ca9646',1,'fft.h']]], - ['radix_5f5_5fsteps_5f_36',['radix_5_steps_',['../backend_2metal_2kernels_2fft_8h.html#a7cea841e54e678c583aeb369ea7bf573',1,'fft.h']]], - ['radix_5f6_5fsteps_5f_37',['radix_6_steps_',['../backend_2metal_2kernels_2fft_8h.html#a92d77e600661bb6f4a7779b6529733b7',1,'fft.h']]], - ['radix_5f7_5fsteps_5f_38',['radix_7_steps_',['../backend_2metal_2kernels_2fft_8h.html#a02e428463b66a6e0f059bf8fc4f3a073',1,'fft.h']]], - ['radix_5f8_5fsteps_5f_39',['radix_8_steps_',['../backend_2metal_2kernels_2fft_8h.html#aadbf4b8812c1489e78ea7d1184a0fdd9',1,'fft.h']]], - ['radix_5fbutterfly_40',['radix_butterfly',['../backend_2metal_2kernels_2fft_8h.html#a278d980ed397e6841ce0af44b9aa4396',1,'fft.h']]], - ['radix_5ffunc_41',['radix_func',['../metal_2kernels_2hadamard_8h.html#a590e5366adc78bab4fe44e37885d413f',1,'hadamard.h']]], - ['radix_5fn_5fsteps_42',['radix_n_steps',['../backend_2metal_2kernels_2fft_8h.html#aba8d32e0911499671df93678f39da08b',1,'fft.h']]], - ['radix_5fstep_43',['RADIX_STEP',['../backend_2metal_2kernels_2fft_8h.html#a794032d3a9acff0e31c77c69d0007f10',1,'fft.h']]], - ['radixfunc_44',['RadixFunc',['../backend_2metal_2kernels_2fft_8h.html#a6ba62eabfd5428644aabf89ddaa0128d',1,'fft.h']]], - ['randint_45',['randint',['../namespacemlx_1_1core_1_1random.html#a7289d3791aa4e8bfe28fafef4fb40e3b',1,'mlx::core::random::randint(const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#afe20b1c6188f4c8a83203e60b70b8946',1,'mlx::core::random::randint(T low, U high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['random_2eh_46',['random.h',['../random_8h.html',1,'']]], - ['randombits_47',['RandomBits',['../classmlx_1_1core_1_1_random_bits.html',1,'mlx::core::RandomBits'],['../classmlx_1_1core_1_1_random_bits.html#a7dd5ed03f2a4ab45d1d5e8e2b587de6b',1,'mlx::core::RandomBits::RandomBits()']]], - ['rank_48',['rank',['../structmlx_1_1core_1_1distributed_1_1_group.html#ad4a5cdab8e2209ad4825f0c63a9cbec7',1,'mlx::core::distributed::Group']]], - ['raw_5fevent_49',['raw_event',['../classmlx_1_1core_1_1_event.html#af408d30df17c4771e9e2aa550cb6e921',1,'mlx::core::Event']]], - ['raw_5fgroup_50',['raw_group',['../structmlx_1_1core_1_1distributed_1_1_group.html#a3285b94851cf145a2a472f60b7f7ca36',1,'mlx::core::distributed::Group']]], - ['raw_5fptr_51',['raw_ptr',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#a2dfe63e0b4bffeb965cdc50ad4228dbc',1,'mlx::core::allocator::Buffer']]], - ['read_52',['read',['../classmlx_1_1core_1_1io_1_1_reader.html#ad8d74e2c62b579511089faa4cc6f50a1',1,'mlx::core::io::Reader::read(char *data, size_t n)=0'],['../classmlx_1_1core_1_1io_1_1_reader.html#a3e82cc31bd2a8594f19dc9858dca3efc',1,'mlx::core::io::Reader::read(char *data, size_t n, size_t offset)=0'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a6691826fc8d28f83792bfa2f92660a3b',1,'mlx::core::io::ParallelFileReader::read(char *data, size_t n) override'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a2b83b4576f1942db869171cccbf607df',1,'mlx::core::io::ParallelFileReader::read(char *data, size_t n, size_t offset) override']]], - ['read_5fih_53',['read_ih',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a82dd8230e1f37500f1a562177c3ad692',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::read_ih'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a6623e33d946b41d01c69ec793706d789',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::read_ih'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a35a010c3819df6667339d37a5e8f5b43',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::read_ih']]], - ['read_5fiw_54',['read_iw',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a17550360cae0a942a9552d7a67827512',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::read_iw'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#aa2a1a870ff51889975f6ffb2b8caa31c',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::read_iw'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a53a683adf280e4806363020754525261',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::read_iw']]], - ['read_5fn_55',['read_n',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#aeb67767e2d60d5ff0279a55553f3184e',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::read_n'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a5afa232b7c84b5025247ac4f83eb9ca9',1,'mlx::steel::Conv2DWeightBlockLoader::read_n'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#ae363abc696400f4e334314576ea31421',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::read_n'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#aa0af8ce417077695e9c51f1568dbc6b7',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::read_n'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#afe5caaf38b574d3380533856c493dd92',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::read_n']]], - ['reader_56',['Reader',['../classmlx_1_1core_1_1io_1_1_reader.html',1,'mlx::core::io']]], - ['readvector_57',['ReadVector',['../structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html',1,'mlx::steel::BlockLoader']]], - ['readwrite_2eh_58',['readwrite.h',['../readwrite_8h.html',1,'']]], - ['readwriter_59',['ReadWriter',['../struct_read_writer.html',1,'ReadWriter< in_T, out_T, step, four_step_real >'],['../struct_read_writer.html#a1aa07e41d7ac286ad79bd26a072dfa0c',1,'ReadWriter::ReadWriter()']]], - ['real_60',['real',['../structcomplex64__t.html#abbd4a0092eca9f112c1c5ae1a133a27e',1,'complex64_t']]], - ['reciprocal_61',['reciprocal',['../group__ops.html#ga4d29556bb93e2f66916116cf1f062b36',1,'mlx::core']]], - ['recv_62',['Recv',['../classmlx_1_1core_1_1distributed_1_1_recv.html',1,'mlx::core::distributed::Recv'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a511dd4e0259da18a181a25579d9b55db',1,'mlx::core::distributed::Recv::Recv()']]], - ['recv_63',['recv',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#a003de04deb00ecbb19179b3f557df548',1,'mlx::core::distributed::detail::recv()'],['../namespacemlx_1_1core_1_1distributed.html#a10f9d39c02e6e5db600912c03de8b393',1,'mlx::core::distributed::recv(std::vector< int > shape, Dtype dtype, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})']]], - ['recv_5flike_64',['recv_like',['../namespacemlx_1_1core_1_1distributed.html#a2822b78bce2c679e6ff940b2fca944f0',1,'mlx::core::distributed']]], - ['reduce_65',['Reduce',['../classmlx_1_1core_1_1_reduce.html',1,'mlx::core::Reduce'],['../classmlx_1_1core_1_1_reduce.html#a055368c1d036fb953a23ef230e33dcbf',1,'mlx::core::Reduce::Reduce()']]], - ['reduce_66',['reduce',['../namespacemlx_1_1core_1_1metal.html#abb997ccbed4c9a9ccd975b1574755fca',1,'mlx::core::metal']]], - ['reduce_2eh_67',['reduce.h',['../common_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2reduce_8h.html',1,'(Global Namespace)']]], - ['reduce_5fall_2eh_68',['reduce_all.h',['../reduce__all_8h.html',1,'']]], - ['reduce_5fcol_2eh_69',['reduce_col.h',['../reduce__col_8h.html',1,'']]], - ['reduce_5finit_2eh_70',['reduce_init.h',['../reduce__init_8h.html',1,'']]], - ['reduce_5fn_5freads_71',['REDUCE_N_READS',['../defines_8h.html#a2ad505864a2ab786147766900bc18c21',1,'defines.h']]], - ['reduce_5fn_5fwrites_72',['REDUCE_N_WRITES',['../defines_8h.html#a68c33274e15a2f163f7631a36280d82f',1,'defines.h']]], - ['reduce_5frow_2eh_73',['reduce_row.h',['../reduce__row_8h.html',1,'']]], - ['reduce_5futils_74',['reduce_utils',['../namespacemlx_1_1core_1_1metal.html#a2ec39572806310cf528aea06530e8af8',1,'mlx::core::metal']]], - ['reduce_5futils_2eh_75',['reduce_utils.h',['../reduce__utils_8h.html',1,'']]], - ['reducetype_76',['ReduceType',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924',1,'mlx::core::distributed::AllReduce::ReduceType'],['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3',1,'mlx::core::ArgReduce::ReduceType'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9',1,'mlx::core::Reduce::ReduceType'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1',1,'mlx::core::Scan::ReduceType'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613c',1,'mlx::core::Scatter::ReduceType']]], - ['reduction_5fop_77',['reduction_op',['../namespacemlx_1_1core.html#aa08ffc1e8f2c58afb2d463496f827ef0',1,'mlx::core::reduction_op(const array &x, array &out, const std::vector< int > &axes, U init, OpS ops, OpC opc, Op op)'],['../namespacemlx_1_1core.html#a064d61b6ddc9e5d1e261a7e33de71083',1,'mlx::core::reduction_op(const array &x, array &out, const std::vector< int > &axes, U init, Op op)']]], - ['reductionoptype_78',['ReductionOpType',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65',1,'mlx::core']]], - ['reductionplan_79',['ReductionPlan',['../structmlx_1_1core_1_1_reduction_plan.html',1,'mlx::core::ReductionPlan'],['../structmlx_1_1core_1_1_reduction_plan.html#a3df6acc08ef92647aab19d68b0961610',1,'mlx::core::ReductionPlan::ReductionPlan(ReductionOpType type_, std::vector< int > shape_, std::vector< size_t > strides_)'],['../structmlx_1_1core_1_1_reduction_plan.html#aec7496f3740a0b0d51aaa606f6fd68f4',1,'mlx::core::ReductionPlan::ReductionPlan(ReductionOpType type_)']]], - ['reference_80',['reference',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a44e2e1f29191c20ec4390de4fa0bd59f',1,'mlx::core::array::ArrayIterator']]], - ['register_5flibrary_81',['register_library',['../classmlx_1_1core_1_1metal_1_1_device.html#a45945f2efcd242d915ffa2171e92bf9d',1,'mlx::core::metal::Device::register_library(const std::string &lib_name, const std::string &lib_path)'],['../classmlx_1_1core_1_1metal_1_1_device.html#a99ff72689b7beb65ad4541391b0eeabf',1,'mlx::core::metal::Device::register_library(const std::string &lib_name)']]], - ['remainder_82',['Remainder',['../structmlx_1_1core_1_1detail_1_1_remainder.html',1,'mlx::core::detail::Remainder'],['../classmlx_1_1core_1_1_remainder.html',1,'mlx::core::Remainder'],['../struct_remainder.html',1,'Remainder'],['../classmlx_1_1core_1_1_remainder.html#a4f3eada4a21898af4a77d1d27ce14641',1,'mlx::core::Remainder::Remainder()']]], - ['remainder_83',['remainder',['../group__ops.html#ga99f5c904f724156a814d7817188351d2',1,'mlx::core']]], - ['remaining_84',['remaining',['../classpocketfft_1_1detail_1_1multi__iter.html#a034d12f842df90e6471dffd3fa6ba4bd',1,'pocketfft::detail::multi_iter::remaining()'],['../classpocketfft_1_1detail_1_1simple__iter.html#a9267d37f51a9a5aecc69293c7ed1b1f6',1,'pocketfft::detail::simple_iter::remaining()'],['../classpocketfft_1_1detail_1_1rev__iter.html#a143637135c441a4b9a2959c2370d8c63',1,'pocketfft::detail::rev_iter::remaining()']]], - ['repeat_85',['repeat',['../group__ops.html#gab49e3a687e826554ed1574186e8ae974',1,'mlx::core::repeat(const array &arr, int repeats, int axis, StreamOrDevice s={})'],['../group__ops.html#ga4f75f5d5db999f02f43ecbc6dccf3ba6',1,'mlx::core::repeat(const array &arr, int repeats, StreamOrDevice s={})']]], - ['reset_5fpeak_5fmemory_86',['reset_peak_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a26b9c8ac7ed56c3bb7ddc194009ec5a6',1,'mlx::core::metal::MetalAllocator::reset_peak_memory()'],['../namespacemlx_1_1core_1_1metal.html#adec8bb375da6c9dd5ff625a3a8434122',1,'mlx::core::metal::reset_peak_memory()']]], - ['reshape_87',['Reshape',['../classmlx_1_1core_1_1_reshape.html',1,'mlx::core::Reshape'],['../classmlx_1_1core_1_1_reshape.html#aa7c5a6e18d0615ad36102de01929eb26',1,'mlx::core::Reshape::Reshape()']]], - ['reshape_88',['reshape',['../group__ops.html#ga7b0e3d46a39d99b1628b422049790082',1,'mlx::core']]], - ['resize_89',['resize',['../classpocketfft_1_1detail_1_1arr.html#a8d73baaefa02dff8714e4398c83917e0',1,'pocketfft::detail::arr']]], - ['restart_90',['restart',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a51d252df8d0cd060f15be8ba2bfe3288',1,'pocketfft::detail::threading::thread_pool']]], - ['result_5ftype_91',['result_type',['../namespacemlx_1_1core.html#a8b984eef832f757e28cd262d64a49ae7',1,'mlx::core::result_type(const array &a, const array &b)'],['../namespacemlx_1_1core.html#ac457c232f956ba802acb69c5a621633d',1,'mlx::core::result_type(const array &a, const array &b, const array &c)'],['../namespacemlx_1_1core.html#aafaf24a28297428caf6d0c36c623489e',1,'mlx::core::result_type(const std::vector< array > &arrays)']]], - ['results_92',['results',['../structmlx_1_1steel_1_1_block_m_m_a.html#a6dfb5ff1f174951ad7c0630ff190c95a',1,'mlx::steel::BlockMMA']]], - ['retain_5fgraph_93',['retain_graph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html#a12ead93cb70ebab865c5e9ce7718f814',1,'mlx::core::detail::RetainGraph']]], - ['retaingraph_94',['RetainGraph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html',1,'mlx::core::detail::RetainGraph'],['../structmlx_1_1core_1_1detail_1_1_retain_graph.html#a7fac0244c14cc9e8f580bc1298ff68da',1,'mlx::core::detail::RetainGraph::RetainGraph()']]], - ['rev_5fiter_95',['rev_iter',['../classpocketfft_1_1detail_1_1rev__iter.html',1,'pocketfft::detail::rev_iter'],['../classpocketfft_1_1detail_1_1rev__iter.html#af7b8c2f1534d3038ba2a3c6b9919e134',1,'pocketfft::detail::rev_iter::rev_iter(const arr_info &arr_, const shape_t &axes)']]], - ['rev_5fofs_96',['rev_ofs',['../classpocketfft_1_1detail_1_1rev__iter.html#a7f112afa76cb7a4c29cff217a6f5f5a9',1,'pocketfft::detail::rev_iter']]], - ['rfft_97',['rfft',['../namespacemlx_1_1core_1_1fft.html#a9cb0edfb831b1ed607a8124d38540c13',1,'mlx::core::fft::rfft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a464016cbc948bb3af17d43ce39cf54bd',1,'mlx::core::fft::rfft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['rfft2_98',['rfft2',['../namespacemlx_1_1core_1_1fft.html#af63a8d42005954aa5cba69823e9c9de7',1,'mlx::core::fft::rfft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a59ca0c3c455e4ff1fed3dbd2327c55f0',1,'mlx::core::fft::rfft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['rfftn_99',['rfftn',['../namespacemlx_1_1core_1_1fft.html#a2e4287e110dfb23aaa7f4d65eb72465a',1,'mlx::core::fft::rfftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#ab502e092ba4bb571ecc421a25e4cb968',1,'mlx::core::fft::rfftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a53d44fd9b6c7645f9303c24099755bf2',1,'mlx::core::fft::rfftn(const array &a, StreamOrDevice s={})']]], - ['rfftp_100',['rfftp',['../classpocketfft_1_1detail_1_1rfftp.html',1,'pocketfft::detail::rfftp< T0 >'],['../classpocketfft_1_1detail_1_1rfftp.html#a0c590f917b8e8afa3ff53ccff52e68c5',1,'pocketfft::detail::rfftp::rfftp()']]], - ['right_5fshift_101',['right_shift',['../group__ops.html#gafa376ad57d38ba87378f0272dc379b23',1,'mlx::core']]], - ['rightshift_102',['RightShift',['../structmlx_1_1core_1_1detail_1_1_right_shift.html',1,'mlx::core::detail::RightShift'],['../struct_right_shift.html',1,'RightShift'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23da011e7b275a1f0edbd9345cfcf6501503',1,'mlx::core::BitwiseBinary::RightShift']]], - ['rint_103',['rint',['../namespacemetal.html#a29ab6060527120eee745aec0daa06e01',1,'metal::rint()'],['../namespacemetal_1_1fast.html#aa613bc252f8d8069e175ec9e9d05a7ec',1,'metal::fast::rint()'],['../namespacemetal_1_1precise.html#ab17bd408098270ad92f37bcd1039c254',1,'metal::precise::rint()']]], - ['rms_5flooped_5flimit_104',['RMS_LOOPED_LIMIT',['../defines_8h.html#a717a175676c3f96d74adfde7e751a541',1,'defines.h']]], - ['rms_5fn_5freads_105',['RMS_N_READS',['../defines_8h.html#a89c0a33ba39a881ad3458ffdde62a24f',1,'defines.h']]], - ['rms_5fnorm_106',['rms_norm',['../namespacemlx_1_1core_1_1fast.html#ac7b620275c6386f822b7aacc6b312e62',1,'mlx::core::fast']]], - ['rmsnorm_107',['RMSNorm',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html',1,'mlx::core::fast::RMSNorm'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#a22adaff0749711263388ec151fcfebe2',1,'mlx::core::fast::RMSNorm::RMSNorm()']]], - ['rmsnormvjp_108',['RMSNormVJP',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html',1,'mlx::core::fast::RMSNormVJP'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#aac060129b2e1af79bf388bfe705381ca',1,'mlx::core::fast::RMSNormVJP::RMSNormVJP()']]], - ['rope_109',['RoPE',['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html',1,'mlx::core::fast::RoPE'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a031fa27aeba94cfa5ccc633137a12163',1,'mlx::core::fast::RoPE::RoPE()']]], - ['rope_110',['rope',['../namespacemlx_1_1core_1_1fast.html#a534ef357eae24892684a6ecd866d3fab',1,'mlx::core::fast']]], - ['rot90_111',['ROT90',['../namespacepocketfft_1_1detail.html#a928bad5278df636ee47402c0a75f64ef',1,'pocketfft::detail']]], - ['rotx90_112',['ROTX90',['../namespacepocketfft_1_1detail.html#ab6a43dc0cec4291e163e68a0875ac501',1,'pocketfft::detail']]], - ['round_113',['Round',['../structmlx_1_1core_1_1detail_1_1_round.html',1,'mlx::core::detail::Round'],['../classmlx_1_1core_1_1_round.html',1,'mlx::core::Round'],['../struct_round.html',1,'Round'],['../classmlx_1_1core_1_1_round.html#a1327a359b2aed91f576145a0e70d1dde',1,'mlx::core::Round::Round()']]], - ['round_114',['round',['../namespacemetal.html#a46c667e169ff9d51a9204a045305442f',1,'metal::round()'],['../namespacemetal_1_1fast.html#a4cb687257a004726d49e496417eaa40f',1,'metal::fast::round()'],['../namespacemetal_1_1precise.html#a5295ab08055d12534cc3775da855ac12',1,'metal::precise::round()'],['../group__ops.html#ga2d74d43f007a069384e89d8416525331',1,'mlx::core::round(const array &a, int decimals, StreamOrDevice s={})'],['../group__ops.html#gaf18fb7e98bf8cf3b7fbc5e64c988a95b',1,'mlx::core::round(const array &a, StreamOrDevice s={})']]], - ['round_5ferror_115',['round_error',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#afa223448fa4f04c1113a85345dd720c3',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['row_5fcontiguous_116',['row_contiguous',['../structmlx_1_1core_1_1array_1_1_flags.html#a3170fa381dc7a90f6eabcc029bdf9bfd',1,'mlx::core::array::Flags']]], - ['row_5freduce_5fgeneral_5fdispatch_117',['row_reduce_general_dispatch',['../namespacemlx_1_1core.html#ab1eeca8ec6fa31819ee108fa6ed2c41b',1,'mlx::core']]], - ['row_5freduce_5flooped_118',['row_reduce_looped',['../reduce__row_8h.html#ad98332d74a6824aa7499df3e2f2246ae',1,'reduce_row.h']]], - ['row_5freduce_5fsimple_119',['row_reduce_simple',['../reduce__row_8h.html#ac01d30987668930c8b38900e47b8308b',1,'reduce_row.h']]], - ['row_5freduce_5fsmall_120',['row_reduce_small',['../reduce__row_8h.html#a27e75312086e31f6bd1bbf4b366679da',1,'reduce_row.h']]], - ['rsqrt_121',['Rsqrt',['../structmlx_1_1core_1_1detail_1_1_rsqrt.html',1,'mlx::core::detail::Rsqrt'],['../struct_rsqrt.html',1,'Rsqrt']]], - ['rsqrt_122',['rsqrt',['../namespacemetal.html#a1cf4b605c0aa7ff5bfe5e979a16f5157',1,'metal::rsqrt()'],['../namespacemetal_1_1fast.html#aa62097c750f1e4b69d09277f19976ab1',1,'metal::fast::rsqrt()'],['../namespacemetal_1_1precise.html#afb397b477745f12a44423934fa2b05ac',1,'metal::precise::rsqrt()'],['../group__ops.html#ga102f23aa0b0c3d3296a321c694617aa1',1,'mlx::core::rsqrt()']]], - ['run_123',['run',['../struct_g_e_m_v_kernel.html#ac4a7b5011a0ea938ab1949bb1767fc1a',1,'GEMVKernel::run()'],['../struct_g_e_m_v_t_kernel.html#a5d68656832de892f33db939005713927',1,'GEMVTKernel::run()'],['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a00e55d4a161758350ed7310817d2d2a5',1,'mlx::steel::GEMMKernel::run()']]] -]; diff --git a/docs/build/html/search/all_13.js b/docs/build/html/search/all_13.js deleted file mode 100644 index a6c6c2f3..00000000 --- a/docs/build/html/search/all_13.js +++ /dev/null @@ -1,197 +0,0 @@ -var searchData= -[ - ['safetensorsload_0',['SafetensorsLoad',['../namespacemlx_1_1core.html#a688cd7917b1365065e8059e9964c3d45',1,'mlx::core']]], - ['sanity_5fcheck_1',['sanity_check',['../structpocketfft_1_1detail_1_1util.html#a3d2f5f00d4fed5c09bd1509ffa9a44cd',1,'pocketfft::detail::util::sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace)'],['../structpocketfft_1_1detail_1_1util.html#a280945ba7af964102b1d0d1d83469130',1,'pocketfft::detail::util::sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, const shape_t &axes)'],['../structpocketfft_1_1detail_1_1util.html#a670e044dadbbf680537e1fb11bc8b724',1,'pocketfft::detail::util::sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, size_t axis)']]], - ['save_2',['save',['../namespacemlx_1_1core.html#ad4c2cebe9e54582295f98c5a448a1f32',1,'mlx::core::save(std::shared_ptr< io::Writer > out_stream, array a)'],['../namespacemlx_1_1core.html#a22a37f3e33e0658680f6227bdd2d0b91',1,'mlx::core::save(std::string file, array a)']]], - ['save_5fgguf_3',['save_gguf',['../namespacemlx_1_1core.html#a8bcc29ca8846ec99dce333df4a34dc5f',1,'mlx::core']]], - ['save_5fsafetensors_4',['save_safetensors',['../namespacemlx_1_1core.html#a9f158db20c2405557f3ebc397e876de8',1,'mlx::core::save_safetensors(std::shared_ptr< io::Writer > in_stream, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})'],['../namespacemlx_1_1core.html#a21e256d852d587bcdc0827831b2c5c16',1,'mlx::core::save_safetensors(std::string file, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})']]], - ['scalar_5',['Scalar',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337af60357a8d17e45793298323f1b372a74',1,'mlx::core']]], - ['scale_6',['scale',['../struct_scale_op.html#a02043fac21c68fb8d6863a01f45ede4b',1,'ScaleOp']]], - ['scaled_5fdot_5fproduct_5fattention_7',['scaled_dot_product_attention',['../namespacemlx_1_1core_1_1fast.html#a3663b50265b0a9c0cca2b5376852e059',1,'mlx::core::fast']]], - ['scaled_5fdot_5fproduct_5fattention_5fparams_2eh_8',['scaled_dot_product_attention_params.h',['../scaled__dot__product__attention__params_8h.html',1,'']]], - ['scaleddotproductattention_9',['ScaledDotProductAttention',['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html',1,'mlx::core::fast::ScaledDotProductAttention'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#a6a904c377fffc3c193102a3123f5e706',1,'mlx::core::fast::ScaledDotProductAttention::ScaledDotProductAttention()']]], - ['scaleop_10',['ScaleOp',['../struct_scale_op.html',1,'']]], - ['scales_11',['scales',['../struct_quantized_block_loader.html#a6123e4a9209d6eacb58b2c2344ed1ecf',1,'QuantizedBlockLoader']]], - ['scan_12',['Scan',['../classmlx_1_1core_1_1_scan.html',1,'mlx::core::Scan'],['../classmlx_1_1core_1_1_scan.html#ac93e8f9c6771de825d2186ef34fa7087',1,'mlx::core::Scan::Scan()']]], - ['scan_13',['scan',['../namespacemlx_1_1core_1_1metal.html#a81c2cf124b0803098a54a78f8f6873a6',1,'mlx::core::metal']]], - ['scan_2eh_14',['scan.h',['../jit_2scan_8h.html',1,'(Global Namespace)'],['../kernels_2scan_8h.html',1,'(Global Namespace)']]], - ['scan_5fkernels_15',['scan_kernels',['../jit_2scan_8h.html#a35041ee4a053875a2240bdac5a3b4fae',1,'scan.h']]], - ['scatter_16',['Scatter',['../classmlx_1_1core_1_1_scatter.html',1,'mlx::core::Scatter'],['../classmlx_1_1core_1_1_scatter.html#ac9b3eff67389ef9aa820753379ffeaa3',1,'mlx::core::Scatter::Scatter()']]], - ['scatter_17',['scatter',['../namespacemlx_1_1core_1_1metal.html#a32e902c6cd6d35fcc3119ed6685a170f',1,'mlx::core::metal::scatter()'],['../group__ops.html#gad438be8f90bae9d37c6853b8f4225d61',1,'mlx::core::scatter(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#gac2c2b379a3ce959dbe1c4a68f112edfe',1,'mlx::core::scatter(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_2eh_18',['scatter.h',['../scatter_8h.html',1,'']]], - ['scatter_5f1d_5findex_5fimpl_19',['scatter_1d_index_impl',['../scatter_8h.html#ac1fd901b5ef9f39be32316a17297781e',1,'scatter.h']]], - ['scatter_5fadd_20',['scatter_add',['../group__ops.html#gacd14c2b5cfebf343fc2d672722f8d174',1,'mlx::core::scatter_add(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#gac13318518e5703f1273c5366eb523a5a',1,'mlx::core::scatter_add(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5fimpl_21',['scatter_impl',['../scatter_8h.html#a75f61cc43682a72dd66a1da43a1809fe',1,'scatter.h']]], - ['scatter_5fkernels_22',['scatter_kernels',['../jit_2indexing_8h.html#a768c949cd650a44c6b402fc1440c1a56',1,'indexing.h']]], - ['scatter_5fmax_23',['scatter_max',['../group__ops.html#ga05881a4157cd113c9392d168a79e6673',1,'mlx::core::scatter_max(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga9adda5f9202bb3486e4d9e1114e3a56f',1,'mlx::core::scatter_max(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5fmin_24',['scatter_min',['../group__ops.html#ga0ca16b7579dfc899f3f7fd40245ba7c5',1,'mlx::core::scatter_min(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga51fa762a997c243ca7a19e1ed3e83199',1,'mlx::core::scatter_min(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5fprod_25',['scatter_prod',['../group__ops.html#ga3708b5bcb61e2c63d213c4ce6ad0ffc0',1,'mlx::core::scatter_prod(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#gaf83c53c453faa9083ba27e4b97539339',1,'mlx::core::scatter_prod(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scheduled_26',['scheduled',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078af8a6f8eed2395ab89a758dec434393ae',1,'mlx::core::array']]], - ['scheduler_27',['Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html',1,'mlx::core::scheduler::Scheduler'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a3ae42aed78a2200e9d02776fcd2316ba',1,'mlx::core::scheduler::Scheduler::Scheduler()'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a61a74e3628899e66dde600e24a750648',1,'mlx::core::scheduler::Scheduler::Scheduler(const Scheduler &)=delete'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#ac3f77b7c93220dadd0b3bb2e903b7059',1,'mlx::core::scheduler::Scheduler::Scheduler(Scheduler &&)=delete']]], - ['scheduler_28',['scheduler',['../namespacemlx_1_1core_1_1scheduler.html#ae856e468c2f7c8f8ec672522cc13730b',1,'mlx::core::scheduler']]], - ['scheduler_2eh_29',['scheduler.h',['../scheduler_8h.html',1,'']]], - ['seed_30',['seed',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a9f19c5da2031cba50d0ff996924347d8',1,'mlx::core::random::KeySequence::seed()'],['../namespacemlx_1_1core_1_1random.html#ac4ad325b613257306df74595d3d0e23b',1,'mlx::core::random::seed()']]], - ['seek_31',['seek',['../classmlx_1_1core_1_1io_1_1_reader.html#acea55078bd39ccaa27a9a36f17a39cd1',1,'mlx::core::io::Reader::seek()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a9c1716dda53aa36faea9c8fb1a3e34d4',1,'mlx::core::io::Writer::seek()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a673c16b669f3cee13f387b7b0a1f39f7',1,'mlx::core::io::ParallelFileReader::seek()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9646f4ea048ae58719daeb588e2de433',1,'mlx::core::io::FileWriter::seek()']]], - ['select_32',['Select',['../structmlx_1_1core_1_1detail_1_1_select.html',1,'mlx::core::detail::Select'],['../classmlx_1_1core_1_1_select.html',1,'mlx::core::Select'],['../struct_select.html',1,'Select'],['../classmlx_1_1core_1_1_select.html#a6f833fe55dd68ad3726bbf9a8f75eec9',1,'mlx::core::Select::Select()']]], - ['send_33',['Send',['../classmlx_1_1core_1_1distributed_1_1_send.html',1,'mlx::core::distributed::Send'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a2481dd876b14d4a13ac466cbca9c4eac',1,'mlx::core::distributed::Send::Send()']]], - ['send_34',['send',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#abf33511660ac71df5fc92f2aad6c6e08',1,'mlx::core::distributed::detail::send()'],['../namespacemlx_1_1core_1_1distributed.html#a5a8360edaa3a528a3927fce4d2cf1777',1,'mlx::core::distributed::send()']]], - ['set_35',['Set',['../structpocketfft_1_1detail_1_1cmplx.html#a647fece372b64b13c4a7e5877d09a807',1,'pocketfft::detail::cmplx::Set(T r_, T i_)'],['../structpocketfft_1_1detail_1_1cmplx.html#a447d26b2e07f6e45f29d865e906c0a98',1,'pocketfft::detail::cmplx::Set(T r_)']]], - ['set_5fcache_5flimit_36',['set_cache_limit',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#af392bced29d9e4e3f1a7cc4725d83764',1,'mlx::core::metal::MetalAllocator::set_cache_limit()'],['../namespacemlx_1_1core_1_1metal.html#ab09c9b60f1e886ab859e6a066c9a5b9d',1,'mlx::core::metal::set_cache_limit()']]], - ['set_5fcompile_5fmode_37',['set_compile_mode',['../namespacemlx_1_1core.html#a49445a55f976c4397f25ea18e1e92bef',1,'mlx::core']]], - ['set_5fdata_38',['set_data',['../classmlx_1_1core_1_1array.html#a631acd8e318189640b8338f9ae1a554d',1,'mlx::core::array::set_data(allocator::Buffer buffer, deleter_t d=allocator::free)'],['../classmlx_1_1core_1_1array.html#a2112af5fba37b3135cd2e6ac9e851606',1,'mlx::core::array::set_data(allocator::Buffer buffer, size_t data_size, std::vector< size_t > strides, Flags flags, deleter_t d=allocator::free)']]], - ['set_5fdefault_5fdevice_39',['set_default_device',['../namespacemlx_1_1core.html#a312a2de41367fe52caeaf8c0f596a120',1,'mlx::core']]], - ['set_5fdefault_5fstream_40',['set_default_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a6d15314ac9cf25efc9bd1278de9a66bb',1,'mlx::core::scheduler::Scheduler::set_default_stream()'],['../namespacemlx_1_1core.html#af35a2b06517d8bb7dbb469692b4f841c',1,'mlx::core::set_default_stream()']]], - ['set_5finput_5farray_41',['set_input_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#ab69ff0d7f14b9b59db4df0608193dce4',1,'mlx::core::metal::CommandEncoder']]], - ['set_5fmemory_5flimit_42',['set_memory_limit',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a179e3127ef9377ce54295f771c34ba1b',1,'mlx::core::metal::MetalAllocator::set_memory_limit()'],['../namespacemlx_1_1core_1_1metal.html#a3fb2c4a237fa4bfdff798156146c4937',1,'mlx::core::metal::set_memory_limit()']]], - ['set_5foutput_5farray_43',['set_output_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a6a2e28e542eaa2886041bddd51ff6522',1,'mlx::core::metal::CommandEncoder']]], - ['set_5fsiblings_44',['set_siblings',['../classmlx_1_1core_1_1array.html#a8fccbe7a4edfd8cca168161124e263b1',1,'mlx::core::array']]], - ['set_5fstatus_45',['set_status',['../classmlx_1_1core_1_1array.html#a63598018999b49f1340b183cb303f05c',1,'mlx::core::array']]], - ['set_5ftracer_46',['set_tracer',['../classmlx_1_1core_1_1array.html#af26e6be1a9e6239471a4c24310c0c7c8',1,'mlx::core::array']]], - ['set_5fvalue_47',['set_value',['../classmlx_1_1core_1_1_event.html#a0d077b11f4b28f882b42440b7ac6d40d',1,'mlx::core::Event']]], - ['set_5fvector_5fbytes_48',['set_vector_bytes',['../namespacemlx_1_1core.html#a62340bbaa8b216539688a60adcb568bf',1,'mlx::core::set_vector_bytes(CommandEncoder &enc, const std::vector< T > &vec, size_t nelems, int idx)'],['../namespacemlx_1_1core.html#ae309cb543dfb0239cfccc53a8ad0408e',1,'mlx::core::set_vector_bytes(CommandEncoder &enc, const std::vector< T > &vec, int idx)']]], - ['shape_49',['shape',['../structmlx_1_1core_1_1_reduction_plan.html#a6cfa8771fa9caf6fdcc3d74c9fca83ae',1,'mlx::core::ReductionPlan::shape'],['../structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html#a63db720fe0c2abc4b71e22a58a015f8a',1,'mlx::core::fast::CustomKernelShapeInfo::shape'],['../classpocketfft_1_1detail_1_1arr__info.html#accada8146cb8d3ab7facb4c1e3413ec0',1,'pocketfft::detail::arr_info::shape() const'],['../classpocketfft_1_1detail_1_1arr__info.html#ac601c660c64a4c252aa8be4ae7dfa7a8',1,'pocketfft::detail::arr_info::shape(size_t i) const'],['../classmlx_1_1core_1_1array.html#a4a2a2c8a4a5beafd723fc13f2055d55d',1,'mlx::core::array::shape() const'],['../classmlx_1_1core_1_1array.html#a51ed0c45666264dc172d06fba159eb8f',1,'mlx::core::array::shape(int dim) const']]], - ['shape_5ft_50',['shape_t',['../namespacepocketfft_1_1detail.html#a885ee37fcf564a268a5c8ca9ea8603e1',1,'pocketfft::detail']]], - ['shapes_51',['shapes',['../struct_indices.html#a5ab170f1a77636180889ddfffd4f7d2f',1,'Indices']]], - ['shapes_5fwithout_5freduction_5faxes_52',['shapes_without_reduction_axes',['../namespacemlx_1_1core.html#a44c3ea6db6553c3f6552b9ba64a69494',1,'mlx::core']]], - ['shared_5fbuffer_5fslice_53',['shared_buffer_slice',['../namespacemlx_1_1core.html#aea2a6a4eddfd4cfac89d20786059de2a',1,'mlx::core']]], - ['shp_54',['shp',['../classpocketfft_1_1detail_1_1arr__info.html#a2467e9e01de1ba4d7cd28c1af783da8d',1,'pocketfft::detail::arr_info']]], - ['shutdown_55',['shutdown',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a0c7c29290fde806031c497f24c4ad411',1,'pocketfft::detail::threading::thread_pool']]], - ['siblings_56',['siblings',['../classmlx_1_1core_1_1array.html#acf80fde8f743f65ad5b4be69fcb7a74d',1,'mlx::core::array::siblings() const'],['../classmlx_1_1core_1_1array.html#a7263f23e70a580a9bc2129fbcde36e6c',1,'mlx::core::array::siblings()']]], - ['sigmoid_57',['Sigmoid',['../structmlx_1_1core_1_1detail_1_1_sigmoid.html',1,'mlx::core::detail::Sigmoid'],['../classmlx_1_1core_1_1_sigmoid.html',1,'mlx::core::Sigmoid'],['../struct_sigmoid.html',1,'Sigmoid'],['../classmlx_1_1core_1_1_sigmoid.html#a47eca99113ec19f0eb60b6a0472c592b',1,'mlx::core::Sigmoid::Sigmoid()']]], - ['sigmoid_58',['sigmoid',['../group__ops.html#ga708abf8f79609cd6831db7c38cafac0e',1,'mlx::core']]], - ['sign_59',['Sign',['../structmlx_1_1core_1_1detail_1_1_sign.html',1,'mlx::core::detail::Sign'],['../classmlx_1_1core_1_1_sign.html',1,'mlx::core::Sign'],['../struct_sign.html',1,'Sign'],['../classmlx_1_1core_1_1_sign.html#afe951e50907bc23a601ec5fa9eae5763',1,'mlx::core::Sign::Sign()']]], - ['sign_60',['sign',['../group__ops.html#ga20f1a1a8c0cd6206485f9363f3915faa',1,'mlx::core']]], - ['signal_61',['signal',['../classmlx_1_1core_1_1_event.html#a65a858445506a61be5889ae0e3651b89',1,'mlx::core::Event']]], - ['signaling_5fnan_62',['signaling_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ad1f76a43c7d51a3765174aa6e0dd9f80',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['signedinteger_63',['signedinteger',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2daed58b4631ff157bec9e35ed1182d2c10',1,'mlx::core::Dtype::signedinteger'],['../namespacemlx_1_1core.html#a24e1618af591d737d73729665e868001',1,'mlx::core::signedinteger']]], - ['simd_5fbroadcast_64',['simd_broadcast',['../namespacemetal.html#a498f1e85107eb5f01ba4435977f8efe0',1,'metal']]], - ['simd_5fexclusive_5fscan_65',['simd_exclusive_scan',['../struct_cum_sum.html#a64d1933942de4df2d44dd90e9e5e4460',1,'CumSum::simd_exclusive_scan()'],['../struct_cum_prod.html#a5b0577295853a48856b84fd4f935dff8',1,'CumProd::simd_exclusive_scan()'],['../struct_cum_prod_3_01bool_01_4.html#a1a86e9398bae24182b7be0a6577bf223',1,'CumProd< bool >::simd_exclusive_scan()'],['../struct_cum_max.html#ae11b67aa6c998e9a01615b2a79af4403',1,'CumMax::simd_exclusive_scan()'],['../struct_cum_min.html#a83e65017ff33018b585c043fb803773b',1,'CumMin::simd_exclusive_scan()']]], - ['simd_5fmax_66',['simd_max',['../namespacemetal.html#a048cad0aca52cb737ebf103e76bd1c49',1,'metal']]], - ['simd_5fmin_67',['simd_min',['../namespacemetal.html#ae9e2a23e00724ba2d7868bc4112b386b',1,'metal']]], - ['simd_5fprefix_5fexclusive_5fproduct_68',['simd_prefix_exclusive_product',['../namespacemetal.html#a5ca40242390b632f737e29636829b2e4',1,'metal']]], - ['simd_5fprefix_5fexclusive_5fsum_69',['simd_prefix_exclusive_sum',['../namespacemetal.html#abfbb70c7471f28bf7ff36a612ad014b2',1,'metal']]], - ['simd_5fprefix_5finclusive_5fproduct_70',['simd_prefix_inclusive_product',['../namespacemetal.html#a6ca6a7e1996228fa536e969e9e45c446',1,'metal']]], - ['simd_5fprefix_5finclusive_5fsum_71',['simd_prefix_inclusive_sum',['../namespacemetal.html#a567acb18199ac0107712eb8cb8aeb8e9',1,'metal']]], - ['simd_5fproduct_72',['simd_product',['../namespacemetal.html#ac6e883a04e2265a9790d7db76059e1b4',1,'metal']]], - ['simd_5fscan_73',['simd_scan',['../struct_cum_sum.html#a83342af06f6a700067e3b451636852d6',1,'CumSum::simd_scan()'],['../struct_cum_prod.html#a860dbf6146de088d07175bd165b74004',1,'CumProd::simd_scan()'],['../struct_cum_prod_3_01bool_01_4.html#abeb5ec4237b330e7219f4e881cf10d7a',1,'CumProd< bool >::simd_scan()'],['../struct_cum_max.html#adc9ec8bb09b4433d4c2f03022c43d781',1,'CumMax::simd_scan()'],['../struct_cum_min.html#a0a1005d91b1c90e90e2c6dbd6c296649',1,'CumMin::simd_scan()']]], - ['simd_5fshuffle_74',['simd_shuffle',['../namespacemetal.html#a259ed115bc3c58f88eb35830916b26d4',1,'metal']]], - ['simd_5fshuffle_5fand_5ffill_5fdown_75',['simd_shuffle_and_fill_down',['../namespacemetal.html#ae29a06f0eac636ad7af21dea5b04938b',1,'metal::simd_shuffle_and_fill_down(bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)'],['../namespacemetal.html#a0ee6239fa29a5f9ee0201e0dc5ddc8e0',1,'metal::simd_shuffle_and_fill_down(bfloat16_t data, bfloat16_t filling_data, ushort delta)']]], - ['simd_5fshuffle_5fand_5ffill_5fup_76',['simd_shuffle_and_fill_up',['../namespacemetal.html#a1ca14116bf50639b214d8414b5bbaaa6',1,'metal::simd_shuffle_and_fill_up(bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)'],['../namespacemetal.html#a5138d5cdc18139e135707916a243cd8e',1,'metal::simd_shuffle_and_fill_up(bfloat16_t data, bfloat16_t filling_data, ushort delta)']]], - ['simd_5fshuffle_5fdown_77',['simd_shuffle_down',['../namespacemetal.html#af6e2dd7ae087aba6abac4f0350b7611c',1,'metal::simd_shuffle_down()'],['../backend_2metal_2kernels_2utils_8h.html#aba6279624b1d30c525efee856a222b5c',1,'simd_shuffle_down(uint64_t data, uint16_t delta): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a0c1e4d782fcc56e1ab5565cef12430dd',1,'simd_shuffle_down(int64_t data, uint16_t delta): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a48ae83a8caf5c74810df60b6c6cdb062',1,'simd_shuffle_down(bool data, uint16_t delta): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#ad9a671a5f9aaa729ae7a77026f16bcb0',1,'simd_shuffle_down(complex64_t data, uint16_t delta): utils.h']]], - ['simd_5fshuffle_5frotate_5fdown_78',['simd_shuffle_rotate_down',['../namespacemetal.html#a4bb203647a421032db47e73cd649841b',1,'metal']]], - ['simd_5fshuffle_5frotate_5fup_79',['simd_shuffle_rotate_up',['../namespacemetal.html#a729b22077d6c944491a6027c18ea80c9',1,'metal']]], - ['simd_5fshuffle_5fup_80',['simd_shuffle_up',['../namespacemetal.html#afe81c5fbde3f4890458b081909242c55',1,'metal']]], - ['simd_5fshuffle_5fxor_81',['simd_shuffle_xor',['../namespacemetal.html#a5017efc9605e069cfb507137cd1a1852',1,'metal']]], - ['simd_5fsize_82',['SIMD_SIZE',['../quantized_8h.html#a62969a218d93680f5e35d0c61b160b99',1,'quantized.h']]], - ['simd_5fsize_83',['simd_size',['../backend_2metal_2kernels_2reduction_2ops_8h.html#a515b75d563a93d3c09ee677948dc83e3',1,'ops.h']]], - ['simd_5fstride_5fa_84',['simd_stride_a',['../structmlx_1_1steel_1_1_block_m_m_a.html#ab52d2644053c5bb28ab9b24fab8b194a',1,'mlx::steel::BlockMMA']]], - ['simd_5fstride_5fb_85',['simd_stride_b',['../structmlx_1_1steel_1_1_block_m_m_a.html#af5c60b04602f72b705192911ed8749da',1,'mlx::steel::BlockMMA']]], - ['simd_5fsum_86',['simd_sum',['../namespacemetal.html#a85181e37a00cb4a4217f1bb25389bce5',1,'metal']]], - ['simd_5fxor_87',['simd_xor',['../namespacemetal.html#a1308decbf2d5c33d34d6be523ea1c30f',1,'metal']]], - ['simple_5fiter_88',['simple_iter',['../classpocketfft_1_1detail_1_1simple__iter.html',1,'pocketfft::detail::simple_iter'],['../classpocketfft_1_1detail_1_1simple__iter.html#a1e455c615825bebd5f1f62665027b398',1,'pocketfft::detail::simple_iter::simple_iter()']]], - ['simplevalueandgradfn_89',['SimpleValueAndGradFn',['../namespacemlx_1_1core.html#a2689b8f1181648cb1685204fea9f3066',1,'mlx::core']]], - ['sin_90',['Sin',['../structmlx_1_1core_1_1detail_1_1_sin.html',1,'mlx::core::detail::Sin'],['../classmlx_1_1core_1_1_sin.html',1,'mlx::core::Sin'],['../struct_sin.html',1,'Sin'],['../classmlx_1_1core_1_1_sin.html#a10d1ecc0ca96e79cdf55b57073d126ea',1,'mlx::core::Sin::Sin()']]], - ['sin_91',['sin',['../namespacepocketfft_1_1detail.html#a07745f4a069f811859308281b2982258',1,'pocketfft::detail::sin()'],['../namespacemetal.html#a619a159ca5f2ddfe3647d3a6bb6e804c',1,'metal::sin()'],['../namespacemetal_1_1fast.html#a3af771cfe7a135104f9d063147dba270',1,'metal::fast::sin()'],['../namespacemetal_1_1precise.html#a71acf77ffd29c56f56afae0195c98a1c',1,'metal::precise::sin()'],['../group__ops.html#gaebf0a73ad3732fba39df37826c235692',1,'mlx::core::sin()']]], - ['sincos_5f2pibyn_92',['sincos_2pibyn',['../classpocketfft_1_1detail_1_1sincos__2pibyn.html',1,'pocketfft::detail::sincos_2pibyn< T >'],['../classpocketfft_1_1detail_1_1sincos__2pibyn.html#a88518f2182d854c557edacd4ab8cbc40',1,'pocketfft::detail::sincos_2pibyn::sincos_2pibyn()']]], - ['sinh_93',['Sinh',['../structmlx_1_1core_1_1detail_1_1_sinh.html',1,'mlx::core::detail::Sinh'],['../classmlx_1_1core_1_1_sinh.html',1,'mlx::core::Sinh'],['../struct_sinh.html',1,'Sinh'],['../classmlx_1_1core_1_1_sinh.html#a4a4f6814d403c2ce5d6c574b0dca3c96',1,'mlx::core::Sinh::Sinh()']]], - ['sinh_94',['sinh',['../namespacemetal.html#a83ba4235ae350ab8880a9df09158620b',1,'metal::sinh()'],['../namespacemetal_1_1fast.html#a990d90b3440e38d1fb4ff5065c6c189b',1,'metal::fast::sinh()'],['../namespacemetal_1_1precise.html#abc8f4f59dd6e7204ab5d84f0af96331c',1,'metal::precise::sinh()'],['../group__ops.html#gaf532375c6563dbd6e329bdedf0224dd7',1,'mlx::core::sinh()']]], - ['sinpi_95',['sinpi',['../namespacemetal.html#ae9655f7fa2ba6c0625ca25fbb278e269',1,'metal::sinpi()'],['../namespacemetal_1_1fast.html#ab07a32fe544aa304577d29e0251e87b2',1,'metal::fast::sinpi()'],['../namespacemetal_1_1precise.html#a78b17dab93519d9c82c2575dafec49c9',1,'metal::precise::sinpi()']]], - ['size_96',['size',['../structmlx_1_1core_1_1_dtype.html#adc24e03df52237e9ba03e2451f321b66',1,'mlx::core::Dtype::size'],['../classpocketfft_1_1detail_1_1arr.html#a95bca00060957f540ff25b69632c6952',1,'pocketfft::detail::arr::size()'],['../classpocketfft_1_1detail_1_1arr__info.html#a003a7106f7fa59a3c55ac1f0116313a5',1,'pocketfft::detail::arr_info::size()'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a2adf9a9c968f113dde830cc0dc27dcc6',1,'mlx::core::allocator::Allocator::size()'],['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#aafa92e8310db089b1ac72b840777e26b',1,'mlx::core::allocator::CommonAllocator::size()'],['../classmlx_1_1core_1_1array.html#a598f87161926d9e0b516860f0ea2c8f6',1,'mlx::core::array::size()'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a51f6587e8065be16f0418ca42a796e05',1,'mlx::core::metal::MetalAllocator::size()'],['../structmlx_1_1core_1_1distributed_1_1_group.html#abd96a09217e3d1bcc522888257d22cef',1,'mlx::core::distributed::Group::size()']]], - ['size_5fof_97',['size_of',['../namespacemlx_1_1core.html#add4794cc0ffe5d717fc146084a235d95',1,'mlx::core']]], - ['slice_98',['Slice',['../classmlx_1_1core_1_1_slice.html',1,'mlx::core::Slice'],['../classmlx_1_1core_1_1_slice.html#a8a38feb7bb6b72bdeebb83f053e2fd7f',1,'mlx::core::Slice::Slice()']]], - ['slice_99',['slice',['../group__ops.html#gad66135407dbb41b3c5d2cdfd51226c21',1,'mlx::core::slice(const array &a, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})'],['../group__ops.html#ga90b243e25b5fbbd7a9732f7ac48f6403',1,'mlx::core::slice(const array &a, const std::vector< int > &start, const std::vector< int > &stop, StreamOrDevice s={})']]], - ['slice_5fgpu_100',['slice_gpu',['../namespacemlx_1_1core.html#a59048c5ff114c101a496bf33f62e3de9',1,'mlx::core']]], - ['slice_5fupdate_101',['slice_update',['../group__ops.html#ga3875660e4ce2c8add8bfcf8144078708',1,'mlx::core::slice_update(const array &src, const array &update, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})'],['../group__ops.html#ga03ffbbb4d989a463ef43f41ebf7eabef',1,'mlx::core::slice_update(const array &src, const array &update, std::vector< int > start, std::vector< int > stop, StreamOrDevice s={})']]], - ['sliceupdate_102',['SliceUpdate',['../classmlx_1_1core_1_1_slice_update.html',1,'mlx::core::SliceUpdate'],['../classmlx_1_1core_1_1_slice_update.html#aa30a7f22f557c56e1a2b5fcf44488990',1,'mlx::core::SliceUpdate::SliceUpdate()']]], - ['slicing_2eh_103',['slicing.h',['../common_2slicing_8h.html',1,'(Global Namespace)'],['../metal_2slicing_8h.html',1,'(Global Namespace)']]], - ['sm_104',['sm',['../structmlx_1_1steel_1_1_block_m_m_a.html#aa85451edf6900fd6af164d4d50889ae3',1,'mlx::steel::BlockMMA']]], - ['sn_105',['sn',['../structmlx_1_1steel_1_1_block_m_m_a.html#ade420e8b811d597345783c324c23a34a',1,'mlx::steel::BlockMMA']]], - ['softmax_106',['Softmax',['../classmlx_1_1core_1_1_softmax.html',1,'mlx::core::Softmax'],['../classmlx_1_1core_1_1_softmax.html#a4ec686aac4e06f0dfe2cbd6801af40eb',1,'mlx::core::Softmax::Softmax()']]], - ['softmax_107',['softmax',['../namespacemlx_1_1core_1_1metal.html#a4fe937c2c584fd646926057f31d54ca6',1,'mlx::core::metal::softmax()'],['../group__ops.html#ga7e9bb08b43c8fd0444b7d3c9e09dc1c6',1,'mlx::core::softmax(const array &a, const std::vector< int > &axes, bool precise=false, StreamOrDevice s={})'],['../group__ops.html#ga1ae3614d07d873892a530d14c3857d0b',1,'mlx::core::softmax(const array &a, bool precise=false, StreamOrDevice s={})'],['../group__ops.html#ga06f570d73716a24303e6de3aaba4457b',1,'mlx::core::softmax(const array &a, int axis, bool precise=false, StreamOrDevice s={})']]], - ['softmax_2eh_108',['softmax.h',['../jit_2softmax_8h.html',1,'(Global Namespace)'],['../kernels_2softmax_8h.html',1,'(Global Namespace)']]], - ['softmax_5fexp_109',['softmax_exp',['../kernels_2softmax_8h.html#a440d4031ee5e86159a4dd715e44a438b',1,'softmax.h']]], - ['softmax_5fkernels_110',['softmax_kernels',['../jit_2softmax_8h.html#a1cbfb210a9a765c6620e9f1247ccef12',1,'softmax.h']]], - ['softmax_5flooped_111',['softmax_looped',['../kernels_2softmax_8h.html#a8c47b0924ebfeebcca25f3dd17373276',1,'softmax.h']]], - ['softmax_5fn_5freads_112',['SOFTMAX_N_READS',['../defines_8h.html#a722995df24286b27b7da3d74b73f768d',1,'defines.h']]], - ['softmax_5fsingle_5frow_113',['softmax_single_row',['../kernels_2softmax_8h.html#a815fe70f879f318e5d6e99acf043f52b',1,'softmax.h']]], - ['sort_114',['Sort',['../classmlx_1_1core_1_1_sort.html',1,'mlx::core::Sort'],['../classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44',1,'mlx::core::Sort::Sort()']]], - ['sort_115',['sort',['../struct_thread_sort.html#ad9ab3e6b47f7e9b91c0f3b773596986d',1,'ThreadSort::sort()'],['../struct_block_merge_sort.html#acc970f5eb963f7f2010f5ae5ea8b8bc0',1,'BlockMergeSort::sort()'],['../namespacemlx_1_1core_1_1metal.html#ab77c9a9ecaeeab8c66b712862777c24b',1,'mlx::core::metal::sort()'],['../group__ops.html#ga7fb616054665b3c2d61fa234f501f079',1,'mlx::core::sort(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaae1bc47aa737f705d0e5884270063fea',1,'mlx::core::sort(const array &a, int axis, StreamOrDevice s={})']]], - ['sort_2eh_116',['sort.h',['../sort_8h.html',1,'']]], - ['special_5fmul_117',['special_mul',['../structpocketfft_1_1detail_1_1cmplx.html#a2e79f5c73c1d926361ad126cf57c8874',1,'pocketfft::detail::cmplx::special_mul()'],['../namespacepocketfft_1_1detail.html#a8da1f3d4a0b712a0285529f24187fe76',1,'pocketfft::detail::special_mul()']]], - ['split_118',['Split',['../classmlx_1_1core_1_1_split.html',1,'mlx::core']]], - ['split_119',['split',['../structmlx_1_1core_1_1distributed_1_1_group.html#abbf40f8979488806bc5bca9ecc4130e9',1,'mlx::core::distributed::Group']]], - ['split_120',['Split',['../classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385',1,'mlx::core::Split']]], - ['split_121',['split',['../group__ops.html#ga7534290bceab5fb3831a05d67bebce7d',1,'mlx::core::split(const array &a, int num_splits, int axis, StreamOrDevice s={})'],['../group__ops.html#ga56882d24e5fde59c266774624c892d41',1,'mlx::core::split(const array &a, int num_splits, StreamOrDevice s={})'],['../group__ops.html#ga2cfcb1a53924882e30476c9016c5de74',1,'mlx::core::split(const array &a, const std::vector< int > &indices, int axis, StreamOrDevice s={})'],['../group__ops.html#gac324dfa3e26d3a14a35ab7962e36f0e1',1,'mlx::core::split(const array &a, const std::vector< int > &indices, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a42847b435d037a977592e355eed072af',1,'mlx::core::random::split(const array &key, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a7ec057064c7326c41b536f08178861e5',1,'mlx::core::random::split(const array &key, int num, StreamOrDevice s={})']]], - ['split_5fk_5fpartition_5fsize_122',['split_k_partition_size',['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a9f5a67b2343645b570e109c3837d4042',1,'mlx::steel::GEMMSpiltKParams']]], - ['split_5fk_5fpartition_5fstride_123',['split_k_partition_stride',['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a12144ce89d404812cd862611d770b9fb',1,'mlx::steel::GEMMSpiltKParams']]], - ['split_5fk_5fpartitions_124',['split_k_partitions',['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#ae06c27116905d4ff3b9b436e588a93fd',1,'mlx::steel::GEMMSpiltKParams']]], - ['sqrt_125',['Sqrt',['../structmlx_1_1core_1_1detail_1_1_sqrt.html',1,'mlx::core::detail::Sqrt'],['../classmlx_1_1core_1_1_sqrt.html',1,'mlx::core::Sqrt'],['../struct_sqrt.html',1,'Sqrt'],['../classmlx_1_1core_1_1_sqrt.html#a6682a7c31ca427c9d2c5ddb6a479bf29',1,'mlx::core::Sqrt::Sqrt()']]], - ['sqrt_126',['sqrt',['../namespacepocketfft_1_1detail.html#a774f8b73f28259d4276bd188b540a3e3',1,'pocketfft::detail::sqrt()'],['../namespacemetal.html#ab3f4d4852ca0e591104fbd8e5b50d31b',1,'metal::sqrt()'],['../namespacemetal_1_1fast.html#a4218a85c7d8a74cb8055b4755205627e',1,'metal::fast::sqrt()'],['../namespacemetal_1_1precise.html#acb213467361cd2cab93a8d5ea1aa5bfd',1,'metal::precise::sqrt()'],['../group__ops.html#ga297f853b3d90ec8ae81263977ba2ddb1',1,'mlx::core::sqrt()']]], - ['square_127',['Square',['../structmlx_1_1core_1_1detail_1_1_square.html',1,'mlx::core::detail::Square'],['../classmlx_1_1core_1_1_square.html',1,'mlx::core::Square'],['../struct_square.html',1,'Square'],['../classmlx_1_1core_1_1_square.html#ab94e28d5c92e6febc1c74e525f730dc4',1,'mlx::core::Square::Square()']]], - ['square_128',['square',['../group__ops.html#ga1234e4c39cfa79f19d4bdb5b8ea4d45e',1,'mlx::core']]], - ['squeeze_129',['squeeze',['../group__ops.html#ga710daa7ec721bd4d3f326082cb195576',1,'mlx::core::squeeze(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga700dd51b77379a3d2260a55783e8ebf3',1,'mlx::core::squeeze(const array &a, int axis, StreamOrDevice s={})'],['../group__ops.html#ga58bad3c61fd85b95927a987ba1cf5dad',1,'mlx::core::squeeze(const array &a, StreamOrDevice s={})']]], - ['src_130',['src',['../struct_quantized_block_loader.html#ad85c6b7e07c81307b3b91eb4dd7be30b',1,'QuantizedBlockLoader::src'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a656a46ee27486482b45ff90b3d626255',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::src'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a57552e9cfbafad71d47b2f3a8e027bdf',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::src'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a7bfbcc4a1e3eef7aef5dd8e8c374a95f',1,'mlx::steel::Conv2DWeightBlockLoader::src'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#afe21e46e08523232830c25eb1b4ade16',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::src'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a8b04a69952404a04029dacc424df6e8f',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::src'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a1ee2922961b5fcb1db577928c4d9d731',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::src'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a50f458dbb74d61be2ed24727d8d43614',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::src'],['../structmlx_1_1steel_1_1_block_loader.html#a13004952d0bf2030b95acb621a3779dd',1,'mlx::steel::BlockLoader::src']]], - ['src_5fld_131',['src_ld',['../struct_quantized_block_loader.html#a8050977d473d1a24fae5c833e609839e',1,'QuantizedBlockLoader::src_ld'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a7464ec687323fa79050702952ed9084f',1,'mlx::steel::Conv2DWeightBlockLoader::src_ld'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#aa6bedc0cbb447eaf70c03f2e26df2cb2',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::src_ld'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a6918c1df7712c4e408e2871467ea7987',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::src_ld'],['../structmlx_1_1steel_1_1_block_loader.html#aadafc50f7f06af434149d7469df4714d',1,'mlx::steel::BlockLoader::src_ld']]], - ['stack_132',['stack',['../group__ops.html#gaf8f2ec2b98a4b59eca73d7471df6e032',1,'mlx::core::stack(const std::vector< array > &arrays, int axis, StreamOrDevice s={})'],['../group__ops.html#ga82216209dce901296fc737fe8efa5c94',1,'mlx::core::stack(const std::vector< array > &arrays, StreamOrDevice s={})']]], - ['start_5fcapture_133',['start_capture',['../namespacemlx_1_1core_1_1metal.html#aa47cb5651bf3b65c46ab216b7e504d77',1,'mlx::core::metal']]], - ['start_5fconcurrent_134',['start_concurrent',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a48b548a0b15f9d1279c938a1c6167034',1,'mlx::core::metal::CommandEncoder']]], - ['start_5frow_135',['start_row',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a220e033b689c8d6a6f319dae02b38334',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral']]], - ['status_136',['Status',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078',1,'mlx::core::array']]], - ['status_137',['status',['../classmlx_1_1core_1_1array.html#a7102659be87e9ef62966696ab9b07dad',1,'mlx::core::array']]], - ['std_138',['std',['../group__ops.html#ga2a466024f8061febc0a64be557644cb0',1,'mlx::core::std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#gafdcb04d77c64405a3990078a77dd984c',1,'mlx::core::std(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga7f649970bf38b987b6ef847054f3c2f8',1,'mlx::core::std(const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#ga62721a206df671ef5797449eea97af9f',1,'mlx::core::std(const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})']]], - ['steel_5fconst_139',['STEEL_CONST',['../steel_2defines_8h.html#a90b91c866313ffa46eff6d9cc944ad2b',1,'defines.h']]], - ['steel_5fconv_140',['steel_conv',['../namespacemlx_1_1core_1_1metal.html#a92f1e559b1121d545746f81ff86eaca1',1,'mlx::core::metal']]], - ['steel_5fconv_2eh_141',['steel_conv.h',['../jit_2steel__conv_8h.html',1,'(Global Namespace)'],['../kernels_2steel_2conv_2kernels_2steel__conv_8h.html',1,'(Global Namespace)']]], - ['steel_5fconv_5fgeneral_142',['steel_conv_general',['../namespacemlx_1_1core_1_1metal.html#a02edb6a90bdf30f4c9f0d6c25b0267b5',1,'mlx::core::metal']]], - ['steel_5fconv_5fgeneral_2eh_143',['steel_conv_general.h',['../steel__conv__general_8h.html',1,'']]], - ['steel_5fconv_5fgeneral_5fkernels_144',['steel_conv_general_kernels',['../jit_2steel__conv_8h.html#ae4ca1720029316b08ea92b7662347d47',1,'steel_conv.h']]], - ['steel_5fconv_5fkernels_145',['steel_conv_kernels',['../jit_2steel__conv_8h.html#a386d79077465df56659416fd84adb513',1,'steel_conv.h']]], - ['steel_5fgemm_2eh_146',['steel_gemm.h',['../steel__gemm_8h.html',1,'']]], - ['steel_5fgemm_5ffused_147',['steel_gemm_fused',['../namespacemlx_1_1core_1_1metal.html#a17764366deed71c160fb26091400a803',1,'mlx::core::metal']]], - ['steel_5fgemm_5ffused_2eh_148',['steel_gemm_fused.h',['../steel__gemm__fused_8h.html',1,'']]], - ['steel_5fgemm_5ffused_5fkernels_149',['steel_gemm_fused_kernels',['../steel__gemm_8h.html#a4c6009fd5357b730805f2fd4ba6e093e',1,'steel_gemm.h']]], - ['steel_5fgemm_5fmasked_150',['steel_gemm_masked',['../namespacemlx_1_1core_1_1metal.html#a962272ca73d26c08f76f706a128fd71f',1,'mlx::core::metal']]], - ['steel_5fgemm_5fmasked_2eh_151',['steel_gemm_masked.h',['../steel__gemm__masked_8h.html',1,'']]], - ['steel_5fgemm_5fmasked_5fkernels_152',['steel_gemm_masked_kernels',['../steel__gemm_8h.html#a62a358fd3ec5365081920d07aceb581c',1,'steel_gemm.h']]], - ['steel_5fgemm_5fsplitk_153',['steel_gemm_splitk',['../namespacemlx_1_1core_1_1metal.html#ad0dfd40ba7c09755711ceb731e57a5ac',1,'mlx::core::metal']]], - ['steel_5fgemm_5fsplitk_2eh_154',['steel_gemm_splitk.h',['../steel__gemm__splitk_8h.html',1,'']]], - ['steel_5fgemm_5fsplitk_5faccum_5faxbpy_5fkernels_155',['steel_gemm_splitk_accum_axbpy_kernels',['../steel__gemm_8h.html#a40a86e1381c241aba8511e51a981a4bf',1,'steel_gemm.h']]], - ['steel_5fgemm_5fsplitk_5faccum_5fkernels_156',['steel_gemm_splitk_accum_kernels',['../steel__gemm_8h.html#a144a64b8d94f0371fb144e2cc308fcf9',1,'steel_gemm.h']]], - ['steel_5fgemm_5fsplitk_5fkernels_157',['steel_gemm_splitk_kernels',['../steel__gemm_8h.html#a92108ab01d826e38bca83d8569b947d9',1,'steel_gemm.h']]], - ['steel_5fmatmul_158',['steel_matmul',['../namespacemlx_1_1core.html#ab43a7633794498e1c6775cca829eb886',1,'mlx::core']]], - ['steel_5fmatmul_5fconv_5fgroups_159',['steel_matmul_conv_groups',['../namespacemlx_1_1core.html#afe8386cea0c7b846dc78649927fd0c75',1,'mlx::core']]], - ['steel_5fpragma_5funroll_160',['STEEL_PRAGMA_UNROLL',['../steel_2defines_8h.html#a5a5c3095b132a7589bc19cd5cb80e2c6',1,'defines.h']]], - ['stop_161',['stop',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a456ad1c0c9e731833a2f8411c4ed51aa',1,'mlx::core::scheduler::StreamThread']]], - ['stop_5fcapture_162',['stop_capture',['../namespacemlx_1_1core_1_1metal.html#ac90714424e36fb01e04550de69b8314f',1,'mlx::core::metal']]], - ['stop_5fgradient_163',['stop_gradient',['../group__ops.html#ga36bc28f1deb2fe668ca9ae1e447b6b1f',1,'mlx::core']]], - ['stopgradient_164',['StopGradient',['../classmlx_1_1core_1_1_stop_gradient.html',1,'mlx::core::StopGradient'],['../classmlx_1_1core_1_1_stop_gradient.html#ac70d1ab819d04e00f76bc25aeebaf84f',1,'mlx::core::StopGradient::StopGradient()']]], - ['store_5fresult_165',['store_result',['../structmlx_1_1steel_1_1_block_m_m_a.html#a85c57ad4092079f068683cb525fb08ee',1,'mlx::steel::BlockMMA::store_result(device U *D, const int ldd) const'],['../structmlx_1_1steel_1_1_block_m_m_a.html#a7cf757e9785e23997b1417e024559ed3',1,'mlx::steel::BlockMMA::store_result(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, thread const Epilogue &epilogue_op) const']]], - ['store_5fresult_5fsafe_166',['store_result_safe',['../structmlx_1_1steel_1_1_block_m_m_a.html#af94bafeb285c240051e86418fccb89fe',1,'mlx::steel::BlockMMA::store_result_safe(device U *D, const int ldd, short2 dst_tile_dims) const'],['../structmlx_1_1steel_1_1_block_m_m_a.html#a7b324c992750ed3aaa4c485f15b2f391',1,'mlx::steel::BlockMMA::store_result_safe(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const Epilogue &epilogue_op) const']]], - ['str_167',['str',['../classpocketfft_1_1detail_1_1arr__info.html#abe1f7b92501b4e0e5a38fd26294ac5a4',1,'pocketfft::detail::arr_info::str'],['../struct_m_l_x_conv_params.html#a862191e8ab1bc8a47aa1396b36d46058',1,'MLXConvParams::str']]], - ['stream_168',['Stream',['../structmlx_1_1core_1_1_stream.html',1,'mlx::core::Stream'],['../structmlx_1_1core_1_1_stream.html#a7f0815ff4886da74cbbff5f93d82dd3e',1,'mlx::core::Stream::Stream()']]], - ['stream_169',['stream',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a8462e4acffcd385c6248bd7102e6bcb1',1,'mlx::core::scheduler::StreamThread::stream'],['../classmlx_1_1core_1_1_event.html#a193143bad31b68c699fa27f135b45614',1,'mlx::core::Event::stream()'],['../classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a',1,'mlx::core::Primitive::stream()']]], - ['stream_2eh_170',['stream.h',['../stream_8h.html',1,'']]], - ['streamcontext_171',['StreamContext',['../structmlx_1_1core_1_1_stream_context.html',1,'mlx::core::StreamContext'],['../structmlx_1_1core_1_1_stream_context.html#a89d803151e9d7dce29382aa83d5c6ef1',1,'mlx::core::StreamContext::StreamContext()']]], - ['streamordevice_172',['StreamOrDevice',['../namespacemlx_1_1core.html#a95fc1013cc48fbfee0c54310711a5e58',1,'mlx::core']]], - ['streamthread_173',['StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html',1,'mlx::core::scheduler::StreamThread'],['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#ac528109a11abcb82e6e221c5efa4493c',1,'mlx::core::scheduler::StreamThread::StreamThread()']]], - ['stride_174',['stride',['../classpocketfft_1_1detail_1_1arr__info.html#a9d10aa83a1117e75d36f7396b8c2a093',1,'pocketfft::detail::arr_info::stride() const'],['../classpocketfft_1_1detail_1_1arr__info.html#ac1f6a9bd6703eceef6003f5f6315d39b',1,'pocketfft::detail::arr_info::stride(size_t i) const']]], - ['stride_5fin_175',['stride_in',['../classpocketfft_1_1detail_1_1multi__iter.html#ac947f03b1cfcb63436a7e61ff020a88c',1,'pocketfft::detail::multi_iter']]], - ['stride_5fout_176',['stride_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a81d71a13bf0b85e556fbb9834167ecc7',1,'pocketfft::detail::multi_iter']]], - ['stride_5ft_177',['stride_t',['../namespacepocketfft_1_1detail.html#afb987c919e9424a996d0fc8b3c23cc84',1,'pocketfft::detail']]], - ['strided_5fdevice_5fidx_178',['strided_device_idx',['../struct_read_writer.html#a4c0b12484aac4fd6759d67c190391989',1,'ReadWriter']]], - ['strided_5freduce_5fgeneral_5fdispatch_179',['strided_reduce_general_dispatch',['../namespacemlx_1_1core.html#aa0332c64ee9965f05026c30a0b778000',1,'mlx::core']]], - ['strided_5fscan_180',['strided_scan',['../kernels_2scan_8h.html#aef54ac73154fb9024eda760a9dfde607',1,'scan.h']]], - ['strided_5fshared_5fidx_181',['strided_shared_idx',['../struct_read_writer.html#ace40adb02cfb33d89c98353327c251fc',1,'ReadWriter']]], - ['strides_182',['strides',['../structmlx_1_1core_1_1_reduction_plan.html#a9bf7cae845ab633247c1811613ece8bd',1,'mlx::core::ReductionPlan::strides'],['../struct_indices.html#a7f73d7652f0f751e6a06c2663e329a4a',1,'Indices::strides'],['../structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html#a63954de7da62942ec69afcaaa19d46f2',1,'mlx::core::fast::CustomKernelShapeInfo::strides'],['../classmlx_1_1core_1_1array.html#a186cf2648da92584d5c1c8b24e69629b',1,'mlx::core::array::strides() const'],['../classmlx_1_1core_1_1array.html#a919f850ca087d1c40aa68f854cb30be2',1,'mlx::core::array::strides(int dim) const']]], - ['submit_183',['submit',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a8698d49e8f406cdb88006aac6a91f9a4',1,'pocketfft::detail::threading::thread_pool']]], - ['subtract_184',['Subtract',['../structmlx_1_1core_1_1detail_1_1_subtract.html',1,'mlx::core::detail::Subtract'],['../classmlx_1_1core_1_1_subtract.html',1,'mlx::core::Subtract'],['../struct_subtract.html',1,'Subtract'],['../classmlx_1_1core_1_1_subtract.html#a834854757394f8de7082af65bf86ed9c',1,'mlx::core::Subtract::Subtract()']]], - ['subtract_185',['subtract',['../group__ops.html#ga196c240d3d0fcbb4713802c485e15133',1,'mlx::core']]], - ['sum_186',['Sum',['../struct_sum.html',1,'Sum< U >'],['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924a1fc7c1f09c80650ab0497e2d6781d65f',1,'mlx::core::distributed::AllReduce::Sum'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a8582875544f1d3d396a1a376473ef1dd',1,'mlx::core::Reduce::Sum'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ade23893033e4849f5596e7ce76a5fc36',1,'mlx::core::Scan::Sum'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca14abe2d8818efa71726be4e156813d6f',1,'mlx::core::Scatter::Sum']]], - ['sum_187',['sum',['../group__ops.html#gade905ee92eb6ab7edfc312aeddfbaeb6',1,'mlx::core::sum(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga3627754d7868487bdab1bd83f05d9c81',1,'mlx::core::sum(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaccd0a6be2c5b5128fdc2d87b5c8e67f4',1,'mlx::core::sum(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gafcd39b0bf39a56c26a967981c7ab8a8d',1,'mlx::core::sum(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['svd_188',['SVD',['../classmlx_1_1core_1_1_s_v_d.html',1,'mlx::core::SVD'],['../classmlx_1_1core_1_1_s_v_d.html#ae89ff583e34fa894cccb8e7a475ee6d1',1,'mlx::core::SVD::SVD()']]], - ['svd_189',['svd',['../namespacemlx_1_1core_1_1linalg.html#a64364b880e99914cf47bf756fa8dbaf0',1,'mlx::core::linalg']]], - ['swapaxes_190',['swapaxes',['../group__ops.html#gabc46eed81ab6c6247903e4ec0c4ec1fb',1,'mlx::core']]], - ['swizzle_191',['swizzle',['../structmlx_1_1steel_1_1_block_swizzle.html#a98e558d63826d2aaa06d3e65a06d2760',1,'mlx::steel::BlockSwizzle']]], - ['swizzle_5flog_192',['swizzle_log',['../struct_m_l_x_fast_attention_params.html#a68a338d522ffeb6761b7b168869361e2',1,'MLXFastAttentionParams::swizzle_log'],['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#ad0713159d4f710cd9a066596593d8840',1,'mlx::steel::ImplicitGemmConv2DParams::swizzle_log'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#af9ff2c06dd8994126634531440325be7',1,'mlx::steel::GEMMParams::swizzle_log']]], - ['synchronize_193',['synchronize',['../namespacemlx_1_1core.html#a14287949d82ffefad0306cef5eb5f9e4',1,'mlx::core::synchronize()'],['../namespacemlx_1_1core.html#a6648a71937b055e5ff513d98056c2fb5',1,'mlx::core::synchronize(Stream)']]] -]; diff --git a/docs/build/html/search/all_14.js b/docs/build/html/search/all_14.js deleted file mode 100644 index c9e48d01..00000000 --- a/docs/build/html/search/all_14.js +++ /dev/null @@ -1,92 +0,0 @@ -var searchData= -[ - ['t_5fdcst23_0',['T_dcst23',['../classpocketfft_1_1detail_1_1_t__dcst23.html',1,'pocketfft::detail::T_dcst23< T0 >'],['../classpocketfft_1_1detail_1_1_t__dcst23.html#a7cbe3fd1b64383d8b466bcdc2f594900',1,'pocketfft::detail::T_dcst23::T_dcst23()']]], - ['t_5fdcst4_1',['T_dcst4',['../classpocketfft_1_1detail_1_1_t__dcst4.html',1,'pocketfft::detail::T_dcst4< T0 >'],['../classpocketfft_1_1detail_1_1_t__dcst4.html#a4a623ebc5dfe8c3cad153c642663099b',1,'pocketfft::detail::T_dcst4::T_dcst4()']]], - ['t_5fdct1_2',['T_dct1',['../classpocketfft_1_1detail_1_1_t__dct1.html',1,'pocketfft::detail::T_dct1< T0 >'],['../classpocketfft_1_1detail_1_1_t__dct1.html#ac153e82c8bf0943638a88486e35c16d6',1,'pocketfft::detail::T_dct1::T_dct1()']]], - ['t_5fdst1_3',['T_dst1',['../classpocketfft_1_1detail_1_1_t__dst1.html',1,'pocketfft::detail::T_dst1< T0 >'],['../classpocketfft_1_1detail_1_1_t__dst1.html#ad0b6647266ef0e87d34730774b92da84',1,'pocketfft::detail::T_dst1::T_dst1()']]], - ['take_4',['take',['../group__ops.html#gac2fc270882fcfa81eb8bd068cc0d86d7',1,'mlx::core::take(const array &a, const array &indices, int axis, StreamOrDevice s={})'],['../group__ops.html#ga45d0f423a5e030440ef753f36c5aabf1',1,'mlx::core::take(const array &a, const array &indices, StreamOrDevice s={})']]], - ['take_5falong_5faxis_5',['take_along_axis',['../group__ops.html#gae0a81d4f983e296a87302e36d65bfc76',1,'mlx::core']]], - ['tan_6',['Tan',['../structmlx_1_1core_1_1detail_1_1_tan.html',1,'mlx::core::detail::Tan'],['../classmlx_1_1core_1_1_tan.html',1,'mlx::core::Tan'],['../struct_tan.html',1,'Tan'],['../classmlx_1_1core_1_1_tan.html#a8dcc9ff660210ccf05134dd95f47de08',1,'mlx::core::Tan::Tan()']]], - ['tan_7',['tan',['../namespacemetal.html#a862215a8ddacb086296ba02567c9b158',1,'metal::tan()'],['../namespacemetal_1_1fast.html#ae34754afa152a6170ac2ae3294174506',1,'metal::fast::tan()'],['../namespacemetal_1_1precise.html#a8261ed22f03122ef15b89512358acb1f',1,'metal::precise::tan()'],['../group__ops.html#ga3f10e89a4bcb1a8fa44fb33b8d1176a5',1,'mlx::core::tan()']]], - ['tanh_8',['Tanh',['../structmlx_1_1core_1_1detail_1_1_tanh.html',1,'mlx::core::detail::Tanh'],['../classmlx_1_1core_1_1_tanh.html',1,'mlx::core::Tanh'],['../struct_tanh.html',1,'Tanh'],['../classmlx_1_1core_1_1_tanh.html#ae551297bf573e1802fb831440276dee4',1,'mlx::core::Tanh::Tanh()']]], - ['tanh_9',['tanh',['../namespacemetal.html#aa97fc50bd6addfc6de0aae8570fe963d',1,'metal::tanh()'],['../namespacemetal_1_1fast.html#a13e6e6ae087b7c558e9a94ddbc864d43',1,'metal::fast::tanh()'],['../namespacemetal_1_1precise.html#a741c27a10cc968dd1e63473d9fcd8f99',1,'metal::precise::tanh()'],['../group__ops.html#ga5efb19aa0dfa42d8a3d5e1dfd569cd6d',1,'mlx::core::tanh()']]], - ['tanpi_10',['tanpi',['../namespacemetal.html#ae2046d163a525fc1822a9ec8a0aeaeb3',1,'metal::tanpi()'],['../namespacemetal_1_1fast.html#a39b2952d4adf1400016c63243798aaf8',1,'metal::fast::tanpi()'],['../namespacemetal_1_1precise.html#a8fae8c20deff43a8e855bba6f3ba20a5',1,'metal::precise::tanpi()']]], - ['tcols_11',['TCOLS',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a0b5303f3258e0a21862dead8e3f5401e',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::TCOLS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a5adbd51e9adb6f7853724d83de4ff755',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::TCOLS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a80cb90674f839d5d4ecfde384fa0a7a2',1,'mlx::steel::Conv2DWeightBlockLoader::TCOLS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#ad2508cd5cdb51b2f611057e743b8fc6f',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::TCOLS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#acd54132d0928d0f6fb15b2f367e5d5e8',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::TCOLS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#ae25c676b7318d78462ee89bcd80dc805',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::TCOLS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#aff021a6fae860b4ac01fb593b2720457',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::TCOLS']]], - ['tell_12',['tell',['../classmlx_1_1core_1_1io_1_1_reader.html#a27697ccc1ce45da0233db3bd4f298aed',1,'mlx::core::io::Reader::tell()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a11ad80749894993232fbb5c70fd7b282',1,'mlx::core::io::Writer::tell()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a2e92131428f0ffa98fff781b8c35d9e5',1,'mlx::core::io::ParallelFileReader::tell()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#aa883a722789c962164fd0ddcc5f6ffc5',1,'mlx::core::io::FileWriter::tell()']]], - ['templatearg_13',['TemplateArg',['../namespacemlx_1_1core_1_1fast.html#a9390693ff7be931f3ef3428e2ea4c3f9',1,'mlx::core::fast']]], - ['ten_14',['ten',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a394d85b39676763bdf35b8d54b9e43a1',1,'mlx::core::Log']]], - ['tensordot_15',['tensordot',['../group__ops.html#gaf5c9735f4690327e1500e04e728fae70',1,'mlx::core::tensordot(const array &a, const array &b, const int axis=2, StreamOrDevice s={})'],['../group__ops.html#gad7fe00b566f89d607639c1a497cabbc6',1,'mlx::core::tensordot(const array &a, const array &b, const std::vector< int > &axes_a, const std::vector< int > &axes_b, StreamOrDevice s={})']]], - ['ternary_16',['ternary',['../namespacemlx_1_1core_1_1metal.html#a2d1c92ba6897c0a7a428fed63279b61f',1,'mlx::core::metal']]], - ['ternary_2eh_17',['ternary.h',['../common_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2ternary_8h.html',1,'(Global Namespace)']]], - ['ternary_5fg_18',['ternary_g',['../metal_2kernels_2ternary_8h.html#ab55f2a7fbbdae6798217f8253e4bacb3',1,'ternary.h']]], - ['ternary_5fg_5fnd_19',['ternary_g_nd',['../metal_2kernels_2ternary_8h.html#a94f4695f471837525e5ca995285bc6aa',1,'ternary.h']]], - ['ternary_5fg_5fnd1_20',['ternary_g_nd1',['../metal_2kernels_2ternary_8h.html#a1bd5918559850f3f80e3adee2391fe6a',1,'ternary.h']]], - ['ternary_5fg_5fnd2_21',['ternary_g_nd2',['../metal_2kernels_2ternary_8h.html#afdf0d9d0cb21fcb3f176500785076af8',1,'ternary.h']]], - ['ternary_5fg_5fnd3_22',['ternary_g_nd3',['../metal_2kernels_2ternary_8h.html#a113df0c8a841b0e986900d580644e047',1,'ternary.h']]], - ['ternary_5fop_5fgpu_23',['ternary_op_gpu',['../namespacemlx_1_1core.html#aa63e62b6d3906e4cac871d498515a1cd',1,'mlx::core']]], - ['ternary_5fop_5fgpu_5finplace_24',['ternary_op_gpu_inplace',['../namespacemlx_1_1core.html#a37645c0adccb3eb46844115def1a68d7',1,'mlx::core']]], - ['ternary_5fops_25',['ternary_ops',['../namespacemlx_1_1core_1_1metal.html#a11b593b07e9a33e5f78fe4695fb99ec9',1,'mlx::core::metal']]], - ['ternary_5fops_2eh_26',['ternary_ops.h',['../ternary__ops_8h.html',1,'']]], - ['ternary_5fv_27',['ternary_v',['../metal_2kernels_2ternary_8h.html#a83f93644d21ee774e06e8190d0725ccb',1,'ternary.h']]], - ['ternary_5fv2_28',['ternary_v2',['../metal_2kernels_2ternary_8h.html#a3e610f3b01966bdbf23fdfebe5d2c508',1,'ternary.h']]], - ['tgp_5fmem_5fsize_29',['tgp_mem_size',['../struct_g_e_m_v_kernel.html#a9ef4d0e62094d7033069f5dda5efb236',1,'GEMVKernel::tgp_mem_size'],['../struct_g_e_m_v_t_kernel.html#a48a09a21d7b822f380d040c752b785d7',1,'GEMVTKernel::tgp_mem_size'],['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a1ec583584e69dcbbb72106390a4fc5da',1,'mlx::steel::GEMMKernel::tgp_mem_size']]], - ['tgp_5fmem_5fsize_5fa_30',['tgp_mem_size_a',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#ac00b149d76a903c2f91b0f477dc5037f',1,'mlx::steel::GEMMKernel']]], - ['tgp_5fmem_5fsize_5fb_31',['tgp_mem_size_b',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a105af1069668028c6f1bc6d6dd162298',1,'mlx::steel::GEMMKernel']]], - ['tgp_5fpadding_5fa_32',['tgp_padding_a',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#ad547704ccbff6c2076abeffa6628c5a0',1,'mlx::steel::GEMMKernel']]], - ['tgp_5fpadding_5fb_33',['tgp_padding_b',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#ad1b03941e869017558423c08b08bc094',1,'mlx::steel::GEMMKernel']]], - ['tgp_5fsize_34',['tgp_size',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a9058ddb73e30e83fb9c548ba22817d64',1,'mlx::steel::GEMMKernel']]], - ['thread_35',['thread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a449de02bf2ac80d8fe2f208fa7eac359',1,'mlx::core::scheduler::StreamThread']]], - ['thread_5fcount_36',['thread_count',['../structpocketfft_1_1detail_1_1util.html#a3b012d5a19215bcd32cf6e228556fa87',1,'pocketfft::detail::util']]], - ['thread_5ffn_37',['thread_fn',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a06a62c21c1174e4eb4d242e50aad7adf',1,'mlx::core::scheduler::StreamThread']]], - ['thread_5fid_38',['thread_id',['../namespacepocketfft_1_1detail_1_1threading.html#aebe85d6273d92c7d3728e2c621ccc82b',1,'pocketfft::detail::threading']]], - ['thread_5fidx_39',['thread_idx',['../struct_quantized_block_loader.html#a50821537ea747bc03295a09bb0eef475',1,'QuantizedBlockLoader::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a70da26a715135d973f88371a70255be9',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#ac18de37cde1459595bfe18b0d5ef146d',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#ab1cb2ade639787243e0325dcd3dc0a11',1,'mlx::steel::Conv2DWeightBlockLoader::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a9642399b8066e29123524f36ebc7b482',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#acacdac168004c87fee27c8554ac905a7',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a401f0c7cf1588552556603c7ffba2316',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::thread_idx'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a08a517bc50caf41155b98be0690bfe44',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::thread_idx'],['../structmlx_1_1steel_1_1_block_loader.html#a064e2cc77e0b1cf0f8027929e031775b',1,'mlx::steel::BlockLoader::thread_idx']]], - ['thread_5fmap_40',['thread_map',['../namespacepocketfft_1_1detail_1_1threading.html#a4fcf674db39f0e2c1c59d48491daed6e',1,'pocketfft::detail::threading']]], - ['thread_5fpool_41',['thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html',1,'pocketfft::detail::threading::thread_pool'],['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a37a8121a99dd06a9d44b3e80ba0ea560',1,'pocketfft::detail::threading::thread_pool::thread_pool(size_t nthreads)'],['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#aefaadaa60c0183b862ad96338177a5e0',1,'pocketfft::detail::threading::thread_pool::thread_pool()'],['../namespacemlx_1_1core_1_1io.html#a05f27b765443a178a972abae772e863d',1,'mlx::core::io::thread_pool()']]], - ['thread_5freduce_42',['thread_reduce',['../reduce__row_8h.html#afd80a25fa84e6cc884dcc8698859ade1',1,'reduce_row.h']]], - ['thread_5fsort_5ft_43',['thread_sort_t',['../struct_block_merge_sort.html#ad2474d16721f4ceb954125728a0e2ea2',1,'BlockMergeSort']]], - ['thread_5fswap_44',['thread_swap',['../sort_8h.html#a6e8c2da4975a8001fd5ddf211a3058b7',1,'sort.h']]], - ['threadgroup_5freduce_45',['threadgroup_reduce',['../reduce__row_8h.html#aa146bb611069fd2892f03714fd1cc3cf',1,'reduce_row.h']]], - ['threadpool_46',['ThreadPool',['../class_thread_pool.html',1,'ThreadPool'],['../class_thread_pool.html#ac291710e33dbbed96ee20711080d506d',1,'ThreadPool::ThreadPool()']]], - ['threadpool_2eh_47',['threadpool.h',['../threadpool_8h.html',1,'']]], - ['threads_5fper_5ftg_48',['threads_per_tg',['../struct_read_writer.html#a64c58e358da22358df3075448ea23893',1,'ReadWriter']]], - ['threadsm_49',['threadsM',['../struct_g_e_m_v_kernel.html#a1dd943fcbf5e7be435fc36bed589a641',1,'GEMVKernel::threadsM'],['../struct_g_e_m_v_t_kernel.html#a4a53e73a581aa8881b1f86ce653519e6',1,'GEMVTKernel::threadsM']]], - ['threadsn_50',['threadsN',['../struct_g_e_m_v_kernel.html#a47bfab7d21dd18760d3e0937ad36b19d',1,'GEMVKernel::threadsN'],['../struct_g_e_m_v_t_kernel.html#ade6f15a9744616de9dd71498ad7e758d',1,'GEMVTKernel::threadsN']]], - ['threadsort_51',['ThreadSort',['../struct_thread_sort.html',1,'']]], - ['threefry_2eh_52',['threefry.h',['../threefry_8h.html',1,'']]], - ['threefry2x32_5fhash_53',['threefry2x32_hash',['../namespacemlx_1_1core_1_1random.html#ac7e92c89a2bac1b0bed922a3d4c3c66b',1,'mlx::core::random']]], - ['tile_54',['tile',['../group__ops.html#gab105a57b9a4d84496fe1e4d60e13d361',1,'mlx::core']]], - ['tile_5fstride_55',['tile_stride',['../struct_quantized_block_loader.html#ac3f651c1a645291d1037a2cc8ded2320',1,'QuantizedBlockLoader::tile_stride'],['../structmlx_1_1steel_1_1_block_loader.html#ab87876699d55473620c7ea99f9da911d',1,'mlx::steel::BlockLoader::tile_stride']]], - ['tile_5fstride_5fa_56',['tile_stride_a',['../structmlx_1_1steel_1_1_block_m_m_a.html#a8fddaa78913cdc8eea5e1cf7d2776330',1,'mlx::steel::BlockMMA']]], - ['tile_5fstride_5fb_57',['tile_stride_b',['../structmlx_1_1steel_1_1_block_m_m_a.html#ae3f35453b3afbaac9df64ad5966b34a4',1,'mlx::steel::BlockMMA']]], - ['tiles_5fm_58',['tiles_m',['../struct_m_l_x_fast_attention_params.html#a0df159c839fc27b9426b8ac4336cc0ad',1,'MLXFastAttentionParams::tiles_m'],['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a4c5e33edf70be99cf93ac5723c12eb24',1,'mlx::steel::ImplicitGemmConv2DParams::tiles_m'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#ad23a5a7f74cd5859741a36e4bc7823ca',1,'mlx::steel::GEMMParams::tiles_m'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a0970989624e17088d5326c2e198cb95b',1,'mlx::steel::GEMMSpiltKParams::tiles_m']]], - ['tiles_5fn_59',['tiles_n',['../struct_m_l_x_fast_attention_params.html#a608aa256216ac6d80af00209303d2029',1,'MLXFastAttentionParams::tiles_n'],['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a76f9f381e7187a993d65128b9b681b2d',1,'mlx::steel::ImplicitGemmConv2DParams::tiles_n'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a0e6b8b629232f1b43fbce9a395174bed',1,'mlx::steel::GEMMParams::tiles_n'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a5b46dfb9cee3606efa05d217349a20a6',1,'mlx::steel::GEMMSpiltKParams::tiles_n']]], - ['tm_60',['tm',['../structmlx_1_1steel_1_1_block_m_m_a.html#ab84d70540d09ce115794f343849f016f',1,'mlx::steel::BlockMMA']]], - ['tm_61',['TM',['../structmlx_1_1steel_1_1_block_m_m_a.html#aba5f749fdf32d8bd9d9e29f2a9ae4591',1,'mlx::steel::BlockMMA']]], - ['tm_5fstride_62',['TM_stride',['../structmlx_1_1steel_1_1_block_m_m_a.html#a5b0029866f493363942133b55bff7307',1,'mlx::steel::BlockMMA']]], - ['tn_63',['TN',['../structmlx_1_1steel_1_1_block_m_m_a.html#a706ae779c1f8d2eb18f19c248567d424',1,'mlx::steel::BlockMMA']]], - ['tn_64',['tn',['../structmlx_1_1steel_1_1_block_m_m_a.html#ad7a2033983cfbb474c50c2878057d8f1',1,'mlx::steel::BlockMMA']]], - ['tn_5fstride_65',['TN_stride',['../structmlx_1_1steel_1_1_block_m_m_a.html#a8b3690b383afd26563efb38f9c375e50',1,'mlx::steel::BlockMMA']]], - ['to_5fbnns_5fdtype_66',['to_bnns_dtype',['../namespacemlx_1_1core.html#a7a4193f37b1de9c33c31d1da09c77edb',1,'mlx::core']]], - ['to_5fstream_67',['to_stream',['../namespacemlx_1_1core.html#a4734a596e57434492ddfe79f2cb9dbf9',1,'mlx::core']]], - ['topk_68',['topk',['../group__ops.html#ga5487dd887c43e5341f3e68ffe47f0f5a',1,'mlx::core::topk(const array &a, int k, StreamOrDevice s={})'],['../group__ops.html#ga35b8436c79ff953f6c809598b646f498',1,'mlx::core::topk(const array &a, int k, int axis, StreamOrDevice s={})']]], - ['trace_69',['trace',['../group__ops.html#gabf786129c7660ed8d5acb5499bc6fefd',1,'mlx::core::trace(const array &a, int offset, int axis1, int axis2, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga5ed43c2dbf7d6cbddbaa2fd682deaafd',1,'mlx::core::trace(const array &a, int offset, int axis1, int axis2, StreamOrDevice s={})'],['../group__ops.html#gaf25c00108feaafaa6350a4434cb0062e',1,'mlx::core::trace(const array &a, StreamOrDevice s={})']]], - ['transformadd_70',['TransformAdd',['../structmlx_1_1steel_1_1_transform_add.html',1,'mlx::steel::TransformAdd< OutT, InT >'],['../structmlx_1_1steel_1_1_transform_add.html#a7c1b7292910b74281e5296b3dac157ae',1,'mlx::steel::TransformAdd::TransformAdd()']]], - ['transformaxpby_71',['TransformAxpby',['../structmlx_1_1steel_1_1_transform_axpby.html',1,'mlx::steel::TransformAxpby< OutT, InT >'],['../structmlx_1_1steel_1_1_transform_axpby.html#ad7d11c53de13646b725921391d15bbe9',1,'mlx::steel::TransformAxpby::TransformAxpby()']]], - ['transformnone_72',['TransformNone',['../structmlx_1_1steel_1_1_transform_none.html',1,'mlx::steel']]], - ['transforms_2eh_73',['transforms.h',['../backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html',1,'(Global Namespace)'],['../transforms_8h.html',1,'(Global Namespace)']]], - ['transforms_5fimpl_2eh_74',['transforms_impl.h',['../transforms__impl_8h.html',1,'']]], - ['transpose_75',['Transpose',['../classmlx_1_1core_1_1_transpose.html',1,'mlx::core::Transpose'],['../classmlx_1_1core_1_1_transpose.html#a1a9ba023584c61c7ac93d6dce536760a',1,'mlx::core::Transpose::Transpose()']]], - ['transpose_76',['transpose',['../group__ops.html#gac1869f3b7094869b44fe7ac4ce58638b',1,'mlx::core::transpose(const array &a, std::vector< int > axes, StreamOrDevice s={})'],['../group__ops.html#ga260ac332956f3a6bf1dfdb9095c84dc5',1,'mlx::core::transpose(const array &a, std::initializer_list< int > axes, StreamOrDevice s={})'],['../group__ops.html#ga68da0176fefbe0c0096783c6fd926c6a',1,'mlx::core::transpose(const array &a, StreamOrDevice s={})']]], - ['tri_77',['tri',['../group__ops.html#ga4f3389e5b89e70e862e7d2b40d6c7f78',1,'mlx::core::tri(int n, int m, int k, Dtype type, StreamOrDevice s={})'],['../group__ops.html#gac19a1bd6ed6d5c7bc9d258820189dbb5',1,'mlx::core::tri(int n, Dtype type, StreamOrDevice s={})']]], - ['tri_5finv_78',['tri_inv',['../namespacemlx_1_1core_1_1linalg.html#aba1994571326326717b5b5e38c2e0661',1,'mlx::core::linalg']]], - ['tril_79',['tril',['../group__ops.html#ga83e0bb45dc770cf014531d873b78c5a2',1,'mlx::core']]], - ['triu_80',['triu',['../group__ops.html#gaa9df5917876eeb0cb28b7fa81f880412',1,'mlx::core']]], - ['trows_81',['TROWS',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a2528ff5ed472e4ed35415ada42276b07',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::TROWS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a3957fb263fe040fe70683fd1d7b06487',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::TROWS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a94f0ce5bb7d87bc1fb6a7c2ba2b892d4',1,'mlx::steel::Conv2DWeightBlockLoader::TROWS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a789683f9ac9d9309d07c05f3bdedd2fd',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::TROWS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a5cefb1285ed13ad3490198e9303453de',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::TROWS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a2aff22af70f685f858adea73f5575cf7',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::TROWS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#acbc28f364381166faaeec2783dc88e10',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::TROWS']]], - ['trunc_82',['trunc',['../namespacemetal.html#a93cb75a11a362bfc8310ea19c554c887',1,'metal::trunc()'],['../namespacemetal_1_1fast.html#aa62e1075e86c626d97038f16e9433415',1,'metal::fast::trunc()'],['../namespacemetal_1_1precise.html#a334183e7a2dd49b983d072d1e8ee2b27',1,'metal::precise::trunc()']]], - ['truncated_5fnormal_83',['truncated_normal',['../namespacemlx_1_1core_1_1random.html#a00aa5746bac6d729d2ba9465153bb279',1,'mlx::core::random::truncated_normal(const array &lower, const array &upper, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a39663eda0fd7b274d01499a7b1c9035f',1,'mlx::core::random::truncated_normal(const array &lower, const array &upper, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['try_5fpop_84',['try_pop',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#aa3807d46a126d229f9054c779105ea43',1,'pocketfft::detail::threading::concurrent_queue']]], - ['two_85',['two',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a41877eab6fa3db7d7ed2cda9eba14251',1,'mlx::core::Log']]], - ['type_86',['type',['../structpocketfft_1_1detail_1_1add__vec.html#a7568dc83136c1b41eb71dcb78527227e',1,'pocketfft::detail::add_vec::type'],['../structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html#a257b1c81fb9f559c48ee90497013494e',1,'pocketfft::detail::add_vec< cmplx< T > >::type'],['../structpocketfft_1_1detail_1_1_exec_dcst.html#a9b170cbd74a9c6f45ac014ce349219ea',1,'pocketfft::detail::ExecDcst::type'],['../structmlx_1_1core_1_1_reduction_plan.html#a24e407f13d4d02156380ecc1a6748a76',1,'mlx::core::ReductionPlan::type'],['../structmlx_1_1core_1_1_device.html#a763264ec90f7f23c5dced36c3f0db2e5',1,'mlx::core::Device::type']]], - ['type_5fto_5fname_87',['type_to_name',['../namespacemlx_1_1core.html#af1fdfdaa5644394362e6baba30701bae',1,'mlx::core']]], - ['typetodtype_88',['TypeToDtype',['../structmlx_1_1core_1_1_type_to_dtype.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/all_15.js b/docs/build/html/search/all_15.js deleted file mode 100644 index 87804db8..00000000 --- a/docs/build/html/search/all_15.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['u_0',['u',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a7b774effe4a349c6dd82ad4f4f21d34c',1,'mlx::core::Dtype::u'],['../types_2bf16_8h.html#aa21e554721eddcf127b7fcfa7fdc56bd',1,'u: bf16.h'],['../fp16_8h.html#aa21e554721eddcf127b7fcfa7fdc56bd',1,'u: fp16.h']]], - ['uint16_1',['uint16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daaa00ef2ef85ff67b7b39339886f19044f',1,'mlx::core::Dtype::uint16'],['../namespacemlx_1_1core.html#a312a70c487366968af5e6cbf5038c812',1,'mlx::core::uint16']]], - ['uint16_5fto_5fbfloat16_2',['uint16_to_bfloat16',['../bf16__math_8h.html#a030d871474c0e7d907fccffcc8c047e0',1,'bf16_math.h']]], - ['uint32_3',['uint32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa3de84ad0700f2a1571f633d399e1900e',1,'mlx::core::Dtype::uint32'],['../namespacemlx_1_1core.html#ac63820d6fe10545907c33faf466a929e',1,'mlx::core::uint32']]], - ['uint64_4',['uint64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa2e8d31865e5d4b9d8611e1b991baed07',1,'mlx::core::Dtype::uint64'],['../namespacemlx_1_1core.html#a1f42e3dd4787d2ecec7114a12daefec8',1,'mlx::core::uint64']]], - ['uint8_5',['uint8',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa5f423e669d0a8f4ab7c4c3e6da27161a',1,'mlx::core::Dtype::uint8'],['../namespacemlx_1_1core.html#a9778d50afbf456b0bd738751243b3b68',1,'mlx::core::uint8']]], - ['unary_6',['unary',['../namespacemlx_1_1core_1_1metal.html#afac64fd56ac492d6baf6de7e8a00b039',1,'mlx::core::metal']]], - ['unary_2eh_7',['unary.h',['../common_2unary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2unary_8h.html',1,'(Global Namespace)'],['../metal_2unary_8h.html',1,'(Global Namespace)']]], - ['unary_5fg_8',['unary_g',['../metal_2kernels_2unary_8h.html#a0d73f9febd23148b2f9787dcaac12049',1,'unary.h']]], - ['unary_5fop_5fgpu_9',['unary_op_gpu',['../namespacemlx_1_1core.html#aba2b4accc059f30d4dca88db9f7a6e13',1,'mlx::core']]], - ['unary_5fop_5fgpu_5finplace_10',['unary_op_gpu_inplace',['../namespacemlx_1_1core.html#a668fde2bd280a88f63a68b68a343d375',1,'mlx::core']]], - ['unary_5fops_11',['unary_ops',['../namespacemlx_1_1core_1_1metal.html#a17b471fa52ea5f24ee63e081f46528f5',1,'mlx::core::metal']]], - ['unary_5fops_2eh_12',['unary_ops.h',['../unary__ops_8h.html',1,'']]], - ['unary_5fv_13',['unary_v',['../metal_2kernels_2unary_8h.html#ada52df4976078091cd7b47c152f326fb',1,'unary.h']]], - ['unary_5fv2_14',['unary_v2',['../metal_2kernels_2unary_8h.html#a95f7b9c0112cdc84ae10465fb74d29dd',1,'unary.h']]], - ['unaryprimitive_15',['UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html',1,'mlx::core::UnaryPrimitive'],['../classmlx_1_1core_1_1_unary_primitive.html#a189f6d4ed369f82a4b724a29eb056d4e',1,'mlx::core::UnaryPrimitive::UnaryPrimitive(Stream stream)'],['../classmlx_1_1core_1_1_unary_primitive.html#a9935cffc4f246d3d883bc3d26c5163f2',1,'mlx::core::UnaryPrimitive::UnaryPrimitive(const UnaryPrimitive &other)=delete'],['../classmlx_1_1core_1_1_unary_primitive.html#a780281fb04e2daf1be630c124bd605e3',1,'mlx::core::UnaryPrimitive::UnaryPrimitive(UnaryPrimitive &&other)=delete']]], - ['uniform_16',['Uniform',['../classmlx_1_1core_1_1_uniform.html',1,'mlx::core::Uniform'],['../classmlx_1_1core_1_1_uniform.html#a626aa1091aa77b4a32c02290106b85e1',1,'mlx::core::Uniform::Uniform()']]], - ['uniform_17',['uniform',['../namespacemlx_1_1core_1_1random.html#adaa626cf75ab891978954bd1eb79a38b',1,'mlx::core::random::uniform(const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#ac0dd00f7e37377d621f9f5bfb5a3f8e4',1,'mlx::core::random::uniform(T low, U high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a2922e133d9f82dcf925bae0a784cc4a7',1,'mlx::core::random::uniform(const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a133d2855ff4d8daf41029cffdf43cdf9',1,'mlx::core::random::uniform(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['unscheduled_18',['unscheduled',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078ae8a9988458b0355001674020a45656fb',1,'mlx::core::array']]], - ['unsignedinteger_19',['unsignedinteger',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da9c035d4e66b2c72f583cde964cf3a0d3',1,'mlx::core::Dtype::unsignedinteger'],['../namespacemlx_1_1core.html#a42e9706a5521bb25eaf12ccad94bfc81',1,'mlx::core::unsignedinteger']]], - ['use_5fout_5fsource_20',['use_out_source',['../steel__gemm__fused_8h.html#a3fe4e4382bda8a419557a5e6f77bc084',1,'steel_gemm_fused.h']]], - ['util_21',['util',['../structpocketfft_1_1detail_1_1util.html',1,'pocketfft::detail']]], - ['utils_22',['utils',['../namespacemlx_1_1core_1_1metal.html#a529dc6c2d4a37ba544b66b2c3cd792cc',1,'mlx::core::metal']]], - ['utils_2eh_23',['utils.h',['../backend_2accelerate_2utils_8h.html',1,'(Global Namespace)'],['../backend_2common_2utils_8h.html',1,'(Global Namespace)'],['../backend_2metal_2kernels_2steel_2utils_8h.html',1,'(Global Namespace)'],['../backend_2metal_2kernels_2utils_8h.html',1,'(Global Namespace)'],['../backend_2metal_2utils_8h.html',1,'(Global Namespace)'],['../utils_8h.html',1,'(Global Namespace)']]] -]; diff --git a/docs/build/html/search/all_16.js b/docs/build/html/search/all_16.js deleted file mode 100644 index fdaa44ca..00000000 --- a/docs/build/html/search/all_16.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['v_0',['V',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a5206560a306a2e085a437fd258eb57ce',1,'mlx::core::Dtype']]], - ['v_1',['v',['../structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html#afbef88bfb901a71e8423de911b7c7347',1,'mlx::steel::BlockLoader::ReadVector']]], - ['val_2',['Val',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1da',1,'mlx::core::Dtype']]], - ['val_3',['val',['../structpocketfft_1_1detail_1_1_v_l_e_n.html#ab1fdc340dedde723e636746c828a4534',1,'pocketfft::detail::VLEN::val'],['../structmlx__atomic.html#a6f6651b8dd8149917c50cd99b13c6747',1,'mlx_atomic::val'],['../structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html#a8dbf729fcd8c4a16e41b546c7405543d',1,'mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >::val'],['../structmlx_1_1core_1_1_dtype.html#ac80e96d51ba9e1ce651cac2a6d3b63bb',1,'mlx::core::Dtype::val']]], - ['val_5ft_4',['val_t',['../struct_kernel_merge_sort.html#a4e3f09896275956fc4c23e1f157dca3b',1,'KernelMergeSort']]], - ['valid_5',['valid',['../classmlx_1_1core_1_1_event.html#aa77afd9669e2ef9d5e9ae1c2c6fd24fa',1,'mlx::core::Event']]], - ['value_6',['value',['../classmlx_1_1core_1_1_event.html#ab71c7baee3d1d02ad6a2001bbf90b970',1,'mlx::core::Event']]], - ['value_5fand_5fgrad_7',['value_and_grad',['../namespacemlx_1_1core.html#a36681ec79fbad0103f32ec06c2885638',1,'mlx::core::value_and_grad'],['../namespacemlx_1_1core.html#abf49b337a00997231c0f7fd389efa8f3',1,'mlx::core::value_and_grad(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &argnums)'],['../namespacemlx_1_1core.html#a7b987f404b8699de00f9e0099ab6b1b0',1,'mlx::core::value_and_grad(const std::function< std::vector< array >(const std::vector< array > &)> &fun, int argnum=0)'],['../namespacemlx_1_1core.html#a7620f1ae298127cb6181db9162f012a7',1,'mlx::core::value_and_grad(const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)'],['../namespacemlx_1_1core.html#a2f69ffc30d66b1fca8f24b65be161a51',1,'mlx::core::value_and_grad(const std::function< array(const std::vector< array > &)> &fun, int argnum=0)']]], - ['value_5ftype_8',['value_type',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#ab86a2740ed9ce3199135372ff1d88c76',1,'pocketfft::detail::threading::aligned_allocator::value_type'],['../structmlx_1_1core_1_1array_1_1_array_iterator.html#ae24fe304397e961687d0d4c7012b8ae4',1,'mlx::core::array::ArrayIterator::value_type']]], - ['valueandgradfn_9',['ValueAndGradFn',['../namespacemlx_1_1core.html#ab79d66ddf1ec38b2f2c01234892a2230',1,'mlx::core']]], - ['var_10',['var',['../group__ops.html#ga7e133df686439588a8cd1fb10ce0c6e9',1,'mlx::core::var(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#ga7d7b38d118fa2613214078ef0f7d5a42',1,'mlx::core::var(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga78ddeb966cbe7a5b0aa17e1de43025f2',1,'mlx::core::var(const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#ga4fbf3e3f98f2e4956faf87af320aa9d0',1,'mlx::core::var(const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})']]], - ['vec_5fsize_11',['vec_size',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#adcc83bf6c02391cc2375e55c06a1c9a4',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::vec_size'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a71c313e1597a2bb99f7b07d434e119d2',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::vec_size'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a10109dc9553207f5a365799e4969c6d2',1,'mlx::steel::Conv2DWeightBlockLoader::vec_size'],['../structmlx_1_1steel_1_1_channel_helper.html#a2b24f991a9380fdad6b51a038770b925',1,'mlx::steel::ChannelHelper::vec_size'],['../structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html#a71449551bbfe56058440755dfd50fc75',1,'mlx::steel::ChannelHelper< 1 >::vec_size'],['../structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html#acfb18991a77a9d1d4a79918ac5f387af',1,'mlx::steel::ChannelHelper< 2 >::vec_size'],['../structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html#a5cb83774601c29564a6bbc010fc0bf7f',1,'mlx::steel::ChannelHelper< 3 >::vec_size'],['../structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html#af28cdbe2a3c027d95832de07f60448ca',1,'mlx::steel::ChannelHelper< 4 >::vec_size'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a6b0b18428516d1d6dcae3beb3faee81c',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::vec_size'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a006153d274aa13d5fd4448b4607fff3a',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::vec_size'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a1587047caa339cf5b2c06adc4b332ab8',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::vec_size'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a08dba753ec7c8ea2892775746933b3e7',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::vec_size'],['../structmlx_1_1steel_1_1_block_loader.html#a58bdf9b9c81962733e22ecdeae28c092',1,'mlx::steel::BlockLoader::vec_size']]], - ['vector_12',['Vector',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a57dea6f5039281b7fee517fc43bf3110',1,'mlx::core']]], - ['view_13',['View',['../classmlx_1_1core_1_1_view.html',1,'mlx::core::View'],['../classmlx_1_1core_1_1_view.html#ad7eed156c308e9a29a8b41f965ec941e',1,'mlx::core::View::View()']]], - ['view_14',['view',['../group__ops.html#ga3602aa91b7b124a0b41ec1b2137a1b02',1,'mlx::core']]], - ['vjp_15',['vjp',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abbf6d1d63dcda207ad7d9eeb4fc36225',1,'mlx::core::distributed::AllReduce::vjp()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#aa5eff6fc128b71220899aab8ab9116fb',1,'mlx::core::distributed::AllGather::vjp()'],['../classmlx_1_1core_1_1fast_1_1_custom.html#a74be4bcd0382f7f6400bf73fd5569c91',1,'mlx::core::fast::Custom::vjp()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#aacfbbbc15fcee0a5ce4f519ca3cca5eb',1,'mlx::core::fast::RMSNorm::vjp()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#ae5e1b5df0705a6b1d141691a4396b0b6',1,'mlx::core::fast::LayerNorm::vjp()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#ad999105414badd66c8fd9e069454a533',1,'mlx::core::fast::RoPE::vjp()'],['../classmlx_1_1core_1_1_primitive.html#a1dcb6807326eeab62474c6a0e3836d42',1,'mlx::core::Primitive::vjp()'],['../classmlx_1_1core_1_1_abs.html#aa2dd8ec0989e716b77394ac349b34592',1,'mlx::core::Abs::vjp()'],['../classmlx_1_1core_1_1_add.html#ac28e581862880e24ed2b99bb6a916607',1,'mlx::core::Add::vjp()'],['../classmlx_1_1core_1_1_add_m_m.html#ac1562a37cec6928e01281926ebeb47c6',1,'mlx::core::AddMM::vjp()'],['../classmlx_1_1core_1_1_arc_cos.html#a78e73e5e639d1249c7fe9614bf157c92',1,'mlx::core::ArcCos::vjp()'],['../classmlx_1_1core_1_1_arc_cosh.html#a856c677f16e2b3f2edd2491e35db2d26',1,'mlx::core::ArcCosh::vjp()'],['../classmlx_1_1core_1_1_arc_sin.html#ab4057cd5ef1a8359f97493018e10d3a1',1,'mlx::core::ArcSin::vjp()'],['../classmlx_1_1core_1_1_arc_sinh.html#a7988ee5b9e1e7e498dcab73d61ba147e',1,'mlx::core::ArcSinh::vjp()'],['../classmlx_1_1core_1_1_arc_tan.html#a5fefc3634b96a67ff8ae011a8ee180c2',1,'mlx::core::ArcTan::vjp()'],['../classmlx_1_1core_1_1_arc_tan2.html#a99840c282e37b2b2a9c312e6e8ade1d2',1,'mlx::core::ArcTan2::vjp()'],['../classmlx_1_1core_1_1_arc_tanh.html#a07da5797f7aaf3dfe43bf24e8562ac72',1,'mlx::core::ArcTanh::vjp()'],['../classmlx_1_1core_1_1_as_type.html#ac38a4f889311a3b5e5be9a67dcb93e18',1,'mlx::core::AsType::vjp()'],['../classmlx_1_1core_1_1_as_strided.html#a34783284c9b2f5b4a62c3c3ee5dd4062',1,'mlx::core::AsStrided::vjp()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6131ed1c317ff8700a3e9b13fdaa9d61',1,'mlx::core::BitwiseBinary::vjp()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#a1adf20087ee2f685bf39c2724b8e7120',1,'mlx::core::BlockMaskedMM::vjp()'],['../classmlx_1_1core_1_1_gather_m_m.html#a76c9f27c57354f6230b43944882e1bda',1,'mlx::core::GatherMM::vjp()'],['../classmlx_1_1core_1_1_broadcast.html#a0318847c9be40f00b23907ad56037d18',1,'mlx::core::Broadcast::vjp()'],['../classmlx_1_1core_1_1_ceil.html#ac2f5a2bd84b8f013e5ce688419a88acb',1,'mlx::core::Ceil::vjp()'],['../classmlx_1_1core_1_1_compiled.html#a32462e65c52f84b708188130cc508133',1,'mlx::core::Compiled::vjp()'],['../classmlx_1_1core_1_1_concatenate.html#a8155db9100ec3b8bd0bc94baeaeee3b0',1,'mlx::core::Concatenate::vjp()'],['../classmlx_1_1core_1_1_convolution.html#af8eb9c0c055ad20aa74b547016917690',1,'mlx::core::Convolution::vjp()'],['../classmlx_1_1core_1_1_copy.html#a6c4dee582001e9983e9517485ee37efd',1,'mlx::core::Copy::vjp()'],['../classmlx_1_1core_1_1_cos.html#a51d84113728e651ef9d4a1fe671c4d00',1,'mlx::core::Cos::vjp()'],['../classmlx_1_1core_1_1_cosh.html#a0791abd4305a333fb3b181a5357ce0f4',1,'mlx::core::Cosh::vjp()'],['../classmlx_1_1core_1_1_custom_transforms.html#aa1da36cef632df767cd9809d6cf06209',1,'mlx::core::CustomTransforms::vjp()'],['../classmlx_1_1core_1_1_depends.html#a02996fa45f01f7cb9f37074d5f8ccab0',1,'mlx::core::Depends::vjp()'],['../classmlx_1_1core_1_1_divide.html#ad3af7c70cad22c1a1a75b4a78ef793b6',1,'mlx::core::Divide::vjp()'],['../classmlx_1_1core_1_1_div_mod.html#a8c914a07f666a1d9377a27ed5d55e7c1',1,'mlx::core::DivMod::vjp()'],['../classmlx_1_1core_1_1_select.html#a9b522487b78fceeca7f827cd1c29a9a3',1,'mlx::core::Select::vjp()'],['../classmlx_1_1core_1_1_remainder.html#ab18f7bca1027ae71847a50da0933cec6',1,'mlx::core::Remainder::vjp()'],['../classmlx_1_1core_1_1_equal.html#af3c1bfcd1bf50922fc00e302bb193736',1,'mlx::core::Equal::vjp()'],['../classmlx_1_1core_1_1_erf.html#a1f529e95a42a2d69a8b18979d3ee2909',1,'mlx::core::Erf::vjp()'],['../classmlx_1_1core_1_1_erf_inv.html#a48afff12a58ddefae7ae0245c3580189',1,'mlx::core::ErfInv::vjp()'],['../classmlx_1_1core_1_1_exp.html#a94b9b7d137c3640d290b96c5e8b7e1a8',1,'mlx::core::Exp::vjp()'],['../classmlx_1_1core_1_1_expm1.html#af6ce416169190479c9792bb9cdbe2f43',1,'mlx::core::Expm1::vjp()'],['../classmlx_1_1core_1_1_f_f_t.html#aafc895614a6e368c0e6d64af20d01090',1,'mlx::core::FFT::vjp()'],['../classmlx_1_1core_1_1_floor.html#a589e2cf99b6fd1a5ba85534a2a31338e',1,'mlx::core::Floor::vjp()'],['../classmlx_1_1core_1_1_full.html#a49e76e7a8641f990701abc1b3bd49969',1,'mlx::core::Full::vjp()'],['../classmlx_1_1core_1_1_gather.html#aacf612a8f5f1cdbbfd19707d8d33c426',1,'mlx::core::Gather::vjp()'],['../classmlx_1_1core_1_1_greater.html#a341766a8a7e41d2a1160d35d4e781679',1,'mlx::core::Greater::vjp()'],['../classmlx_1_1core_1_1_greater_equal.html#a62f07a4ac54c708307c82aac0e5693ee',1,'mlx::core::GreaterEqual::vjp()'],['../classmlx_1_1core_1_1_hadamard.html#af4134775427b8998d66f489468b98656',1,'mlx::core::Hadamard::vjp()'],['../classmlx_1_1core_1_1_less.html#aaf205d389b5e602e0814b68f66de8f50',1,'mlx::core::Less::vjp()'],['../classmlx_1_1core_1_1_less_equal.html#aab2aab7590c299885e815c18eedd1028',1,'mlx::core::LessEqual::vjp()'],['../classmlx_1_1core_1_1_log.html#a40885dccfbf928c4d035881be1d49280',1,'mlx::core::Log::vjp()'],['../classmlx_1_1core_1_1_log1p.html#a3113c1d2b4c5e73d0b470f42dc48a880',1,'mlx::core::Log1p::vjp()'],['../classmlx_1_1core_1_1_logical_not.html#af2c3c241cf3910fbaba013c69d052a50',1,'mlx::core::LogicalNot::vjp()'],['../classmlx_1_1core_1_1_logical_and.html#ae42f8fc454577b0fd6410cae9d5f3b54',1,'mlx::core::LogicalAnd::vjp()'],['../classmlx_1_1core_1_1_logical_or.html#a51aed488f52d5031998689af9cb17847',1,'mlx::core::LogicalOr::vjp()'],['../classmlx_1_1core_1_1_log_add_exp.html#ae231af0ed24a93eb647ee58c2d2b20b4',1,'mlx::core::LogAddExp::vjp()'],['../classmlx_1_1core_1_1_matmul.html#a524136cca481598ea20894d85ca66bb0',1,'mlx::core::Matmul::vjp()'],['../classmlx_1_1core_1_1_maximum.html#a7de15d7b28784e24bbfc7e85ddcbcff3',1,'mlx::core::Maximum::vjp()'],['../classmlx_1_1core_1_1_minimum.html#a48a0cbe3a6c4f7473c00e343f63b5204',1,'mlx::core::Minimum::vjp()'],['../classmlx_1_1core_1_1_multiply.html#a74b7556ec03e2c3d3f971666d06f5db1',1,'mlx::core::Multiply::vjp()'],['../classmlx_1_1core_1_1_negative.html#a889585f056d33bda30c30311257af52a',1,'mlx::core::Negative::vjp()'],['../classmlx_1_1core_1_1_not_equal.html#a0361f29f4ae1235bdf3f3304527e2d4b',1,'mlx::core::NotEqual::vjp()'],['../classmlx_1_1core_1_1_pad.html#ad8a7e547644f2717a24322968e971038',1,'mlx::core::Pad::vjp()'],['../classmlx_1_1core_1_1_partition.html#a7110772b6cd2d430a2b825cf5c952ca9',1,'mlx::core::Partition::vjp()'],['../classmlx_1_1core_1_1_power.html#a1453bb8307d6ff33134f1e00263bf082',1,'mlx::core::Power::vjp()'],['../classmlx_1_1core_1_1_quantized_matmul.html#acb975e272b4a88ab232ef7f7c3a2bf26',1,'mlx::core::QuantizedMatmul::vjp()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#ae08a4b7d28902d46f39e66beeb0e23ab',1,'mlx::core::GatherQMM::vjp()'],['../classmlx_1_1core_1_1_reshape.html#ab17294ecc6b5d4e89626fb48c7516365',1,'mlx::core::Reshape::vjp()'],['../classmlx_1_1core_1_1_reduce.html#a684883d2a96315f548ca769510e28e4e',1,'mlx::core::Reduce::vjp()'],['../classmlx_1_1core_1_1_round.html#af8f085e08b7fa8840c52a20b12ca35ce',1,'mlx::core::Round::vjp()'],['../classmlx_1_1core_1_1_scan.html#aaf13f72620b4b5d6a20e1228930e848e',1,'mlx::core::Scan::vjp()'],['../classmlx_1_1core_1_1_scatter.html#a0b51287fba789bb139ed61d40a0c636a',1,'mlx::core::Scatter::vjp()'],['../classmlx_1_1core_1_1_sigmoid.html#aac2f56a4c8362e36a28e232758ca52cf',1,'mlx::core::Sigmoid::vjp()'],['../classmlx_1_1core_1_1_sign.html#aa60ac52edd739fbdf388a997acd01bce',1,'mlx::core::Sign::vjp()'],['../classmlx_1_1core_1_1_sin.html#aedefe550ab4b0687858981bc0bcfbfa0',1,'mlx::core::Sin::vjp()'],['../classmlx_1_1core_1_1_sinh.html#a6b39fdd429bbb4de389e7c904fd561f0',1,'mlx::core::Sinh::vjp()'],['../classmlx_1_1core_1_1_slice.html#a291746a527ff991b66249fb2b54b685f',1,'mlx::core::Slice::vjp()'],['../classmlx_1_1core_1_1_slice_update.html#aedcdc60a0477997a96306c02b66d3f77',1,'mlx::core::SliceUpdate::vjp()'],['../classmlx_1_1core_1_1_softmax.html#abb68c311c45ee422a7c966accde9041b',1,'mlx::core::Softmax::vjp()'],['../classmlx_1_1core_1_1_sort.html#a3a8900dce53ee4eb7a1b83806e629358',1,'mlx::core::Sort::vjp()'],['../classmlx_1_1core_1_1_split.html#a7e8730f9cffa9872fff6f8d577031674',1,'mlx::core::Split::vjp()'],['../classmlx_1_1core_1_1_square.html#abcd9516da7f02dc906368c23b0bca263',1,'mlx::core::Square::vjp()'],['../classmlx_1_1core_1_1_sqrt.html#a08a21bd2c3a016f042d95aca294e68f3',1,'mlx::core::Sqrt::vjp()'],['../classmlx_1_1core_1_1_subtract.html#a3a3322be7c3bcaa0397cf099091df16b',1,'mlx::core::Subtract::vjp()'],['../classmlx_1_1core_1_1_tan.html#a4639836cff03d73c769387d6943e92d7',1,'mlx::core::Tan::vjp()'],['../classmlx_1_1core_1_1_tanh.html#afe7b05e2b36b99c3a1b66f0cd3544e95',1,'mlx::core::Tanh::vjp()'],['../classmlx_1_1core_1_1_transpose.html#ac7805aa29b34afdf8852554f1e759f80',1,'mlx::core::Transpose::vjp()'],['../namespacemlx_1_1core.html#a1b33e2c2e3471420490cf0be2de6de18',1,'mlx::core::vjp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)'],['../namespacemlx_1_1core.html#a2065a11249c3f4356ffd69b7a8c487ff',1,'mlx::core::vjp(const std::function< array(const array &)> &fun, const array &primal, const array &cotangent)']]], - ['vlen_16',['VLEN',['../structpocketfft_1_1detail_1_1_v_l_e_n.html',1,'pocketfft::detail']]], - ['vmap_17',['vmap',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a3f2dc71859847ca675ec4bfbe125035a',1,'mlx::core::distributed::AllReduce::vmap()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#ad532d1d51f089dec3c84799b724ea031',1,'mlx::core::distributed::AllGather::vmap()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a5cfb66191b9e8b86649da77af55b0f93',1,'mlx::core::distributed::Send::vmap()'],['../classmlx_1_1core_1_1fast_1_1_custom.html#a7f4c3a4c48c6807faa36fb31e39dad8d',1,'mlx::core::fast::Custom::vmap()'],['../classmlx_1_1core_1_1_primitive.html#ac632b9619dd7a6a0f177bd36202e8103',1,'mlx::core::Primitive::vmap()'],['../classmlx_1_1core_1_1_abs.html#a4c9c98f1d71432fd3752ad9a6a8e7f2f',1,'mlx::core::Abs::vmap()'],['../classmlx_1_1core_1_1_add.html#a0e557d4d896153f84a25532562e4c646',1,'mlx::core::Add::vmap()'],['../classmlx_1_1core_1_1_add_m_m.html#a73ce80b3a37ec2523943028d50ebce81',1,'mlx::core::AddMM::vmap()'],['../classmlx_1_1core_1_1_arc_cos.html#a7548e23ace6827674aa6d284d44ccf83',1,'mlx::core::ArcCos::vmap()'],['../classmlx_1_1core_1_1_arc_cosh.html#af8ff78e910a9e485a203e1d3347bd461',1,'mlx::core::ArcCosh::vmap()'],['../classmlx_1_1core_1_1_arc_sin.html#a7cabb1e5a2bda44944378822c671ec82',1,'mlx::core::ArcSin::vmap()'],['../classmlx_1_1core_1_1_arc_sinh.html#a9e72b9751939387c333b5d4e19a37f6d',1,'mlx::core::ArcSinh::vmap()'],['../classmlx_1_1core_1_1_arc_tan.html#a1fb921554544a56498bc54f82e4a0556',1,'mlx::core::ArcTan::vmap()'],['../classmlx_1_1core_1_1_arc_tan2.html#ae02cb9fbf25e93dc1d7fbc9e3fb28634',1,'mlx::core::ArcTan2::vmap()'],['../classmlx_1_1core_1_1_arc_tanh.html#a6ddcae68873559211cb91e7740dfc040',1,'mlx::core::ArcTanh::vmap()'],['../classmlx_1_1core_1_1_arg_partition.html#a441093795bcc31495ab5fbc9957b740a',1,'mlx::core::ArgPartition::vmap()'],['../classmlx_1_1core_1_1_arg_reduce.html#abfec42fa06ea15edaf393593751fb1ba',1,'mlx::core::ArgReduce::vmap()'],['../classmlx_1_1core_1_1_arg_sort.html#a3522bbbe4626a467394c1a8a9d7ac34e',1,'mlx::core::ArgSort::vmap()'],['../classmlx_1_1core_1_1_as_type.html#a7ebaf86fd6cad4a1ecfd7cde1ee0b0cc',1,'mlx::core::AsType::vmap()'],['../classmlx_1_1core_1_1_bitwise_binary.html#aa10be55f05bc1868bf4b375dc475f965',1,'mlx::core::BitwiseBinary::vmap()'],['../classmlx_1_1core_1_1_broadcast.html#aee4c71c2588ad01eb57e10f346cd666f',1,'mlx::core::Broadcast::vmap()'],['../classmlx_1_1core_1_1_ceil.html#ae86819990b43bdb0c2b3a25719b3a7a4',1,'mlx::core::Ceil::vmap()'],['../classmlx_1_1core_1_1_compiled.html#a732e7548f53977b4513bb7f30a04c30d',1,'mlx::core::Compiled::vmap()'],['../classmlx_1_1core_1_1_concatenate.html#a58c54dcf8e4b045d25edd3afc2caffc1',1,'mlx::core::Concatenate::vmap()'],['../classmlx_1_1core_1_1_conjugate.html#a2c7632c8ae0ca07777e23a0a79344e60',1,'mlx::core::Conjugate::vmap()'],['../classmlx_1_1core_1_1_copy.html#a669b10253c15b769d90058d1ad7d0e61',1,'mlx::core::Copy::vmap()'],['../classmlx_1_1core_1_1_cos.html#aec9460daf0131156734013d03b230cd6',1,'mlx::core::Cos::vmap()'],['../classmlx_1_1core_1_1_cosh.html#a1ab2386e7d96219b6e4a525f7dac0406',1,'mlx::core::Cosh::vmap()'],['../classmlx_1_1core_1_1_custom_transforms.html#a906a2ff30d9c5281fbf1fa927e4c021b',1,'mlx::core::CustomTransforms::vmap()'],['../classmlx_1_1core_1_1_divide.html#a83e7da52831165b3a026e97b63770242',1,'mlx::core::Divide::vmap()'],['../classmlx_1_1core_1_1_div_mod.html#ae709e0fdd83994bd1d156e0d0e6a7942',1,'mlx::core::DivMod::vmap()'],['../classmlx_1_1core_1_1_select.html#a84e80361c8cf02536b4b98098793550f',1,'mlx::core::Select::vmap()'],['../classmlx_1_1core_1_1_remainder.html#a79867e1099a2e3c2d3e87407b2ab6e3d',1,'mlx::core::Remainder::vmap()'],['../classmlx_1_1core_1_1_equal.html#aea9cc3c88924ac824d72c39c2e83b0ca',1,'mlx::core::Equal::vmap()'],['../classmlx_1_1core_1_1_erf.html#abe554f553356654a3e800ba368108aaa',1,'mlx::core::Erf::vmap()'],['../classmlx_1_1core_1_1_erf_inv.html#ad5d7634e8568af8cc4a54a558a48d0e9',1,'mlx::core::ErfInv::vmap()'],['../classmlx_1_1core_1_1_exp.html#a0fcd579fe148b4c3dbc72e514b81bb37',1,'mlx::core::Exp::vmap()'],['../classmlx_1_1core_1_1_expm1.html#aa4caa848b2ea97e71ee3dd33de039296',1,'mlx::core::Expm1::vmap()'],['../classmlx_1_1core_1_1_f_f_t.html#ac32d6cc9b67289124f855ea68a61ede1',1,'mlx::core::FFT::vmap()'],['../classmlx_1_1core_1_1_floor.html#aea4dc79a65774990e775ad49519a5d10',1,'mlx::core::Floor::vmap()'],['../classmlx_1_1core_1_1_full.html#afc57ab6bd9ebdbbf042af54a59785d95',1,'mlx::core::Full::vmap()'],['../classmlx_1_1core_1_1_gather.html#abab0c4c204e66489825ce80d2194a275',1,'mlx::core::Gather::vmap()'],['../classmlx_1_1core_1_1_greater.html#a6d8267411fc4951de781f9e8e6c53aa0',1,'mlx::core::Greater::vmap()'],['../classmlx_1_1core_1_1_greater_equal.html#ab0e1be93eb01b0ce7fa83e953f5e3e1d',1,'mlx::core::GreaterEqual::vmap()'],['../classmlx_1_1core_1_1_hadamard.html#a9f1a172e6246859e813002abe9b8f99c',1,'mlx::core::Hadamard::vmap()'],['../classmlx_1_1core_1_1_less.html#a5fee5956cf087d8405359121aa62ba7e',1,'mlx::core::Less::vmap()'],['../classmlx_1_1core_1_1_less_equal.html#a3d5df21db184f2b7620cda9da1684480',1,'mlx::core::LessEqual::vmap()'],['../classmlx_1_1core_1_1_log.html#a007ddbcf911093231f607a8b9ed5cd49',1,'mlx::core::Log::vmap()'],['../classmlx_1_1core_1_1_log1p.html#a7122576f95ce479926bbbbc690891f71',1,'mlx::core::Log1p::vmap()'],['../classmlx_1_1core_1_1_logical_not.html#a5308a271619ee74df561b0aaf525915d',1,'mlx::core::LogicalNot::vmap()'],['../classmlx_1_1core_1_1_logical_and.html#aacc5f6f53ffc327b7771485e3da2a4e5',1,'mlx::core::LogicalAnd::vmap()'],['../classmlx_1_1core_1_1_logical_or.html#a6e2e77e6aaf47872b2e96b151c32daf3',1,'mlx::core::LogicalOr::vmap()'],['../classmlx_1_1core_1_1_log_add_exp.html#a82190aa1421a9734b6e9480debffac78',1,'mlx::core::LogAddExp::vmap()'],['../classmlx_1_1core_1_1_matmul.html#a3a1c6e70bac300240760fe41a58340c2',1,'mlx::core::Matmul::vmap()'],['../classmlx_1_1core_1_1_maximum.html#ab664918e0d71cfec1318a9879e78c5d3',1,'mlx::core::Maximum::vmap()'],['../classmlx_1_1core_1_1_minimum.html#adab0f31acf68075a0be908d8eb882980',1,'mlx::core::Minimum::vmap()'],['../classmlx_1_1core_1_1_multiply.html#ae7e82c8fc8cbaf4e00c27eb54fac7dbf',1,'mlx::core::Multiply::vmap()'],['../classmlx_1_1core_1_1_negative.html#a1f8a6079e272f1a0599f88a1a8419cf0',1,'mlx::core::Negative::vmap()'],['../classmlx_1_1core_1_1_not_equal.html#ab8b57932f03c8eee664bf89adeaa43b5',1,'mlx::core::NotEqual::vmap()'],['../classmlx_1_1core_1_1_number_of_elements.html#a977d83eae845b8bd8c0b98b48cb1c6c2',1,'mlx::core::NumberOfElements::vmap()'],['../classmlx_1_1core_1_1_pad.html#a85658812a0f3275ba3eb74b7c75686cf',1,'mlx::core::Pad::vmap()'],['../classmlx_1_1core_1_1_partition.html#aa0cc55e4d4d2cb5d129d32832321df2c',1,'mlx::core::Partition::vmap()'],['../classmlx_1_1core_1_1_power.html#a5e22749592413a9adbdc877b03b87c8f',1,'mlx::core::Power::vmap()'],['../classmlx_1_1core_1_1_quantized_matmul.html#a3434394140177b285f971c9ffe7e8763',1,'mlx::core::QuantizedMatmul::vmap()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a13ce5e138ebddb8780a034452f68892f',1,'mlx::core::GatherQMM::vmap()'],['../classmlx_1_1core_1_1_random_bits.html#a0dc12f053c6492f934bc18031412c415',1,'mlx::core::RandomBits::vmap()'],['../classmlx_1_1core_1_1_reshape.html#ae239dd3c6cab147e4af572dc58204f9d',1,'mlx::core::Reshape::vmap()'],['../classmlx_1_1core_1_1_reduce.html#abab1b5aa01ccad44f213f510c3596b38',1,'mlx::core::Reduce::vmap()'],['../classmlx_1_1core_1_1_round.html#a6fad8799a7982e1ccbe05be7cc38a7fd',1,'mlx::core::Round::vmap()'],['../classmlx_1_1core_1_1_scan.html#a297c7cc89c9bf9d186ebdebb634c7804',1,'mlx::core::Scan::vmap()'],['../classmlx_1_1core_1_1_scatter.html#a696c38b373a7a7c71bc112bd1117e322',1,'mlx::core::Scatter::vmap()'],['../classmlx_1_1core_1_1_sigmoid.html#a12712c23037e38192cbccd2d4b14cc85',1,'mlx::core::Sigmoid::vmap()'],['../classmlx_1_1core_1_1_sign.html#aa7296045907015b4e0ae8a93e5e6e295',1,'mlx::core::Sign::vmap()'],['../classmlx_1_1core_1_1_sin.html#a45533996f3d72d9dd97d4c61cd684fba',1,'mlx::core::Sin::vmap()'],['../classmlx_1_1core_1_1_sinh.html#ae171df22bc34c32e31b8135dc4caa788',1,'mlx::core::Sinh::vmap()'],['../classmlx_1_1core_1_1_slice.html#ae33583b0db22fcfeae34dfe1c0e3eaa2',1,'mlx::core::Slice::vmap()'],['../classmlx_1_1core_1_1_slice_update.html#adbf1c76de6ab2f986758530d351d6fa3',1,'mlx::core::SliceUpdate::vmap()'],['../classmlx_1_1core_1_1_softmax.html#ad22d3dcc71054d3dba529cf2dc981e19',1,'mlx::core::Softmax::vmap()'],['../classmlx_1_1core_1_1_sort.html#abfabb9e625cc0cb9335c7454ed27505c',1,'mlx::core::Sort::vmap()'],['../classmlx_1_1core_1_1_split.html#ab7c40e02a842e83bdb4698608472c7a6',1,'mlx::core::Split::vmap()'],['../classmlx_1_1core_1_1_square.html#a55bf43f878d4741c57a08d5fef472ea5',1,'mlx::core::Square::vmap()'],['../classmlx_1_1core_1_1_sqrt.html#a9d30e306ce08980c27d98c898577017e',1,'mlx::core::Sqrt::vmap()'],['../classmlx_1_1core_1_1_stop_gradient.html#aca680c8befef81da414c4375b11b16b0',1,'mlx::core::StopGradient::vmap()'],['../classmlx_1_1core_1_1_subtract.html#aa98f960e621a767c8a03624fd292f098',1,'mlx::core::Subtract::vmap()'],['../classmlx_1_1core_1_1_tan.html#ae2f67ca2adc83b10009cf28498bf58b7',1,'mlx::core::Tan::vmap()'],['../classmlx_1_1core_1_1_tanh.html#a32df3564c1ecb858c1ba9f855376762f',1,'mlx::core::Tanh::vmap()'],['../classmlx_1_1core_1_1_uniform.html#ad795037d5b1820e98f4268f166609926',1,'mlx::core::Uniform::vmap()'],['../classmlx_1_1core_1_1_view.html#a2230d3e5f434fb2b888de50b529ac121',1,'mlx::core::View::vmap()'],['../classmlx_1_1core_1_1_transpose.html#a5ef848b69def9a246665b67e6e3ffdfe',1,'mlx::core::Transpose::vmap()'],['../classmlx_1_1core_1_1_s_v_d.html#a0366c958f6cdac8d1d9e1a4eda53fae8',1,'mlx::core::SVD::vmap()'],['../classmlx_1_1core_1_1_inverse.html#a98419b9f0b8a6c9185fe012d523552c2',1,'mlx::core::Inverse::vmap()'],['../classmlx_1_1core_1_1_cholesky.html#ab5c3f6199ec3b399c91243a05d116aa5',1,'mlx::core::Cholesky::vmap()'],['../namespacemlx_1_1core.html#a933289d4688479e1c4d8ba04332c406b',1,'mlx::core::vmap'],['../namespacemlx_1_1core.html#a8481a3bb4c12c2b7dc6ba576c2be3d0d',1,'mlx::core::vmap(const std::function< array(const array &, const array &)> &fun, int in_axis_a=0, int in_axis_b=0, int out_axis=0)'],['../namespacemlx_1_1core.html#a95a7757e8d18fced38acfc6a3e8d686a',1,'mlx::core::vmap(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &in_axes={}, const std::vector< int > &out_axes={})']]], - ['vmap_5freplace_18',['vmap_replace',['../namespacemlx_1_1core_1_1detail.html#a31a5582530faea230eb8acafc0f7e154',1,'mlx::core::detail']]], - ['vmap_5ftrace_19',['vmap_trace',['../namespacemlx_1_1core_1_1detail.html#a5ba794afe1a557e0505887cfb481c515',1,'mlx::core::detail']]], - ['vtype_20',['VTYPE',['../structpocketfft_1_1detail_1_1_v_t_y_p_e.html',1,'pocketfft::detail']]], - ['vtype_5ft_21',['vtype_t',['../namespacepocketfft_1_1detail.html#a3edfb93aeed2f8258183d463ea291d62',1,'pocketfft::detail']]] -]; diff --git a/docs/build/html/search/all_17.js b/docs/build/html/search/all_17.js deleted file mode 100644 index ab03408d..00000000 --- a/docs/build/html/search/all_17.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['wait_0',['wait',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#af503189cc9247047fbdfc3ebf1daacc1',1,'pocketfft::detail::threading::latch::wait()'],['../classmlx_1_1core_1_1_event.html#a634afd918e6ed847f354531ba9f48252',1,'mlx::core::Event::wait()']]], - ['wait_5ffor_5fone_1',['wait_for_one',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a01c574bb388f10d67aaaaa541894d807',1,'mlx::core::scheduler::Scheduler::wait_for_one()'],['../namespacemlx_1_1core_1_1scheduler.html#a8cc4d5fd1f5ce722b377ead1863a2291',1,'mlx::core::scheduler::wait_for_one()']]], - ['weight_5fbase_2',['weight_base',['../structmlx_1_1steel_1_1_conv2_d_general_base_info.html#a1d88677c4617f4bdae157e40a64a407b',1,'mlx::steel::Conv2DGeneralBaseInfo']]], - ['weight_5fh_3',['weight_h',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a3be4815d4090cb27ebe2f9bad1a39e95',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::weight_h'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a366c3cee4ed1165545287c8d5ce49445',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::weight_h'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a397412909eb955babc935a35d97c3fd4',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::weight_h'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a5997fd8ef249e4cd3df7dad7b251d8d5',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::weight_h']]], - ['weight_5fhw_4',['weight_hw',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#ae39d43f741c9c87cce9c6d3144dc8b94',1,'mlx::steel::Conv2DWeightBlockLoader::weight_hw'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a7dd320bc5b0a9a2e425d6b292ddac037',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::weight_hw'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a5752e0309a4dc873cb31ce724c11ada6',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::weight_hw']]], - ['weight_5fsize_5',['weight_size',['../structmlx_1_1steel_1_1_conv2_d_general_base_info.html#aff119a4325b97fdbd745d8fcaed9f041',1,'mlx::steel::Conv2DGeneralBaseInfo']]], - ['weight_5fw_6',['weight_w',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#add1186c7accb62bfa8a4a7e87fc4cc84',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::weight_w'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a4744bd79fb05e81eaa53d2eabe017446',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::weight_w'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a0261d0349a0a95ca1a02a959b73e9352',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::weight_w'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a6efa6268a37f18f4d225674bf1780cf6',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::weight_w']]], - ['where_7',['where',['../group__ops.html#ga8a2056f8c9bb30914c40bcf509386491',1,'mlx::core']]], - ['write_8',['write',['../struct_read_writer.html#ac2ea71e41740ddc863890e3e8e6f09d0',1,'ReadWriter::write()'],['../classmlx_1_1core_1_1io_1_1_writer.html#ad9515b7f007338674de1e124cf77e125',1,'mlx::core::io::Writer::write()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#abca32838c9886f734d93430c34c07d7f',1,'mlx::core::io::FileWriter::write()'],['../struct_read_writer.html#a7a3d1396b0f83aa7506207bd6e7336bf',1,'ReadWriter::write() const'],['../struct_read_writer.html#ae1f0d3555b74998cc2d2288bce72a1f4',1,'ReadWriter::write() const']]], - ['write_5fpadded_9',['write_padded',['../struct_read_writer.html#a95367307acace2aa88226cf8956d2d88',1,'ReadWriter::write_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#abaf2a6ad4c88bd9f65fe1db1f73a8d87',1,'ReadWriter::write_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#a420453a56e77d6b3891ed4b5f178af9c',1,'ReadWriter::write_padded(int length, const device float2 *w_k) const']]], - ['write_5fsafe_10',['write_safe',['../kernels_2scan_8h.html#ae86aef08e5ebc8790031eb51eefa754c',1,'scan.h']]], - ['write_5fstrided_11',['write_strided',['../struct_read_writer.html#a77a4d7eac217305e22a3c25b3756ef67',1,'ReadWriter::write_strided(int stride, int overall_n)'],['../struct_read_writer.html#a12e7f43cd9de2d9990054184c0a32839',1,'ReadWriter::write_strided(int stride, int overall_n)'],['../struct_read_writer.html#a959ccaa08f2999c50cea063b01e492e4',1,'ReadWriter::write_strided(int stride, int overall_n)'],['../struct_read_writer.html#a5592b24dad5ad030a1e4769b0a278f35',1,'ReadWriter::write_strided(int stride, int overall_n)']]], - ['write_5funsafe_12',['write_unsafe',['../kernels_2scan_8h.html#a8010e7bdf7a72cbd35ce7cd7ecb08e32',1,'scan.h']]], - ['writer_13',['Writer',['../classmlx_1_1core_1_1io_1_1_writer.html',1,'mlx::core::io']]], - ['ws_14',['wS',['../struct_m_l_x_conv_params.html#aba2074189644b1b59567d018409277a9',1,'MLXConvParams']]], - ['wt_5fstrides_15',['wt_strides',['../struct_m_l_x_conv_params.html#a887fee0da1494d038526fb0f59faff45',1,'MLXConvParams']]] -]; diff --git a/docs/build/html/search/all_18.js b/docs/build/html/search/all_18.js deleted file mode 100644 index 2581c906..00000000 --- a/docs/build/html/search/all_18.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['x_0',['x',['../struct___no_mask.html#a0c4a4557d5c97ceafe3a2c4e521cdf7e',1,'_NoMask']]], - ['xor_1',['Xor',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dac95e7d8e6205449a70c8134e7dae3bd1',1,'mlx::core::BitwiseBinary']]] -]; diff --git a/docs/build/html/search/all_19.js b/docs/build/html/search/all_19.js deleted file mode 100644 index 4a7356ff..00000000 --- a/docs/build/html/search/all_19.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['zero_5fhelper_0',['zero_helper',['../sort_8h.html#aca8b6f36c9024b8406fe545765316dc0',1,'sort.h']]], - ['zeros_1',['zeros',['../group__ops.html#ga34573eb2ead179839579142f3aedb3b8',1,'mlx::core::zeros(const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga7c1487f8a830c9df75a961b3a24527ee',1,'mlx::core::zeros(const std::vector< int > &shape, StreamOrDevice s={})']]], - ['zeros_5flike_2',['zeros_like',['../group__ops.html#gafbb857094d784b38c78683a091ffdbde',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/all_1a.js b/docs/build/html/search/all_1a.js deleted file mode 100644 index 2a0ab51b..00000000 --- a/docs/build/html/search/all_1a.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['_7eallocator_0',['~Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a90ad02c2e2a6ed89bb8bbf7b871efdf1',1,'mlx::core::allocator::Allocator']]], - ['_7earr_1',['~arr',['../classpocketfft_1_1detail_1_1arr.html#a8519487ee7fa95d3937a8352dd289b56',1,'pocketfft::detail::arr']]], - ['_7earray_2',['~array',['../classmlx_1_1core_1_1array.html#a2f16c1ef8ee248d2fba95520c86dfad2',1,'mlx::core::array']]], - ['_7ecommandencoder_3',['~CommandEncoder',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a9b6dd221ccd2d939d544004cb6279198',1,'mlx::core::metal::CommandEncoder']]], - ['_7econcurrentcontext_4',['~ConcurrentContext',['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html#a28bafec56edec3091e8716d8ccfb6ee1',1,'mlx::core::metal::CommandEncoder::ConcurrentContext']]], - ['_7edata_5',['~Data',['../structmlx_1_1core_1_1array_1_1_data.html#a1cf69d9709206578c4e87e9c1daad5e1',1,'mlx::core::array::Data']]], - ['_7edevice_6',['~Device',['../classmlx_1_1core_1_1metal_1_1_device.html#a4f39c28c6cdd1d2da1918f5871bcba6e',1,'mlx::core::metal::Device']]], - ['_7efilewriter_7',['~FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html#ac325f51cd22050b6359056290e8ef42c',1,'mlx::core::io::FileWriter']]], - ['_7eintracing_8',['~InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#a83d57d7fa63bcb0ff72080191d0f177a',1,'mlx::core::detail::InTracing']]], - ['_7eparallelfilereader_9',['~ParallelFileReader',['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#ae9e3fc1cc3e827dae4d3d107f6780817',1,'mlx::core::io::ParallelFileReader']]], - ['_7eprimitive_10',['~Primitive',['../classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777',1,'mlx::core::Primitive']]], - ['_7ereader_11',['~Reader',['../classmlx_1_1core_1_1io_1_1_reader.html#a81cd4747d81311c87dc6753f2d0d8b16',1,'mlx::core::io::Reader']]], - ['_7eretaingraph_12',['~RetainGraph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html#a6bd6dc2e1caf2f764f39856a72ff6cbc',1,'mlx::core::detail::RetainGraph']]], - ['_7escheduler_13',['~Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a6626c4a743a2b3004fc14042bc8b0edf',1,'mlx::core::scheduler::Scheduler']]], - ['_7estreamcontext_14',['~StreamContext',['../structmlx_1_1core_1_1_stream_context.html#ac5be1c576d22b3d0b0a6fcc7e6abe659',1,'mlx::core::StreamContext']]], - ['_7estreamthread_15',['~StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a71de50591388b6e2cc6c57827e1a1ad4',1,'mlx::core::scheduler::StreamThread']]], - ['_7ethread_5fpool_16',['~thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a68f71e79fa93379fcc5819e533b45472',1,'pocketfft::detail::threading::thread_pool']]], - ['_7ethreadpool_17',['~ThreadPool',['../class_thread_pool.html#a44d3d2ab618970605e684efc216655eb',1,'ThreadPool']]], - ['_7eunaryprimitive_18',['~UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de',1,'mlx::core::UnaryPrimitive']]], - ['_7ewriter_19',['~Writer',['../classmlx_1_1core_1_1io_1_1_writer.html#a0e42f93a64118e9f5ede54ffe1bda045',1,'mlx::core::io::Writer']]] -]; diff --git a/docs/build/html/search/all_2.js b/docs/build/html/search/all_2.js deleted file mode 100644 index 5166728d..00000000 --- a/docs/build/html/search/all_2.js +++ /dev/null @@ -1,105 +0,0 @@ -var searchData= -[ - ['b_0',['b',['../unionbool4__or__uint.html#a47d77eac47598fe420f8f04a615f76ca',1,'bool4_or_uint::b'],['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a92eb5ffee6ae2fec3ad71c777531578f',1,'mlx::core::Dtype::b']]], - ['backward_1',['BACKWARD',['../namespacepocketfft_1_1detail.html#a9d1eaa7469c018c39e745733eab9a9c3',1,'pocketfft::detail']]], - ['base_2',['Base',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421',1,'mlx::core::Log']]], - ['base_5fwh_3',['base_wh',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#aca37adba6f148579eb1cd0a7800a5cfe',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::base_wh'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a6c46564bf1a96a02791dd432cc9c883e',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::base_wh']]], - ['base_5fww_4',['base_ww',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a32d020c6715d06f7de360877fcb7b6e4',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::base_ww'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a230f0e581f9b8227b9ee68760b3b1503',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::base_ww']]], - ['batch_5fndim_5',['batch_ndim',['../struct_m_l_x_fast_attention_params.html#a6f3d94dbe44b32e675558768710bf0a3',1,'MLXFastAttentionParams::batch_ndim'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a640dc138a8bf7b2b5bed6a436b429c2f',1,'mlx::steel::GEMMParams::batch_ndim']]], - ['batch_5fsize_6',['batch_size',['../struct_read_writer.html#a689f4890c1d2ce33fc6da7550beec735',1,'ReadWriter']]], - ['batch_5fstride_5fa_7',['batch_stride_a',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a76f55783a8e2ee203cf8507eee4b000c',1,'mlx::steel::GEMMParams']]], - ['batch_5fstride_5fb_8',['batch_stride_b',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a99b959b12d12da657648fa24d43e49e8',1,'mlx::steel::GEMMParams']]], - ['batch_5fstride_5fc_9',['batch_stride_c',['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html#a77c065db228e9654a0a75a6ffe47c15a',1,'mlx::steel::GEMMAddMMParams']]], - ['batch_5fstride_5fd_10',['batch_stride_d',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#ad98006dd509a455864e6aa7c52743a41',1,'mlx::steel::GEMMParams']]], - ['batch_5fstride_5fk_11',['batch_stride_k',['../struct_m_l_x_fast_attention_params.html#a162826d3f288f64c0aea88a36b34859b',1,'MLXFastAttentionParams']]], - ['batch_5fstride_5fo_12',['batch_stride_o',['../struct_m_l_x_fast_attention_params.html#a3c5b1170999087f3f3a03830193b55c7',1,'MLXFastAttentionParams']]], - ['batch_5fstride_5fq_13',['batch_stride_q',['../struct_m_l_x_fast_attention_params.html#a98766fc89f75d5eef65b345f16a782d1',1,'MLXFastAttentionParams']]], - ['batch_5fstride_5fv_14',['batch_stride_v',['../struct_m_l_x_fast_attention_params.html#a1180e311b95cd4b6d4a336d21b873c21',1,'MLXFastAttentionParams']]], - ['bcols_15',['BCOLS',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a29fbeeacdf5b6feeb74815ced255fa5a',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::BCOLS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#ac3b40db720055350bba59d614ea1dd79',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::BCOLS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a86519729ef0561686bb86e474c95b93d',1,'mlx::steel::Conv2DWeightBlockLoader::BCOLS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a9229d22e0a02d96825eb5a57c8cb95ac',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::BCOLS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a8b6cf53a10514310d01f4d6459053a57',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::BCOLS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a3d6272d000f8ea79d9b3b5228bdca20f',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::BCOLS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a1843921cd67926002bb0dcccf3048eb6',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::BCOLS']]], - ['bcols_5fpacked_16',['BCOLS_PACKED',['../struct_quantized_block_loader.html#a1392a5278cf6e090ea80ebe7c4ac5fbb',1,'QuantizedBlockLoader']]], - ['begin_17',['begin',['../classmlx_1_1core_1_1array.html#a76b258b169d7d73419ebbf85340fb914',1,'mlx::core::array']]], - ['bernoulli_18',['bernoulli',['../namespacemlx_1_1core_1_1random.html#acb3f278fea2c4f06dea947d3bac2e9b7',1,'mlx::core::random::bernoulli(const array &p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aaa49f6c2af5496822fa09435e54275cb',1,'mlx::core::random::bernoulli(const array &p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa9e360f9cb7bd23221352ed9e31d83c2',1,'mlx::core::random::bernoulli(T p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a37fcba120a1d246176db5256d3201cd4',1,'mlx::core::random::bernoulli(T p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#ad7eb4467e2f9d5f74a5607b29a935b6e',1,'mlx::core::random::bernoulli(const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['beta_19',['beta',['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html#ac0ce4d8a6014f8adb29fd0a0bb23139f',1,'mlx::steel::GEMMAddMMParams::beta'],['../structmlx_1_1steel_1_1_transform_axpby.html#a5fc726f085bafd1acbc391886f7fb8b6',1,'mlx::steel::TransformAxpby::beta']]], - ['bf16_2eh_20',['bf16.h',['../backend_2metal_2kernels_2bf16_8h.html',1,'(Global Namespace)'],['../types_2bf16_8h.html',1,'(Global Namespace)']]], - ['bf16_5fmath_2eh_21',['bf16_math.h',['../bf16__math_8h.html',1,'']]], - ['bfloat16_22',['bfloat16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa444fe01f3a7a54d1809aef0912846a47',1,'mlx::core::Dtype::bfloat16'],['../namespacemlx_1_1core.html#a514cf8b4e6f0a6af3a867e752f4338f7',1,'mlx::core::bfloat16']]], - ['bfloat16_5ft_23',['bfloat16_t',['../backend_2metal_2kernels_2bf16_8h.html#a7782de82393104dd4ad754ce3b316e82',1,'bfloat16_t: bf16.h'],['../namespacemlx_1_1core.html#acb5d16c9b83778c7621c38e522e0060b',1,'mlx::core::bfloat16_t']]], - ['bfloat16_5fto_5fuint16_24',['bfloat16_to_uint16',['../bf16__math_8h.html#a51cfdd4502e755310f6f3456f039bea7',1,'bf16_math.h']]], - ['bfloat_5fbinop_25',['bfloat_binop',['../backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707',1,'bfloat_binop: bf16.h'],['../types_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707',1,'bfloat_binop: bf16.h']]], - ['bfloat_5fbinop_5fbase_26',['bfloat_binop_base',['../backend_2metal_2kernels_2bf16_8h.html#a78c92beda4436da9a2e520fa98c59f70',1,'bfloat_binop_base: bf16.h'],['../types_2bf16_8h.html#a78c92beda4436da9a2e520fa98c59f70',1,'bfloat_binop_base: bf16.h']]], - ['bfloat_5fbinop_5fhelper_27',['bfloat_binop_helper',['../backend_2metal_2kernels_2bf16_8h.html#ac7ff36230dab17e8f17b7a7c80888594',1,'bfloat_binop_helper: bf16.h'],['../types_2bf16_8h.html#ac7ff36230dab17e8f17b7a7c80888594',1,'bfloat_binop_helper: bf16.h']]], - ['bfloat_5fbitop_28',['bfloat_bitop',['../types_2bf16_8h.html#aac9ba86d4bf05bcda1936494f9b9b4d3',1,'bf16.h']]], - ['bfloat_5fbits_5fto_5ffloat_29',['bfloat_bits_to_float',['../backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1',1,'bf16.h']]], - ['bfloat_5fcompop_30',['bfloat_compop',['../backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239',1,'bfloat_compop: bf16.h'],['../types_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239',1,'bfloat_compop: bf16.h']]], - ['bfloat_5finplace_5fbitop_31',['bfloat_inplace_bitop',['../types_2bf16_8h.html#af13b46bc58e6e6f675ae47aabec37711',1,'bf16.h']]], - ['bfloat_5finplace_5fop_32',['bfloat_inplace_op',['../backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c',1,'bfloat_inplace_op: bf16.h'],['../types_2bf16_8h.html#aee905053f51f76e0c1af94199714d514',1,'bfloat_inplace_op: bf16.h']]], - ['bfloat_5finplace_5fop_5faddr_5fspace_5fhelper_33',['bfloat_inplace_op_addr_space_helper',['../backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8',1,'bfloat_inplace_op_addr_space_helper: bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1457da931c28fa4e2500daa4e6441e8b',1,'bfloat_inplace_op_addr_space_helper: bf16.h']]], - ['bfloat_5finplace_5fop_5fhelper_34',['bfloat_inplace_op_helper',['../backend_2metal_2kernels_2bf16_8h.html#a2846fd11b5e19b435e9f7ef0998c9b1d',1,'bfloat_inplace_op_helper: bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afe5988aa8147be2bafda6a5b7792fe15',1,'bfloat_inplace_op_helper: bf16.h']]], - ['bi_35',['bi',['../struct_quantized_block_loader.html#a85041d72225a2095659c70509291a906',1,'QuantizedBlockLoader::bi'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a8e53b0a9951cb840d922cc285b257ee3',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::bi'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#ae3af75287f279d2cdeef189126740d4c',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::bi'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a8c5e74003600132954cb953616e1a026',1,'mlx::steel::Conv2DWeightBlockLoader::bi'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a9eb024e2fc6f07345f87fbf7141c0d16',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::bi'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#ae3b9f21f72e5e6c541c9978f55d354c7',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::bi'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a32a3a91fa715b82f36e05ceb10933d09',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::bi'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a4c91f848856ab0872bdfd37c62d4b0ba',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::bi'],['../structmlx_1_1steel_1_1_block_loader.html#a9ef13742bcdf07532d8f09394928a8af',1,'mlx::steel::BlockLoader::bi']]], - ['biases_36',['biases',['../struct_quantized_block_loader.html#a17d01a6aba0833b073586ef2c09d0fbd',1,'QuantizedBlockLoader']]], - ['binary_37',['binary',['../namespacemlx_1_1core_1_1metal.html#a269d591ec02e2f7c0f7a718fbfa37f73',1,'mlx::core::metal']]], - ['binary_2eh_38',['binary.h',['../common_2binary_8h.html',1,'(Global Namespace)'],['../metal_2binary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2binary_8h.html',1,'(Global Namespace)']]], - ['binary_5fg_39',['binary_g',['../metal_2kernels_2binary_8h.html#a701e3cbc842992aa74f01b91a733774e',1,'binary_g(device const T *a, device const T *b, device U *c, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#acd870cc9ebe074eb313937e02ea1ed69',1,'binary_g(device const T *a, device const T *b, device U *c, device U *d, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim): binary_two.h']]], - ['binary_5fg_5fnd_40',['binary_g_nd',['../metal_2kernels_2binary_8h.html#a4f273fb6aad88b74bfc63f0f29499c03',1,'binary_g_nd(device const T *a, device const T *b, device U *c, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#aaec603b0d083afaf9e4710fd1dbdf1dc',1,'binary_g_nd(device const T *a, device const T *b, device U *c, device U *d, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim): binary_two.h']]], - ['binary_5fg_5fnd1_41',['binary_g_nd1',['../metal_2kernels_2binary_8h.html#a6808bfb006cb5473da087a2758d0d867',1,'binary_g_nd1(device const T *a, device const T *b, device U *c, constant const size_t &a_stride, constant const size_t &b_stride, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#ad1fad37c168192b212a4294f4cf78133',1,'binary_g_nd1(device const T *a, device const T *b, device U *c, device U *d, constant const size_t &a_stride, constant const size_t &b_stride, uint index): binary_two.h']]], - ['binary_5fg_5fnd2_42',['binary_g_nd2',['../metal_2kernels_2binary_8h.html#a8cd5989852ec704c6fd132ae28f4fc14',1,'binary_g_nd2(device const T *a, device const T *b, device U *c, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a03f7c15a1607576755abb65c542ae347',1,'binary_g_nd2(device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim): binary_two.h']]], - ['binary_5fg_5fnd3_43',['binary_g_nd3',['../metal_2kernels_2binary_8h.html#ac4979e60b993f7ffb602bcb91cd68bc9',1,'binary_g_nd3(device const T *a, device const T *b, device U *c, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a43e5943460996c43060d1f3aa1309ba6',1,'binary_g_nd3(device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim): binary_two.h']]], - ['binary_5fop_5fgpu_44',['binary_op_gpu',['../namespacemlx_1_1core.html#ad884f4a36308b5b4f8a5d990d2e086df',1,'mlx::core::binary_op_gpu(const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)'],['../namespacemlx_1_1core.html#a094876ea5a2a2445ab64efc8222da202',1,'mlx::core::binary_op_gpu(const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)']]], - ['binary_5fop_5fgpu_5finplace_45',['binary_op_gpu_inplace',['../namespacemlx_1_1core.html#a8616c0b7b0fc118a75400bc86404c367',1,'mlx::core::binary_op_gpu_inplace(const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)'],['../namespacemlx_1_1core.html#a7e6af6624e322e7ad60a3873a66e18a3',1,'mlx::core::binary_op_gpu_inplace(const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)']]], - ['binary_5fops_46',['binary_ops',['../namespacemlx_1_1core_1_1metal.html#a8db7f9cc781d4bfb08423a401665f322',1,'mlx::core::metal']]], - ['binary_5fops_2eh_47',['binary_ops.h',['../binary__ops_8h.html',1,'']]], - ['binary_5fss_48',['binary_ss',['../metal_2kernels_2binary_8h.html#a242b8b29a852c255467e50628c6dccf5',1,'binary_ss(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#af8a791ac7ca88d32cd8f4e9ac0f9ab4f',1,'binary_ss(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fsv_49',['binary_sv',['../metal_2kernels_2binary_8h.html#a4116c35f2e4632366d1611d5a95ba141',1,'binary_sv(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#ab18c6ecf5065275c93701efd095c916c',1,'binary_sv(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fsv2_50',['binary_sv2',['../metal_2kernels_2binary_8h.html#aa8c48b1b21d8f5a181f5443de2346589',1,'binary_sv2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a08822ff98ea6f61a98b49a9e9a38b891',1,'binary_sv2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim): binary_two.h']]], - ['binary_5ftwo_51',['binary_two',['../namespacemlx_1_1core_1_1metal.html#aed047eec38b030ec5f29b9da54abf8cb',1,'mlx::core::metal']]], - ['binary_5ftwo_2eh_52',['binary_two.h',['../common_2binary__two_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2binary__two_8h.html',1,'(Global Namespace)']]], - ['binary_5fvs_53',['binary_vs',['../metal_2kernels_2binary_8h.html#a649851d133358dd5832a73b1061b3313',1,'binary_vs(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#a12dbda74fa460812177ccb9aeee6e1ca',1,'binary_vs(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fvs2_54',['binary_vs2',['../metal_2kernels_2binary_8h.html#a48bd82eb10f9c623ce7d28daec4fa512',1,'binary_vs2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a273d2f31691f2c64623c2a97eab344be',1,'binary_vs2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim): binary_two.h']]], - ['binary_5fvv_55',['binary_vv',['../metal_2kernels_2binary_8h.html#add6a9aeee3cb0ba909574f27fa9ecd5b',1,'binary_vv(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#ab4324f594c007a6895540b77ad5d89d9',1,'binary_vv(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fvv2_56',['binary_vv2',['../metal_2kernels_2binary_8h.html#a19dbbf8fea68b64bdd25dc8d36865171',1,'binary_vv2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a12e80730e43dfaa4c79ce8d5f99edc50',1,'binary_vv2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim): binary_two.h']]], - ['bits_57',['bits',['../namespacemlx_1_1core_1_1random.html#abb895baa477f5a06b5f88e69245f1825',1,'mlx::core::random::bits(const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a548ffed4ba3107b89885ff850ffce5f4',1,'mlx::core::random::bits(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['bits_5f_58',['bits_',['../struct___m_l_x___b_float16.html#a4113263b63e3757ea8334cc4f0f5c3c8',1,'_MLX_BFloat16::bits_'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#aca48963f820065c3d8ecab24265ab3fc',1,'mlx::core::_MLX_BFloat16::bits_'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a5203fe52424fd32bce6eb7917dd9288b',1,'mlx::core::_MLX_Float16::bits_']]], - ['bits_5fto_5fbfloat_59',['bits_to_bfloat',['../struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca',1,'_MLX_BFloat16']]], - ['bits_5fto_5fbfloat_5fstruct_60',['bits_to_bfloat_struct',['../struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html',1,'_MLX_BFloat16']]], - ['bitwise_5fand_61',['bitwise_and',['../group__ops.html#ga752fd2707dabb05d0308ba3d55346ada',1,'mlx::core']]], - ['bitwise_5for_62',['bitwise_or',['../group__ops.html#ga8af4f22c08c11c4ffab7e3d45e0f3cd6',1,'mlx::core']]], - ['bitwise_5fxor_63',['bitwise_xor',['../group__ops.html#ga3188638fba3a60e264baf69956a1e08b',1,'mlx::core']]], - ['bitwiseand_64',['BitwiseAnd',['../struct_bitwise_and.html',1,'BitwiseAnd'],['../structmlx_1_1core_1_1detail_1_1_bitwise_and.html',1,'mlx::core::detail::BitwiseAnd']]], - ['bitwisebinary_65',['BitwiseBinary',['../classmlx_1_1core_1_1_bitwise_binary.html',1,'mlx::core::BitwiseBinary'],['../classmlx_1_1core_1_1_bitwise_binary.html#a0d8b3a94951621ffcdebc6fda748a172',1,'mlx::core::BitwiseBinary::BitwiseBinary()']]], - ['bitwiseor_66',['BitwiseOr',['../struct_bitwise_or.html',1,'BitwiseOr'],['../structmlx_1_1core_1_1detail_1_1_bitwise_or.html',1,'mlx::core::detail::BitwiseOr']]], - ['bitwisexor_67',['BitwiseXor',['../struct_bitwise_xor.html',1,'BitwiseXor'],['../structmlx_1_1core_1_1detail_1_1_bitwise_xor.html',1,'mlx::core::detail::BitwiseXor']]], - ['bj_68',['bj',['../struct_quantized_block_loader.html#ae2add92b2aaf3414e91f0470b9b0cc00',1,'QuantizedBlockLoader::bj'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a7ae9e41f50c0c63c35b63086a1c22cc3',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::bj'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a6fd3dd7b74d91609fa9dd61c657a0e32',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::bj'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a6f2fdcaf5a67567cca38ae3d8120ab37',1,'mlx::steel::Conv2DWeightBlockLoader::bj'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a7cf448573d41fbc67f8dfc65b7aef2b2',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::bj'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#adaa261fc2e8e694aedab4ebd60b52e5e',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::bj'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#ace16704025bc6e6204c306a357f3a8b8',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::bj'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#acec010e10d5733654963407af38d4f67',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::bj'],['../structmlx_1_1steel_1_1_block_loader.html#a78c326e75ee35a484685771143047cd4',1,'mlx::steel::BlockLoader::bj']]], - ['block_5fmasked_5fgemm_69',['block_masked_gemm',['../steel__gemm__masked_8h.html#af805e998b2046ee30c2b4be813e3af97',1,'block_masked_gemm(const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device out_mask_t *out_mask, const device op_mask_t *lhs_mask, const device op_mask_t *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid): steel_gemm_masked.h'],['../steel__gemm__masked_8h.html#a477932e2ae9d49366f7ede6db63f9cac',1,'block_masked_gemm(const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device bool *out_mask, const device bool *lhs_mask, const device bool *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid): steel_gemm_masked.h']]], - ['block_5fmasked_5fmm_70',['block_masked_mm',['../group__ops.html#ga6b76c8ea46b19e6866af155fa5910be6',1,'mlx::core']]], - ['block_5fmerge_5fsort_5ft_71',['block_merge_sort_t',['../struct_kernel_merge_sort.html#adae7850e057fc30d5328c7b3dcc998fa',1,'KernelMergeSort::block_merge_sort_t'],['../struct_kernel_multi_block_merge_sort.html#af27e9af4b58640c0aa620bc4efc68dff',1,'KernelMultiBlockMergeSort::block_merge_sort_t']]], - ['block_5fsort_72',['block_sort',['../struct_kernel_merge_sort.html#a56b644ec66f7fb5c01b280f124304be9',1,'KernelMergeSort::block_sort()'],['../struct_kernel_multi_block_merge_sort.html#a322ed2eac315a561e0fd90af2fd577eb',1,'KernelMultiBlockMergeSort::block_sort()'],['../sort_8h.html#a93f14092416169c4449141043ac45ffd',1,'block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, uint3 tid, uint3 lid): sort.h']]], - ['block_5fsort_5fnc_73',['block_sort_nc',['../sort_8h.html#a29229399f51e5c440ffe5c9b99b27598',1,'sort.h']]], - ['blockloader_74',['BlockLoader',['../structmlx_1_1steel_1_1_block_loader.html',1,'mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >'],['../structmlx_1_1steel_1_1_block_loader.html#a37aca066e63dff238865b5923a2d4335',1,'mlx::steel::BlockLoader::BlockLoader()']]], - ['blockm_75',['blockM',['../struct_g_e_m_v_kernel.html#a7281520100658811076400060663903c',1,'GEMVKernel::blockM'],['../struct_g_e_m_v_t_kernel.html#a2ae8ce535d59cccf453381b4485a77f0',1,'GEMVTKernel::blockM']]], - ['blockmaskedmm_76',['BlockMaskedMM',['../classmlx_1_1core_1_1_block_masked_m_m.html',1,'mlx::core::BlockMaskedMM'],['../classmlx_1_1core_1_1_block_masked_m_m.html#ad26509deb5306d0c5eb72477e9a57477',1,'mlx::core::BlockMaskedMM::BlockMaskedMM()']]], - ['blockmergesort_77',['BlockMergeSort',['../struct_block_merge_sort.html',1,'']]], - ['blockmma_78',['BlockMMA',['../structmlx_1_1steel_1_1_block_m_m_a.html',1,'mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >'],['../structmlx_1_1steel_1_1_block_m_m_a.html#aa14406b7298456ac45d23dd3c4642dd8',1,'mlx::steel::BlockMMA::BlockMMA()']]], - ['blockn_79',['blockN',['../struct_g_e_m_v_kernel.html#a2fef17f9c9aa0bdf530ad3554fb0988b',1,'GEMVKernel::blockN'],['../struct_g_e_m_v_t_kernel.html#a60be87666006ba0bf88bc8e6902da42a',1,'GEMVTKernel::blockN']]], - ['blockswizzle_80',['BlockSwizzle',['../structmlx_1_1steel_1_1_block_swizzle.html',1,'mlx::steel']]], - ['bluestein_5ffft_81',['bluestein_fft',['../backend_2metal_2kernels_2fft_8h.html#a0abc609e9756475800e996775a96a87e',1,'fft.h']]], - ['bool4_5for_5fuint_82',['bool4_or_uint',['../unionbool4__or__uint.html',1,'']]], - ['bool_5f_83',['bool_',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa467afb5838aa377d55cce81f84c5512b',1,'mlx::core::Dtype::bool_'],['../namespacemlx_1_1core.html#a113d2bac7e4aa6a4cb4a5c3242527b82',1,'mlx::core::bool_']]], - ['broadcast_84',['Broadcast',['../classmlx_1_1core_1_1_broadcast.html',1,'mlx::core::Broadcast'],['../classmlx_1_1core_1_1_broadcast.html#accbab8433c93e281608a268d11afaefb',1,'mlx::core::Broadcast::Broadcast()']]], - ['broadcast_5farrays_85',['broadcast_arrays',['../group__ops.html#gab783890428b596f715dc7dd2057eae99',1,'mlx::core']]], - ['broadcast_5fshapes_86',['broadcast_shapes',['../namespacemlx_1_1core.html#a075e07def338cd9d815182d0e6a656c0',1,'mlx::core']]], - ['broadcast_5fto_87',['broadcast_to',['../group__ops.html#gad256e86cc1a6e6b3832e392baa90318d',1,'mlx::core']]], - ['brows_88',['BROWS',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#ac070c6bd5be85b1ae805e18890db4fd4',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::BROWS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a10591ea957605a9c662f93d59ff3410d',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::BROWS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#ae9b86b05b23153ea1abaeead456c491c',1,'mlx::steel::Conv2DWeightBlockLoader::BROWS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a343984fb74ec579a4404278dbbc7e7b5',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::BROWS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#acc8140aae84694f62e6324dbb6a614a4',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::BROWS'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#aba1e1c8012e4e50f0e9bcfb9486c1781',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::BROWS'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a015a0c56de74a0c4d51953a7e94fbba8',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::BROWS']]], - ['bs_5foffset_89',['Bs_offset',['../structmlx_1_1steel_1_1_block_m_m_a.html#a92f6aeee432f53638447eac842f43eca',1,'mlx::steel::BlockMMA']]], - ['bs_5fqmm_5fn_90',['bs_qmm_n',['../quantized_8h.html#acfc43edcf0c742ddc090d22cb7229284',1,'quantized.h']]], - ['bs_5fqmm_5ft_91',['bs_qmm_t',['../quantized_8h.html#a3acc2ace766cb855f13da2d1834e7dc7',1,'quantized.h']]], - ['bs_5fqmv_92',['bs_qmv',['../quantized_8h.html#a03ba4a4a5fe9955319b0aa477d2d7d98',1,'quantized.h']]], - ['bs_5fqmv_5ffast_93',['bs_qmv_fast',['../quantized_8h.html#a6f92bb9f3d29d707bfc680bebe1c80f7',1,'quantized.h']]], - ['bs_5fqvm_94',['bs_qvm',['../quantized_8h.html#a3af1c89416632c9275b8218a33cb8a04',1,'quantized.h']]], - ['bsimd_95',['Bsimd',['../structmlx_1_1steel_1_1_block_m_m_a.html#a3de506004b428d3487bae05ad9e757e6',1,'mlx::steel::BlockMMA']]], - ['buf_96',['buf',['../struct_read_writer.html#a23bac3c96dd0265ddbee1f256be45ff5',1,'ReadWriter::buf'],['../backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697',1,'buf: allocator.h']]], - ['buffer_97',['Buffer',['../classmlx_1_1core_1_1allocator_1_1_buffer.html',1,'mlx::core::allocator::Buffer'],['../classmlx_1_1core_1_1allocator_1_1_buffer.html#ac4fc2cc6aa1368cfb74aff329d9a1300',1,'mlx::core::allocator::Buffer::Buffer()']]], - ['buffer_98',['buffer',['../structmlx_1_1core_1_1array_1_1_data.html#a9a51e2d12ba505027cc0fca86bdd39ad',1,'mlx::core::array::Data::buffer'],['../classmlx_1_1core_1_1array.html#ab3daf04c27c4593d9d73c397b8484a08',1,'mlx::core::array::buffer()'],['../classmlx_1_1core_1_1array.html#a634466ce661485394f2fdc3bd6796bcd',1,'mlx::core::array::buffer() const']]], - ['buffer_5fsize_99',['buffer_size',['../classmlx_1_1core_1_1array.html#a914577c63755b2e862d2da68bbf8e3dd',1,'mlx::core::array']]], - ['buffers_100',['buffers',['../struct_indices.html#ad705070a740579c07d109ae4f3d86e76',1,'Indices']]], - ['build_5flib_5fname_101',['build_lib_name',['../namespacemlx_1_1core.html#a3ef23f334cb9f68a2c50524bc67c913b',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/all_3.js b/docs/build/html/search/all_3.js deleted file mode 100644 index 59caa8de..00000000 --- a/docs/build/html/search/all_3.js +++ /dev/null @@ -1,151 +0,0 @@ -var searchData= -[ - ['c_0',['C',['../struct_m_l_x_conv_params.html#a0953063962ac3b5a027243289e72fbb2',1,'MLXConvParams']]], - ['c_1',['c',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a4a8a08f09d37b73795649038408b5f33',1,'mlx::core::Dtype']]], - ['c2c_2',['c2c',['../namespacepocketfft_1_1detail.html#ab585ac594ae1253d4659e7b9e1623c8a',1,'pocketfft::detail']]], - ['c2r_3',['c2r',['../namespacepocketfft_1_1detail.html#ab26cbfed16f487b987f50bf63bfc1ab9',1,'pocketfft::detail::c2r(const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)'],['../namespacepocketfft_1_1detail.html#a788506fff59f8e13056247076cac51c1',1,'pocketfft::detail::c2r(const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)']]], - ['can_5fconvert_5ffrom_5fbfloat_4',['can_convert_from_bfloat',['../backend_2metal_2kernels_2bf16_8h.html#a7e5992f7fcd8f2cdadcc1d7f6aefbb5a',1,'bf16.h']]], - ['can_5fconvert_5ffrom_5fcomplex64_5',['can_convert_from_complex64',['../backend_2metal_2kernels_2complex_8h.html#ab149db78f6f19b8da6297dac4c36d893',1,'complex.h']]], - ['can_5fconvert_5fto_5fbfloat_6',['can_convert_to_bfloat',['../backend_2metal_2kernels_2bf16_8h.html#aae77817d261452b2f001f4d947a3e04e',1,'bf16.h']]], - ['can_5fconvert_5fto_5fcomplex128_7',['can_convert_to_complex128',['../namespacemlx_1_1core.html#a2822d2a4d346c826d3cfebbcf89c3057',1,'mlx::core']]], - ['can_5fconvert_5fto_5fcomplex64_8',['can_convert_to_complex64',['../backend_2metal_2kernels_2complex_8h.html#a4f90ad54f4fae363e8d3cc41d539557b',1,'can_convert_to_complex64: complex.h'],['../namespacemlx_1_1core.html#a0b3c76fd03f4df39ec8f9aefdced0861',1,'mlx::core::can_convert_to_complex64']]], - ['capitalize_5fbool_9',['capitalize_bool',['../structmlx_1_1core_1_1_print_formatter.html#adf49a949db36f0ba076842a6d675d79a',1,'mlx::core::PrintFormatter']]], - ['categorical_10',['categorical',['../namespacemlx_1_1core_1_1random.html#a3dd7910cedd2b88c2c6f4ca0daf98967',1,'mlx::core::random::categorical(const array &logits, int axis, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa7104c436b3972a2480cfeb54554855f',1,'mlx::core::random::categorical(const array &logits_, int axis, int num_samples, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa336e774783543705dffe2ad5b2c49c1',1,'mlx::core::random::categorical(const array &logits, int axis=-1, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['category_11',['Category',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2d',1,'mlx::core::Dtype']]], - ['ceil_12',['Ceil',['../struct_ceil.html',1,'Ceil'],['../classmlx_1_1core_1_1_ceil.html',1,'mlx::core::Ceil'],['../structmlx_1_1core_1_1detail_1_1_ceil.html',1,'mlx::core::detail::Ceil'],['../classmlx_1_1core_1_1_ceil.html#aede38610ca25429f229301546bc9b682',1,'mlx::core::Ceil::Ceil()']]], - ['ceil_13',['ceil',['../namespacemetal.html#ad63204d38bc01df6ffc64583f7886b3c',1,'metal::ceil()'],['../namespacemetal_1_1fast.html#a97b0bbd79f1f45d9d3104d712914e6b8',1,'metal::fast::ceil()'],['../namespacemetal_1_1precise.html#a8577549a1afeea206dd9a2004af2868d',1,'metal::precise::ceil()'],['../group__ops.html#ga1404ecceff83fd9b9139b7520f55e096',1,'mlx::core::ceil()']]], - ['ceildiv_14',['ceildiv',['../backend_2metal_2kernels_2utils_8h.html#a8e5a4b0fb5d018d7b078d147efe4f1e3',1,'utils.h']]], - ['cfftp_15',['cfftp',['../classpocketfft_1_1detail_1_1cfftp.html',1,'pocketfft::detail::cfftp< T0 >'],['../classpocketfft_1_1detail_1_1cfftp.html#a121dcd8d4db180061d09fc1c5eb7da27',1,'pocketfft::detail::cfftp::cfftp()']]], - ['channelhelper_16',['ChannelHelper',['../structmlx_1_1steel_1_1_channel_helper.html',1,'mlx::steel']]], - ['channelhelper_3c_201_20_3e_17',['ChannelHelper< 1 >',['../structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html',1,'mlx::steel']]], - ['channelhelper_3c_202_20_3e_18',['ChannelHelper< 2 >',['../structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html',1,'mlx::steel']]], - ['channelhelper_3c_203_20_3e_19',['ChannelHelper< 3 >',['../structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html',1,'mlx::steel']]], - ['channelhelper_3c_204_20_3e_20',['ChannelHelper< 4 >',['../structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html',1,'mlx::steel']]], - ['check_5fcontiguity_21',['check_contiguity',['../namespacemlx_1_1core.html#a847b0a276663d9ddb5cac905ee977f03',1,'mlx::core']]], - ['check_5fshape_5fdim_22',['check_shape_dim',['../namespacemlx_1_1core.html#a8b5f1435b7628a094a38b62e403e1540',1,'mlx::core']]], - ['checkpoint_23',['checkpoint',['../namespacemlx_1_1core.html#a26127b71b2ec65c51d7627e71847083d',1,'mlx::core']]], - ['cholesky_24',['Cholesky',['../classmlx_1_1core_1_1_cholesky.html',1,'mlx::core::Cholesky'],['../classmlx_1_1core_1_1_cholesky.html#a6ae2e30b85f99f4f0d7f14c7949818ab',1,'mlx::core::Cholesky::Cholesky()']]], - ['cholesky_25',['cholesky',['../namespacemlx_1_1core_1_1linalg.html#a46c8a4f806f0a97a4323e91189aa512b',1,'mlx::core::linalg']]], - ['cholesky_5finv_26',['cholesky_inv',['../namespacemlx_1_1core_1_1linalg.html#aef0fe4894c5cf98792d59859c6d20511',1,'mlx::core::linalg']]], - ['clear_5fcache_27',['clear_cache',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a447c1eb38c00d2e8e521675297f4a9b1',1,'mlx::core::metal::MetalAllocator::clear_cache()'],['../namespacemlx_1_1core_1_1metal.html#a22b3384ebd17f2fca198f81b9f1b6dc3',1,'mlx::core::metal::clear_cache()']]], - ['clip_28',['clip',['../group__ops.html#ga157cd7c23f9b306fee2e1eb2b9bf1dd8',1,'mlx::core']]], - ['cmplx_29',['cmplx',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail::cmplx< T >'],['../structpocketfft_1_1detail_1_1cmplx.html#a5b1ce506f1023f5254025ac81b831a2c',1,'pocketfft::detail::cmplx::cmplx()'],['../structpocketfft_1_1detail_1_1cmplx.html#a05491b4f1f22ca0bc49012f6a1c1710a',1,'pocketfft::detail::cmplx::cmplx(T r_, T i_)']]], - ['cmplx_3c_20t0_20_3e_30',['cmplx< T0 >',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], - ['cmplx_3c_20thigh_20_3e_31',['cmplx< Thigh >',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], - ['cndarr_32',['cndarr',['../classpocketfft_1_1detail_1_1cndarr.html',1,'pocketfft::detail::cndarr< T >'],['../classpocketfft_1_1detail_1_1cndarr.html#abf73f1b4ddcfb27d7f85cfa441607129',1,'pocketfft::detail::cndarr::cndarr()']]], - ['col_5fcontiguous_33',['col_contiguous',['../structmlx_1_1core_1_1array_1_1_flags.html#ae24709026598d635e6b5c24a15f8a802',1,'mlx::core::array::Flags']]], - ['col_5freduce_5flooped_34',['col_reduce_looped',['../reduce__col_8h.html#a11bfc6112ae2386ac03f5ea7b7d93385',1,'reduce_col.h']]], - ['col_5freduce_5fsmall_35',['col_reduce_small',['../reduce__col_8h.html#adf7aeb18cd1d5042cf6d9b46b582d8ce',1,'reduce_col.h']]], - ['collapse_5fcontiguous_5fdims_36',['collapse_contiguous_dims',['../namespacemlx_1_1core.html#a9d151ba3e138be1954d2f51f85806b0c',1,'mlx::core::collapse_contiguous_dims(const std::vector< int > &shape, const std::vector< std::vector< stride_t > > strides)'],['../namespacemlx_1_1core.html#a8430e0baac3f6d8a2ab22428f9c0b7e2',1,'mlx::core::collapse_contiguous_dims(const std::vector< array > &xs)'],['../namespacemlx_1_1core.html#ac813412cce77fc1340dcfefc6e099276',1,'mlx::core::collapse_contiguous_dims(Arrays &&... xs)'],['../namespacemlx_1_1core.html#ad2f039e04bf902c9d98f631a67cc63ed',1,'mlx::core::collapse_contiguous_dims(const std::vector< int > &shape, const std::vector< size_t > &strides)']]], - ['commandencoder_37',['CommandEncoder',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html',1,'mlx::core::metal::CommandEncoder'],['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a2334774486f447213ee997e55c2e52a3',1,'mlx::core::metal::CommandEncoder::CommandEncoder(MTL::CommandBuffer *cbuf)'],['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#ac68ca977b5bde5434284ce7979647f14',1,'mlx::core::metal::CommandEncoder::CommandEncoder(const CommandEncoder &)=delete']]], - ['commit_5fcommand_5fbuffer_38',['commit_command_buffer',['../classmlx_1_1core_1_1metal_1_1_device.html#a95248f1387824067fd4fed23ace5ac0c',1,'mlx::core::metal::Device']]], - ['commonallocator_39',['CommonAllocator',['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html',1,'mlx::core::allocator']]], - ['communication_5fstream_40',['communication_stream',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#ac3612edf0e0e18c1e4ba0ce7c6e35cd6',1,'mlx::core::distributed::detail']]], - ['compile_41',['compile',['../namespacemlx_1_1core.html#ab93149e46a6d8f3e1988123fab508dc2',1,'mlx::core::compile'],['../namespacemlx_1_1core_1_1detail.html#a4d14dee182dc9a8bea64efdaad310a1f',1,'mlx::core::detail::compile']]], - ['compile_2eh_42',['compile.h',['../compile_8h.html',1,'']]], - ['compile_5favailable_5ffor_5fdevice_43',['compile_available_for_device',['../namespacemlx_1_1core_1_1detail.html#aeeff2ba6ec3d9d4ed090de6d2681dbc2',1,'mlx::core::detail']]], - ['compile_5fclear_5fcache_44',['compile_clear_cache',['../namespacemlx_1_1core_1_1detail.html#a3fb927c209b946aefebb195993fbe4cf',1,'mlx::core::detail']]], - ['compile_5ferase_45',['compile_erase',['../namespacemlx_1_1core_1_1detail.html#a69eb76a14f845ca000f1ccb2edda0175',1,'mlx::core::detail']]], - ['compile_5fimpl_2eh_46',['compile_impl.h',['../compile__impl_8h.html',1,'']]], - ['compiled_47',['Compiled',['../classmlx_1_1core_1_1_compiled.html',1,'mlx::core::Compiled'],['../classmlx_1_1core_1_1_compiled.html#a2d8cefff835c419a48a077d306b8e051',1,'mlx::core::Compiled::Compiled()']]], - ['compiled_2eh_48',['compiled.h',['../compiled_8h.html',1,'']]], - ['compiled_5fallocate_5foutputs_49',['compiled_allocate_outputs',['../namespacemlx_1_1core.html#ab8c3c4fc05745f586de922c8266f4fce',1,'mlx::core']]], - ['compiled_5fcheck_5fcontiguity_50',['compiled_check_contiguity',['../namespacemlx_1_1core.html#a3b900ab319948c5a01a3ecd30a709027',1,'mlx::core']]], - ['compiled_5fpreamble_2eh_51',['compiled_preamble.h',['../compiled__preamble_8h.html',1,'']]], - ['compilemode_52',['CompileMode',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4',1,'mlx::core']]], - ['complex_2eh_53',['complex.h',['../backend_2metal_2kernels_2complex_8h.html',1,'(Global Namespace)'],['../types_2complex_8h.html',1,'(Global Namespace)']]], - ['complex128_5ft_54',['complex128_t',['../structmlx_1_1core_1_1complex128__t.html',1,'mlx::core::complex128_t'],['../structmlx_1_1core_1_1complex128__t.html#aa15d0b805f8790f7c7b76fc7b9d677e0',1,'mlx::core::complex128_t::complex128_t(double v, double u)'],['../structmlx_1_1core_1_1complex128__t.html#abf2842253b874f9f13f39ea68a89e5b6',1,'mlx::core::complex128_t::complex128_t(std::complex< double > v)'],['../structmlx_1_1core_1_1complex128__t.html#a526fba96d7e815360cb4226af085a1bf',1,'mlx::core::complex128_t::complex128_t(T x)']]], - ['complex64_55',['complex64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa8c022579455bcd2c681f007e84f4e2cf',1,'mlx::core::Dtype::complex64'],['../namespacemlx_1_1core.html#af99db87e0078bfcdb383f5689bc874d4',1,'mlx::core::complex64']]], - ['complex64_5ft_56',['complex64_t',['../structcomplex64__t.html',1,'complex64_t'],['../structmlx_1_1core_1_1complex64__t.html',1,'mlx::core::complex64_t'],['../structcomplex64__t.html#adbd392a5e92d31997380ad0a38be4be8',1,'complex64_t::complex64_t(float real, float imag)'],['../structcomplex64__t.html#a29782289bb90d6294099667b86509cd3',1,'complex64_t::complex64_t()'],['../structcomplex64__t.html#a905b048d70eb8d748a62454268242291',1,'complex64_t::complex64_t() threadgroup'],['../structcomplex64__t.html#a33a2452eb33b5ed53655773539c357a5',1,'complex64_t::complex64_t(T x) thread'],['../structcomplex64__t.html#a89b65ace8588b7bf215355f705eb23d9',1,'complex64_t::complex64_t(T x) threadgroup'],['../structcomplex64__t.html#ac81b486f642fb3b26c5d659917bdbcd0',1,'complex64_t::complex64_t(T x) device'],['../structcomplex64__t.html#a0a27a41206400f1e62b60ceb56960c93',1,'complex64_t::complex64_t(T x) const ant'],['../structmlx_1_1core_1_1complex64__t.html#a697cc973ae27d63c8e00d830e780bd8c',1,'mlx::core::complex64_t::complex64_t(float v, float u)'],['../structmlx_1_1core_1_1complex64__t.html#ae065e39938f9c4374b4116f4c67d4d09',1,'mlx::core::complex64_t::complex64_t(std::complex< float > v)'],['../structmlx_1_1core_1_1complex64__t.html#a2232cbbe591a9d2bc228cb23fac38b50',1,'mlx::core::complex64_t::complex64_t(T x)']]], - ['complex_5fbinop_57',['complex_binop',['../types_2complex_8h.html#a9c7995d495359894e1b30c0f1678d6bd',1,'complex.h']]], - ['complex_5fbinop_5fhelper_58',['complex_binop_helper',['../types_2complex_8h.html#ac6890f9852de12339b09b65757ebc8c4',1,'complex.h']]], - ['complex_5fmul_59',['complex_mul',['../radix_8h.html#a5bfc53b531214c9ce277bebc18aa67d6',1,'radix.h']]], - ['complex_5fmul_5fconj_60',['complex_mul_conj',['../radix_8h.html#a0e2dfd3d1dda09f47ccc64eec35629f3',1,'radix.h']]], - ['complexfloating_61',['complexfloating',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2dafb203630099d501ff7c255a574bc4812',1,'mlx::core::Dtype::complexfloating'],['../namespacemlx_1_1core.html#a70b8e88c9df750af984757105af33423',1,'mlx::core::complexfloating']]], - ['compute_5fstrided_5findices_62',['compute_strided_indices',['../struct_read_writer.html#a7c903fbb8b85a856ba5564d7df537cdf',1,'ReadWriter']]], - ['concatenate_63',['Concatenate',['../classmlx_1_1core_1_1_concatenate.html',1,'mlx::core::Concatenate'],['../classmlx_1_1core_1_1_concatenate.html#acff07853de2d31faeec7c4ca40ce0888',1,'mlx::core::Concatenate::Concatenate()']]], - ['concatenate_64',['concatenate',['../group__ops.html#gabdc36fa65697d0361c8d67495de77129',1,'mlx::core::concatenate(const std::vector< array > &arrays, int axis, StreamOrDevice s={})'],['../group__ops.html#gaa95c34ca3a8877f2c50cb60e7fa312b8',1,'mlx::core::concatenate(const std::vector< array > &arrays, StreamOrDevice s={})']]], - ['concatenate_5fgpu_65',['concatenate_gpu',['../namespacemlx_1_1core.html#a050299d0d366ca5c9d09d1004dcc3e7d',1,'mlx::core']]], - ['concurrent_5fqueue_66',['concurrent_queue',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html',1,'pocketfft::detail::threading']]], - ['concurrent_5fqueue_3c_20std_3a_3afunction_3c_20void_28_29_3e_20_3e_67',['concurrent_queue< std::function< void()> >',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html',1,'pocketfft::detail::threading']]], - ['concurrentcontext_68',['ConcurrentContext',['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html',1,'mlx::core::metal::CommandEncoder::ConcurrentContext'],['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html#aee044d7729739c96e845823f9ecc5174',1,'mlx::core::metal::CommandEncoder::ConcurrentContext::ConcurrentContext()']]], - ['cond_69',['cond',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a4ffd524d6a5bedd1a303b63bdde6701c',1,'mlx::core::scheduler::StreamThread']]], - ['conj_70',['conj',['../namespacepocketfft_1_1detail.html#a66d79051d502046a9b9f103e744dbad3',1,'pocketfft::detail']]], - ['conjugate_71',['Conjugate',['../struct_conjugate.html',1,'Conjugate'],['../classmlx_1_1core_1_1_conjugate.html',1,'mlx::core::Conjugate'],['../structmlx_1_1core_1_1detail_1_1_conjugate.html',1,'mlx::core::detail::Conjugate'],['../classmlx_1_1core_1_1_conjugate.html#a627f9e6a8729fb3ffb3ca3228d007c87',1,'mlx::core::Conjugate::Conjugate()']]], - ['conjugate_72',['conjugate',['../group__ops.html#ga5b596906bf8cdc8d97ed6ddc9aeb4c23',1,'mlx::core']]], - ['contiguous_73',['contiguous',['../structmlx_1_1core_1_1array_1_1_flags.html#afd0ab11e7a486a2a8e50ee84b971ac8a',1,'mlx::core::array::Flags']]], - ['contiguous_5fscan_74',['contiguous_scan',['../kernels_2scan_8h.html#a1f9c197dc09641f3fbb2e886c85b0675',1,'scan.h']]], - ['contiguousallreduce_75',['ContiguousAllReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ae4e34c7154eb8dc47aa8503209730424',1,'mlx::core']]], - ['contiguousreduce_76',['ContiguousReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ad2547f25dffe8d8936dbec25601cfc84',1,'mlx::core']]], - ['contiguousstridedreduce_77',['ContiguousStridedReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ab48dac7508a2c790de1bdc33f29177ed',1,'mlx::core']]], - ['conv_78',['conv',['../namespacemlx_1_1core_1_1metal.html#ab1704e853394c725668c06752ebb5c24',1,'mlx::core::metal']]], - ['conv_2eh_79',['conv.h',['../conv_8h.html',1,'']]], - ['conv1d_80',['conv1d',['../group__ops.html#ga30d47e08093c03a3676f235f9f559411',1,'mlx::core']]], - ['conv2d_81',['conv2d',['../group__ops.html#ga73b02833229678786e7f302d458d5a83',1,'mlx::core']]], - ['conv2dgeneralbaseinfo_82',['Conv2DGeneralBaseInfo',['../structmlx_1_1steel_1_1_conv2_d_general_base_info.html',1,'mlx::steel']]], - ['conv2dgeneraljumpparams_83',['Conv2DGeneralJumpParams',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html',1,'mlx::steel']]], - ['conv2dinputblockloadergeneral_84',['Conv2DInputBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html',1,'mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a1d83af561a483432bf8dcb42e734b23b',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::Conv2DInputBlockLoaderGeneral()']]], - ['conv2dinputblockloaderlargefilter_85',['Conv2DInputBlockLoaderLargeFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a8755116a535539744e4947bc69f9c50f',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::Conv2DInputBlockLoaderLargeFilter()']]], - ['conv2dinputblockloadersmallchannels_86',['Conv2DInputBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#ab9fd3fdeab94470dde3326f1dd5c455a',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::Conv2DInputBlockLoaderSmallChannels()']]], - ['conv2dinputblockloadersmallfilter_87',['Conv2DInputBlockLoaderSmallFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a0a2cbf57c51cd928722e3f06aafcf933',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::Conv2DInputBlockLoaderSmallFilter()']]], - ['conv2dweightblockloader_88',['Conv2DWeightBlockLoader',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html',1,'mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a9a7dca3512b64cffb6eac305d795831c',1,'mlx::steel::Conv2DWeightBlockLoader::Conv2DWeightBlockLoader()']]], - ['conv2dweightblockloadergeneral_89',['Conv2DWeightBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#ad0550fabbdc9297559381a5b488e9af1',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::Conv2DWeightBlockLoaderGeneral()']]], - ['conv2dweightblockloadersmallchannels_90',['Conv2DWeightBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#ae1806ea1c19713819dee83a38ab35fa6',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::Conv2DWeightBlockLoaderSmallChannels()']]], - ['conv3d_91',['conv3d',['../group__ops.html#ga6e9907d2f14dc4803e4306b3dbc4b3ca',1,'mlx::core']]], - ['conv_5fgeneral_92',['conv_general',['../group__ops.html#ga2236e5dfc7e52e28abf6c21675d0a51e',1,'mlx::core::conv_general(array input, array weight, std::vector< int > stride={}, std::vector< int > padding_lo={}, std::vector< int > padding_hi={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})'],['../group__ops.html#gab59f89942cd1efaadffe9e8762e3c99d',1,'mlx::core::conv_general(const array &input, const array &weight, std::vector< int > stride={}, std::vector< int > padding={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})']]], - ['conv_5ftranspose1d_93',['conv_transpose1d',['../group__ops.html#gaa30bf1adcd78d1c2595d07b215731714',1,'mlx::core']]], - ['conv_5ftranspose2d_94',['conv_transpose2d',['../group__ops.html#gaebb59971cb9bc45005dc1d398e4f0a3d',1,'mlx::core']]], - ['conv_5ftranspose3d_95',['conv_transpose3d',['../group__ops.html#ga8db814da631d9cd32a8d6563bf4ac530',1,'mlx::core']]], - ['convolution_96',['Convolution',['../classmlx_1_1core_1_1_convolution.html',1,'mlx::core::Convolution'],['../classmlx_1_1core_1_1_convolution.html#a6f1de77b719bb13217b0d8c64cabb8ef',1,'mlx::core::Convolution::Convolution()']]], - ['copy_97',['Copy',['../classmlx_1_1core_1_1_copy.html',1,'mlx::core::Copy'],['../classmlx_1_1core_1_1_copy.html#a6243e044af119105ffaaed7d405cd584',1,'mlx::core::Copy::Copy()']]], - ['copy_98',['copy',['../namespacemlx_1_1core.html#a479648542a2bea151b947b18f0e79dd2',1,'mlx::core::copy()'],['../namespacemlx_1_1core_1_1metal.html#aa215e631e2680f04a591b88d91571719',1,'mlx::core::metal::copy()'],['../group__ops.html#gae306e93af12f774bd80bad6c231b09d6',1,'mlx::core::copy()']]], - ['copy_2eh_99',['copy.h',['../common_2copy_8h.html',1,'(Global Namespace)'],['../metal_2copy_8h.html',1,'(Global Namespace)'],['../metal_2jit_2copy_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2copy_8h.html',1,'(Global Namespace)']]], - ['copy_5fg_100',['copy_g',['../metal_2kernels_2copy_8h.html#a1ea80f8edb842dd0ed8ffe553a2238b2',1,'copy.h']]], - ['copy_5fg_5fnd_101',['copy_g_nd',['../metal_2kernels_2copy_8h.html#a07336a7a024125b4f6d3e8556d04058f',1,'copy.h']]], - ['copy_5fg_5fnd1_102',['copy_g_nd1',['../metal_2kernels_2copy_8h.html#aba4530a7db6a61ca36f50e4f5e58fb77',1,'copy.h']]], - ['copy_5fg_5fnd2_103',['copy_g_nd2',['../metal_2kernels_2copy_8h.html#aee678c7c31119f3e609685589f37490c',1,'copy.h']]], - ['copy_5fg_5fnd3_104',['copy_g_nd3',['../metal_2kernels_2copy_8h.html#a821f8f3f3891159a295c66fc25aed1ff',1,'copy.h']]], - ['copy_5fgg_105',['copy_gg',['../metal_2kernels_2copy_8h.html#a9fd1d98f0dcf976089754cd47f55784d',1,'copy.h']]], - ['copy_5fgg_5fnd_106',['copy_gg_nd',['../metal_2kernels_2copy_8h.html#a3197d34e9c68e7059419ae0635667059',1,'copy.h']]], - ['copy_5fgg_5fnd1_107',['copy_gg_nd1',['../metal_2kernels_2copy_8h.html#a3278d9c999718bee3ccbe2922f501bf1',1,'copy.h']]], - ['copy_5fgg_5fnd2_108',['copy_gg_nd2',['../metal_2kernels_2copy_8h.html#a3e2d3cc7f34f56170409b6735f51a950',1,'copy.h']]], - ['copy_5fgg_5fnd3_109',['copy_gg_nd3',['../metal_2kernels_2copy_8h.html#a59f43b5bffed936d7559ceb06a10aabd',1,'copy.h']]], - ['copy_5fgpu_110',['copy_gpu',['../namespacemlx_1_1core.html#addaa46a13ac2deb1d9ce621338320e0e',1,'mlx::core::copy_gpu(const array &src, array &out, CopyType ctype, const Stream &s)'],['../namespacemlx_1_1core.html#a6a6f4e46c8fc44fdc74c50ace02bcf38',1,'mlx::core::copy_gpu(const array &src, array &out, CopyType ctype)']]], - ['copy_5fgpu_5finplace_111',['copy_gpu_inplace',['../namespacemlx_1_1core.html#a69e30f5d30a6d72ac0ffe4886f24b7ba',1,'mlx::core::copy_gpu_inplace(const array &in, array &out, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype, const Stream &s)'],['../namespacemlx_1_1core.html#a8e1ccb0ed9387b0a789311d9f8964803',1,'mlx::core::copy_gpu_inplace(const array &src, array &out, CopyType ctype, const Stream &s)'],['../namespacemlx_1_1core.html#ae55b801b09ccf55cba96278163a9b1ef',1,'mlx::core::copy_gpu_inplace(const array &in, array &out, const std::vector< int64_t > &istride, int64_t ioffset, CopyType ctype, const Stream &s)']]], - ['copy_5fhartley_112',['copy_hartley',['../namespacepocketfft_1_1detail.html#abac3fcc8ce83800d228774f64c28d4c3',1,'pocketfft::detail::copy_hartley(const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)'],['../namespacepocketfft_1_1detail.html#ae7b44d2773d9d06a9787aff01d66b3ed',1,'pocketfft::detail::copy_hartley(const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)']]], - ['copy_5finplace_113',['copy_inplace',['../namespacemlx_1_1core.html#a98495894a796b2cc6d022e7a03432c64',1,'mlx::core::copy_inplace(const array &src, array &dst, CopyType ctype)'],['../namespacemlx_1_1core.html#aad636e2d0b2f882cadd1b438f4daa9ed',1,'mlx::core::copy_inplace(const array &src, array &dst, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype)']]], - ['copy_5finput_114',['copy_input',['../namespacepocketfft_1_1detail.html#aff05be3064743c1143b19318ab12ad4a',1,'pocketfft::detail::copy_input(const multi_iter< vlen > &it, const cndarr< cmplx< T > > &src, cmplx< vtype_t< T > > *dst)'],['../namespacepocketfft_1_1detail.html#a30fc708f9d8f9cfa74194925c7863c0a',1,'pocketfft::detail::copy_input(const multi_iter< vlen > &it, const cndarr< T > &src, vtype_t< T > *dst)'],['../namespacepocketfft_1_1detail.html#a3387bd35f237870e42b8461769e6aec4',1,'pocketfft::detail::copy_input(const multi_iter< vlen > &it, const cndarr< T > &src, T *dst)']]], - ['copy_5fkernels_115',['copy_kernels',['../metal_2jit_2copy_8h.html#a02dd446c4670b26ee069a70e951be785',1,'copy.h']]], - ['copy_5foutput_116',['copy_output',['../namespacepocketfft_1_1detail.html#a1523a037300a8da05db210b802d9cb0e',1,'pocketfft::detail::copy_output(const multi_iter< vlen > &it, const cmplx< vtype_t< T > > *src, ndarr< cmplx< T > > &dst)'],['../namespacepocketfft_1_1detail.html#a21980853aca4d92ed06e3dcffe7ef660',1,'pocketfft::detail::copy_output(const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)'],['../namespacepocketfft_1_1detail.html#a310481c334e46674710ba794ad7403c0',1,'pocketfft::detail::copy_output(const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)']]], - ['copy_5fs_117',['copy_s',['../metal_2kernels_2copy_8h.html#aef09f9b9475345b1bba121d037d222ea',1,'copy.h']]], - ['copy_5fs2_118',['copy_s2',['../metal_2kernels_2copy_8h.html#a8023e9335cc5334847a8d315042be3a3',1,'copy.h']]], - ['copy_5fshared_5fbuffer_119',['copy_shared_buffer',['../classmlx_1_1core_1_1array.html#a28df7a333d90a311c49bc4bce7a1ad6d',1,'mlx::core::array::copy_shared_buffer(const array &other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)'],['../classmlx_1_1core_1_1array.html#a92974c656c35a972ad241f80584bbd29',1,'mlx::core::array::copy_shared_buffer(const array &other)']]], - ['copy_5fv_120',['copy_v',['../metal_2kernels_2copy_8h.html#ae26a13e0c8e6c15f7b10078e65970659',1,'copy.h']]], - ['copy_5fv2_121',['copy_v2',['../metal_2kernels_2copy_8h.html#aee14a5326f53d9b30b0b38e27d180ef3',1,'copy.h']]], - ['copytype_122',['CopyType',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337',1,'mlx::core']]], - ['core_20array_20operations_123',['Core array operations',['../group__ops.html',1,'']]], - ['cos_124',['Cos',['../struct_cos.html',1,'Cos'],['../classmlx_1_1core_1_1_cos.html',1,'mlx::core::Cos'],['../structmlx_1_1core_1_1detail_1_1_cos.html',1,'mlx::core::detail::Cos'],['../classmlx_1_1core_1_1_cos.html#a2acb9fcf0901462189c476756fd99995',1,'mlx::core::Cos::Cos()']]], - ['cos_125',['cos',['../namespacepocketfft_1_1detail.html#a499c1e8b7d79a5272af024f46c63ff9d',1,'pocketfft::detail::cos()'],['../namespacemetal.html#a2fa4778a6fe2fa43253ea724e5a608a3',1,'metal::cos()'],['../namespacemetal_1_1fast.html#a75b6bb32fa3870eda46a7bfc9f481f88',1,'metal::fast::cos()'],['../namespacemetal_1_1precise.html#ac4941f62e7d8ab9d7cabbd967aa9f220',1,'metal::precise::cos()'],['../group__ops.html#ga39dfdf72b556012aa35ff27a94116e74',1,'mlx::core::cos()']]], - ['cosh_126',['Cosh',['../struct_cosh.html',1,'Cosh'],['../classmlx_1_1core_1_1_cosh.html',1,'mlx::core::Cosh'],['../structmlx_1_1core_1_1detail_1_1_cosh.html',1,'mlx::core::detail::Cosh'],['../classmlx_1_1core_1_1_cosh.html#a44e8ac2e09a55ec32e9dc6641eedc8f1',1,'mlx::core::Cosh::Cosh()']]], - ['cosh_127',['cosh',['../namespacemetal.html#a8a68a88cc110830d057dbd71431b93c0',1,'metal::cosh()'],['../namespacemetal_1_1fast.html#a31544ad9de28012a4ddda86e3966a77e',1,'metal::fast::cosh()'],['../namespacemetal_1_1precise.html#a72d86d508300a9b58f4ccbbe70da4fbc',1,'metal::precise::cosh()'],['../group__ops.html#ga2181b71cda88007a3092be4795ff0715',1,'mlx::core::cosh()']]], - ['cosine_128',['cosine',['../structpocketfft_1_1detail_1_1_exec_dcst.html#a185023fc1e386cc8f233b79c49c1fd8a',1,'pocketfft::detail::ExecDcst']]], - ['cospi_129',['cospi',['../namespacemetal.html#a5c2f37939ad705ddea4409d3bedb8ce1',1,'metal::cospi()'],['../namespacemetal_1_1fast.html#a9906b41f75319b384ffb570cc94d67ce',1,'metal::fast::cospi()'],['../namespacemetal_1_1precise.html#a2392b78bd196efdbbac65901c4ab20e7',1,'metal::precise::cospi()']]], - ['cost_5fguess_130',['cost_guess',['../structpocketfft_1_1detail_1_1util.html#ad3d874bc3fb0048df2270779a15d4bd0',1,'pocketfft::detail::util']]], - ['count_5fdown_131',['count_down',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a81d6597189b40410e35f3cd653fd1342',1,'pocketfft::detail::threading::latch']]], - ['cpu_132',['cpu',['../structmlx_1_1core_1_1_device.html#a69ee81924251dec96f1945c9d91506fd',1,'mlx::core::Device::cpu'],['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdbad9747e2da342bdb995f6389533ad1a3d',1,'mlx::core::Device::cpu']]], - ['cummax_133',['CumMax',['../struct_cum_max.html',1,'']]], - ['cummax_134',['cummax',['../group__ops.html#gaee37cac8476e8f8d666bcded5bc59143',1,'mlx::core']]], - ['cummin_135',['CumMin',['../struct_cum_min.html',1,'']]], - ['cummin_136',['cummin',['../group__ops.html#ga19c1bf6929fe8d66b9cd408946aea6a8',1,'mlx::core']]], - ['cumprod_137',['CumProd',['../struct_cum_prod.html',1,'']]], - ['cumprod_138',['cumprod',['../group__ops.html#ga0d71dfbc14ef3ed564b0c5ee26af680f',1,'mlx::core']]], - ['cumprod_3c_20bool_20_3e_139',['CumProd< bool >',['../struct_cum_prod_3_01bool_01_4.html',1,'']]], - ['cumsum_140',['CumSum',['../struct_cum_sum.html',1,'']]], - ['cumsum_141',['cumsum',['../group__ops.html#gaddc825a5c173e195ab0fda83ad630420',1,'mlx::core']]], - ['custom_142',['Custom',['../classmlx_1_1core_1_1fast_1_1_custom.html',1,'mlx::core::fast::Custom'],['../classmlx_1_1core_1_1fast_1_1_custom.html#a4186fea23f7156c38960426821fca313',1,'mlx::core::fast::Custom::Custom()']]], - ['custom_5ffunction_143',['custom_function',['../namespacemlx_1_1core.html#a58c5b448f357b48e86599eb8eeea141d',1,'mlx::core']]], - ['custom_5fvjp_144',['custom_vjp',['../namespacemlx_1_1core.html#a3fa1f0ad360f3e16c146384276b1c467',1,'mlx::core']]], - ['customkernel_145',['CustomKernel',['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html',1,'mlx::core::fast::CustomKernel'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a954893e07f0d36715b4e1e414b6f2153',1,'mlx::core::fast::CustomKernel::CustomKernel()']]], - ['customkernelshapeinfo_146',['CustomKernelShapeInfo',['../structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html',1,'mlx::core::fast']]], - ['customtransforms_147',['CustomTransforms',['../classmlx_1_1core_1_1_custom_transforms.html',1,'mlx::core::CustomTransforms'],['../classmlx_1_1core_1_1_custom_transforms.html#ab52abadb9c6f6db83d087c7b751be488',1,'mlx::core::CustomTransforms::CustomTransforms()']]] -]; diff --git a/docs/build/html/search/all_4.js b/docs/build/html/search/all_4.js deleted file mode 100644 index d1e8b297..00000000 --- a/docs/build/html/search/all_4.js +++ /dev/null @@ -1,63 +0,0 @@ -var searchData= -[ - ['d_0',['d',['../classpocketfft_1_1detail_1_1cndarr.html#ac29c769aebb03f81fbcf16ba6e766af2',1,'pocketfft::detail::cndarr::d'],['../structmlx_1_1core_1_1array_1_1_data.html#a25f52ac67912a49bb6e2b6715aa65311',1,'mlx::core::array::Data::d']]], - ['data_1',['Data',['../structmlx_1_1core_1_1array_1_1_data.html',1,'mlx::core::array::Data'],['../structmlx_1_1core_1_1array_1_1_data.html#a77e2ea35fac1d54e4062468a432e1482',1,'mlx::core::array::Data::Data(allocator::Buffer buffer, deleter_t d=allocator::free)'],['../structmlx_1_1core_1_1array_1_1_data.html#a50f242040b123052e48e18c244ff70fc',1,'mlx::core::array::Data::Data(const Data &d)=delete']]], - ['data_2',['data',['../classpocketfft_1_1detail_1_1arr.html#aec0f2191b4663b4187aab92454c34de8',1,'pocketfft::detail::arr::data()'],['../classpocketfft_1_1detail_1_1arr.html#ac82daa17e9f991072b012343f9d7c182',1,'pocketfft::detail::arr::data() const'],['../classmlx_1_1core_1_1array.html#a72e3ce6c03fefe272cadf214bd127b95',1,'mlx::core::array::data()'],['../classmlx_1_1core_1_1array.html#a99fb28eeab39b9f429373f8bd7557676',1,'mlx::core::array::data() const']]], - ['data_5fshared_5fptr_3',['data_shared_ptr',['../classmlx_1_1core_1_1array.html#ab84c792117e29cdf90ef3433303f6141',1,'mlx::core::array']]], - ['data_5fsize_4',['data_size',['../classmlx_1_1core_1_1array.html#afaf2a370fa35d96af1b27a4b814e3bfd',1,'mlx::core::array']]], - ['dct_5',['dct',['../namespacepocketfft_1_1detail.html#a60615f5b685314c658346c309d5ef2ba',1,'pocketfft::detail']]], - ['deallocate_6',['deallocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a2a99b8e296d26b255e9937ba5f30e76f',1,'pocketfft::detail::threading::aligned_allocator']]], - ['debug_5fset_5fprimitive_5fbuffer_5flabel_7',['debug_set_primitive_buffer_label',['../namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230',1,'mlx::core']]], - ['debug_5fset_5fstream_5fqueue_5flabel_8',['debug_set_stream_queue_label',['../namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2',1,'mlx::core']]], - ['decompose_5fhadamard_9',['decompose_hadamard',['../namespacemlx_1_1core.html#a3a8fe7ba84714dbb5fdc81e93a07abc8',1,'mlx::core']]], - ['default_5f_10',['default_',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#ab5993daeed822c6b970caddab7e3fd90',1,'mlx::core::random::KeySequence']]], - ['default_5fdevice_11',['default_device',['../namespacemlx_1_1core.html#a0196171cfe6ee2953113abce597dc815',1,'mlx::core']]], - ['default_5fstream_12',['default_stream',['../namespacemlx_1_1core.html#ac198b7e282957c724c84a435e8f1215e',1,'mlx::core']]], - ['defaultcontiguousreduce_13',['DefaultContiguousReduce',['../structmlx_1_1core_1_1_default_contiguous_reduce.html',1,'mlx::core::DefaultContiguousReduce< T, U, Op >'],['../structmlx_1_1core_1_1_default_contiguous_reduce.html#aeb4fb7fa1a4c8e7d1da1f450ce95c57f',1,'mlx::core::DefaultContiguousReduce::DefaultContiguousReduce()']]], - ['defaultstridedreduce_14',['DefaultStridedReduce',['../structmlx_1_1core_1_1_default_strided_reduce.html',1,'mlx::core::DefaultStridedReduce< T, U, Op >'],['../structmlx_1_1core_1_1_default_strided_reduce.html#a477e5dd0dd33071e48769d11d19a13fb',1,'mlx::core::DefaultStridedReduce::DefaultStridedReduce()']]], - ['define_5fdefault_5fis_5fequivalent_15',['DEFINE_DEFAULT_IS_EQUIVALENT',['../primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a',1,'primitives.h']]], - ['define_5fgrads_16',['DEFINE_GRADS',['../primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6',1,'primitives.h']]], - ['define_5finput_5foutput_5fshape_17',['DEFINE_INPUT_OUTPUT_SHAPE',['../primitives_8h.html#a649a06267b75e007224ea4ddefedb999',1,'primitives.h']]], - ['define_5fprint_18',['DEFINE_PRINT',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a8af1e90d4aa56f31ec40ad152ebd2421',1,'mlx::core::distributed::AllGather::DEFINE_PRINT()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a31bf76e24cf3836cf1fd26da30712e31',1,'mlx::core::distributed::Send::DEFINE_PRINT()'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a7a0cad13da7cf8e565934318a2bc34f1',1,'mlx::core::distributed::Recv::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#ae6eea81b5e3789c2f6f376cc07f0a47c',1,'mlx::core::fast::RMSNorm::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#a9895733eab845e11484d86cf6ecedced',1,'mlx::core::fast::RMSNormVJP::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a467fcf02b3ddf1d8b6d476b244ae3568',1,'mlx::core::fast::LayerNorm::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a5ab3eb5402c7e8060916056eb2b7887f',1,'mlx::core::fast::LayerNormVJP::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a2b06fe64fa8feca65140632087065e16',1,'mlx::core::fast::RoPE::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#a6cc2092fa5b8e7585921b8e0f3ec3db7',1,'mlx::core::fast::ScaledDotProductAttention::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a4b8f1b1f633002c8ca6fa8f0ef4dd587',1,'mlx::core::fast::AffineQuantize::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a116ecf31c8672c94e5ea06c1d43e9534',1,'mlx::core::fast::CustomKernel::DEFINE_PRINT()'],['../primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592',1,'DEFINE_PRINT: primitives.h']]], - ['define_5fsimd_5freduce_19',['DEFINE_SIMD_REDUCE',['../backend_2metal_2kernels_2reduction_2ops_8h.html#acacf99e0ba629ed062ccc3c2eba89b05',1,'ops.h']]], - ['define_5fvmap_20',['DEFINE_VMAP',['../primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd',1,'primitives.h']]], - ['defines_2eh_21',['defines.h',['../defines_8h.html',1,'(Global Namespace)'],['../steel_2defines_8h.html',1,'(Global Namespace)']]], - ['degrees_22',['degrees',['../group__ops.html#ga3a70569b50e1083c5ded199d73fb960c',1,'mlx::core']]], - ['deleter_5ft_23',['deleter_t',['../namespacemlx_1_1core.html#a1e6cec03ebd80fd2d6b12b288367bfa8',1,'mlx::core']]], - ['denorm_5fmin_24',['denorm_min',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['depends_25',['Depends',['../classmlx_1_1core_1_1_depends.html',1,'mlx::core::Depends'],['../classmlx_1_1core_1_1_depends.html#a4ccb792c99f5d8d133d3fac29f7d3f62',1,'mlx::core::Depends::Depends()']]], - ['depends_26',['depends',['../group__ops.html#gac4a51a68fbe1725436b026d2fbb95759',1,'mlx::core']]], - ['dequantize_27',['dequantize',['../quantized_8h.html#aecff265b63566d0d5689cfc4e5b037d2',1,'dequantize(): quantized.h'],['../group__ops.html#gabff758a5c1ce32ad7e8b78aba0164077',1,'mlx::core::dequantize()']]], - ['detach_28',['detach',['../classmlx_1_1core_1_1array.html#a84948c29df8c957904919c8602692bd2',1,'mlx::core::array']]], - ['device_29',['Device',['../structmlx_1_1core_1_1_device.html',1,'mlx::core::Device'],['../classmlx_1_1core_1_1metal_1_1_device.html',1,'mlx::core::metal::Device']]], - ['device_30',['device',['../structmlx_1_1core_1_1_stream.html#a406b1b0162287a4162fab1f70e2ff3bb',1,'mlx::core::Stream::device'],['../classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261',1,'mlx::core::Primitive::device()']]], - ['device_31',['Device',['../classmlx_1_1core_1_1metal_1_1_device.html#ae0db74570eb4b19d8cf19774db91bfd6',1,'mlx::core::metal::Device::Device()'],['../classmlx_1_1core_1_1metal_1_1_device.html#abf59a4addb5473f9e814e3651ba85f06',1,'mlx::core::metal::Device::Device(const Device &)=delete'],['../structmlx_1_1core_1_1_device.html#a481ccfb94d689994396bd353e966b489',1,'mlx::core::Device::Device()']]], - ['device_32',['device',['../namespacemlx_1_1core_1_1metal.html#a910797b74824e6ee576fbb533dee8b57',1,'mlx::core::metal']]], - ['device_2eh_33',['device.h',['../backend_2metal_2device_8h.html',1,'(Global Namespace)'],['../device_8h.html',1,'(Global Namespace)']]], - ['device_5finfo_34',['device_info',['../namespacemlx_1_1core_1_1metal.html#a6ad19c44efabb7423f973407926ead61',1,'mlx::core::metal']]], - ['devicetype_35',['DeviceType',['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdb',1,'mlx::core::Device']]], - ['diag_36',['diag',['../group__ops.html#ga11af511875640e1fa88e0ca87e199344',1,'mlx::core']]], - ['diagonal_37',['diagonal',['../group__ops.html#ga9236b085a88ead3128ed8079d009cac6',1,'mlx::core']]], - ['difference_5ftype_38',['difference_type',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#adcee44c77980fc2370a2c31e203aead5',1,'mlx::core::array::ArrayIterator']]], - ['digits_39',['digits',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#af6a681edff230c8d734a1feefb8d1879',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['digits10_40',['digits10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a0f48dd0c8a2d2dfa825067fb212b2e6b',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['disable_5fcompile_41',['disable_compile',['../namespacemlx_1_1core.html#a5f5fea955057bb3842b271b037909e66',1,'mlx::core']]], - ['disabled_42',['disabled',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4a075ae3d2fc31640504f814f60e5ef713',1,'mlx::core']]], - ['dispatchthreadgroups_43',['dispatchThreadgroups',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a74bcd8e35f80f5a62db48c4a2bb0173e',1,'mlx::core::metal::CommandEncoder']]], - ['dispatchthreads_44',['dispatchThreads',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a1e41477f2f489e38499f7830a91c9810',1,'mlx::core::metal::CommandEncoder']]], - ['distprimitive_45',['DistPrimitive',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html',1,'mlx::core::distributed::DistPrimitive'],['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a8c54166951522c2a52ef39fce8c87f8f',1,'mlx::core::distributed::DistPrimitive::DistPrimitive()']]], - ['distributed_2eh_46',['distributed.h',['../distributed_8h.html',1,'']]], - ['distributed_5fimpl_2eh_47',['distributed_impl.h',['../distributed__impl_8h.html',1,'']]], - ['divide_48',['Divide',['../struct_divide.html',1,'Divide'],['../structmlx_1_1core_1_1detail_1_1_divide.html',1,'mlx::core::detail::Divide'],['../classmlx_1_1core_1_1_divide.html',1,'mlx::core::Divide'],['../classmlx_1_1core_1_1_divide.html#a62fc71e8998be65ff18285dbbd21eedb',1,'mlx::core::Divide::Divide()']]], - ['divide_49',['divide',['../namespacemetal.html#a2aea493fc1a874970b77ed0031e965df',1,'metal::divide()'],['../namespacemetal_1_1fast.html#ae70bc2185e4649369cf7b15f5e1d48be',1,'metal::fast::divide()'],['../namespacemetal_1_1precise.html#aec0982cdb96a08b61f51129150d82e9d',1,'metal::precise::divide()'],['../group__ops.html#ga77472dd06cfa7a30a42e4fd927bd859f',1,'mlx::core::divide()']]], - ['divmod_50',['DivMod',['../struct_div_mod.html',1,'DivMod'],['../classmlx_1_1core_1_1_div_mod.html',1,'mlx::core::DivMod'],['../classmlx_1_1core_1_1_div_mod.html#a859e3b6149cdceab1c7ccfd2246fb826',1,'mlx::core::DivMod::DivMod()']]], - ['divmod_51',['divmod',['../group__ops.html#gaa30ebc0a8376dbc3f7e46a47052b5894',1,'mlx::core']]], - ['do_5faxpby_52',['do_axpby',['../steel__gemm__fused_8h.html#a703f06c849c89c37af7b1d27b0804a29',1,'steel_gemm_fused.h']]], - ['do_5fgather_53',['do_gather',['../steel__gemm__fused_8h.html#a60efac3ac3b7cd64d096bbae38a3ac69',1,'steel_gemm_fused.h']]], - ['do_5fread_54',['do_read',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a13eb86acf6abe288c19645935a47d2ad',1,'mlx::steel::Conv2DWeightBlockLoader::do_read'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a640155880483e1042ec5f647b9adaac6',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::do_read']]], - ['dst_55',['dst',['../struct_quantized_block_loader.html#a9857214690fe6abad0e19d1045152f83',1,'QuantizedBlockLoader::dst'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#ae048eb79f8b8d98f0fe8805c30fbb09f',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::dst'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a8598bf23a2bce6af13c876cbfa76449f',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::dst'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#aea6494838175225d02cbc7768a646ec7',1,'mlx::steel::Conv2DWeightBlockLoader::dst'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a59a4fffc1dc2f3fadfb3fdd1b886da70',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::dst'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a24e20e4c1dd1ebf9534bfa2b3e050ed3',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::dst'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#aa84c4ad43a5defb83ba1a5f49a7adb2a',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::dst'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a8474daf268013e138a84fc1c4bff7352',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::dst'],['../structmlx_1_1steel_1_1_block_loader.html#af34c184a19846e4b40ba54b2946589ec',1,'mlx::steel::BlockLoader::dst'],['../namespacepocketfft_1_1detail.html#add0f231fc8a1ce01b90a90faeebcb4eb',1,'pocketfft::detail::dst()']]], - ['dst_5fld_56',['dst_ld',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a91192d512e7a18c2d16a139065000959',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::dst_ld'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a9e59da7e4436e61b2d3c3f982355910b',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::dst_ld'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a0ff5a6d503e0bbac4634030a75ab818d',1,'mlx::steel::Conv2DWeightBlockLoader::dst_ld'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#ae71570942c7b0ad8e67c62662b336c4a',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::dst_ld'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#ac18eeebea26cc6da434ead6eb4397350',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::dst_ld'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a07c85eab8cbf7b02c60df29cf32031ef',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::dst_ld'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#aae121ca6016fc6c7255027b3641f3a09',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::dst_ld']]], - ['dtype_57',['Dtype',['../structmlx_1_1core_1_1_dtype.html',1,'mlx::core::Dtype'],['../structmlx_1_1core_1_1_dtype.html#aec17f0a4a51729e5ac40b62f0aa765d1',1,'mlx::core::Dtype::Dtype()']]], - ['dtype_58',['dtype',['../classmlx_1_1core_1_1array.html#ae29e7d6fbfbea1e5e321a8d1ea3cfacd',1,'mlx::core::array']]], - ['dtype_2eh_59',['dtype.h',['../dtype_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/all_5.js b/docs/build/html/search/all_5.js deleted file mode 100644 index a3b6fb44..00000000 --- a/docs/build/html/search/all_5.js +++ /dev/null @@ -1,58 +0,0 @@ -var searchData= -[ - ['e_0',['e',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a491d45f7af463017c1f8cae94cd05590',1,'mlx::core::Log']]], - ['einsum_1',['einsum',['../namespacemlx_1_1core.html#a2a9b98c65578dd3720b3b375c1471e58',1,'mlx::core']]], - ['einsum_2eh_2',['einsum.h',['../einsum_8h.html',1,'']]], - ['einsum_5fpath_3',['einsum_path',['../namespacemlx_1_1core.html#ab14ec41f17675691c1fdebb8990b6695',1,'mlx::core']]], - ['elem_4',['elem',['../struct_read_writer.html#a32b82adcd6ed324ce235e9f5ad780ede',1,'ReadWriter']]], - ['elem_5fto_5floc_5',['elem_to_loc',['../namespacemlx_1_1core.html#a4950c3248e70280b406a4f1430a85880',1,'mlx::core::elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)'],['../namespacemlx_1_1core.html#ad7e4f40eb351b554bbfabb6d7d600d06',1,'mlx::core::elem_to_loc(int elem, const array &a)'],['../backend_2metal_2kernels_2utils_8h.html#a2e49fa7ab8f6348543455c6c45d7e2a9',1,'elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a8fd0c8fc6058e650fc99bca8b6acd7d1',1,'elem_to_loc(uint elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a458c064858186818561aaf72a3647c32',1,'elem_to_loc(stride_t elem, device const int *shape, device const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#aa6b041005351293e68e19b5abf1286cd',1,'elem_to_loc(stride_t elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a37e00d94751710e81c9632bca2f91e51',1,'elem_to_loc(uint3 elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h']]], - ['elem_5fto_5floc_5f1_6',['elem_to_loc_1',['../backend_2metal_2kernels_2utils_8h.html#a196a07022b812b241d4c06192c0fa83d',1,'utils.h']]], - ['elem_5fto_5floc_5f2_7',['elem_to_loc_2',['../backend_2metal_2kernels_2utils_8h.html#ad6c45cacca97899cd362df49c06fea79',1,'utils.h']]], - ['elem_5fto_5floc_5f2_5fnd_8',['elem_to_loc_2_nd',['../backend_2metal_2kernels_2utils_8h.html#a4069a6398757e8158c14551539083181',1,'elem_to_loc_2_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a2eae434d62466c9a072a8339162113ca',1,'elem_to_loc_2_nd(uint3 elem, constant const int shape[NDIM], constant const size_t a_strides[NDIM], constant const size_t b_strides[NDIM]): utils.h']]], - ['elem_5fto_5floc_5f3_9',['elem_to_loc_3',['../backend_2metal_2kernels_2utils_8h.html#a2c34ed54714c69e6e1b44344f9e6e330',1,'utils.h']]], - ['elem_5fto_5floc_5f3_5fnd_10',['elem_to_loc_3_nd',['../backend_2metal_2kernels_2utils_8h.html#a59d3221f4fbcc7e340af0a743fae054b',1,'elem_to_loc_3_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a418562e11bdfc92130e445ac01e53924',1,'elem_to_loc_3_nd(uint3 elem, constant const int shape[NDIM], constant const size_t a_strides[NDIM], constant const size_t b_strides[NDIM], constant const size_t c_strides[NDIM]): utils.h']]], - ['elem_5fto_5floc_5fbroadcast_11',['elem_to_loc_broadcast',['../backend_2metal_2kernels_2steel_2utils_8h.html#aaf4974425147d6f26d031691e321637f',1,'elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim): utils.h'],['../backend_2metal_2kernels_2steel_2utils_8h.html#a42bd57d203a40d3d7d429f2333590a3c',1,'elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim): utils.h']]], - ['elem_5fto_5floc_5fnd_12',['elem_to_loc_nd',['../backend_2metal_2kernels_2utils_8h.html#aa25c926e32ba8f05de765c662326d955',1,'elem_to_loc_nd(uint elem, device const int *shape, device const size_t *strides): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a0d04f0d0718d0a5796ce5ca1a289d942',1,'elem_to_loc_nd(uint3 elem, constant const int shape[NDIM], constant const size_t strides[NDIM]): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#ac7d74fb6d5fed31513b6b7defcf45921',1,'elem_to_loc_nd(uint elem, constant const int shape[NDIM], constant const int64_t strides[NDIM]): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a4fec636fff34a288ccd56ce202703232',1,'elem_to_loc_nd(uint3 elem, constant const int shape[NDIM], constant const int64_t strides[NDIM]): utils.h']]], - ['elems_5fper_5fthread_13',['elems_per_thread',['../struct_read_writer.html#a444230a0182ce6ba1898c04ce6e669a7',1,'ReadWriter']]], - ['elems_5fper_5fthread_5f_14',['elems_per_thread_',['../backend_2metal_2kernels_2fft_8h.html#acf9b1130c134093453d15eee02683c94',1,'fft.h']]], - ['empty_15',['empty',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#a1269e5da40c3f5145c895cee3641879a',1,'pocketfft::detail::threading::concurrent_queue']]], - ['enable_5fcompile_16',['enable_compile',['../namespacemlx_1_1core.html#a1983a2466bff3bae4d23cf34bd0946c9',1,'mlx::core']]], - ['enable_5ffor_5farrays_5ft_17',['enable_for_arrays_t',['../namespacemlx_1_1core.html#af89751d79339f3e4d9318ea97d64d114',1,'mlx::core']]], - ['enabled_18',['enabled',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4aa10311459433adf322f2590a4987c423',1,'mlx::core']]], - ['end_19',['end',['../classmlx_1_1core_1_1array.html#a5daf64552fb450825c9b382f3a5fa2d4',1,'mlx::core::array']]], - ['end_5fencoding_20',['end_encoding',['../classmlx_1_1core_1_1metal_1_1_device.html#a60689f97347811b27e8c5ca23e0372bf',1,'mlx::core::metal::Device']]], - ['enqueue_21',['enqueue',['../class_thread_pool.html#a375fa2d63197282277be640b54e8a196',1,'ThreadPool::enqueue()'],['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a4918720319cf224a1b4208568964c286',1,'mlx::core::scheduler::StreamThread::enqueue()'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a03809c783bd1866362dc7cb9118abbcc',1,'mlx::core::scheduler::Scheduler::enqueue()'],['../namespacemlx_1_1core_1_1scheduler.html#aa2d4eacf5d5cbc778a51aafd4fd8e4d7',1,'mlx::core::scheduler::enqueue()']]], - ['epsilon_22',['epsilon',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['equal_23',['Equal',['../struct_equal.html',1,'Equal'],['../structmlx_1_1core_1_1detail_1_1_equal.html',1,'mlx::core::detail::Equal'],['../classmlx_1_1core_1_1_equal.html',1,'mlx::core::Equal'],['../classmlx_1_1core_1_1_equal.html#a4af81cf2dd071db5bbf8ce1df95fdf36',1,'mlx::core::Equal::Equal()']]], - ['equal_24',['equal',['../group__ops.html#ga33638dc3a9972dd02be12d0eb85f9bde',1,'mlx::core']]], - ['erf_25',['Erf',['../struct_erf.html',1,'Erf'],['../structmlx_1_1core_1_1detail_1_1_erf.html',1,'mlx::core::detail::Erf'],['../classmlx_1_1core_1_1_erf.html',1,'mlx::core::Erf'],['../classmlx_1_1core_1_1_erf.html#a702f76f848928d8d7d3d0881ac6e4c82',1,'mlx::core::Erf::Erf()']]], - ['erf_26',['erf',['../erf_8h.html#a6ce199ee56105c67adbf8c48c019a8b2',1,'erf(): erf.h'],['../group__ops.html#ga292a335240fd5d6d625fb7a340ff5eb0',1,'mlx::core::erf()']]], - ['erf_2eh_27',['erf.h',['../erf_8h.html',1,'']]], - ['erfinv_28',['ErfInv',['../struct_erf_inv.html',1,'ErfInv'],['../structmlx_1_1core_1_1detail_1_1_erf_inv.html',1,'mlx::core::detail::ErfInv'],['../classmlx_1_1core_1_1_erf_inv.html',1,'mlx::core::ErfInv'],['../classmlx_1_1core_1_1_erf_inv.html#a5d0279247b67da4592311559f04e1478',1,'mlx::core::ErfInv::ErfInv()']]], - ['erfinv_29',['erfinv',['../erf_8h.html#a1846e0d683c7aff826bb32addcc3b885',1,'erfinv(): erf.h'],['../group__ops.html#ga76fb9062c64264e34d2e07013390557c',1,'mlx::core::erfinv()']]], - ['eval_30',['eval',['../classmlx_1_1core_1_1array.html#a2820c45188071a22175e9fa42e10a49a',1,'mlx::core::array::eval()'],['../namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299',1,'mlx::core::eval(std::vector< array > outputs)'],['../namespacemlx_1_1core.html#adb14f689c9f75f7901edb196c2bfb971',1,'mlx::core::eval(Arrays &&... outputs)']]], - ['eval_5fcpu_31',['eval_cpu',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#acdc1965ad64ee9ee6328fe150a97902e',1,'mlx::core::distributed::AllReduce::eval_cpu()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#ab721fe0072fffbddbc3c4334dd033ba5',1,'mlx::core::distributed::AllGather::eval_cpu()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#af2620837bfc1b97217d006ed6e374051',1,'mlx::core::distributed::Send::eval_cpu()'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a3be84b08122a939edd6062d26261358a',1,'mlx::core::distributed::Recv::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#a7da6e0cfd630958d9633b2e2bd97a54f',1,'mlx::core::fast::RMSNorm::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#adfc1d52bc266466ab29ee45fd8fab439',1,'mlx::core::fast::RMSNormVJP::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a5d7a4c1c9ee84e327d1c371733108c05',1,'mlx::core::fast::LayerNorm::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a0d8c4c6e7462befc38f7e08244fa1c2b',1,'mlx::core::fast::LayerNormVJP::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a05a7d595c6b9dadf7ddfd6e3fd402f0e',1,'mlx::core::fast::RoPE::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#ae20851e002f7fcb6d4f97817596f6328',1,'mlx::core::fast::ScaledDotProductAttention::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a3b5d628628d245b38911118d4a0ff9fd',1,'mlx::core::fast::AffineQuantize::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a4ad1b7a9919753c759093f3e21a15bad',1,'mlx::core::fast::CustomKernel::eval_cpu()'],['../classmlx_1_1core_1_1_primitive.html#a1596dc50b910538eae14878e98f07575',1,'mlx::core::Primitive::eval_cpu()'],['../classmlx_1_1core_1_1_unary_primitive.html#a7e8f6f5d6ae0a33f6abc0f5a46e0b132',1,'mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, array &output)=0'],['../classmlx_1_1core_1_1_unary_primitive.html#aa0ed6e32c36200a3ff9bc592c9b300db',1,'mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override'],['../classmlx_1_1core_1_1_abs.html#a0d3e697496ef8e842d21195cb3c14e60',1,'mlx::core::Abs::eval_cpu()'],['../classmlx_1_1core_1_1_add.html#a5bacfc51dfa2a5a931bad2dd7bdc7a5f',1,'mlx::core::Add::eval_cpu()'],['../classmlx_1_1core_1_1_add_m_m.html#a15694e3bf2ed5c193237b2b9ca00867c',1,'mlx::core::AddMM::eval_cpu()'],['../classmlx_1_1core_1_1_arange.html#aba44432491cbd599bf72712f5f4267a1',1,'mlx::core::Arange::eval_cpu()'],['../classmlx_1_1core_1_1_arc_cos.html#a58dcba9e706cb12bab062bb7fa5fa006',1,'mlx::core::ArcCos::eval_cpu()'],['../classmlx_1_1core_1_1_arc_cosh.html#a0f6d989bcbbc38f15ef17a136879a9c9',1,'mlx::core::ArcCosh::eval_cpu()'],['../classmlx_1_1core_1_1_arc_sin.html#ab3542492c14021329788de8f2a9be1e4',1,'mlx::core::ArcSin::eval_cpu()'],['../classmlx_1_1core_1_1_arc_sinh.html#a52574b24d8d16839c58673f51f8ac066',1,'mlx::core::ArcSinh::eval_cpu()'],['../classmlx_1_1core_1_1_arc_tan.html#a1211bc31241227528f04435239ddb9a3',1,'mlx::core::ArcTan::eval_cpu()'],['../classmlx_1_1core_1_1_arc_tan2.html#a13094e6b702769928ca0da468f5ce45c',1,'mlx::core::ArcTan2::eval_cpu()'],['../classmlx_1_1core_1_1_arc_tanh.html#a5af9224e1f1ffec412b0baa0af7e1ecd',1,'mlx::core::ArcTanh::eval_cpu()'],['../classmlx_1_1core_1_1_arg_partition.html#a896f75c5325798ac3f9093f6a4581828',1,'mlx::core::ArgPartition::eval_cpu()'],['../classmlx_1_1core_1_1_arg_reduce.html#ad8d48725623ede1ff654fa13eccf2287',1,'mlx::core::ArgReduce::eval_cpu()'],['../classmlx_1_1core_1_1_arg_sort.html#a022079683774bfeb531b3a002cff16fa',1,'mlx::core::ArgSort::eval_cpu()'],['../classmlx_1_1core_1_1_as_type.html#aa89dbf4d73b00c6a44cffd04d5bb228d',1,'mlx::core::AsType::eval_cpu()'],['../classmlx_1_1core_1_1_as_strided.html#acdd4705e4503ff0b124215c4676b4193',1,'mlx::core::AsStrided::eval_cpu()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a2194bf585213bda1b2966aa02d2fe283',1,'mlx::core::BitwiseBinary::eval_cpu()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#aa85da478cdc6d4a97be06e5d4abee1f2',1,'mlx::core::BlockMaskedMM::eval_cpu()'],['../classmlx_1_1core_1_1_gather_m_m.html#a62352074a480df0e1f879b0bae425730',1,'mlx::core::GatherMM::eval_cpu()'],['../classmlx_1_1core_1_1_broadcast.html#a53d48d9778e2d4c24a124cd767900780',1,'mlx::core::Broadcast::eval_cpu()'],['../classmlx_1_1core_1_1_ceil.html#a9791801fff3f8b79944e15ac2a45a035',1,'mlx::core::Ceil::eval_cpu()'],['../classmlx_1_1core_1_1_compiled.html#ac45b1d0fedd85feefbff7ce7e168b151',1,'mlx::core::Compiled::eval_cpu()'],['../classmlx_1_1core_1_1_concatenate.html#a609e76bede7fc5581ec84ddcb727a258',1,'mlx::core::Concatenate::eval_cpu()'],['../classmlx_1_1core_1_1_conjugate.html#ae39643e2178f442ffba05139f8609d61',1,'mlx::core::Conjugate::eval_cpu()'],['../classmlx_1_1core_1_1_convolution.html#ac74256068da01730629109fa4fa8432b',1,'mlx::core::Convolution::eval_cpu()'],['../classmlx_1_1core_1_1_copy.html#af4a0ebec423e84ffe8083a5e9ed0d70c',1,'mlx::core::Copy::eval_cpu()'],['../classmlx_1_1core_1_1_cos.html#a061fc446268fe56237ae6b20ccf78152',1,'mlx::core::Cos::eval_cpu()'],['../classmlx_1_1core_1_1_cosh.html#ae8702df7e8f0e20cbeccb2a548961d3d',1,'mlx::core::Cosh::eval_cpu()'],['../classmlx_1_1core_1_1_custom_transforms.html#adba1c40c77a2138df6b5f75483f62184',1,'mlx::core::CustomTransforms::eval_cpu()'],['../classmlx_1_1core_1_1_depends.html#a0c7ea6db97337591fa53c6e6bde41e5e',1,'mlx::core::Depends::eval_cpu()'],['../classmlx_1_1core_1_1_divide.html#a823443c2a8e8b81bbcaeee6ddbcdbf49',1,'mlx::core::Divide::eval_cpu()'],['../classmlx_1_1core_1_1_div_mod.html#ae350b7b93ad128e3133ee14f247193b3',1,'mlx::core::DivMod::eval_cpu()'],['../classmlx_1_1core_1_1_select.html#aa51aa36e0adbd69e0d23d7c7adf88de2',1,'mlx::core::Select::eval_cpu()'],['../classmlx_1_1core_1_1_remainder.html#ac6c6c86a0bf02e6e529eb87f6e617ccc',1,'mlx::core::Remainder::eval_cpu()'],['../classmlx_1_1core_1_1_equal.html#aabb8aa61fa581defddcdca1274b1b454',1,'mlx::core::Equal::eval_cpu()'],['../classmlx_1_1core_1_1_erf.html#a84ea16e43d5b7f83bbc2d5ece78a3fb6',1,'mlx::core::Erf::eval_cpu()'],['../classmlx_1_1core_1_1_erf_inv.html#af579627402af3249565134884701d39e',1,'mlx::core::ErfInv::eval_cpu()'],['../classmlx_1_1core_1_1_exp.html#a47934c5a5023bc7ae7ae89bff45ebb2c',1,'mlx::core::Exp::eval_cpu()'],['../classmlx_1_1core_1_1_expm1.html#ab9c8b7aa50fe4592d55f8957baac647a',1,'mlx::core::Expm1::eval_cpu()'],['../classmlx_1_1core_1_1_f_f_t.html#a6bc262a0c2b5d4fe655e3e2e0ff28635',1,'mlx::core::FFT::eval_cpu()'],['../classmlx_1_1core_1_1_floor.html#a1a7dc5f571b7b73e7ef3cbdc1dd1fcf7',1,'mlx::core::Floor::eval_cpu()'],['../classmlx_1_1core_1_1_full.html#a3dccd3756599d7fd018b2af0093b082c',1,'mlx::core::Full::eval_cpu()'],['../classmlx_1_1core_1_1_gather.html#a9ed5587f0d04b59a2b9186c0aac21290',1,'mlx::core::Gather::eval_cpu()'],['../classmlx_1_1core_1_1_greater.html#abe1c03f311d0e0b610f3392a6566f2ae',1,'mlx::core::Greater::eval_cpu()'],['../classmlx_1_1core_1_1_greater_equal.html#a15469125b9bea89b64bfeac01590c075',1,'mlx::core::GreaterEqual::eval_cpu()'],['../classmlx_1_1core_1_1_hadamard.html#ab27d6a9df42b3aab41ace3073a4c880d',1,'mlx::core::Hadamard::eval_cpu()'],['../classmlx_1_1core_1_1_less.html#a32624124ffece066f496b3299056bcef',1,'mlx::core::Less::eval_cpu()'],['../classmlx_1_1core_1_1_less_equal.html#a55d1352b0e97841a92503bc57c19ed16',1,'mlx::core::LessEqual::eval_cpu()'],['../classmlx_1_1core_1_1_load.html#ada026ac30566f3109d8182e35d307c0a',1,'mlx::core::Load::eval_cpu()'],['../classmlx_1_1core_1_1_log.html#aadc7bb4cb24f3ecbbb9ed54a699ab74f',1,'mlx::core::Log::eval_cpu()'],['../classmlx_1_1core_1_1_log1p.html#a8192e5438de99c4cda056987935cba23',1,'mlx::core::Log1p::eval_cpu()'],['../classmlx_1_1core_1_1_logical_not.html#acf3f7b3b20ca69533536e0e0a05725b3',1,'mlx::core::LogicalNot::eval_cpu()'],['../classmlx_1_1core_1_1_logical_and.html#adbe1c1785af1a8b827289d22b0d170b3',1,'mlx::core::LogicalAnd::eval_cpu()'],['../classmlx_1_1core_1_1_logical_or.html#a13cd4cbf26589287e85aeaaca42d7f62',1,'mlx::core::LogicalOr::eval_cpu()'],['../classmlx_1_1core_1_1_log_add_exp.html#abef17fb590b1a8d356f2a580e45d41f0',1,'mlx::core::LogAddExp::eval_cpu()'],['../classmlx_1_1core_1_1_matmul.html#a357a7f57a2a220a91977f810a69413fc',1,'mlx::core::Matmul::eval_cpu()'],['../classmlx_1_1core_1_1_maximum.html#a62b38fbe5f96db58c2b60165ac4eadcf',1,'mlx::core::Maximum::eval_cpu()'],['../classmlx_1_1core_1_1_minimum.html#a6b93f493ee87089943a8085fe59dfc6e',1,'mlx::core::Minimum::eval_cpu()'],['../classmlx_1_1core_1_1_multiply.html#a624fce06c047cdc4dfdbdcaaddb25f34',1,'mlx::core::Multiply::eval_cpu()'],['../classmlx_1_1core_1_1_negative.html#af43553dc418c8ebe75fa9cdcba103c3b',1,'mlx::core::Negative::eval_cpu()'],['../classmlx_1_1core_1_1_not_equal.html#a8f95f8b5873850b875b1641df8196047',1,'mlx::core::NotEqual::eval_cpu()'],['../classmlx_1_1core_1_1_number_of_elements.html#acc328321cf5300874ee884367cbede3f',1,'mlx::core::NumberOfElements::eval_cpu()'],['../classmlx_1_1core_1_1_pad.html#aaf82dd163cd536fbf97304f8b29080cb',1,'mlx::core::Pad::eval_cpu()'],['../classmlx_1_1core_1_1_partition.html#a784596ab567f9f3cb4fe1a69466523d8',1,'mlx::core::Partition::eval_cpu()'],['../classmlx_1_1core_1_1_power.html#a6783da16fb6ff393aaa57737f1973206',1,'mlx::core::Power::eval_cpu()'],['../classmlx_1_1core_1_1_quantized_matmul.html#ab3dfa73b74d8f4f2e9ab4f0eb016b0e3',1,'mlx::core::QuantizedMatmul::eval_cpu()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a89aae98bfbdd6563df44ef7d70f0bf8c',1,'mlx::core::GatherQMM::eval_cpu()'],['../classmlx_1_1core_1_1_random_bits.html#a5752d051cd16cf5f8d4754c0a656f0d2',1,'mlx::core::RandomBits::eval_cpu()'],['../classmlx_1_1core_1_1_reshape.html#a658de2c5f710991b48e14b2bd19b229f',1,'mlx::core::Reshape::eval_cpu()'],['../classmlx_1_1core_1_1_reduce.html#aeb8a58b560c0a09ae3a695df7829acfa',1,'mlx::core::Reduce::eval_cpu()'],['../classmlx_1_1core_1_1_round.html#ad066b0944b437f64ab546025efa00007',1,'mlx::core::Round::eval_cpu()'],['../classmlx_1_1core_1_1_scan.html#a15676d9fd066e935782a923fba3e940b',1,'mlx::core::Scan::eval_cpu()'],['../classmlx_1_1core_1_1_scatter.html#a7623f590f8b77167b5ebb4f14bc9dc97',1,'mlx::core::Scatter::eval_cpu()'],['../classmlx_1_1core_1_1_sigmoid.html#aa930ce05734cca529ebcb8d0ca8e1255',1,'mlx::core::Sigmoid::eval_cpu()'],['../classmlx_1_1core_1_1_sign.html#a7498ec993b66879be30c5d9762c45a97',1,'mlx::core::Sign::eval_cpu()'],['../classmlx_1_1core_1_1_sin.html#ab34f9cebc2aed55a0b6ab4c991f02eb5',1,'mlx::core::Sin::eval_cpu()'],['../classmlx_1_1core_1_1_sinh.html#ab6d5f6f40d177f6435f6a51c71b939dd',1,'mlx::core::Sinh::eval_cpu()'],['../classmlx_1_1core_1_1_slice.html#a4b13503f5b2f5c6a90d394b020f9b3f2',1,'mlx::core::Slice::eval_cpu()'],['../classmlx_1_1core_1_1_slice_update.html#ad82ca0e3ab88a0e086431050deea831b',1,'mlx::core::SliceUpdate::eval_cpu()'],['../classmlx_1_1core_1_1_softmax.html#ac9ebc2eab1683b682e689ed8f4622b79',1,'mlx::core::Softmax::eval_cpu()'],['../classmlx_1_1core_1_1_sort.html#a459769a0241b2620e55bedaba19827cd',1,'mlx::core::Sort::eval_cpu()'],['../classmlx_1_1core_1_1_split.html#aff2889cb9074f0fda53edf8fa40b1fd4',1,'mlx::core::Split::eval_cpu()'],['../classmlx_1_1core_1_1_square.html#a1f4d327a705950616da63b83c2829e59',1,'mlx::core::Square::eval_cpu()'],['../classmlx_1_1core_1_1_sqrt.html#a5a64ecc4eef1e30a2963435dca7cefd5',1,'mlx::core::Sqrt::eval_cpu()'],['../classmlx_1_1core_1_1_stop_gradient.html#a56207714d374b08f60e4d9cdbc7340b2',1,'mlx::core::StopGradient::eval_cpu()'],['../classmlx_1_1core_1_1_subtract.html#a47574258b6c95f8ad260c114d6d36a12',1,'mlx::core::Subtract::eval_cpu()'],['../classmlx_1_1core_1_1_tan.html#a9c9a731158fa60eef30067fe0da9f3e9',1,'mlx::core::Tan::eval_cpu()'],['../classmlx_1_1core_1_1_tanh.html#af7ed4345f622da069e5b0284067923f5',1,'mlx::core::Tanh::eval_cpu()'],['../classmlx_1_1core_1_1_uniform.html#a037a2c96b79b70a64f2b637c9f1a432f',1,'mlx::core::Uniform::eval_cpu()'],['../classmlx_1_1core_1_1_view.html#a0ad6deb11914a242f10e8039fcb02497',1,'mlx::core::View::eval_cpu()'],['../classmlx_1_1core_1_1_transpose.html#a1fbcfcca43f9ec06c63a3c14708c30f8',1,'mlx::core::Transpose::eval_cpu()'],['../classmlx_1_1core_1_1_q_r_f.html#a48493887395d65a27f04de1804d277d2',1,'mlx::core::QRF::eval_cpu()'],['../classmlx_1_1core_1_1_s_v_d.html#a637f5c39fa8b10722c04a066f6c1ada6',1,'mlx::core::SVD::eval_cpu()'],['../classmlx_1_1core_1_1_inverse.html#aeb1d8dc9bc4052a616023f65b3c7bb81',1,'mlx::core::Inverse::eval_cpu()'],['../classmlx_1_1core_1_1_cholesky.html#a4bdec36c1cc99aadf9a4a39d4c57bea5',1,'mlx::core::Cholesky::eval_cpu()']]], - ['eval_5fgpu_32',['eval_gpu',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a52df7155f56b8450581b2fd2747cad20',1,'mlx::core::distributed::AllReduce::eval_gpu()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a4251ce0f2db2045226b66210b828af7a',1,'mlx::core::distributed::AllGather::eval_gpu()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a0c8dbd2a912be91be04ec701e29fba3d',1,'mlx::core::distributed::Send::eval_gpu()'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a932e39624bc3d234a7489c3decc4749e',1,'mlx::core::distributed::Recv::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#ae7955e8d43c097eecae264e804b4d8ca',1,'mlx::core::fast::RMSNorm::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#a48efb8fa84c4ba6cc9fb560ebbe01560',1,'mlx::core::fast::RMSNormVJP::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a77abda7f47bffa2c037a5d60cccc1528',1,'mlx::core::fast::LayerNorm::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a954a003a4a27c8c4c60a5a14142a9cc3',1,'mlx::core::fast::LayerNormVJP::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a913b6b00fc518b25ac3947e4e15790f2',1,'mlx::core::fast::RoPE::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#a505f38ba93a3499895f5312e0112e73d',1,'mlx::core::fast::ScaledDotProductAttention::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#ad51666e69f670e286293aff96eb435a9',1,'mlx::core::fast::ScaledDotProductAttention::eval_gpu(const std::vector< array > &inputs, array &out)'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a63812b2abaf26ad7e7fa4c9e82db1628',1,'mlx::core::fast::AffineQuantize::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a2ed2a16b23053f8195068386a99fd6db',1,'mlx::core::fast::CustomKernel::eval_gpu()'],['../classmlx_1_1core_1_1_primitive.html#ad217376dcf5eff691d731566faec2ba2',1,'mlx::core::Primitive::eval_gpu()'],['../classmlx_1_1core_1_1_unary_primitive.html#a6b7f80abaf038d53ec6ffbb0dfac6adb',1,'mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, array &output)=0'],['../classmlx_1_1core_1_1_unary_primitive.html#a971fe9ad47f6569118879ce1d0f41447',1,'mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override'],['../classmlx_1_1core_1_1_abs.html#a0a976e636dd8505b473fbdddf949f514',1,'mlx::core::Abs::eval_gpu()'],['../classmlx_1_1core_1_1_add.html#aa0aacbc1e26b95a2f040f62aa4f69c3d',1,'mlx::core::Add::eval_gpu()'],['../classmlx_1_1core_1_1_add_m_m.html#a5f933be14baebc32a0be0f9a69148aa9',1,'mlx::core::AddMM::eval_gpu()'],['../classmlx_1_1core_1_1_arange.html#a7a2e9787c6c3a78b4a6df91206974031',1,'mlx::core::Arange::eval_gpu()'],['../classmlx_1_1core_1_1_arc_cos.html#a46f72d4af89b0a0f5f203783fb44589c',1,'mlx::core::ArcCos::eval_gpu()'],['../classmlx_1_1core_1_1_arc_cosh.html#aa6a2587485a0e015ac2d5211d7d045fc',1,'mlx::core::ArcCosh::eval_gpu()'],['../classmlx_1_1core_1_1_arc_sin.html#a7fa4ae7a85bc8bed97ea258ae30762f3',1,'mlx::core::ArcSin::eval_gpu()'],['../classmlx_1_1core_1_1_arc_sinh.html#a79f648a86de4c10386a1ce3b5e38e8ac',1,'mlx::core::ArcSinh::eval_gpu()'],['../classmlx_1_1core_1_1_arc_tan.html#a77866feb27028865d844070447c9a254',1,'mlx::core::ArcTan::eval_gpu()'],['../classmlx_1_1core_1_1_arc_tan2.html#a76d3f0c29e0ff4642b8d39dac90d3f50',1,'mlx::core::ArcTan2::eval_gpu()'],['../classmlx_1_1core_1_1_arc_tanh.html#a10566b9d3b2c7d090895b46d9040bc1d',1,'mlx::core::ArcTanh::eval_gpu()'],['../classmlx_1_1core_1_1_arg_partition.html#a9a60995eaf85f63c877e86b23cbc15fc',1,'mlx::core::ArgPartition::eval_gpu()'],['../classmlx_1_1core_1_1_arg_reduce.html#aafa982ce2abc0cd9e81e43aa2c823d29',1,'mlx::core::ArgReduce::eval_gpu()'],['../classmlx_1_1core_1_1_arg_sort.html#abc2d730850ec4ee8d7968b7417911709',1,'mlx::core::ArgSort::eval_gpu()'],['../classmlx_1_1core_1_1_as_type.html#a5b111b9d74c60d27b4a7ebaa49f96e0b',1,'mlx::core::AsType::eval_gpu()'],['../classmlx_1_1core_1_1_as_strided.html#ab6771a208323994927ca162ba7bb10ed',1,'mlx::core::AsStrided::eval_gpu()'],['../classmlx_1_1core_1_1_bitwise_binary.html#ac831a29fc46701b00bbe63ee33832afd',1,'mlx::core::BitwiseBinary::eval_gpu()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#ab372b6df4de00a33795a052a23bb1df9',1,'mlx::core::BlockMaskedMM::eval_gpu()'],['../classmlx_1_1core_1_1_gather_m_m.html#ad754c35f460a055cc383ad93a5f72da1',1,'mlx::core::GatherMM::eval_gpu()'],['../classmlx_1_1core_1_1_broadcast.html#ab9bd9dbcedcefc9b29c84911b5ce69fe',1,'mlx::core::Broadcast::eval_gpu()'],['../classmlx_1_1core_1_1_ceil.html#abe178e0058e44b6618be414215e96887',1,'mlx::core::Ceil::eval_gpu()'],['../classmlx_1_1core_1_1_compiled.html#aa3d5ff0f2b3554ad48fbbf2a0f3336d5',1,'mlx::core::Compiled::eval_gpu()'],['../classmlx_1_1core_1_1_concatenate.html#a309a1c50e97f9925866433ee2841c474',1,'mlx::core::Concatenate::eval_gpu()'],['../classmlx_1_1core_1_1_conjugate.html#aff0a802166e3724db88ab5d3feb2d3de',1,'mlx::core::Conjugate::eval_gpu()'],['../classmlx_1_1core_1_1_convolution.html#a30b64109eeb1778f002b99447dff9dd2',1,'mlx::core::Convolution::eval_gpu()'],['../classmlx_1_1core_1_1_copy.html#a1eda7b2ea771a168f67421f0d384b3a1',1,'mlx::core::Copy::eval_gpu()'],['../classmlx_1_1core_1_1_cos.html#a5ef41aafad595f6cdd8c535e36e12060',1,'mlx::core::Cos::eval_gpu()'],['../classmlx_1_1core_1_1_cosh.html#a23f71b43792934c3ec0ebe9b74f32559',1,'mlx::core::Cosh::eval_gpu()'],['../classmlx_1_1core_1_1_custom_transforms.html#a7b3538681acbb20af3ed37b0877f6667',1,'mlx::core::CustomTransforms::eval_gpu()'],['../classmlx_1_1core_1_1_depends.html#ae5057f65e69490ad0add8eeda2b75e28',1,'mlx::core::Depends::eval_gpu()'],['../classmlx_1_1core_1_1_divide.html#abffda0ce37221ddc28dc9eea794f6bc7',1,'mlx::core::Divide::eval_gpu()'],['../classmlx_1_1core_1_1_div_mod.html#a003117c9ecf3c06a27248f72a76348dc',1,'mlx::core::DivMod::eval_gpu()'],['../classmlx_1_1core_1_1_select.html#a2a82b6cba4c386b2b87f225a4b08ea9b',1,'mlx::core::Select::eval_gpu()'],['../classmlx_1_1core_1_1_remainder.html#a7919ea9b84e42522d51bf0d5a396e161',1,'mlx::core::Remainder::eval_gpu()'],['../classmlx_1_1core_1_1_equal.html#ac3757001fec42ceb5ece2954df42161c',1,'mlx::core::Equal::eval_gpu()'],['../classmlx_1_1core_1_1_erf.html#ad8551be664d767dccc3c0d8cc1eca008',1,'mlx::core::Erf::eval_gpu()'],['../classmlx_1_1core_1_1_erf_inv.html#a4a2413d0634db1f3dae1806ddfa632db',1,'mlx::core::ErfInv::eval_gpu()'],['../classmlx_1_1core_1_1_exp.html#a7d63695a97a14760fd33b5d4e6590822',1,'mlx::core::Exp::eval_gpu()'],['../classmlx_1_1core_1_1_expm1.html#a82930071f4b77d883b300f77966aff5f',1,'mlx::core::Expm1::eval_gpu()'],['../classmlx_1_1core_1_1_f_f_t.html#a1c21b26d1e9ad7c4da78ae845721b2dd',1,'mlx::core::FFT::eval_gpu()'],['../classmlx_1_1core_1_1_floor.html#aaa29c83538099eb8f951c95a41f2eb65',1,'mlx::core::Floor::eval_gpu()'],['../classmlx_1_1core_1_1_full.html#aa54f99bb4cba12a551392dea56003872',1,'mlx::core::Full::eval_gpu()'],['../classmlx_1_1core_1_1_gather.html#aec48ee529cb2449915a7b27a3c4361e8',1,'mlx::core::Gather::eval_gpu()'],['../classmlx_1_1core_1_1_greater.html#ae8957cccf4c924d941f57a1bb751c878',1,'mlx::core::Greater::eval_gpu()'],['../classmlx_1_1core_1_1_greater_equal.html#ac246263b4548126c3d4ab7e392575d24',1,'mlx::core::GreaterEqual::eval_gpu()'],['../classmlx_1_1core_1_1_hadamard.html#a2470feb690f5463138490763c38b5733',1,'mlx::core::Hadamard::eval_gpu()'],['../classmlx_1_1core_1_1_less.html#a353335ce06ddbe8498d86d129c835917',1,'mlx::core::Less::eval_gpu()'],['../classmlx_1_1core_1_1_less_equal.html#acf035a82b11e6f63742143ea540fedac',1,'mlx::core::LessEqual::eval_gpu()'],['../classmlx_1_1core_1_1_load.html#a06933e887ea94a4d01d81195c5e07a3d',1,'mlx::core::Load::eval_gpu()'],['../classmlx_1_1core_1_1_log.html#aaaa49e9455f3a197bc319646b5ca6390',1,'mlx::core::Log::eval_gpu()'],['../classmlx_1_1core_1_1_log1p.html#a1b97decae7338d46874e736c95fa7431',1,'mlx::core::Log1p::eval_gpu()'],['../classmlx_1_1core_1_1_logical_not.html#a1d0d2bc93f935eca6c85ef7bf67f2d6a',1,'mlx::core::LogicalNot::eval_gpu()'],['../classmlx_1_1core_1_1_logical_and.html#a132b2eedaa3978de5a5350da3c2ca40f',1,'mlx::core::LogicalAnd::eval_gpu()'],['../classmlx_1_1core_1_1_logical_or.html#a3be1da328f0f8620de2e4fc1d22a077a',1,'mlx::core::LogicalOr::eval_gpu()'],['../classmlx_1_1core_1_1_log_add_exp.html#acace355b62ec00df649f9f99e8f2eb7a',1,'mlx::core::LogAddExp::eval_gpu()'],['../classmlx_1_1core_1_1_matmul.html#a8707a4e9b75c769e8f1dbca15c6a1ae7',1,'mlx::core::Matmul::eval_gpu()'],['../classmlx_1_1core_1_1_maximum.html#ade0f721b10a6b3a12bdadd34c48f72a7',1,'mlx::core::Maximum::eval_gpu()'],['../classmlx_1_1core_1_1_minimum.html#aadc68afa0afbe2103f19d161f5e0a2ba',1,'mlx::core::Minimum::eval_gpu()'],['../classmlx_1_1core_1_1_multiply.html#a634fcb4e981d8d3f4d94252caf25bee0',1,'mlx::core::Multiply::eval_gpu()'],['../classmlx_1_1core_1_1_negative.html#a97f1b316eace0c6d9e576d766940c75b',1,'mlx::core::Negative::eval_gpu()'],['../classmlx_1_1core_1_1_not_equal.html#a61179747e34e203150e9c660dfddb5f2',1,'mlx::core::NotEqual::eval_gpu()'],['../classmlx_1_1core_1_1_number_of_elements.html#a2c98c42915fb2bfe12f5c99ea553eff5',1,'mlx::core::NumberOfElements::eval_gpu()'],['../classmlx_1_1core_1_1_pad.html#aefd4d3a5bd8b6b35b266c9e558ada153',1,'mlx::core::Pad::eval_gpu()'],['../classmlx_1_1core_1_1_partition.html#a8eca1be21ae9ccfda46e6f3e85f506ef',1,'mlx::core::Partition::eval_gpu()'],['../classmlx_1_1core_1_1_power.html#a80577d4c0853c24027777c90a1ec7e11',1,'mlx::core::Power::eval_gpu()'],['../classmlx_1_1core_1_1_quantized_matmul.html#a2812ad007d695ed1aaf9cf706fb9c4b3',1,'mlx::core::QuantizedMatmul::eval_gpu()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a86eb048afc95646b2e96ec5493e3d887',1,'mlx::core::GatherQMM::eval_gpu()'],['../classmlx_1_1core_1_1_random_bits.html#a578756866665358577418e4cdd94aa3a',1,'mlx::core::RandomBits::eval_gpu()'],['../classmlx_1_1core_1_1_reshape.html#aa1e85f28471875750c47351520b56059',1,'mlx::core::Reshape::eval_gpu()'],['../classmlx_1_1core_1_1_reduce.html#ae9caaf42edadfe73ea208d98f526890f',1,'mlx::core::Reduce::eval_gpu()'],['../classmlx_1_1core_1_1_round.html#af7fe5ff8f3db166c203b4be4b07f13ec',1,'mlx::core::Round::eval_gpu()'],['../classmlx_1_1core_1_1_scan.html#aef22c6fc2b2cb2a907cd8965c7413dde',1,'mlx::core::Scan::eval_gpu()'],['../classmlx_1_1core_1_1_scatter.html#ab304345db3d8cfeea15e27461ae2e678',1,'mlx::core::Scatter::eval_gpu()'],['../classmlx_1_1core_1_1_sigmoid.html#a7a6bd0222d51d7f25f2719a91ccdfeca',1,'mlx::core::Sigmoid::eval_gpu()'],['../classmlx_1_1core_1_1_sign.html#afa2b48b99a194106006b44af69ffda8b',1,'mlx::core::Sign::eval_gpu()'],['../classmlx_1_1core_1_1_sin.html#a6b59f1156cf8bdad8d45acd1d825cb5e',1,'mlx::core::Sin::eval_gpu()'],['../classmlx_1_1core_1_1_sinh.html#a5a1af2399f166d5b228b5e83a1837c75',1,'mlx::core::Sinh::eval_gpu()'],['../classmlx_1_1core_1_1_slice.html#aa53c21ff06a7c659e889af6b97d10a4a',1,'mlx::core::Slice::eval_gpu()'],['../classmlx_1_1core_1_1_slice_update.html#aac1a1d122e5697be057d63552141032b',1,'mlx::core::SliceUpdate::eval_gpu()'],['../classmlx_1_1core_1_1_softmax.html#a35dac69ddcc7e2ec0e1a76fe93db85af',1,'mlx::core::Softmax::eval_gpu()'],['../classmlx_1_1core_1_1_sort.html#a4141c48f0e8670c728663f3722675382',1,'mlx::core::Sort::eval_gpu()'],['../classmlx_1_1core_1_1_split.html#a78ddda89c4daee73c74cfbc1e44656df',1,'mlx::core::Split::eval_gpu()'],['../classmlx_1_1core_1_1_square.html#a0ea2a78a5bb52daa4103263bf2f98045',1,'mlx::core::Square::eval_gpu()'],['../classmlx_1_1core_1_1_sqrt.html#a6d205e679a593d1ba20206c5c47ba501',1,'mlx::core::Sqrt::eval_gpu()'],['../classmlx_1_1core_1_1_stop_gradient.html#a907b96f0a1ce608e211d87ccf2b9ca89',1,'mlx::core::StopGradient::eval_gpu()'],['../classmlx_1_1core_1_1_subtract.html#a69021b23daf061764d97fabbc0f4f06c',1,'mlx::core::Subtract::eval_gpu()'],['../classmlx_1_1core_1_1_tan.html#aca7dbb4836507005a2032ac957a04d3f',1,'mlx::core::Tan::eval_gpu()'],['../classmlx_1_1core_1_1_tanh.html#a48df896599ae93dbce84a5c0f50cf761',1,'mlx::core::Tanh::eval_gpu()'],['../classmlx_1_1core_1_1_uniform.html#a5f88cbf2495f24f87cefd99aaaebe4d0',1,'mlx::core::Uniform::eval_gpu()'],['../classmlx_1_1core_1_1_view.html#add6e12ff1e476fe1db7718b14f21b075',1,'mlx::core::View::eval_gpu()'],['../classmlx_1_1core_1_1_transpose.html#a38d25739c08aa594a6775015a1d7d92e',1,'mlx::core::Transpose::eval_gpu()'],['../classmlx_1_1core_1_1_q_r_f.html#ae5fa3482192f4713605cd07e7fc1c6c9',1,'mlx::core::QRF::eval_gpu()'],['../classmlx_1_1core_1_1_s_v_d.html#a7067b2207f826a25549d571856b94e83',1,'mlx::core::SVD::eval_gpu()'],['../classmlx_1_1core_1_1_inverse.html#a086fbbc947ad232e01686ad063a78ed2',1,'mlx::core::Inverse::eval_gpu()'],['../classmlx_1_1core_1_1_cholesky.html#a8c918594bf129888044ef37fcae56795',1,'mlx::core::Cholesky::eval_gpu()']]], - ['event_33',['Event',['../classmlx_1_1core_1_1_event.html',1,'mlx::core::Event'],['../classmlx_1_1core_1_1_event.html#a833506419b2110ad1abd89b2dd238b4d',1,'mlx::core::Event::Event()=default'],['../classmlx_1_1core_1_1_event.html#a13e4835f2ffb2cc22e29148a448ea184',1,'mlx::core::Event::Event(const Stream &steam)']]], - ['event_34',['event',['../classmlx_1_1core_1_1array.html#a0a8e4d6e67e739a712876bb36f88f9bf',1,'mlx::core::array']]], - ['event_2eh_35',['event.h',['../event_8h.html',1,'']]], - ['excess_36',['excess',['../structmlx_1_1steel_1_1_channel_helper.html#afc34bf92168c1865a9611b319dbcd000',1,'mlx::steel::ChannelHelper::excess'],['../structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html#ada22a8bd8a89078cfa28874055c8e753',1,'mlx::steel::ChannelHelper< 1 >::excess'],['../structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html#acc490f3999230aa592c61bbed7eb7cfe',1,'mlx::steel::ChannelHelper< 2 >::excess'],['../structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html#aae404674763f3dc73c5ab29169f8b80f',1,'mlx::steel::ChannelHelper< 3 >::excess'],['../structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html#aecdd8331fec703d739a6f07b9b901ac8',1,'mlx::steel::ChannelHelper< 4 >::excess']]], - ['exec_37',['exec',['../classpocketfft_1_1detail_1_1cfftp.html#a95211024bf007d27e700835db556fbd2',1,'pocketfft::detail::cfftp::exec()'],['../classpocketfft_1_1detail_1_1rfftp.html#a073972f42bdd3617693be7be2cb5e0ac',1,'pocketfft::detail::rfftp::exec()'],['../classpocketfft_1_1detail_1_1fftblue.html#a5fb03413a3d1a653842875adcf87ae8c',1,'pocketfft::detail::fftblue::exec()'],['../classpocketfft_1_1detail_1_1pocketfft__c.html#a436afd63e8e130f97aff103ae964a45d',1,'pocketfft::detail::pocketfft_c::exec()'],['../classpocketfft_1_1detail_1_1pocketfft__r.html#a2815bc8aa04fa986834b02e502f98b33',1,'pocketfft::detail::pocketfft_r::exec()'],['../classpocketfft_1_1detail_1_1_t__dct1.html#a7736111ff9d220f983e41a6fecd5f058',1,'pocketfft::detail::T_dct1::exec()'],['../classpocketfft_1_1detail_1_1_t__dst1.html#a598a9511004263eb3610053d7efc9e26',1,'pocketfft::detail::T_dst1::exec()'],['../classpocketfft_1_1detail_1_1_t__dcst23.html#a2a45b7b4612904c2be69c01f6d5029ac',1,'pocketfft::detail::T_dcst23::exec()'],['../classpocketfft_1_1detail_1_1_t__dcst4.html#af794ebf21009d5f918681188081df708',1,'pocketfft::detail::T_dcst4::exec()']]], - ['exec_5fr_38',['exec_r',['../classpocketfft_1_1detail_1_1fftblue.html#a642b4aff0485c7d9c8794161a1464f00',1,'pocketfft::detail::fftblue']]], - ['execc2c_39',['ExecC2C',['../structpocketfft_1_1detail_1_1_exec_c2_c.html',1,'pocketfft::detail']]], - ['execdcst_40',['ExecDcst',['../structpocketfft_1_1detail_1_1_exec_dcst.html',1,'pocketfft::detail']]], - ['exechartley_41',['ExecHartley',['../structpocketfft_1_1detail_1_1_exec_hartley.html',1,'pocketfft::detail']]], - ['execr2r_42',['ExecR2R',['../structpocketfft_1_1detail_1_1_exec_r2_r.html',1,'pocketfft::detail']]], - ['exp_43',['Exp',['../struct_exp.html',1,'Exp'],['../structmlx_1_1core_1_1detail_1_1_exp.html',1,'mlx::core::detail::Exp'],['../classmlx_1_1core_1_1_exp.html',1,'mlx::core::Exp'],['../classmlx_1_1core_1_1_exp.html#a1d0a618cbb91ab29ef53b57ff6ed6e06',1,'mlx::core::Exp::Exp()']]], - ['exp_44',['exp',['../namespacemetal.html#ac2a0b3618d922ac014baac8189d44650',1,'metal::exp()'],['../namespacemetal_1_1fast.html#ad3dbd387b63373c29e3449609f763ede',1,'metal::fast::exp()'],['../namespacemetal_1_1precise.html#a8d8d2d5700ce432b33cf47cf22528e8f',1,'metal::precise::exp()'],['../group__ops.html#ga8a3b04e23e347d99ecf411fd6f4e5125',1,'mlx::core::exp()']]], - ['exp10_45',['exp10',['../namespacemetal.html#a4c63707d13c89364496a48906631c204',1,'metal::exp10()'],['../namespacemetal_1_1fast.html#a453122f982485cbb4e471b3ac282ee5e',1,'metal::fast::exp10()'],['../namespacemetal_1_1precise.html#af9addb343c967da3a83e9e123a8521fd',1,'metal::precise::exp10()']]], - ['exp2_46',['exp2',['../namespacemetal.html#a228201c20777848804a4d0589c1d33e7',1,'metal::exp2()'],['../namespacemetal_1_1fast.html#ac092b65a46720adaf22f6266671d2d71',1,'metal::fast::exp2()'],['../namespacemetal_1_1precise.html#a92a880bd2197efc0da0f8f0f7ec1e4c9',1,'metal::precise::exp2()']]], - ['expand_5fdims_47',['expand_dims',['../group__ops.html#ga717f11149a8c7b4cc3e33bbcc0a97133',1,'mlx::core::expand_dims(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga7a80adb4a5a36d18b5f234d4b034950a',1,'mlx::core::expand_dims(const array &a, int axis, StreamOrDevice s={})']]], - ['expm1_48',['Expm1',['../struct_expm1.html',1,'Expm1'],['../structmlx_1_1core_1_1detail_1_1_expm1.html',1,'mlx::core::detail::Expm1'],['../classmlx_1_1core_1_1_expm1.html',1,'mlx::core::Expm1'],['../classmlx_1_1core_1_1_expm1.html#a47c2a1b2a4ef6bb07ba77c55ddddaec2',1,'mlx::core::Expm1::Expm1()']]], - ['expm1_49',['expm1',['../group__ops.html#ga54ca54f06bfb2be15b163a5209e2a0f0',1,'mlx::core']]], - ['expm1f_50',['expm1f',['../expm1f_8h.html#a87f66d30e185950f42ce3641783cdc40',1,'expm1f.h']]], - ['expm1f_2eh_51',['expm1f.h',['../expm1f_8h.html',1,'']]], - ['expm1f_5fscaled_5funchecked_52',['expm1f_scaled_unchecked',['../expm1f_8h.html#adf20e03405fba634ca8d01acac24592e',1,'expm1f.h']]], - ['export_5fto_5fdot_53',['export_to_dot',['../namespacemlx_1_1core.html#a57395bdf43d9c5c134e610c169222cca',1,'mlx::core::export_to_dot(std::ostream &os, const std::vector< array > &outputs)'],['../namespacemlx_1_1core.html#a839f94dbad44f0d37333006fc876b42e',1,'mlx::core::export_to_dot(std::ostream &os, Arrays &&... outputs)']]], - ['eye_54',['eye',['../group__ops.html#ga45e9e68246b0d1cf03c3cc9c9e7e6ae3',1,'mlx::core::eye(int n, int m, int k, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga2c9011310a1fa7c82f942f54102c36dd',1,'mlx::core::eye(int n, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga61657db78ef35d41112d362c869c25d2',1,'mlx::core::eye(int n, int m, StreamOrDevice s={})'],['../group__ops.html#ga908a15b42834be498a46856c99dfc779',1,'mlx::core::eye(int n, int m, int k, StreamOrDevice s={})'],['../group__ops.html#gab777fcf6d4a89172c69ec3492548dc0f',1,'mlx::core::eye(int n, StreamOrDevice s={})']]] -]; diff --git a/docs/build/html/search/all_6.js b/docs/build/html/search/all_6.js deleted file mode 100644 index 64e71c9f..00000000 --- a/docs/build/html/search/all_6.js +++ /dev/null @@ -1,56 +0,0 @@ -var searchData= -[ - ['f_0',['f',['../unionmlx_1_1core_1_1detail_1_1_int_or_float.html#a90bd738e3b6b96a1a67685e8ab75b7ec',1,'mlx::core::detail::IntOrFloat::f'],['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a8fa14cdd754f91cc6554c9e71929cce7',1,'mlx::core::Dtype::f'],['../types_2bf16_8h.html#af900396d7b72ff2a7002e8befe8cf8f1',1,'f: bf16.h'],['../fp16_8h.html#af900396d7b72ff2a7002e8befe8cf8f1',1,'f: fp16.h']]], - ['f_5fout_5fjump_5fh_1',['f_out_jump_h',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a78d48b55cf182f000abece0e5e7fadcb',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['f_5fout_5fjump_5fw_2',['f_out_jump_w',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a0fd755691482cb03ea4534b4a556c197',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['f_5fwgt_5fjump_5fh_3',['f_wgt_jump_h',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a198ba0c2740ab4ded99345edf58917a7',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['f_5fwgt_5fjump_5fw_4',['f_wgt_jump_w',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a568435a612574ab19a051a48055d4cfc',1,'mlx::steel::Conv2DGeneralJumpParams']]], - ['fabs_5',['fabs',['../namespacemetal.html#a487eba718144be1325abcf66e109bb21',1,'metal::fabs()'],['../namespacemetal_1_1fast.html#a129fbd68c9df1a437e8959a25187f554',1,'metal::fast::fabs()'],['../namespacemetal_1_1precise.html#ae4c71d8bc8ef291036a7aaa05f8be3d1',1,'metal::precise::fabs()']]], - ['fast_2eh_6',['fast.h',['../fast_8h.html',1,'']]], - ['fast_5ferf_7',['fast_erf',['../namespacemlx_1_1core_1_1detail.html#a90c9f6149af5adf4e2a95608d5f7b790',1,'mlx::core::detail']]], - ['fast_5ferfinv_8',['fast_erfinv',['../namespacemlx_1_1core_1_1detail.html#ad0ff3975e4c96317df1a2de0f7a30c1d',1,'mlx::core::detail']]], - ['fast_5fexp_9',['fast_exp',['../namespacemlx_1_1core_1_1detail.html#a2726436fc72d4a3f0030c89579b4d374',1,'mlx::core::detail']]], - ['fast_5fprimitives_2eh_10',['fast_primitives.h',['../fast__primitives_8h.html',1,'']]], - ['fdc_11',['fdc',['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html#a42efa2a1fddc11f71987377b9048f953',1,'mlx::steel::GEMMAddMMParams']]], - ['fdim_12',['fdim',['../namespacemetal.html#a85a560794be56d8116889c1ee2d78761',1,'metal::fdim()'],['../namespacemetal_1_1fast.html#a667df76100d5ea0ce5860ddae3e5a00b',1,'metal::fast::fdim()'],['../namespacemetal_1_1precise.html#af693e7c93de446e80dd1377f5e9e7260',1,'metal::precise::fdim()']]], - ['fft_13',['FFT',['../classmlx_1_1core_1_1_f_f_t.html',1,'mlx::core::FFT'],['../classmlx_1_1core_1_1_f_f_t.html#a0cdce626ed2c8eeeecc6949418437839',1,'mlx::core::FFT::FFT()']]], - ['fft_14',['fft',['../namespacemlx_1_1core_1_1metal.html#a39f43360d9e916fcf7e86c919b419554',1,'mlx::core::metal::fft()'],['../backend_2metal_2kernels_2fft_8h.html#a4010b0e151e5f01e610e9c32234458c7',1,'fft(): fft.h'],['../namespacemlx_1_1core_1_1fft.html#ad672de5ca029a6925b05f03bbebe5ad3',1,'mlx::core::fft::fft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a3fe55b7b6eba32c4c8b2d206036216e0',1,'mlx::core::fft::fft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['fft_2eh_15',['fft.h',['../backend_2metal_2kernels_2fft_8h.html',1,'(Global Namespace)'],['../fft_8h.html',1,'(Global Namespace)']]], - ['fft2_16',['fft2',['../namespacemlx_1_1core_1_1fft.html#a02a7286e4b7a8ee149ec5d5b193b72d1',1,'mlx::core::fft::fft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a6eb0c5f8b33694ddb56748a97d17e8b7',1,'mlx::core::fft::fft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['fftblue_17',['fftblue',['../classpocketfft_1_1detail_1_1fftblue.html',1,'pocketfft::detail::fftblue< T0 >'],['../classpocketfft_1_1detail_1_1fftblue.html#a8613b2131e7843bbca9e1cd4cc15bc01',1,'pocketfft::detail::fftblue::fftblue()']]], - ['fftn_18',['fftn',['../namespacemlx_1_1core_1_1fft.html#a26e310c739176796965e47a88c7a998f',1,'mlx::core::fft::fftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#aaa116429c2cb5bab20b464be890252c8',1,'mlx::core::fft::fftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a039a44197ad299a15a5847639292800c',1,'mlx::core::fft::fftn(const array &a, StreamOrDevice s={})']]], - ['filewriter_19',['FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html',1,'mlx::core::io::FileWriter'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a40b241ad540ee4aadc3a19a6b1ccfb4d',1,'mlx::core::io::FileWriter::FileWriter()']]], - ['fill_5fgpu_20',['fill_gpu',['../namespacemlx_1_1core.html#ae789dbda2a0f4e21aa0984f6a5dc986c',1,'mlx::core']]], - ['finite_5fmax_21',['finite_max',['../struct_limits.html#a5a3eae6d244fbea2aa7b9200001463e5',1,'Limits::finite_max'],['../struct_limits_3_01uint8__t_01_4.html#a55f48b89033e8c8683f8540ec6b23f02',1,'Limits< uint8_t >::finite_max'],['../struct_limits_3_01uint16__t_01_4.html#a9d517d8265ea1898b6b16e91b8595146',1,'Limits< uint16_t >::finite_max'],['../struct_limits_3_01uint32__t_01_4.html#a0698139f3fe440d7aa08ac5029d72235',1,'Limits< uint32_t >::finite_max'],['../struct_limits_3_01uint64__t_01_4.html#aff101ff38be5ccdbb9790aecb3069071',1,'Limits< uint64_t >::finite_max'],['../struct_limits_3_01int8__t_01_4.html#a24cdab873e0fb778393c69f1dc9ecf73',1,'Limits< int8_t >::finite_max'],['../struct_limits_3_01int16__t_01_4.html#acb2936d1cdbf347a9a014c8e036a5782',1,'Limits< int16_t >::finite_max'],['../struct_limits_3_01int32__t_01_4.html#aa9ed9f0e8c7400d8fc92e1cba9588794',1,'Limits< int32_t >::finite_max'],['../struct_limits_3_01int64__t_01_4.html#a6c7254b641878fa0fb9538814c45457a',1,'Limits< int64_t >::finite_max'],['../struct_limits_3_01half_01_4.html#aedaf0190aabf23da20510e558e2690b4',1,'Limits< half >::finite_max'],['../struct_limits_3_01float_01_4.html#a291eea590113fc1858b7f83f2e0c977d',1,'Limits< float >::finite_max'],['../struct_limits_3_01bfloat16__t_01_4.html#a6337dc35207b3f6f7185cd73eabac211',1,'Limits< bfloat16_t >::finite_max']]], - ['finite_5fmin_22',['finite_min',['../struct_limits.html#ae7469d21f2688797ca3e388d919ef05e',1,'Limits::finite_min'],['../struct_limits_3_01uint8__t_01_4.html#a60cea662971b09f78ef19f1da4760b73',1,'Limits< uint8_t >::finite_min'],['../struct_limits_3_01uint16__t_01_4.html#a1a7c029eccba4ab89743abdfaabfa7b4',1,'Limits< uint16_t >::finite_min'],['../struct_limits_3_01uint32__t_01_4.html#ad5d811fce62f44488190ff01d9e7608b',1,'Limits< uint32_t >::finite_min'],['../struct_limits_3_01uint64__t_01_4.html#a6556e7de6e0670da8f768bbc4479deae',1,'Limits< uint64_t >::finite_min'],['../struct_limits_3_01int8__t_01_4.html#a592797ce82cc2f7e27b0c477165b3452',1,'Limits< int8_t >::finite_min'],['../struct_limits_3_01int16__t_01_4.html#a158c4dbc9333939691b1637478e28e39',1,'Limits< int16_t >::finite_min'],['../struct_limits_3_01int32__t_01_4.html#ad9777dc6a84dcb9c63b598189ff0a4ff',1,'Limits< int32_t >::finite_min'],['../struct_limits_3_01int64__t_01_4.html#af80726162b44a741aae679f1fe85142a',1,'Limits< int64_t >::finite_min'],['../struct_limits_3_01half_01_4.html#a98d153748be68dbb428c50df3c0285ab',1,'Limits< half >::finite_min'],['../struct_limits_3_01float_01_4.html#afaa5162a47083447c5ac758d6dc02a8b',1,'Limits< float >::finite_min'],['../struct_limits_3_01bfloat16__t_01_4.html#ae4132a37154707cc31bbc1734636cf36',1,'Limits< bfloat16_t >::finite_min']]], - ['flags_23',['Flags',['../structmlx_1_1core_1_1array_1_1_flags.html',1,'mlx::core::array']]], - ['flags_24',['flags',['../classmlx_1_1core_1_1array.html#a0a20a6065ae71b64c1e3aa22a45fd8a1',1,'mlx::core::array']]], - ['flatten_25',['flatten',['../group__ops.html#ga50aa98754b412bb57c083f6e3e95061f',1,'mlx::core::flatten(const array &a, int start_axis, int end_axis=-1, StreamOrDevice s={})'],['../group__ops.html#gaa6adbc9c86f0ab27d8810a02e9e719fd',1,'mlx::core::flatten(const array &a, StreamOrDevice s={})']]], - ['flip_26',['flip',['../struct_m_l_x_conv_params.html#a8b30cda15eda20f84f12db868f21d0ef',1,'MLXConvParams']]], - ['float16_27',['float16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa098e7844282e240fdee28a9dac11c1c6',1,'mlx::core::Dtype::float16'],['../namespacemlx_1_1core.html#abf228ee9d8ec48c03bb15adcc4e1f3ec',1,'mlx::core::float16']]], - ['float16_5ft_28',['float16_t',['../backend_2metal_2kernels_2utils_8h.html#acb8ddf4a29129846b673c50ba7078773',1,'float16_t: utils.h'],['../namespacemlx_1_1core.html#afbd2769c30e721afc85a7b9fb55b8e52',1,'mlx::core::float16_t']]], - ['float32_29',['float32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daad33ec2b0bbea6d471a4706cea030e1e3',1,'mlx::core::Dtype::float32'],['../namespacemlx_1_1core.html#a6894543b340321193dfb8052c438a319',1,'mlx::core::float32']]], - ['float_5fto_5fbfloat_5fbits_30',['float_to_bfloat_bits',['../backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1',1,'bf16.h']]], - ['floating_31',['floating',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da374515b23d6f106696387776a6077d17',1,'mlx::core::Dtype::floating'],['../namespacemlx_1_1core.html#ac9f9ea13cf0661e671569d37d14a128a',1,'mlx::core::floating']]], - ['floor_32',['Floor',['../struct_floor.html',1,'Floor'],['../structmlx_1_1core_1_1detail_1_1_floor.html',1,'mlx::core::detail::Floor'],['../classmlx_1_1core_1_1_floor.html',1,'mlx::core::Floor'],['../classmlx_1_1core_1_1_floor.html#ada4e979b784b732696313d7094e91340',1,'mlx::core::Floor::Floor()']]], - ['floor_33',['floor',['../namespacemetal.html#a020790f30c28a9982c4a83deaa258277',1,'metal::floor()'],['../namespacemetal_1_1fast.html#ac012ce1701c2339914f15cce9f2c632f',1,'metal::fast::floor()'],['../namespacemetal_1_1precise.html#a66e02b028e3cecfe7c80773460dc7925',1,'metal::precise::floor()'],['../group__ops.html#ga8d656904aa2690b60955ae745aecfc30',1,'mlx::core::floor(const array &a, StreamOrDevice s={})']]], - ['floor_5fdivide_34',['floor_divide',['../group__ops.html#ga05b4c6054d028107869511f927da01cd',1,'mlx::core']]], - ['floordivide_35',['FloorDivide',['../struct_floor_divide.html',1,'']]], - ['fma_36',['fma',['../namespacemetal.html#a6301a78d69ff14a06194ca85a0c7d326',1,'metal::fma()'],['../namespacemetal_1_1fast.html#aebcd6e951da6f7157ec219eb7a8f1ddd',1,'metal::fast::fma()'],['../namespacemetal_1_1precise.html#a49391a64d6b66fe3a212516b316a2144',1,'metal::precise::fma()']]], - ['fmax_37',['fmax',['../namespacemetal.html#a0558e56fdb94b456deea6a4eb53964ed',1,'metal::fmax()'],['../namespacemetal_1_1fast.html#a26e3257cf877154f8a0d434be0bdb034',1,'metal::fast::fmax()'],['../namespacemetal_1_1precise.html#ac7d49f921c2883caf9eec66efc4de1cd',1,'metal::precise::fmax()']]], - ['fmax3_38',['fmax3',['../namespacemetal.html#ae0c1a7ba1a7449adc64d00b2a29e67f6',1,'metal::fmax3()'],['../namespacemetal_1_1fast.html#a5c6a3a389f348e1f92e8392b765a32c7',1,'metal::fast::fmax3()'],['../namespacemetal_1_1precise.html#adf750e51bd83d569994d0967029e3bdc',1,'metal::precise::fmax3()']]], - ['fmedian3_39',['fmedian3',['../namespacemetal.html#aa35227450d943fb88cf43162aa9d8c49',1,'metal::fmedian3()'],['../namespacemetal_1_1fast.html#a923869181c3f576f2d86fba5bfa85633',1,'metal::fast::fmedian3()'],['../namespacemetal_1_1precise.html#a48d1d0be889de4043b775bb6b030a989',1,'metal::precise::fmedian3()']]], - ['fmin_40',['fmin',['../namespacemetal.html#a66ac19825ea79b8294e243ae6d0b3d3c',1,'metal::fmin()'],['../namespacemetal_1_1fast.html#a7e202ec52bf12bfabdf2265b300acbfa',1,'metal::fast::fmin()'],['../namespacemetal_1_1precise.html#a18df8eb481dfa56c92ad31b5bab8e069',1,'metal::precise::fmin()']]], - ['fmin3_41',['fmin3',['../namespacemetal.html#ae2acd25f2241f00aaf89ff48f132a879',1,'metal::fmin3()'],['../namespacemetal_1_1fast.html#a9531c6a4a520927523961e6eb6b94c1a',1,'metal::fast::fmin3()'],['../namespacemetal_1_1precise.html#a5bb710e6742996d32225a8f54a0f116c',1,'metal::precise::fmin3()']]], - ['fmod_42',['fmod',['../namespacemetal.html#a2ff952d4d596a7969b2a3035fc2fda58',1,'metal::fmod()'],['../namespacemetal_1_1fast.html#adbec09f18a89f773d7e368ef04a69526',1,'metal::fast::fmod()'],['../namespacemetal_1_1precise.html#aa99937178a1fc8158054e328eeeae648',1,'metal::precise::fmod()']]], - ['forward_43',['forward',['../structpocketfft_1_1detail_1_1_exec_c2_c.html#a63e27292b327597674deede9debe1c43',1,'pocketfft::detail::ExecC2C::forward'],['../structpocketfft_1_1detail_1_1_exec_r2_r.html#a5ec66ebb2ccd079f62b068ddd1fc7bdf',1,'pocketfft::detail::ExecR2R::forward']]], - ['forward_44',['FORWARD',['../namespacepocketfft_1_1detail.html#aecc5444a333360628be65a6f91ceb824',1,'pocketfft::detail']]], - ['four_5fstep_5ffft_45',['four_step_fft',['../backend_2metal_2kernels_2fft_8h.html#a6558a8205ee4c3e4767bafa93f7606de',1,'fft.h']]], - ['fp16_2eh_46',['fp16.h',['../fp16_8h.html',1,'']]], - ['fp16_5fbf16_5fbinop_5fhelper_47',['fp16_bf16_binop_helper',['../half__types_8h.html#a1f0d5d395d403bde764fffe4846617f9',1,'half_types.h']]], - ['fract_48',['fract',['../namespacemetal.html#a6b1c15d251aeaacb1f4338a5e152ae78',1,'metal::fract()'],['../namespacemetal_1_1fast.html#aa8bb448827503e485eb649eb3edb2d4c',1,'metal::fast::fract()'],['../namespacemetal_1_1precise.html#a0f21c19332a90df1a8ff507a813b5757',1,'metal::precise::fract()']]], - ['free_49',['free',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#ae963d551be646ae0e13df2c16f2beefb',1,'mlx::core::allocator::Allocator::free()'],['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#a84b50d1a3cbffa12c1a6cf0ed8c71079',1,'mlx::core::allocator::CommonAllocator::free()'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a109a0a37fb0b3be381a62dc3b1a54bf0',1,'mlx::core::metal::MetalAllocator::free()'],['../namespacemlx_1_1core_1_1allocator.html#a77f0a1215be242db6485612bcb273af5',1,'mlx::core::allocator::free()']]], - ['frexp_50',['frexp',['../namespacemetal.html#ac89d4ef524d21a301da6c37dbd95ff9f',1,'metal::frexp()'],['../namespacemetal_1_1fast.html#a23902df22aeaa859ef673a36381387c2',1,'metal::fast::frexp()'],['../namespacemetal_1_1precise.html#a0fbb1624c308b97380f894f92fd858b4',1,'metal::precise::frexp()']]], - ['full_51',['Full',['../classmlx_1_1core_1_1_full.html',1,'mlx::core::Full'],['../classmlx_1_1core_1_1_full.html#aafcb86a2e41353853ec48c717e0c54d6',1,'mlx::core::Full::Full()']]], - ['full_52',['full',['../group__ops.html#ga7e85a476530c96ab73b894d1bddacf84',1,'mlx::core::full(std::vector< int > shape, array vals, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga9e3b15c3ec6b7922296777c5e1878d52',1,'mlx::core::full(std::vector< int > shape, array vals, StreamOrDevice s={})'],['../group__ops.html#gac34ff7f1e217b93e878053aaa5a51e58',1,'mlx::core::full(std::vector< int > shape, T val, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga5e33cf83db1a65c35e688142bd41d35c',1,'mlx::core::full(std::vector< int > shape, T val, StreamOrDevice s={})']]] -]; diff --git a/docs/build/html/search/all_7.js b/docs/build/html/search/all_7.js deleted file mode 100644 index 473e62c0..00000000 --- a/docs/build/html/search/all_7.js +++ /dev/null @@ -1,110 +0,0 @@ -var searchData= -[ - ['gather_0',['Gather',['../classmlx_1_1core_1_1_gather.html',1,'mlx::core::Gather'],['../classmlx_1_1core_1_1_gather.html#a5b5f47ceff1d43477c87be5116f261d0',1,'mlx::core::Gather::Gather()']]], - ['gather_1',['gather',['../namespacemlx_1_1core_1_1metal.html#a545de371fefba1feec2e70b7e9f4187c',1,'mlx::core::metal::gather()'],['../group__ops.html#gab6e7f655a9ff15350ca5379692f9d444',1,'mlx::core::gather(const array &a, const std::vector< array > &indices, const std::vector< int > &axes, const std::vector< int > &slice_sizes, StreamOrDevice s={})'],['../group__ops.html#gadb4337ca5d4f88fe9e7c083bc478158b',1,'mlx::core::gather(const array &a, const array &indices, int axis, const std::vector< int > &slice_sizes, StreamOrDevice s={})']]], - ['gather_2eh_2',['gather.h',['../gather_8h.html',1,'']]], - ['gather_5fbias_3',['gather_bias',['../steel__gemm__fused_8h.html#aaaf17233201156be684f858bfd0f1b67',1,'steel_gemm_fused.h']]], - ['gather_5fimpl_4',['gather_impl',['../gather_8h.html#abdec470e1af0109563ddae3e85e6526c',1,'gather.h']]], - ['gather_5fkernels_5',['gather_kernels',['../jit_2indexing_8h.html#a1a03318128191891a84707602b57b3cf',1,'indexing.h']]], - ['gather_5fmm_6',['gather_mm',['../group__ops.html#ga8d50480266d258cac40ff51bcb0fc6a7',1,'mlx::core']]], - ['gather_5fqmm_7',['gather_qmm',['../group__ops.html#ga368a0dc0e5dfb76922e7aa55a95f12f0',1,'mlx::core']]], - ['gathermm_8',['GatherMM',['../classmlx_1_1core_1_1_gather_m_m.html',1,'mlx::core::GatherMM'],['../classmlx_1_1core_1_1_gather_m_m.html#afd9bbc08138181b80e2fb86536ff3f2a',1,'mlx::core::GatherMM::GatherMM()']]], - ['gatherqmm_9',['GatherQMM',['../classmlx_1_1core_1_1_gather_q_m_m.html',1,'mlx::core::GatherQMM'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a60ed2ade7f10dd9c9314913a810f9360',1,'mlx::core::GatherQMM::GatherQMM()']]], - ['gemm_10',['gemm',['../namespacemlx_1_1core_1_1metal.html#ac46fd23516a61fc56d997910e4144281',1,'mlx::core::metal::gemm()'],['../steel__gemm__fused_8h.html#aa40dd40b9a0bbf20c8911032ed0c3e6d',1,'gemm(const device T *A, const device T *B, const device T *C, device T *D, const constant GEMMParams *params, const constant GEMMAddMMParams *addmm_params, const constant int *batch_shape, const constant size_t *batch_strides, const constant uint32_t *lhs_indices, const constant uint32_t *rhs_indices, const constant uint32_t *C_indices, const constant int *operand_shape, const constant size_t *operand_strides, const constant packed_int3 &operand_batch_ndim, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid): steel_gemm_fused.h']]], - ['gemm_2eh_11',['gemm.h',['../gemm_8h.html',1,'']]], - ['gemm_5fk_5fiterations_12',['gemm_k_iterations',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a8b50863e4e2d3481c154be6c3629bf51',1,'mlx::steel::ImplicitGemmConv2DParams']]], - ['gemm_5fk_5fiterations_5faligned_13',['gemm_k_iterations_aligned',['../struct_m_l_x_fast_attention_params.html#adbc0a13076da5f704498e57239cb2bf2',1,'MLXFastAttentionParams::gemm_k_iterations_aligned'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a0d7f419ba265805b418e93ce1ca2e0f9',1,'mlx::steel::GEMMParams::gemm_k_iterations_aligned'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#aa37e05a03ac8b34ec7dc31ca42f68998',1,'mlx::steel::GEMMSpiltKParams::gemm_k_iterations_aligned']]], - ['gemm_5floop_14',['gemm_loop',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a756d7bbcc96e2919cd65eec4bc135780',1,'mlx::steel::GEMMKernel']]], - ['gemm_5fn_5fiterations_5faligned_15',['gemm_n_iterations_aligned',['../struct_m_l_x_fast_attention_params.html#ab56b3db8fc6a938ce9c739ee78a7b803',1,'MLXFastAttentionParams']]], - ['gemm_5fparams_16',['gemm_params',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#ab0724eb3ef52ee773b6607f6433b9f2c',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::gemm_params'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#acc778b3c0b7ec38a43e8ea943df8704c',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::gemm_params'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#af59f9d356c4c3ec5627dc5a263d239d4',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::gemm_params']]], - ['gemm_5fsplitk_17',['gemm_splitk',['../steel__gemm__splitk_8h.html#a3be6e095a0a026d3ecf57a3e67f76188',1,'steel_gemm_splitk.h']]], - ['gemm_5fsplitk_5faccum_18',['gemm_splitk_accum',['../steel__gemm__splitk_8h.html#abeb921bf1dc7941125188ddd390b0907',1,'steel_gemm_splitk.h']]], - ['gemm_5fsplitk_5faccum_5faxpby_19',['gemm_splitk_accum_axpby',['../steel__gemm__splitk_8h.html#acc33fdfaaf3eb3a0629b3d52c7043dc1',1,'steel_gemm_splitk.h']]], - ['gemm_5fsv_5fm_5fblock_5fiterations_20',['gemm_sv_m_block_iterations',['../struct_m_l_x_fast_attention_params.html#a2799a2f219441fef7f351374f4cbc67c',1,'MLXFastAttentionParams']]], - ['gemmaddmmparams_21',['GEMMAddMMParams',['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html',1,'mlx::steel']]], - ['gemmkernel_22',['GEMMKernel',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html',1,'mlx::steel']]], - ['gemmparams_23',['GEMMParams',['../structmlx_1_1steel_1_1_g_e_m_m_params.html',1,'mlx::steel']]], - ['gemmspiltkparams_24',['GEMMSpiltKParams',['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html',1,'mlx::steel']]], - ['gemv_5fmasked_25',['gemv_masked',['../namespacemlx_1_1core_1_1metal.html#abc055b75e6a059618f279c35f8de36e7',1,'mlx::core::metal::gemv_masked()'],['../kernels_2gemv__masked_8h.html#ab3070d14cdecb1dd7dc220a551da6b7b',1,'gemv_masked(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const constant int &batch_ndim, const constant int *batch_shape, const constant size_t *vector_batch_stride, const constant size_t *matrix_batch_stride, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, const constant size_t *mask_batch_strides, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid): gemv_masked.h']]], - ['gemv_5fmasked_2eh_26',['gemv_masked.h',['../jit_2gemv__masked_8h.html',1,'(Global Namespace)'],['../kernels_2gemv__masked_8h.html',1,'(Global Namespace)']]], - ['gemv_5fmasked_5fkernel_27',['gemv_masked_kernel',['../jit_2gemv__masked_8h.html#a933f06c211f86c37673dee329ed6901f',1,'gemv_masked.h']]], - ['gemv_5ft_5fmasked_28',['gemv_t_masked',['../kernels_2gemv__masked_8h.html#a0c8d353fc453e448b2d0ed9a19431b63',1,'gemv_masked.h']]], - ['gemvkernel_29',['GEMVKernel',['../struct_g_e_m_v_kernel.html',1,'']]], - ['gemvtkernel_30',['GEMVTKernel',['../struct_g_e_m_v_t_kernel.html',1,'']]], - ['general_31',['General',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a0db377921f4ce762c62526131097968f',1,'mlx::core']]], - ['general_5fc2r_32',['general_c2r',['../namespacepocketfft_1_1detail.html#ac8ee38e8d8bcda875c99eeaf567550fc',1,'pocketfft::detail']]], - ['general_5fnd_33',['general_nd',['../namespacepocketfft_1_1detail.html#ab47f52551920af5eb9f57fbbded0f4f0',1,'pocketfft::detail']]], - ['general_5fr2c_34',['general_r2c',['../namespacepocketfft_1_1detail.html#a055a39b0a337ca12217717196eb92fed',1,'pocketfft::detail']]], - ['generalcontiguousreduce_35',['GeneralContiguousReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65a540cf31fe6858115a02e789938297cdb',1,'mlx::core']]], - ['generalgeneral_36',['GeneralGeneral',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a6fe62e8ce1fae1e70cb9eeaa67d29dab',1,'mlx::core']]], - ['generalreduce_37',['GeneralReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65a3622f95ed0ec99657f9ad8ef39ec2184',1,'mlx::core']]], - ['generalstridedreduce_38',['GeneralStridedReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ad999b1a8ae1d7436efb5ffdfafb1dd3d',1,'mlx::core']]], - ['generic_39',['generic',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da3d517f8924ac7fd03699a29d97dc52d9',1,'mlx::core::Dtype::generic'],['../namespacemlx_1_1core.html#a34d69c4d46aa9b2a4a79dba7aba093d2',1,'mlx::core::generic']]], - ['get_5f2d_5fgrid_5fdims_40',['get_2d_grid_dims',['../namespacemlx_1_1core.html#a8dc169474a51a1f4f761d5752819bd7c',1,'mlx::core']]], - ['get_5factive_5fmemory_41',['get_active_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a7a3ad4e33d57a47474c98e2f88e775d7',1,'mlx::core::metal::MetalAllocator::get_active_memory()'],['../namespacemlx_1_1core_1_1metal.html#a7b75c2639016ac4d350fa6c9da386667',1,'mlx::core::metal::get_active_memory()']]], - ['get_5farange_5fkernel_42',['get_arange_kernel',['../namespacemlx_1_1core.html#a76f614e9956a6ca05a9be4db5a483446',1,'mlx::core']]], - ['get_5fbinary_5fkernel_43',['get_binary_kernel',['../namespacemlx_1_1core.html#a4decd4a07d91487e6903f6e3c8b7513a',1,'mlx::core']]], - ['get_5fbinary_5ftwo_5fkernel_44',['get_binary_two_kernel',['../namespacemlx_1_1core.html#a4e809746f48e5dcf7fa63215d3f5e33e',1,'mlx::core']]], - ['get_5fblock_5fdims_45',['get_block_dims',['../namespacemlx_1_1core.html#a7b3f872f6046bdd4d429ee1f1c31cd40',1,'mlx::core']]], - ['get_5fcache_5fmemory_46',['get_cache_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#ad3cabbe638917ca4114eb74dcabe381f',1,'mlx::core::metal::MetalAllocator::get_cache_memory()'],['../namespacemlx_1_1core_1_1metal.html#a43307654f62ed7c58e014be7fb03909c',1,'mlx::core::metal::get_cache_memory()']]], - ['get_5fcolocated_5fmtllib_5fpath_47',['get_colocated_mtllib_path',['../namespacemlx_1_1core_1_1metal.html#a5fd6ba2040e53a254b9d71ae7ebd315f',1,'mlx::core::metal']]], - ['get_5fcommand_5fbuffer_48',['get_command_buffer',['../classmlx_1_1core_1_1metal_1_1_device.html#a5fe3970fbe92ccc55fce4241ffbe5210',1,'mlx::core::metal::Device']]], - ['get_5fcommand_5fbuffer_5fops_49',['get_command_buffer_ops',['../classmlx_1_1core_1_1metal_1_1_device.html#a064e1cb6a16de7a0619f6447622350f8',1,'mlx::core::metal::Device']]], - ['get_5fcommand_5fencoder_50',['get_command_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#affa682ef612def4890f5152f81ffb7e6',1,'mlx::core::metal::Device']]], - ['get_5fcopy_5fkernel_51',['get_copy_kernel',['../namespacemlx_1_1core.html#a05a220cff45f12439fde775983c6df78',1,'mlx::core']]], - ['get_5fdefault_5fstream_52',['get_default_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a2366c7b888e433608e203752edc92282',1,'mlx::core::scheduler::Scheduler']]], - ['get_5ffft_5fkernel_53',['get_fft_kernel',['../namespacemlx_1_1core.html#a1d4cffc3c78067b3d9a62d64f3fb686f',1,'mlx::core']]], - ['get_5ffunction_54',['get_function',['../classmlx_1_1core_1_1metal_1_1_device.html#abf4ecf035e8be2ff00d2a7e95475d7ac',1,'mlx::core::metal::Device::get_function(const std::string &base_name, MTL::Library *mtl_lib, const std::string &specialized_name="", const MTLFCList &func_consts={})'],['../classmlx_1_1core_1_1metal_1_1_device.html#ac083535ead07161cb27ad31f8f64fb84',1,'mlx::core::metal::Device::get_function(const std::string &base_name, const std::string &lib_name="mlx", const std::string &specialized_name="", const MTLFCList &func_consts={})']]], - ['get_5fgemv_5fmasked_5fkernel_55',['get_gemv_masked_kernel',['../namespacemlx_1_1core.html#a90c24e0d0b99b68fad9deefcf4d3e818',1,'mlx::core']]], - ['get_5fkernel_56',['get_kernel',['../classmlx_1_1core_1_1metal_1_1_device.html#a6810c4dcbcfbf93fc51d42aa5ff0fc3a',1,'mlx::core::metal::Device::get_kernel(const std::string &base_name, MTL::Library *mtl_lib, const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})'],['../classmlx_1_1core_1_1metal_1_1_device.html#afa0cac9d800c21a8a7f6cb224256abaf',1,'mlx::core::metal::Device::get_kernel(const std::string &base_name, const std::string &lib_name="mlx", const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})']]], - ['get_5fkernel_5fpreamble_57',['get_kernel_preamble',['../compiled__preamble_8h.html#a1dfa17a0369fb90ff615c7461f5013f3',1,'compiled_preamble.h']]], - ['get_5flibrary_58',['get_library',['../classmlx_1_1core_1_1metal_1_1_device.html#a86297d66de43ee77d0697f69c6bd0b87',1,'mlx::core::metal::Device::get_library(const std::string &name)'],['../classmlx_1_1core_1_1metal_1_1_device.html#a961d3cdb4bfb14c1a0b0aeb05609f56e',1,'mlx::core::metal::Device::get_library(const std::string &name, const std::string &source_string, bool cache=true)'],['../classmlx_1_1core_1_1metal_1_1_device.html#a8d8d9e28ffeea10d687b91ea480fb4bd',1,'mlx::core::metal::Device::get_library(const std::string &name, const MTL::StitchedLibraryDescriptor *desc, bool cache=true)']]], - ['get_5fmb_5fsort_5fkernel_59',['get_mb_sort_kernel',['../namespacemlx_1_1core.html#afb57825bb763050cc9a9d194aa41ac36',1,'mlx::core']]], - ['get_5fname_60',['get_name',['../structmlx_1_1core_1_1_node_namer.html#a1690dd38de288c0aee2bb53156eb770e',1,'mlx::core::NodeNamer']]], - ['get_5fpeak_5fmemory_61',['get_peak_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#ac7972a3fe58e69489de775a0f152da17',1,'mlx::core::metal::MetalAllocator::get_peak_memory()'],['../namespacemlx_1_1core_1_1metal.html#a4b67d680cefa95f0ed5801f0e14e48ce',1,'mlx::core::metal::get_peak_memory()']]], - ['get_5fplan_62',['get_plan',['../namespacepocketfft_1_1detail.html#ab24cdb6118901f4d3c8df06ef0f8390b',1,'pocketfft::detail']]], - ['get_5fpool_63',['get_pool',['../namespacepocketfft_1_1detail_1_1threading.html#a7ec2b3f99232bd0f15f7b022c59d139a',1,'pocketfft::detail::threading']]], - ['get_5fprimitive_5fstring_64',['get_primitive_string',['../namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60',1,'mlx::core']]], - ['get_5fquantized_5fkernel_65',['get_quantized_kernel',['../namespacemlx_1_1core.html#aa3faeae5378bfaafe3ce3432a051e43e',1,'mlx::core']]], - ['get_5freduce_5finit_5fkernel_66',['get_reduce_init_kernel',['../namespacemlx_1_1core.html#a51c4bb09230348bd0252e22bfdc9bc89',1,'mlx::core']]], - ['get_5freduce_5fkernel_67',['get_reduce_kernel',['../namespacemlx_1_1core.html#a7aa91fcfe8b9caa42d60a957f11bfe6b',1,'mlx::core']]], - ['get_5freduction_5fplan_68',['get_reduction_plan',['../namespacemlx_1_1core.html#ac97b5a6f009ca3d99854ce9512c20dba',1,'mlx::core']]], - ['get_5fscan_5fkernel_69',['get_scan_kernel',['../namespacemlx_1_1core.html#aeefaff208444d3fa61ecc0946fe1de5f',1,'mlx::core']]], - ['get_5fshape_70',['get_shape',['../namespacemlx_1_1core.html#aab0d8a256957984acc1e3615c65c898e',1,'mlx::core']]], - ['get_5fsoftmax_5fkernel_71',['get_softmax_kernel',['../namespacemlx_1_1core.html#a35a412f688d79eb47e42d20a7c8650ee',1,'mlx::core']]], - ['get_5fsort_5fkernel_72',['get_sort_kernel',['../namespacemlx_1_1core.html#a84ebe6275218070f0ea320f126f64e22',1,'mlx::core']]], - ['get_5fsteel_5fconv_5fgeneral_5fkernel_73',['get_steel_conv_general_kernel',['../namespacemlx_1_1core.html#abce2b67044ee06a7bbe7a91ec7c8c48d',1,'mlx::core']]], - ['get_5fsteel_5fconv_5fkernel_74',['get_steel_conv_kernel',['../namespacemlx_1_1core.html#adce79d220672f5f3c65cc31d145ca9c4',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5ffused_5fkernel_75',['get_steel_gemm_fused_kernel',['../namespacemlx_1_1core.html#a84fa8e0aee321a9d614433a0b933103b',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5fmasked_5fkernel_76',['get_steel_gemm_masked_kernel',['../namespacemlx_1_1core.html#ab5f60614e965144b451930fdf935e08d',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5fsplitk_5faccum_5fkernel_77',['get_steel_gemm_splitk_accum_kernel',['../namespacemlx_1_1core.html#a195b86cad5bb99aa1bcd23952305af6b',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5fsplitk_5fkernel_78',['get_steel_gemm_splitk_kernel',['../namespacemlx_1_1core.html#af48c6f2f72b61dbd6766e4f5fea85df5',1,'mlx::core']]], - ['get_5ftemplate_5fdefinition_79',['get_template_definition',['../namespacemlx_1_1core.html#aae0d19f0acdef2accd2428fb84c8a032',1,'mlx::core']]], - ['get_5fternary_5fkernel_80',['get_ternary_kernel',['../namespacemlx_1_1core.html#a54eb3b65375022428aab5f810e40624b',1,'mlx::core']]], - ['get_5ftwiddle_81',['get_twiddle',['../radix_8h.html#ac5cf950316b9445296ee9ecfc56a56bd',1,'radix.h']]], - ['get_5ftype_5fstring_82',['get_type_string',['../namespacemlx_1_1core.html#af776fd91dd60594dcfebbafd17f19068',1,'mlx::core']]], - ['get_5funary_5fkernel_83',['get_unary_kernel',['../namespacemlx_1_1core.html#a15175e8e2b1e26726c63393e4d68b628',1,'mlx::core']]], - ['gguf_2eh_84',['gguf.h',['../gguf_8h.html',1,'']]], - ['gguf_5fload_5fquantized_85',['gguf_load_quantized',['../namespacemlx_1_1core.html#a65dd68163bdaef3631e3724327782498',1,'mlx::core']]], - ['ggufload_86',['GGUFLoad',['../namespacemlx_1_1core.html#aa5b0f7f13a941e1f41c411194e9033c7',1,'mlx::core']]], - ['ggufmetadata_87',['GGUFMetaData',['../namespacemlx_1_1core.html#a8c2c1b9a37aadfb48f4c3a7e806e32e3',1,'mlx::core']]], - ['global_5fformatter_88',['global_formatter',['../namespacemlx_1_1core.html#af5a408a78cc934717dd711ddfda58ea6',1,'mlx::core']]], - ['good_89',['good',['../classmlx_1_1core_1_1io_1_1_reader.html#a005d0b52c1f34866f7412b7f41dabec3',1,'mlx::core::io::Reader::good()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a0b050c2c27487007e250e2e19560ffe4',1,'mlx::core::io::Writer::good()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#ac54a2c693acc3d9e6e942412148ffcc9',1,'mlx::core::io::ParallelFileReader::good()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9ec4934b26fb358d699ddce1482b2d54',1,'mlx::core::io::FileWriter::good()']]], - ['good_5fsize_5fcmplx_90',['good_size_cmplx',['../structpocketfft_1_1detail_1_1util.html#a758e00d242a1b7eda8f9f0c21f35c624',1,'pocketfft::detail::util']]], - ['good_5fsize_5freal_91',['good_size_real',['../structpocketfft_1_1detail_1_1util.html#a173da7d5929ded86fffcebcfdc5086aa',1,'pocketfft::detail::util']]], - ['gpu_92',['gpu',['../structmlx_1_1core_1_1_device.html#a45ed081b56ae5d4ddd39c83a5d8a1616',1,'mlx::core::Device::gpu'],['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdba0aa0be2a866411d9ff03515227454947',1,'mlx::core::Device::gpu']]], - ['grad_93',['grad',['../namespacemlx_1_1core.html#a99994806f81e83f98746c9e5ba4c3673',1,'mlx::core::grad'],['../namespacemlx_1_1core.html#af482f6c64acd77c57ef5bb4b7be9726c',1,'mlx::core::grad(const std::function< array(const std::vector< array > &)> &fun, int argnum=0)'],['../namespacemlx_1_1core.html#a64bc619876b0f8cc81a2637ca81c99f7',1,'mlx::core::grad(const std::function< array(const array &)> &fun)']]], - ['graph_5futils_2eh_94',['graph_utils.h',['../graph__utils_8h.html',1,'']]], - ['greater_95',['Greater',['../struct_greater.html',1,'Greater'],['../structmlx_1_1core_1_1detail_1_1_greater.html',1,'mlx::core::detail::Greater'],['../classmlx_1_1core_1_1_greater.html',1,'mlx::core::Greater'],['../classmlx_1_1core_1_1_greater.html#a1d5992a66c020cd97a70e8e3d8cd1a1b',1,'mlx::core::Greater::Greater()']]], - ['greater_96',['greater',['../group__ops.html#gaf4ec7bfc1ad13b891f1f3ef1772ef04d',1,'mlx::core']]], - ['greater_5fequal_97',['greater_equal',['../group__ops.html#ga7153071bcfff6faad21332163fb9a430',1,'mlx::core']]], - ['greaterequal_98',['GreaterEqual',['../struct_greater_equal.html',1,'GreaterEqual'],['../structmlx_1_1core_1_1detail_1_1_greater_equal.html',1,'mlx::core::detail::GreaterEqual'],['../classmlx_1_1core_1_1_greater_equal.html',1,'mlx::core::GreaterEqual'],['../classmlx_1_1core_1_1_greater_equal.html#a19a3c49d5a9b40e17da0e56ef6908527',1,'mlx::core::GreaterEqual::GreaterEqual()']]], - ['grid_99',['grid',['../struct_read_writer.html#ac7a957f99873d3797081f5d620f3b2c8',1,'ReadWriter']]], - ['group_100',['Group',['../structmlx_1_1core_1_1distributed_1_1_group.html',1,'mlx::core::distributed::Group'],['../structmlx_1_1core_1_1distributed_1_1_group.html#a6f84accc8d6734989b2757bf6cdd0152',1,'mlx::core::distributed::Group::Group()']]], - ['group_101',['group',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a8831cb61ac633431b78b5fb99c0ea9ff',1,'mlx::core::distributed::DistPrimitive']]], - ['group_5fstep_5fcnt_102',['group_step_cnt',['../struct_quantized_block_loader.html#a234feacde36a4afc0d740332a3769fb6',1,'QuantizedBlockLoader']]], - ['group_5fsteps_103',['group_steps',['../struct_quantized_block_loader.html#a31e14175f3d4902d9fe5ab5a219f61ba',1,'QuantizedBlockLoader']]], - ['group_5fstride_104',['group_stride',['../struct_quantized_block_loader.html#a0ace7e3762ecfa5a4106e7dee7e1b6ab',1,'QuantizedBlockLoader']]], - ['groups_105',['groups',['../struct_m_l_x_conv_params.html#af7a5590ac0974c7841c7f8b9fda0cbed',1,'MLXConvParams']]], - ['gumbel_106',['gumbel',['../namespacemlx_1_1core_1_1random.html#aa849b765cd794306997bcbb9936d3d84',1,'mlx::core::random']]] -]; diff --git a/docs/build/html/search/all_8.js b/docs/build/html/search/all_8.js deleted file mode 100644 index 385c5b72..00000000 --- a/docs/build/html/search/all_8.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['h12_0',['h12',['../namespacemlx_1_1core.html#a4beeeec4413be7adcfb14feaa9cf0e2e',1,'mlx::core']]], - ['h20_1',['h20',['../namespacemlx_1_1core.html#a862c6b94fec384c34a699ced64d01404',1,'mlx::core']]], - ['h28_2',['h28',['../namespacemlx_1_1core.html#ac447ad59592dd06435adca7df37e33ad',1,'mlx::core']]], - ['hadamard_3',['Hadamard',['../classmlx_1_1core_1_1_hadamard.html',1,'mlx::core::Hadamard'],['../classmlx_1_1core_1_1_hadamard.html#abe4a0ed820b126940beec519d4239923',1,'mlx::core::Hadamard::Hadamard()']]], - ['hadamard_4',['hadamard',['../namespacemlx_1_1core_1_1metal.html#a8bd0072616087cd568c2c804e7114aa9',1,'mlx::core::metal']]], - ['hadamard_2eh_5',['hadamard.h',['../common_2hadamard_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2hadamard_8h.html',1,'(Global Namespace)']]], - ['hadamard_5fm_6',['hadamard_m',['../metal_2kernels_2hadamard_8h.html#ab0bd478f2051af35aed1869005e3370a',1,'hadamard.h']]], - ['hadamard_5fmatrices_7',['hadamard_matrices',['../namespacemlx_1_1core.html#a50214cf406957fab27c8bef32046f030',1,'mlx::core']]], - ['hadamard_5fn_8',['hadamard_n',['../metal_2kernels_2hadamard_8h.html#a63c0e8510e555cd065e1f0ddfb33ce18',1,'hadamard.h']]], - ['hadamard_5ftransform_9',['hadamard_transform',['../group__ops.html#ga872d2c1806e67ce2596b24d056681074',1,'mlx::core']]], - ['half_5fbinop_10',['half_binop',['../fp16_8h.html#af58966694c5d80f9a0241670f3128199',1,'fp16.h']]], - ['half_5fbinop_5fbase_11',['half_binop_base',['../fp16_8h.html#a8420acf5d2687fbdafcc9052c949f323',1,'fp16.h']]], - ['half_5fbinop_5fhelper_12',['half_binop_helper',['../fp16_8h.html#aa300338c53d5a9f52fbbde8fd777f13d',1,'fp16.h']]], - ['half_5fbitop_13',['half_bitop',['../fp16_8h.html#a2242eaa64839925fd8f586dde7a59800',1,'fp16.h']]], - ['half_5fcompop_14',['half_compop',['../fp16_8h.html#acec0b85a9974cbde7b270a121f382405',1,'fp16.h']]], - ['half_5finplace_5fbitop_15',['half_inplace_bitop',['../fp16_8h.html#a378e011e994bf62a961c3c1cd6f7c290',1,'fp16.h']]], - ['half_5finplace_5fop_16',['half_inplace_op',['../fp16_8h.html#a6348c00d31a50b2df1b47d18af49c4b8',1,'fp16.h']]], - ['half_5ftypes_2eh_17',['half_types.h',['../half__types_8h.html',1,'']]], - ['has_5fbatch_18',['has_batch',['../steel__gemm__fused_8h.html#adffcdc900c19ff97f1523e43f1a5a6cc',1,'steel_gemm_fused.h']]], - ['has_5fmul_5foperand_5fmask_19',['has_mul_operand_mask',['../struct_g_e_m_v_kernel.html#ad47223ee49b3cb7bf3746a2cec45f883',1,'GEMVKernel::has_mul_operand_mask'],['../struct_g_e_m_v_t_kernel.html#a8db6f01f96a36b216acd801c34a96ef5',1,'GEMVTKernel::has_mul_operand_mask']]], - ['has_5fmul_5foutput_5fmask_20',['has_mul_output_mask',['../struct_g_e_m_v_kernel.html#a0edbf2dd6a6563e7afa6dab6b670615c',1,'GEMVKernel::has_mul_output_mask'],['../struct_g_e_m_v_t_kernel.html#a8eb06f6569e4042e24fee220b11fa10d',1,'GEMVTKernel::has_mul_output_mask']]], - ['has_5foperand_5fmask_21',['has_operand_mask',['../struct_g_e_m_v_kernel.html#ab00784dff1512a7b0919fcb4cfa5d50e',1,'GEMVKernel::has_operand_mask'],['../struct_g_e_m_v_t_kernel.html#a6729d6e63e76a1e9c7c8e78d9aac4869',1,'GEMVTKernel::has_operand_mask']]], - ['has_5foutput_5fmask_22',['has_output_mask',['../struct_g_e_m_v_kernel.html#ab8b64c94f4c8f6f09c0777415589b487',1,'GEMVKernel::has_output_mask'],['../struct_g_e_m_v_t_kernel.html#aaefdf8f023da255bbb70a0c3e3408626',1,'GEMVTKernel::has_output_mask']]], - ['has_5fprimitive_23',['has_primitive',['../classmlx_1_1core_1_1array.html#aa5aceab15241e7826cbaf8b8a41440c1',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/all_9.js b/docs/build/html/search/all_9.js deleted file mode 100644 index c5fc30a8..00000000 --- a/docs/build/html/search/all_9.js +++ /dev/null @@ -1,80 +0,0 @@ -var searchData= -[ - ['i_0',['i',['../structpocketfft_1_1detail_1_1cmplx.html#a35d2dce1b7de5f37d7029e639bc7f23d',1,'pocketfft::detail::cmplx::i'],['../unionmlx_1_1core_1_1detail_1_1_int_or_float.html#aa6d4b02e99df90a321e0eeeb98e71b49',1,'mlx::core::detail::IntOrFloat::i'],['../unionbool4__or__uint.html#ab24d95aaf4203ddf3e6b1ed19397ced7',1,'bool4_or_uint::i'],['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a865c0c0b4ab0e063e5caa3387c1a8741',1,'mlx::core::Dtype::i']]], - ['id_1',['id',['../classmlx_1_1core_1_1array.html#adfa53f3f26bb0f942fb1c67ec8cd5380',1,'mlx::core::array']]], - ['identity_2',['identity',['../group__ops.html#ga484eaa10d5e19a4ca46d3a9cd9fab600',1,'mlx::core::identity(int n, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#gad994d65ac6019c26b5ad6c41179d3424',1,'mlx::core::identity(int n, StreamOrDevice s={})']]], - ['idil_3',['idil',['../struct_m_l_x_conv_params.html#af900fdb4c4d4ea35eed02940dee8d4d1',1,'MLXConvParams']]], - ['idx_5ft_4',['idx_t',['../struct_kernel_merge_sort.html#a0df65b709ae7f153a2bf381179d55e00',1,'KernelMergeSort']]], - ['ifft_5',['ifft',['../namespacemlx_1_1core_1_1fft.html#a893a667b85d6bef9b27fb40b591352b3',1,'mlx::core::fft::ifft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a700e1659e101bc0f806de712079d9273',1,'mlx::core::fft::ifft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['ifft2_6',['ifft2',['../namespacemlx_1_1core_1_1fft.html#a5b5dbc2fd0f4ed32255ae800455855d6',1,'mlx::core::fft::ifft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a865adcb7d7fe35541ad8c21f963905e0',1,'mlx::core::fft::ifft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['ifftn_7',['ifftn',['../namespacemlx_1_1core_1_1fft.html#acf85f2754160886b08d3759982251e28',1,'mlx::core::fft::ifftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a3794c67262e4ab28d35fa89abfdfd063',1,'mlx::core::fft::ifftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a8adeca9b76277676390ec7d04dc0620b',1,'mlx::core::fft::ifftn(const array &a, StreamOrDevice s={})']]], - ['imag_8',['imag',['../structcomplex64__t.html#a94037c0cf8451aaff7cb4d154a8426de',1,'complex64_t']]], - ['implicit_5fgemm_5fconv_5f2d_9',['implicit_gemm_conv_2d',['../kernels_2steel_2conv_2kernels_2steel__conv_8h.html#a5728711d1c2ee4038457babb7ac12888',1,'steel_conv.h']]], - ['implicit_5fgemm_5fconv_5f2d_5fgeneral_10',['implicit_gemm_conv_2d_general',['../steel__conv__general_8h.html#ad620c0656ae92e36dcb4a285d9e790ee',1,'steel_conv_general.h']]], - ['implicitgemmconv2dparams_11',['ImplicitGemmConv2DParams',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html',1,'mlx::steel']]], - ['in_12',['in',['../struct_read_writer.html#ab6057215920138f28fd00f0e7ea8afa4',1,'ReadWriter']]], - ['in_5fstrides_13',['in_strides',['../struct_m_l_x_conv_params.html#ab25eade6573784985dbea1216f9068cf',1,'MLXConvParams']]], - ['in_5ftracing_14',['in_tracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#ac52b8e2c3f808d3076c4e1ebaf9dc63d',1,'mlx::core::detail::InTracing']]], - ['includes_2eh_15',['includes.h',['../includes_8h.html',1,'']]], - ['increment_5fcommand_5fbuffer_5fops_16',['increment_command_buffer_ops',['../classmlx_1_1core_1_1metal_1_1_device.html#a7a33d4d601423a3d3c23d5ad7072abb6',1,'mlx::core::metal::Device']]], - ['index_17',['index',['../structlooped__elem__to__loc.html#a29b154409551fea0a4ef50bf320ebc0a',1,'looped_elem_to_loc::index'],['../structmlx_1_1core_1_1_device.html#a5e345748fe318a267833ab7398b364ac',1,'mlx::core::Device::index'],['../structmlx_1_1core_1_1_stream.html#a9d0dafc1899333e1176eb2bbc0a8b626',1,'mlx::core::Stream::index']]], - ['indexing_2eh_18',['indexing.h',['../jit_2indexing_8h.html',1,'(Global Namespace)'],['../kernels_2indexing_8h.html',1,'(Global Namespace)']]], - ['indices_19',['Indices',['../struct_indices.html',1,'']]], - ['inexact_20',['inexact',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2dae03b116564cd944b048fde87dbd4d5c9',1,'mlx::core::Dtype::inexact'],['../namespacemlx_1_1core.html#a54c6fae21b7f2fea8e6f80011ef38534',1,'mlx::core::inexact']]], - ['infinity_21',['infinity',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61eb741e7af49046beb863abf023b206',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['init_22',['init',['../struct_cum_sum.html#a987f7a15eded60081b74abc103d3054b',1,'CumSum::init'],['../struct_cum_prod.html#acf2ae2daa84d477b413deea679cab9e5',1,'CumProd::init'],['../struct_cum_prod_3_01bool_01_4.html#ae7a8b0ba9e6898356b87b18766e76d2c',1,'CumProd< bool >::init'],['../struct_cum_max.html#a16480052a2eeb4340e546838aab59cc4',1,'CumMax::init'],['../struct_cum_min.html#a8b67f739c620d0cc194b533190990ab9',1,'CumMin::init'],['../struct_less_than.html#abf97a6b0163048e4ba96460939dbd3a3',1,'LessThan::init'],['../namespacemlx_1_1core_1_1distributed.html#a33633c058c7ec82cca4f237243c6810d',1,'mlx::core::distributed::init()']]], - ['init_5freduce_23',['init_reduce',['../reduce__init_8h.html#a0088604ac2eaa6940689ff12c4ba5fc2',1,'reduce_init.h']]], - ['inner_24',['inner',['../group__ops.html#ga654fec16a9746b390916697a2ab2546e',1,'mlx::core']]], - ['inner_5flooper_25',['inner_looper',['../structlooped__elem__to__loc.html#a42c76764640618d721c48ef6b4f59189',1,'looped_elem_to_loc']]], - ['inp_5fjump_5fc_26',['inp_jump_c',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a78d30e843d65d1829623afb0b607f0a5',1,'mlx::steel::ImplicitGemmConv2DParams']]], - ['inp_5fjump_5fh_27',['inp_jump_h',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a03685a4066cdb11ffb647408e2c5b122',1,'mlx::steel::ImplicitGemmConv2DParams']]], - ['inp_5fjump_5fw_28',['inp_jump_w',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#acf168c72f4a86b72b8f5f386f07c9d8c',1,'mlx::steel::ImplicitGemmConv2DParams']]], - ['inputs_29',['inputs',['../classmlx_1_1core_1_1array.html#a2913abcdf71826827c8457f529825fff',1,'mlx::core::array::inputs() const'],['../classmlx_1_1core_1_1array.html#acffb082177f9b78f0c52e406adff972f',1,'mlx::core::array::inputs()']]], - ['instantiate_5fdefault_5flimit_30',['instantiate_default_limit',['../backend_2metal_2kernels_2utils_8h.html#abedffa358e7ba7782cc78d6772064c7c',1,'utils.h']]], - ['instantiate_5ffloat_5flimit_31',['instantiate_float_limit',['../backend_2metal_2kernels_2utils_8h.html#a1e520e23f58ca645dea1ac20998d987a',1,'utils.h']]], - ['instantiate_5fkernel_32',['instantiate_kernel',['../defines_8h.html#a0cc4a821c1090d4183ff3a31da7e9f7b',1,'defines.h']]], - ['instantiate_5fmetal_5fmath_5ffuncs_33',['instantiate_metal_math_funcs',['../bf16__math_8h.html#a9e9f0fdd6e304522bc88acd22c576842',1,'bf16_math.h']]], - ['instantiate_5fmetal_5fsimd_5fcomm_5ffuncs_34',['instantiate_metal_simd_comm_funcs',['../bf16__math_8h.html#aecc11cb898846d01bfc9faa109fcf791',1,'bf16_math.h']]], - ['instantiate_5fmetal_5fsimd_5freduction_5ffuncs_35',['instantiate_metal_simd_reduction_funcs',['../bf16__math_8h.html#a51688bc24fc9292aaec5f54a58eaa2d0',1,'bf16_math.h']]], - ['int16_36',['int16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daace80d5ec65b1d2a2f1049eadc100db23',1,'mlx::core::Dtype::int16'],['../namespacemlx_1_1core.html#a71ebba4ad1afa730962f0692c4f42f07',1,'mlx::core::int16']]], - ['int32_37',['int32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa0241adbbd83925f051b694d40f02747f',1,'mlx::core::Dtype::int32'],['../namespacemlx_1_1core.html#a5d6373aad1444edc9de1eb07bfe5cad3',1,'mlx::core::int32']]], - ['int64_38',['int64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daaff9b3f96d37353c528517bc3656a00a8',1,'mlx::core::Dtype::int64'],['../namespacemlx_1_1core.html#a9019bdc191054ada0a502c7c34cef5b8',1,'mlx::core::int64']]], - ['int8_39',['int8',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa27c006cc56b1ba88f960cf8b5144fcac',1,'mlx::core::Dtype::int8'],['../namespacemlx_1_1core.html#a892e934e146dd938d144cee8813ca672',1,'mlx::core::int8']]], - ['integer_40',['integer',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da157db7df530023575515d366c9b672e8',1,'mlx::core::Dtype::integer'],['../namespacemlx_1_1core.html#a074d000f25ae3ed77450e6a5fec4b38b',1,'mlx::core::integer']]], - ['intorfloat_41',['IntOrFloat',['../unionmlx_1_1core_1_1detail_1_1_int_or_float.html',1,'mlx::core::detail']]], - ['intracing_42',['InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html',1,'mlx::core::detail::InTracing'],['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#a7a77f19391498afa5dcea3509d241a70',1,'mlx::core::detail::InTracing::InTracing()']]], - ['inv_43',['inv',['../struct_read_writer.html#a773fa8524515bdc2ff8b0e2060741813',1,'ReadWriter::inv'],['../namespacemlx_1_1core_1_1linalg.html#ad966a0b6bff176c9f933534ed62389a2',1,'mlx::core::linalg::inv()']]], - ['inv_5f_44',['inv_',['../backend_2metal_2kernels_2fft_8h.html#a23a773ae455da5d0b9b5508ee2e7694b',1,'fft.h']]], - ['inv_5falpha_45',['INV_ALPHA',['../struct_m_l_x_scaled_dot_product_attention_params.html#a7461e0e17cdc7d3fed80bb00d58d8644',1,'MLXScaledDotProductAttentionParams']]], - ['inverse_46',['Inverse',['../classmlx_1_1core_1_1_inverse.html',1,'mlx::core::Inverse'],['../classmlx_1_1core_1_1_inverse.html#a71467681e523abb725724490bfeb76ad',1,'mlx::core::Inverse::Inverse()']]], - ['io_2eh_47',['io.h',['../io_8h.html',1,'']]], - ['iofs_48',['iofs',['../classpocketfft_1_1detail_1_1multi__iter.html#ad33360d4a8ab8e6d72efadc6f9cb5bfa',1,'pocketfft::detail::multi_iter::iofs(size_t i) const'],['../classpocketfft_1_1detail_1_1multi__iter.html#a97462d97bdca6419d8d2f37c2031fe83',1,'pocketfft::detail::multi_iter::iofs(size_t j, size_t i) const']]], - ['irfft_49',['irfft',['../namespacemlx_1_1core_1_1fft.html#aafa721d0492e9f74913a6e86b4896ad8',1,'mlx::core::fft::irfft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#afbd0035a3cf91f428838de1fcf01a3a3',1,'mlx::core::fft::irfft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['irfft2_50',['irfft2',['../namespacemlx_1_1core_1_1fft.html#a35754b00e98d7ef37ce8230c8887a933',1,'mlx::core::fft::irfft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#af7c7bbbbce26c2775a77473502a8de02',1,'mlx::core::fft::irfft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['irfftn_51',['irfftn',['../namespacemlx_1_1core_1_1fft.html#a33f2973ea1b621e67064e46136d2960f',1,'mlx::core::fft::irfftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a1c9ad11121c5879d5c04bbde2ee238c3',1,'mlx::core::fft::irfftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#aaf5a7ef93b3426b94c2363a23a5a5b36',1,'mlx::core::fft::irfftn(const array &a, StreamOrDevice s={})']]], - ['is_52',['iS',['../struct_m_l_x_conv_params.html#a72e1c3b4da0f70622cf18036bbf97fe6',1,'MLXConvParams']]], - ['is_5farray_5fv_53',['is_array_v',['../namespacemlx_1_1core.html#a01b0d64a75dfa2e95d6c7b5c53d708af',1,'mlx::core']]], - ['is_5farrays_5fv_54',['is_arrays_v',['../namespacemlx_1_1core.html#a94c1057929b390e5613304afa16dfbda',1,'mlx::core']]], - ['is_5favailable_55',['is_available',['../classmlx_1_1core_1_1array.html#aebed1f37c19197be76105161102a8a40',1,'mlx::core::array::is_available()'],['../namespacemlx_1_1core_1_1metal.html#a0cdf2c08c7bc0927a86070adc206987f',1,'mlx::core::metal::is_available()'],['../namespacemlx_1_1core_1_1distributed.html#a95655473cd0032c06e5fe3fca85aeef3',1,'mlx::core::distributed::is_available()']]], - ['is_5fdonatable_56',['is_donatable',['../classmlx_1_1core_1_1array.html#a4677a404b5d191af20b52649225de087',1,'mlx::core::array::is_donatable()'],['../namespacemlx_1_1core.html#af650e831ce21759da1ac103037d08d84',1,'mlx::core::is_donatable()']]], - ['is_5fequivalent_57',['is_equivalent',['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#af08b1294f3f93505a96fdfa85b1edd62',1,'mlx::core::fast::ScaledDotProductAttention::is_equivalent()'],['../classmlx_1_1core_1_1_primitive.html#a6140a502af4c2bbbc776ab26e9afebcd',1,'mlx::core::Primitive::is_equivalent()'],['../classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67',1,'mlx::core::Abs::is_equivalent()'],['../classmlx_1_1core_1_1_add.html#aba0a35410c3aac53d0f7a0c283d9ee3f',1,'mlx::core::Add::is_equivalent()'],['../classmlx_1_1core_1_1_add_m_m.html#a6e37c6882dba995a63fb6d8dfb01754f',1,'mlx::core::AddMM::is_equivalent()'],['../classmlx_1_1core_1_1_arange.html#a7b6a45cf9c4b109d4e0373f3fe576c35',1,'mlx::core::Arange::is_equivalent()'],['../classmlx_1_1core_1_1_arc_cos.html#a39557461e3235801886675a9b7d25bf5',1,'mlx::core::ArcCos::is_equivalent()'],['../classmlx_1_1core_1_1_arc_cosh.html#a6928e827b9ac2e86e7d5b02b78150eee',1,'mlx::core::ArcCosh::is_equivalent()'],['../classmlx_1_1core_1_1_arc_sin.html#a13b5e39eeccaf32d94b8eb85b3b753ab',1,'mlx::core::ArcSin::is_equivalent()'],['../classmlx_1_1core_1_1_arc_sinh.html#a63c7a765c7906242dc3371deec094f0f',1,'mlx::core::ArcSinh::is_equivalent()'],['../classmlx_1_1core_1_1_arc_tan.html#a0e5b5fc7218143ecd0a8666d9137c34c',1,'mlx::core::ArcTan::is_equivalent()'],['../classmlx_1_1core_1_1_arc_tan2.html#aeaee58cd803d3ebf0b76574a409682cc',1,'mlx::core::ArcTan2::is_equivalent()'],['../classmlx_1_1core_1_1_arc_tanh.html#ac8ecdd640043dab0461d49d7650679a2',1,'mlx::core::ArcTanh::is_equivalent()'],['../classmlx_1_1core_1_1_arg_partition.html#ad87509ce70b51fb75dfb9c3a05a5b31a',1,'mlx::core::ArgPartition::is_equivalent()'],['../classmlx_1_1core_1_1_arg_reduce.html#a03b81a670dcb1e39bf7279e4d4583b97',1,'mlx::core::ArgReduce::is_equivalent()'],['../classmlx_1_1core_1_1_arg_sort.html#a048cd09c557d29d1111726f97010a845',1,'mlx::core::ArgSort::is_equivalent()'],['../classmlx_1_1core_1_1_as_type.html#a8e6c8b2428ab15c4fb43f2e3a8fb38af',1,'mlx::core::AsType::is_equivalent()'],['../classmlx_1_1core_1_1_as_strided.html#a1738c6aa0a3a3eb68530f0d5b436e094',1,'mlx::core::AsStrided::is_equivalent()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a8cd6b916b4838a6c329cf4df8530c3b8',1,'mlx::core::BitwiseBinary::is_equivalent()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#aef1c303955f9b8f445296372cf181160',1,'mlx::core::BlockMaskedMM::is_equivalent()'],['../classmlx_1_1core_1_1_gather_m_m.html#a163f17f6ce2c002f22e81b302777342b',1,'mlx::core::GatherMM::is_equivalent()'],['../classmlx_1_1core_1_1_broadcast.html#a0e27692b0090ec451954649a36042616',1,'mlx::core::Broadcast::is_equivalent()'],['../classmlx_1_1core_1_1_ceil.html#aacd90acb56eb0649c1cef807aa21df52',1,'mlx::core::Ceil::is_equivalent()'],['../classmlx_1_1core_1_1_compiled.html#a63e5016458887813b4a59dee5a0a3f10',1,'mlx::core::Compiled::is_equivalent()'],['../classmlx_1_1core_1_1_concatenate.html#aaf8a72a0c30114460caf519580cc35d2',1,'mlx::core::Concatenate::is_equivalent()'],['../classmlx_1_1core_1_1_conjugate.html#af42f00a790c6bc5572bd8fe9e5b36c5e',1,'mlx::core::Conjugate::is_equivalent()'],['../classmlx_1_1core_1_1_convolution.html#afb87708a5e3aab2e9e663daa9d8863de',1,'mlx::core::Convolution::is_equivalent()'],['../classmlx_1_1core_1_1_copy.html#afcfa39465015f638e294aa954ea0f3da',1,'mlx::core::Copy::is_equivalent()'],['../classmlx_1_1core_1_1_cos.html#ab611ca38c987915659f7ffcce0370417',1,'mlx::core::Cos::is_equivalent()'],['../classmlx_1_1core_1_1_cosh.html#ae0bacccaf501f5349db0c13cca776ff9',1,'mlx::core::Cosh::is_equivalent()'],['../classmlx_1_1core_1_1_divide.html#a3dda091f05c4164c29bb8129e9712650',1,'mlx::core::Divide::is_equivalent()'],['../classmlx_1_1core_1_1_div_mod.html#af5fcf8ec8515d46844cbeeab6dafb38a',1,'mlx::core::DivMod::is_equivalent()'],['../classmlx_1_1core_1_1_select.html#afc3c333fac7f902c98839921ef2874c8',1,'mlx::core::Select::is_equivalent()'],['../classmlx_1_1core_1_1_remainder.html#a802039faaa2ed7b763ec3d7debcce814',1,'mlx::core::Remainder::is_equivalent()'],['../classmlx_1_1core_1_1_equal.html#a58c1c5003e43f47dc0788c1851deaa02',1,'mlx::core::Equal::is_equivalent()'],['../classmlx_1_1core_1_1_erf.html#abe99dfbc2954c3a7d5dec56ab165ee82',1,'mlx::core::Erf::is_equivalent()'],['../classmlx_1_1core_1_1_erf_inv.html#aaac9e3b454ba564f9c6e804ab6562832',1,'mlx::core::ErfInv::is_equivalent()'],['../classmlx_1_1core_1_1_exp.html#ac6e44bffe7a643ab4ca51e74c7328357',1,'mlx::core::Exp::is_equivalent()'],['../classmlx_1_1core_1_1_f_f_t.html#a0ede3bc8b6d77d560c0a750b68fddc06',1,'mlx::core::FFT::is_equivalent()'],['../classmlx_1_1core_1_1_floor.html#a24b64feb026c4fcd02fc481cffdb1c94',1,'mlx::core::Floor::is_equivalent()'],['../classmlx_1_1core_1_1_full.html#afafcbcae1e28597fe8f7fde289105792',1,'mlx::core::Full::is_equivalent()'],['../classmlx_1_1core_1_1_gather.html#a23ff1406dbf0c770e75ad47440b467aa',1,'mlx::core::Gather::is_equivalent()'],['../classmlx_1_1core_1_1_greater.html#a6877a6888614a618dc64296763ccabb1',1,'mlx::core::Greater::is_equivalent()'],['../classmlx_1_1core_1_1_greater_equal.html#a3daef8596b963026b602019bc56fc5fc',1,'mlx::core::GreaterEqual::is_equivalent()'],['../classmlx_1_1core_1_1_hadamard.html#a8a528d8d69a7343bdfd704a3e74230b8',1,'mlx::core::Hadamard::is_equivalent()'],['../classmlx_1_1core_1_1_less.html#a7d6ed6353a0dcefebd008026dbd3cd63',1,'mlx::core::Less::is_equivalent()'],['../classmlx_1_1core_1_1_less_equal.html#a76ee1438cf4bd109eae4e0b3472b26af',1,'mlx::core::LessEqual::is_equivalent()'],['../classmlx_1_1core_1_1_log.html#a2fc58ea4ca744db493b947d1136d05f8',1,'mlx::core::Log::is_equivalent()'],['../classmlx_1_1core_1_1_logical_not.html#aba53675da351cd9b71a73d475b4bbe99',1,'mlx::core::LogicalNot::is_equivalent()'],['../classmlx_1_1core_1_1_logical_and.html#a9572c35f72e0db2f7f86bbf42438a6be',1,'mlx::core::LogicalAnd::is_equivalent()'],['../classmlx_1_1core_1_1_logical_or.html#a9c8b10a5cf5c69fdc2362390197e4e71',1,'mlx::core::LogicalOr::is_equivalent()'],['../classmlx_1_1core_1_1_log_add_exp.html#a3cf9a202c05aff39919d713d6e2b32e4',1,'mlx::core::LogAddExp::is_equivalent()'],['../classmlx_1_1core_1_1_matmul.html#aab372b59eae0840fc4f75ef5719a2630',1,'mlx::core::Matmul::is_equivalent()'],['../classmlx_1_1core_1_1_maximum.html#a21fe93fbd7799682f481260aee8bdb46',1,'mlx::core::Maximum::is_equivalent()'],['../classmlx_1_1core_1_1_minimum.html#a56c54ee3293cc2cd84462b9ec7ac36b4',1,'mlx::core::Minimum::is_equivalent()'],['../classmlx_1_1core_1_1_multiply.html#ae288159fa2d6d35087a85aca8eafa9b2',1,'mlx::core::Multiply::is_equivalent()'],['../classmlx_1_1core_1_1_negative.html#ac2a4d8159c548639d6289980c8975823',1,'mlx::core::Negative::is_equivalent()'],['../classmlx_1_1core_1_1_not_equal.html#ac12fd6b3e2f2e7e4e622b59badf2c73d',1,'mlx::core::NotEqual::is_equivalent()'],['../classmlx_1_1core_1_1_number_of_elements.html#ad6a32565ccc64499e368e15bba0b438f',1,'mlx::core::NumberOfElements::is_equivalent()'],['../classmlx_1_1core_1_1_pad.html#aad7c3bfecafe435d6a8e807de4c7ea9b',1,'mlx::core::Pad::is_equivalent()'],['../classmlx_1_1core_1_1_partition.html#aabdf6ef4f2159b2bfe93e0e87d4772f8',1,'mlx::core::Partition::is_equivalent()'],['../classmlx_1_1core_1_1_power.html#a76b4ec9d1ff07f06189e414480453d68',1,'mlx::core::Power::is_equivalent()'],['../classmlx_1_1core_1_1_quantized_matmul.html#af28b36e3f40ea41785387800326cc8e1',1,'mlx::core::QuantizedMatmul::is_equivalent()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a6a7da6bcf657fcdb157c45bf35fdec11',1,'mlx::core::GatherQMM::is_equivalent()'],['../classmlx_1_1core_1_1_random_bits.html#a72ec915debf5823e7c0463045b2894e6',1,'mlx::core::RandomBits::is_equivalent()'],['../classmlx_1_1core_1_1_reshape.html#abd07c53af476777a04307e0423784cf3',1,'mlx::core::Reshape::is_equivalent()'],['../classmlx_1_1core_1_1_reduce.html#abe8f3327d617d0dd7438f066497ae08e',1,'mlx::core::Reduce::is_equivalent()'],['../classmlx_1_1core_1_1_round.html#aeb3d8607bbba7345a3142d4cbd4e6927',1,'mlx::core::Round::is_equivalent()'],['../classmlx_1_1core_1_1_scan.html#a54445a4d677ca4fe2a58d08eb5223ac6',1,'mlx::core::Scan::is_equivalent()'],['../classmlx_1_1core_1_1_scatter.html#a0208172562abdc90472e6eb5f84c987f',1,'mlx::core::Scatter::is_equivalent()'],['../classmlx_1_1core_1_1_sigmoid.html#a04814ba1b0edf8299d5ca1bcb8749d8e',1,'mlx::core::Sigmoid::is_equivalent()'],['../classmlx_1_1core_1_1_sign.html#a8c0934acbcc4b146e5aacd35a8c445bb',1,'mlx::core::Sign::is_equivalent()'],['../classmlx_1_1core_1_1_sin.html#af00b0e5516f884996ce7a97e6c1e3e6a',1,'mlx::core::Sin::is_equivalent()'],['../classmlx_1_1core_1_1_sinh.html#adcb1878996fd4902cd550042dd6ad70d',1,'mlx::core::Sinh::is_equivalent()'],['../classmlx_1_1core_1_1_slice.html#a43202c3b8966ae1db9ab82072e4918b0',1,'mlx::core::Slice::is_equivalent()'],['../classmlx_1_1core_1_1_slice_update.html#a60f588acced42391e6e5615ae8d16119',1,'mlx::core::SliceUpdate::is_equivalent()'],['../classmlx_1_1core_1_1_softmax.html#a9215ed7bd36bc11276c58dfb9808d728',1,'mlx::core::Softmax::is_equivalent()'],['../classmlx_1_1core_1_1_sort.html#ae48f07cf641d54234fc4fb6529a33511',1,'mlx::core::Sort::is_equivalent()'],['../classmlx_1_1core_1_1_split.html#af25a0cc259573b9dce60d285eee18345',1,'mlx::core::Split::is_equivalent()'],['../classmlx_1_1core_1_1_square.html#a6abc881d44071019aa15481e5ea75ab2',1,'mlx::core::Square::is_equivalent()'],['../classmlx_1_1core_1_1_sqrt.html#ab871c2b8ab4a27a3f782a005d0e87c46',1,'mlx::core::Sqrt::is_equivalent()'],['../classmlx_1_1core_1_1_stop_gradient.html#a327539298b21d800d26482b94fce41b3',1,'mlx::core::StopGradient::is_equivalent()'],['../classmlx_1_1core_1_1_subtract.html#af1c05e1e3f703ba916d54f8ccbbd102b',1,'mlx::core::Subtract::is_equivalent()'],['../classmlx_1_1core_1_1_tan.html#afdf46288e7f60ea7f878688347dff7e4',1,'mlx::core::Tan::is_equivalent()'],['../classmlx_1_1core_1_1_tanh.html#a0692a1de2373b86eb394252ed4fecfda',1,'mlx::core::Tanh::is_equivalent()'],['../classmlx_1_1core_1_1_uniform.html#abb6048807a7c5b2e35a77e06a17f801b',1,'mlx::core::Uniform::is_equivalent()'],['../classmlx_1_1core_1_1_view.html#a7cb8403a96a47cb258caac4e3b850f64',1,'mlx::core::View::is_equivalent()'],['../classmlx_1_1core_1_1_transpose.html#a799ec3c3fa9f1b9e6177c755252a3eab',1,'mlx::core::Transpose::is_equivalent()']]], - ['is_5fmetal_5fatomic_58',['is_metal_atomic',['../atomic_8h.html#a91a8bdcae647947a83c6689d7f252d24',1,'atomic.h']]], - ['is_5fopen_59',['is_open',['../classmlx_1_1core_1_1io_1_1_reader.html#a780f504058bd9c80cb3d105046a9f985',1,'mlx::core::io::Reader::is_open()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a85aa36bdb0dbfb8c5b6cfd955b03417a',1,'mlx::core::io::Writer::is_open()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a653009adbcbce8248bc666df502fdbde',1,'mlx::core::io::ParallelFileReader::is_open()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#ad5d2ee671a81700cb1658c41309d6676',1,'mlx::core::io::FileWriter::is_open()']]], - ['is_5fpower_5fof_5f2_60',['is_power_of_2',['../namespacemlx_1_1core.html#adacbc4526e8964b267a8ec3eb1bc1a32',1,'mlx::core']]], - ['is_5fpower_5fof_5f2_5f_61',['is_power_of_2_',['../backend_2metal_2kernels_2fft_8h.html#abeb0f8d030ee27c89882b87eed13be2d',1,'fft.h']]], - ['is_5fready_62',['is_ready',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#ab41ecc5adb6187aa2682ca190fd920f3',1,'pocketfft::detail::threading::latch']]], - ['is_5fsame_5fshape_63',['is_same_shape',['../namespacemlx_1_1core.html#ad4b664de4a4abd305827b30879b9da33',1,'mlx::core']]], - ['is_5fscalar_64',['is_scalar',['../namespacemlx_1_1core.html#a985c60929757190e0b4ec51f57c767d0',1,'mlx::core']]], - ['is_5fstatic_5fcast_65',['is_static_cast',['../namespacemlx_1_1core.html#afd9e740e567f9d7c28e00113caf46d5f',1,'mlx::core']]], - ['is_5ftracer_66',['is_tracer',['../classmlx_1_1core_1_1array.html#af9acb115019b995354d366c4ac6b968c',1,'mlx::core::array']]], - ['isclose_67',['isclose',['../group__ops.html#ga51eac95c04400921c54716de14b52491',1,'mlx::core']]], - ['isfinite_68',['isfinite',['../group__ops.html#ga725ff0789f934b1fdd54ee29e47022ff',1,'mlx::core']]], - ['isinf_69',['isinf',['../group__ops.html#ga8fc238d5e5d1153e69da8b36015d9844',1,'mlx::core']]], - ['isnan_70',['isnan',['../namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb',1,'metal::isnan()'],['../group__ops.html#ga175592792471b0ffb45196dca4711ba6',1,'mlx::core::isnan(const array &a, StreamOrDevice s={})']]], - ['isneginf_71',['isneginf',['../group__ops.html#ga1940523da381ed7be50656a3bc465ff3',1,'mlx::core']]], - ['isposinf_72',['isposinf',['../group__ops.html#gad80f7c4a58c12b6cb30a8b9a73008993',1,'mlx::core']]], - ['issubdtype_73',['issubdtype',['../namespacemlx_1_1core.html#aca9e69b06f4212eba44bf0ce6711d5f7',1,'mlx::core::issubdtype(const Dtype &a, const Dtype &b)'],['../namespacemlx_1_1core.html#aca39f224c1d17bde35dfcb9088430704',1,'mlx::core::issubdtype(const Dtype::Category &a, const Dtype &b)'],['../namespacemlx_1_1core.html#ae9ee4a7c205df061c1caa7e62b7504e8',1,'mlx::core::issubdtype(const Dtype &a, const Dtype::Category &b)'],['../namespacemlx_1_1core.html#ab5b1a5a3d545a5de00c3117f76d71a1d',1,'mlx::core::issubdtype(const Dtype::Category &a, const Dtype::Category &b)']]], - ['item_74',['item',['../classmlx_1_1core_1_1array.html#a90c5afddc2fa3028c0f8099bd64c8a99',1,'mlx::core::array::item()'],['../classmlx_1_1core_1_1array.html#a8650a99a6b7549bc823b03ad92590ff7',1,'mlx::core::array::item() const']]], - ['itemsize_75',['itemsize',['../classmlx_1_1core_1_1array.html#af329d9432c92de87cbaa2de8454eefc0',1,'mlx::core::array']]], - ['iterator_5fcategory_76',['iterator_category',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a2cbf481e39164245668b3be6cbcc614d',1,'mlx::core::array::ArrayIterator']]] -]; diff --git a/docs/build/html/search/all_a.js b/docs/build/html/search/all_a.js deleted file mode 100644 index 66b9141b..00000000 --- a/docs/build/html/search/all_a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['jump_5fa_0',['jump_a',['../structmlx_1_1steel_1_1_block_m_m_a.html#ad8b58bbedaa0ed06bc2a65a6a100eea2',1,'mlx::steel::BlockMMA']]], - ['jump_5fb_1',['jump_b',['../structmlx_1_1steel_1_1_block_m_m_a.html#a33bcd7c2ccd83fd1b16c3aa64f9be4ec',1,'mlx::steel::BlockMMA']]], - ['jump_5fparams_2',['jump_params',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a21b9ee9168dad4af84a611f861519e77',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::jump_params'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#aa5611e9a84bebaee966d2b339c214ff5',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::jump_params']]], - ['jvp_3',['jvp',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#aeaf6f2b5955e7417cd1e36db42c45a80',1,'mlx::core::distributed::AllReduce::jvp()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a96f08a4ea8453d0b4b737c7b07972913',1,'mlx::core::distributed::AllGather::jvp()'],['../classmlx_1_1core_1_1fast_1_1_custom.html#ac77b28702654df8e7d882a49357a9584',1,'mlx::core::fast::Custom::jvp()'],['../classmlx_1_1core_1_1_primitive.html#a9fecf38f53da08ba1947543c2b3158c2',1,'mlx::core::Primitive::jvp()'],['../classmlx_1_1core_1_1_abs.html#a6c1e6eeaf4f5e63898c3487106e88e11',1,'mlx::core::Abs::jvp()'],['../classmlx_1_1core_1_1_add.html#a77230069f76fe60a2fe1007822a277b7',1,'mlx::core::Add::jvp()'],['../classmlx_1_1core_1_1_arc_cos.html#a240079c616f1a1f127aa783308096fe9',1,'mlx::core::ArcCos::jvp()'],['../classmlx_1_1core_1_1_arc_cosh.html#a80fcb790649219c30260af903b76a1d7',1,'mlx::core::ArcCosh::jvp()'],['../classmlx_1_1core_1_1_arc_sin.html#a37affc8c5e84e5c54e73a71fc0821ea4',1,'mlx::core::ArcSin::jvp()'],['../classmlx_1_1core_1_1_arc_sinh.html#a79ebf2f6dfecbfbb93170fdd1ca87bf4',1,'mlx::core::ArcSinh::jvp()'],['../classmlx_1_1core_1_1_arc_tan.html#a0f5590a2297fc133b4b0a15f9dd0c760',1,'mlx::core::ArcTan::jvp()'],['../classmlx_1_1core_1_1_arc_tan2.html#a01675433f2a4fa466b2f48272dbca738',1,'mlx::core::ArcTan2::jvp()'],['../classmlx_1_1core_1_1_arc_tanh.html#a534ebdbfe77241884630d25021274c4a',1,'mlx::core::ArcTanh::jvp()'],['../classmlx_1_1core_1_1_as_type.html#a213400967150c57da35795e1c9f65ca0',1,'mlx::core::AsType::jvp()'],['../classmlx_1_1core_1_1_as_strided.html#a8ff0a398c47b42e08bc1122e07a02b53',1,'mlx::core::AsStrided::jvp()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a1dae6ce5dc0498d20530403fe5c5531d',1,'mlx::core::BitwiseBinary::jvp()'],['../classmlx_1_1core_1_1_broadcast.html#ae2fc3851a117079244708864be770ece',1,'mlx::core::Broadcast::jvp()'],['../classmlx_1_1core_1_1_ceil.html#a7ad74b27d9f26c886c2af516b845f066',1,'mlx::core::Ceil::jvp()'],['../classmlx_1_1core_1_1_compiled.html#aa385fe28626856ca5f57161b47a3c205',1,'mlx::core::Compiled::jvp()'],['../classmlx_1_1core_1_1_concatenate.html#a9f9e7a9dc3a00e02b84c94e1868baff1',1,'mlx::core::Concatenate::jvp()'],['../classmlx_1_1core_1_1_copy.html#a5acf02aa360cbefd86749fe9877b29cc',1,'mlx::core::Copy::jvp()'],['../classmlx_1_1core_1_1_cos.html#a99dd0b7e4aa2c838b77736f1fd539ee1',1,'mlx::core::Cos::jvp()'],['../classmlx_1_1core_1_1_cosh.html#a79facb0882443533f36a0a18407f5863',1,'mlx::core::Cosh::jvp()'],['../classmlx_1_1core_1_1_custom_transforms.html#aa9f695100170d5cae999b3da138ce720',1,'mlx::core::CustomTransforms::jvp()'],['../classmlx_1_1core_1_1_divide.html#ae1f408c447b17b3c84fe7f951d95559c',1,'mlx::core::Divide::jvp()'],['../classmlx_1_1core_1_1_div_mod.html#a1267401f25f25847888dd0a00b3fe3b9',1,'mlx::core::DivMod::jvp()'],['../classmlx_1_1core_1_1_select.html#a172df6812c2ea3e9d3c3fc5d527548d6',1,'mlx::core::Select::jvp()'],['../classmlx_1_1core_1_1_remainder.html#a972002173fc00ee86029d12bf1a9ba79',1,'mlx::core::Remainder::jvp()'],['../classmlx_1_1core_1_1_equal.html#a659d484589d7cd96d038922a1a98730f',1,'mlx::core::Equal::jvp()'],['../classmlx_1_1core_1_1_erf.html#ac733d605d80277d613954794eb8c46fe',1,'mlx::core::Erf::jvp()'],['../classmlx_1_1core_1_1_erf_inv.html#aa52710297ab6f7cd6826418c303e64be',1,'mlx::core::ErfInv::jvp()'],['../classmlx_1_1core_1_1_exp.html#aef6721832fcc283b082e35a7d436fa59',1,'mlx::core::Exp::jvp()'],['../classmlx_1_1core_1_1_expm1.html#ad463730632a00945d3a8addfdaec67b1',1,'mlx::core::Expm1::jvp()'],['../classmlx_1_1core_1_1_f_f_t.html#a34578814b6576f7b7b447541984ecba6',1,'mlx::core::FFT::jvp()'],['../classmlx_1_1core_1_1_floor.html#aa47bc360ec563b6e7d93e8b50626d8af',1,'mlx::core::Floor::jvp()'],['../classmlx_1_1core_1_1_full.html#a281a865d0664596ac8d05ea8e7f26407',1,'mlx::core::Full::jvp()'],['../classmlx_1_1core_1_1_gather.html#ac54ef8fac92ab190f1793f3dd95b9e8d',1,'mlx::core::Gather::jvp()'],['../classmlx_1_1core_1_1_greater.html#aa47a9f80f45daf6a405e34f6dc7c99c1',1,'mlx::core::Greater::jvp()'],['../classmlx_1_1core_1_1_greater_equal.html#ac7346080aaaa01d52896127f383f9d20',1,'mlx::core::GreaterEqual::jvp()'],['../classmlx_1_1core_1_1_hadamard.html#a22b9d55ae3ba5eef63505124696e712a',1,'mlx::core::Hadamard::jvp()'],['../classmlx_1_1core_1_1_less.html#af1493d566f6d940b8f674aac17f5dfce',1,'mlx::core::Less::jvp()'],['../classmlx_1_1core_1_1_less_equal.html#addfe62d3557d216f8307bdf1cbff6a8f',1,'mlx::core::LessEqual::jvp()'],['../classmlx_1_1core_1_1_log.html#ac646d4155322c34f58183d97301e3832',1,'mlx::core::Log::jvp()'],['../classmlx_1_1core_1_1_log1p.html#a537e44c7c993daf48698082e75e71ba2',1,'mlx::core::Log1p::jvp()'],['../classmlx_1_1core_1_1_logical_not.html#a4838c483ced707cfda3d6cd24bf4667c',1,'mlx::core::LogicalNot::jvp()'],['../classmlx_1_1core_1_1_logical_and.html#a78d3be71da224ea19158cf9e8c4cf434',1,'mlx::core::LogicalAnd::jvp()'],['../classmlx_1_1core_1_1_logical_or.html#a292de6001c551214c8152a7a5b0e6bd4',1,'mlx::core::LogicalOr::jvp()'],['../classmlx_1_1core_1_1_log_add_exp.html#aea2d1d58794e86f3488219ed3fa14329',1,'mlx::core::LogAddExp::jvp()'],['../classmlx_1_1core_1_1_maximum.html#a25ac5d5b453e571bf7240aa8de103c39',1,'mlx::core::Maximum::jvp()'],['../classmlx_1_1core_1_1_minimum.html#a10acf4fef35eed7ca55d131b5ae2d038',1,'mlx::core::Minimum::jvp()'],['../classmlx_1_1core_1_1_multiply.html#a79f7f0bb70de2e3e41a66c96285325b4',1,'mlx::core::Multiply::jvp()'],['../classmlx_1_1core_1_1_negative.html#a7d918f9b26b8fb7b047a27d85ebab979',1,'mlx::core::Negative::jvp()'],['../classmlx_1_1core_1_1_not_equal.html#ae2d3e5776efaefed7f4c73f679b02f17',1,'mlx::core::NotEqual::jvp()'],['../classmlx_1_1core_1_1_pad.html#a6e43a42032ef11497e8d91290574ec72',1,'mlx::core::Pad::jvp()'],['../classmlx_1_1core_1_1_partition.html#a310f569a163958940ed02cf52079746a',1,'mlx::core::Partition::jvp()'],['../classmlx_1_1core_1_1_power.html#a3e78b06453faa4fd149fd19c0e7a300a',1,'mlx::core::Power::jvp()'],['../classmlx_1_1core_1_1_quantized_matmul.html#ae51fdd0b81dd26c6687577567c126e23',1,'mlx::core::QuantizedMatmul::jvp()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#adc579058752b927c71b45a962d4869e0',1,'mlx::core::GatherQMM::jvp()'],['../classmlx_1_1core_1_1_reshape.html#ab8fc28748991017cc3e29f93c91087a5',1,'mlx::core::Reshape::jvp()'],['../classmlx_1_1core_1_1_round.html#a032075a7d0dde2dba6189636d216c5e7',1,'mlx::core::Round::jvp()'],['../classmlx_1_1core_1_1_scan.html#a6f9c862f4fbc7eaf430a361cdd8933ee',1,'mlx::core::Scan::jvp()'],['../classmlx_1_1core_1_1_scatter.html#a270fa8ccf36ce4bbbc23875139223934',1,'mlx::core::Scatter::jvp()'],['../classmlx_1_1core_1_1_sigmoid.html#a62ca1c440896e32958c77af3340847db',1,'mlx::core::Sigmoid::jvp()'],['../classmlx_1_1core_1_1_sign.html#a957992c7aa0e86cf06f861a94372086b',1,'mlx::core::Sign::jvp()'],['../classmlx_1_1core_1_1_sin.html#af662d10180967399820496477ff050de',1,'mlx::core::Sin::jvp()'],['../classmlx_1_1core_1_1_sinh.html#a86e2b37823daf20a4c74c9f273215f9c',1,'mlx::core::Sinh::jvp()'],['../classmlx_1_1core_1_1_slice.html#a8288324045ab21d6c97b1695ce86ef36',1,'mlx::core::Slice::jvp()'],['../classmlx_1_1core_1_1_slice_update.html#a0ce3248cc61dae2b51d7aa8ee4197611',1,'mlx::core::SliceUpdate::jvp()'],['../classmlx_1_1core_1_1_softmax.html#af96172634a24332b0fc8d7ca7e73f19f',1,'mlx::core::Softmax::jvp()'],['../classmlx_1_1core_1_1_sort.html#af113ac983473433eec851c8fddfcba62',1,'mlx::core::Sort::jvp()'],['../classmlx_1_1core_1_1_split.html#ab8a8d30fd1ebf0891f41f3c32eabe282',1,'mlx::core::Split::jvp()'],['../classmlx_1_1core_1_1_square.html#a822629b93b91e2bef29959431d95e22d',1,'mlx::core::Square::jvp()'],['../classmlx_1_1core_1_1_sqrt.html#a78544b1fb5da0c14bce3051ffd177818',1,'mlx::core::Sqrt::jvp()'],['../classmlx_1_1core_1_1_subtract.html#a8100081a99df5166f02efc76d6641220',1,'mlx::core::Subtract::jvp()'],['../classmlx_1_1core_1_1_tan.html#a5d7c76122d63619df17b0e45450bc8f2',1,'mlx::core::Tan::jvp()'],['../classmlx_1_1core_1_1_tanh.html#ae0fbb5370dc1c3a4fb0dd02ca28a832a',1,'mlx::core::Tanh::jvp()'],['../classmlx_1_1core_1_1_transpose.html#ac1a523e25ab7fd9df4da363a922afbe1',1,'mlx::core::Transpose::jvp()'],['../namespacemlx_1_1core.html#a179a632200366c223d6ab56d3e032592',1,'mlx::core::jvp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)'],['../namespacemlx_1_1core.html#af38e7582db29519bb39326f6fa531d20',1,'mlx::core::jvp(const std::function< array(const array &)> &fun, const array &primal, const array &tangent)']]] -]; diff --git a/docs/build/html/search/all_b.js b/docs/build/html/search/all_b.js deleted file mode 100644 index 2d991d45..00000000 --- a/docs/build/html/search/all_b.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['k_0',['K',['../struct_m_l_x_fast_attention_params.html#ada454f5ad22ec36a22d0ff596751af23',1,'MLXFastAttentionParams::K'],['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#ae1b0386e4cd1a7018f4b654c4e9493ba',1,'mlx::steel::ImplicitGemmConv2DParams::K'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#aa0851af4da8df820bdad9589ff517cff',1,'mlx::steel::GEMMParams::K'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a3733f9031e82e761ec44e72ed5c6d0e7',1,'mlx::steel::GEMMSpiltKParams::K']]], - ['kdil_1',['kdil',['../struct_m_l_x_conv_params.html#a7611db8f1621c7e09fc685ed44073b14',1,'MLXConvParams']]], - ['kernelmergesort_2',['KernelMergeSort',['../struct_kernel_merge_sort.html',1,'']]], - ['kernelmultiblockmergesort_3',['KernelMultiBlockMergeSort',['../struct_kernel_multi_block_merge_sort.html',1,'']]], - ['kernels_2eh_4',['kernels.h',['../kernels_8h.html',1,'']]], - ['key_5',['key',['../namespacemlx_1_1core_1_1random.html#acf04b6f42de11383e86dcc7f98c67bd8',1,'mlx::core::random']]], - ['keysequence_6',['KeySequence',['../classmlx_1_1core_1_1random_1_1_key_sequence.html',1,'mlx::core::random::KeySequence'],['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a196eb6ce5ba1eb37cc8c67d6d1332bfe',1,'mlx::core::random::KeySequence::KeySequence()']]], - ['kind_7',['Kind',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715',1,'mlx::core::Dtype']]], - ['kindof_8',['kindof',['../namespacemlx_1_1core.html#ad527b86818823db040195785efd7d724',1,'mlx::core']]], - ['kv_5ftiles_9',['KV_TILES',['../struct_m_l_x_scaled_dot_product_attention_params.html#a58ef2765fd681e6b35b2ba72030610e0',1,'MLXScaledDotProductAttentionParams']]] -]; diff --git a/docs/build/html/search/all_c.js b/docs/build/html/search/all_c.js deleted file mode 100644 index 64264c01..00000000 --- a/docs/build/html/search/all_c.js +++ /dev/null @@ -1,88 +0,0 @@ -var searchData= -[ - ['label_0',['label',['../classmlx_1_1core_1_1io_1_1_reader.html#a8c244daf52fd5ebb9a2c7e5f4ae793cd',1,'mlx::core::io::Reader::label()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a828125a9adcb7e90c8bcaba0fe47f854',1,'mlx::core::io::Writer::label()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a361d3b34bc493825c893cce256da46c8',1,'mlx::core::io::ParallelFileReader::label()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a5093dce80ff0c51ea036a87e3e5fb456',1,'mlx::core::io::FileWriter::label()']]], - ['lapack_5fhelper_2eh_1',['lapack_helper.h',['../lapack__helper_8h.html',1,'']]], - ['laplace_2',['laplace',['../namespacemlx_1_1core_1_1random.html#ad52c7cb7709542c5a464df12bfc6b0b7',1,'mlx::core::random::laplace(const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a0d0c393dd53d6fdd02e46844b3cf45d1',1,'mlx::core::random::laplace(const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a0f73eb7d337529708937eef0080c0998',1,'mlx::core::random::laplace(const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a96b6f40efbee7045a35218296ba12a37',1,'mlx::core::random::laplace(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['largest_5fprime_5ffactor_3',['largest_prime_factor',['../structpocketfft_1_1detail_1_1util.html#a0e9b92280f25063d1ebef942dd0d233c',1,'pocketfft::detail::util']]], - ['latch_4',['latch',['../classpocketfft_1_1detail_1_1threading_1_1latch.html',1,'pocketfft::detail::threading::latch'],['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a9260c871bb927525f7f53caa23a19c15',1,'pocketfft::detail::threading::latch::latch()']]], - ['layer_5fnorm_5',['layer_norm',['../namespacemlx_1_1core_1_1fast.html#a01bd533ebd0e2415c4ee30032d51d7bf',1,'mlx::core::fast']]], - ['layernorm_6',['LayerNorm',['../classmlx_1_1core_1_1fast_1_1_layer_norm.html',1,'mlx::core::fast::LayerNorm'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a5ac38d50e62850589bf51ee313303153',1,'mlx::core::fast::LayerNorm::LayerNorm()']]], - ['layernormvjp_7',['LayerNormVJP',['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html',1,'mlx::core::fast::LayerNormVJP'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a41bc1391dbc0cf63b2c85b67956c08d9',1,'mlx::core::fast::LayerNormVJP::LayerNormVJP()']]], - ['lda_8',['lda',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#afec42b532ffcad32bbffd494526bef03',1,'mlx::steel::GEMMParams::lda'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a6fac3c4a7c35af7b46b53f9662f882c6',1,'mlx::steel::GEMMSpiltKParams::lda']]], - ['ldb_9',['ldb',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a6032a081ab707c14b5f28069faa7cf62',1,'mlx::steel::GEMMParams::ldb'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a7f6f511854ccc98fa573bb560776ebed',1,'mlx::steel::GEMMSpiltKParams::ldb']]], - ['ldc_10',['ldc',['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a888730efa5c5c8ae7ed771c3084d583c',1,'mlx::steel::GEMMSpiltKParams::ldc'],['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html#a801e2245a36632160975a784b762a4e6',1,'mlx::steel::GEMMAddMMParams::ldc']]], - ['ldd_11',['ldd',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a6e8ae14e3f97c499ad9c39358a1855ab',1,'mlx::steel::GEMMParams']]], - ['ldexp_12',['ldexp',['../namespacemetal.html#a3deed001738b6f03accd3c2195586c2b',1,'metal::ldexp()'],['../namespacemetal_1_1fast.html#adb045765987e76c7ad4b511fab0c867e',1,'metal::fast::ldexp()'],['../namespacemetal_1_1precise.html#aa0462827a08a9f475fdaeb104c98b6ab',1,'metal::precise::ldexp()']]], - ['ldk_13',['ldk',['../struct_m_l_x_fast_attention_params.html#a1f8c89bd55d89ad7b9fe27c60e3cb8d5',1,'MLXFastAttentionParams']]], - ['ldo_14',['ldo',['../struct_m_l_x_fast_attention_params.html#a9e73dc1971b5ab913bd85a7afa7cf46c',1,'MLXFastAttentionParams']]], - ['ldq_15',['ldq',['../struct_m_l_x_fast_attention_params.html#af2dadba2a28f5db2ca52472d00937e58',1,'MLXFastAttentionParams']]], - ['lds_16',['lds',['../struct_m_l_x_fast_attention_params.html#a274eeb8591c02511014dce50c4240c8a',1,'MLXFastAttentionParams']]], - ['ldv_17',['ldv',['../struct_m_l_x_fast_attention_params.html#aebada0bf0789e8706dce564752208e8b',1,'MLXFastAttentionParams']]], - ['left_5fshift_18',['left_shift',['../group__ops.html#ga89682bf78491761e062d4ee7bef0c829',1,'mlx::core']]], - ['leftshift_19',['LeftShift',['../struct_left_shift.html',1,'LeftShift'],['../structmlx_1_1core_1_1detail_1_1_left_shift.html',1,'mlx::core::detail::LeftShift'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23da986b39e75cbe29fcda1d7bf7942a65a0',1,'mlx::core::BitwiseBinary::LeftShift']]], - ['length_20',['length',['../classpocketfft_1_1detail_1_1pocketfft__c.html#a1fd1a2f9b3ae5ee9f00b9ca6946eb16d',1,'pocketfft::detail::pocketfft_c::length()'],['../classpocketfft_1_1detail_1_1pocketfft__r.html#a83222fdbf81a7c6d560e0841cdfca8c6',1,'pocketfft::detail::pocketfft_r::length()'],['../classpocketfft_1_1detail_1_1_t__dct1.html#ac7a04c91d507bd8f173d2266bb5bb168',1,'pocketfft::detail::T_dct1::length()'],['../classpocketfft_1_1detail_1_1_t__dst1.html#ab205d901650e38b592ff860b7978fa3e',1,'pocketfft::detail::T_dst1::length()'],['../classpocketfft_1_1detail_1_1_t__dcst23.html#a6dab012b487ff98d11b8a9418653a478',1,'pocketfft::detail::T_dcst23::length()'],['../classpocketfft_1_1detail_1_1_t__dcst4.html#af25bf28a7ccd4690ca9934e3aa79c12f',1,'pocketfft::detail::T_dcst4::length()']]], - ['length_5fin_21',['length_in',['../classpocketfft_1_1detail_1_1multi__iter.html#a5318b79d934cddf109dff7bf96a330c8',1,'pocketfft::detail::multi_iter']]], - ['length_5fout_22',['length_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a93cd515d07cd479138a35da9df66bd41',1,'pocketfft::detail::multi_iter']]], - ['less_23',['Less',['../struct_less.html',1,'Less'],['../structmlx_1_1core_1_1detail_1_1_less.html',1,'mlx::core::detail::Less'],['../classmlx_1_1core_1_1_less.html',1,'mlx::core::Less'],['../classmlx_1_1core_1_1_less.html#aa55c5cfbab0ac30e1b72c080fe9525d7',1,'mlx::core::Less::Less()']]], - ['less_24',['less',['../group__ops.html#ga9142b8d717699a8abfa2a7398891ff8a',1,'mlx::core']]], - ['less_5fequal_25',['less_equal',['../group__ops.html#ga0d49e0c7011d0573c369c13c8f045a09',1,'mlx::core']]], - ['lessequal_26',['LessEqual',['../struct_less_equal.html',1,'LessEqual'],['../structmlx_1_1core_1_1detail_1_1_less_equal.html',1,'mlx::core::detail::LessEqual'],['../classmlx_1_1core_1_1_less_equal.html',1,'mlx::core::LessEqual'],['../classmlx_1_1core_1_1_less_equal.html#a52492a43224d47e7851beec646c27bbc',1,'mlx::core::LessEqual::LessEqual()']]], - ['lessthan_27',['LessThan',['../struct_less_than.html',1,'']]], - ['lib_5fname_28',['lib_name',['../classmlx_1_1core_1_1_compiled.html#ae5c16cb91ac31b97e7652cc526c07439',1,'mlx::core::Compiled']]], - ['limits_29',['Limits',['../struct_limits.html',1,'']]], - ['limits_3c_20bfloat16_5ft_20_3e_30',['Limits< bfloat16_t >',['../struct_limits_3_01bfloat16__t_01_4.html',1,'']]], - ['limits_3c_20bool_20_3e_31',['Limits< bool >',['../struct_limits_3_01bool_01_4.html',1,'']]], - ['limits_3c_20complex64_5ft_20_3e_32',['Limits< complex64_t >',['../struct_limits_3_01complex64__t_01_4.html',1,'']]], - ['limits_3c_20float_20_3e_33',['Limits< float >',['../struct_limits_3_01float_01_4.html',1,'']]], - ['limits_3c_20half_20_3e_34',['Limits< half >',['../struct_limits_3_01half_01_4.html',1,'']]], - ['limits_3c_20int16_5ft_20_3e_35',['Limits< int16_t >',['../struct_limits_3_01int16__t_01_4.html',1,'']]], - ['limits_3c_20int32_5ft_20_3e_36',['Limits< int32_t >',['../struct_limits_3_01int32__t_01_4.html',1,'']]], - ['limits_3c_20int64_5ft_20_3e_37',['Limits< int64_t >',['../struct_limits_3_01int64__t_01_4.html',1,'']]], - ['limits_3c_20int8_5ft_20_3e_38',['Limits< int8_t >',['../struct_limits_3_01int8__t_01_4.html',1,'']]], - ['limits_3c_20uint16_5ft_20_3e_39',['Limits< uint16_t >',['../struct_limits_3_01uint16__t_01_4.html',1,'']]], - ['limits_3c_20uint32_5ft_20_3e_40',['Limits< uint32_t >',['../struct_limits_3_01uint32__t_01_4.html',1,'']]], - ['limits_3c_20uint64_5ft_20_3e_41',['Limits< uint64_t >',['../struct_limits_3_01uint64__t_01_4.html',1,'']]], - ['limits_3c_20uint8_5ft_20_3e_42',['Limits< uint8_t >',['../struct_limits_3_01uint8__t_01_4.html',1,'']]], - ['linalg_2eh_43',['linalg.h',['../linalg_8h.html',1,'']]], - ['linspace_44',['linspace',['../group__ops.html#ga968bcabed902311dcfbd903b0fb886ec',1,'mlx::core']]], - ['load_45',['Load',['../classmlx_1_1core_1_1_load.html',1,'mlx::core::Load'],['../classmlx_1_1core_1_1_load.html#a3aa8a537cd90bab048df47dca1ed526a',1,'mlx::core::Load::Load()']]], - ['load_46',['load',['../struct_read_writer.html#a120eaf4b5f32e80972a18d14e82a2d75',1,'ReadWriter::load() const'],['../struct_read_writer.html#a8a97ba42db5692898ef7391db08d8fd0',1,'ReadWriter::load() const'],['../struct_read_writer.html#a2506ee61be67826ac9494efb12a81900',1,'ReadWriter::load() const'],['../namespacemlx_1_1core.html#a954de19249da7c1fa39b89bdc47368aa',1,'mlx::core::load(array &out, size_t offset, const std::shared_ptr< io::Reader > &reader, bool swap_endianess)'],['../namespacemlx_1_1core.html#abada9bfa834d7423959362386720f3db',1,'mlx::core::load(std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})'],['../namespacemlx_1_1core.html#ac71a08bf4c052ae3c77e9e89cbea071d',1,'mlx::core::load(std::string file, StreamOrDevice s={})']]], - ['load_2eh_47',['load.h',['../backend_2common_2load_8h.html',1,'(Global Namespace)'],['../io_2load_8h.html',1,'(Global Namespace)']]], - ['load_5fgguf_48',['load_gguf',['../namespacemlx_1_1core.html#a2aa12b351ce559deb14cda0a5292c2ce',1,'mlx::core']]], - ['load_5fpadded_49',['load_padded',['../struct_read_writer.html#add5bd3f647793a5a19d63197a19df73c',1,'ReadWriter::load_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#af3ce6bbb1a8dfb3bab1ae18d3eb45bc0',1,'ReadWriter::load_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#ab116f4569bb9dc6eaef0d8d08472e239',1,'ReadWriter::load_padded(int length, const device float2 *w_k) const']]], - ['load_5fsafe_50',['load_safe',['../struct_g_e_m_v_kernel.html#a04bb72da9a93d6d1eba468fa311bbba7',1,'GEMVKernel::load_safe()'],['../struct_quantized_block_loader.html#a699dc9aa284b8fbf870310bbb224465b',1,'QuantizedBlockLoader::load_safe()'],['../structmlx_1_1steel_1_1_block_loader.html#abb0f4f66ec8b123627beb8eb4fbb609d',1,'mlx::steel::BlockLoader::load_safe()'],['../kernels_2scan_8h.html#ae8eb101e538b85f8a4bcf451489ae0ac',1,'load_safe(): scan.h']]], - ['load_5fsafetensors_51',['load_safetensors',['../namespacemlx_1_1core.html#a96cc40e1af8c4626c813ce4859f70a5c',1,'mlx::core::load_safetensors(std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})'],['../namespacemlx_1_1core.html#af7eea1682a38d363c56a066321e6d526',1,'mlx::core::load_safetensors(const std::string &file, StreamOrDevice s={})']]], - ['load_5fstrided_52',['load_strided',['../struct_read_writer.html#a998ef484bade81f726b9edfc6b878197',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a3d9c8cbc582cad6b5218339d0f721559',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a795a71a8e1f154a5af415ebe1b3f0713',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a0935b946b8bf2e769427fcbf2da2f7be',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a7d45368c74a8b7c632659504b3273a13',1,'ReadWriter::load_strided(int stride, int overall_n)']]], - ['load_5funsafe_53',['load_unsafe',['../struct_g_e_m_v_kernel.html#a6013e9c5b2f72fa1311dd038172df0ce',1,'GEMVKernel::load_unsafe()'],['../struct_quantized_block_loader.html#a86009527cb4b53e4c21fd6b1f78cfefc',1,'QuantizedBlockLoader::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a961836be363409744e48e595d5e0c2ec',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a8034abc10483487fc94313e3674d1111',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a69e2f7c9814d1cc1c5c267be8618dc55',1,'mlx::steel::Conv2DWeightBlockLoader::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#aa11d1a142bc868df462f48a7102147f3',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a0e262b003ac0e7ee6272585eac921704',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a3859ca11b5991ef6ee9b99afdc3ea30a',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a8f078982186421f5b484c0b53af9c655',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::load_unsafe()'],['../structmlx_1_1steel_1_1_block_loader.html#a6c9e27f11f48b34580ed2c7e9cad9a27',1,'mlx::steel::BlockLoader::load_unsafe()'],['../kernels_2scan_8h.html#a9c415d07921f3961bad0a00a34f4a9a3',1,'load_unsafe(U values[N_READS], const device T *input): scan.h']]], - ['load_5fvector_54',['load_vector',['../quantized_8h.html#a8dbace41de9e1e21dd59d016db11b3e9',1,'quantized.h']]], - ['load_5fvector_5fsafe_55',['load_vector_safe',['../quantized_8h.html#aa69e143d646fad332c1a53e8c9b337b7',1,'quantized.h']]], - ['loader_2eh_56',['loader.h',['../conv_2loader_8h.html',1,'(Global Namespace)'],['../gemm_2loader_8h.html',1,'(Global Namespace)']]], - ['loader_5fa_5ft_57',['loader_a_t',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#aa8a04ed74d2259f99b337d4662c64d83',1,'mlx::steel::GEMMKernel']]], - ['loader_5fb_5ft_58',['loader_b_t',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#aa98f32278b5fd98c93ae5483c3596395',1,'mlx::steel::GEMMKernel']]], - ['loader_5fchannel_5fl_2eh_59',['loader_channel_l.h',['../loader__channel__l_8h.html',1,'']]], - ['loader_5fchannel_5fn_2eh_60',['loader_channel_n.h',['../loader__channel__n_8h.html',1,'']]], - ['loader_5fgeneral_2eh_61',['loader_general.h',['../loader__general_8h.html',1,'']]], - ['location_62',['location',['../structlooped__elem__to__loc.html#accc6d4957a8aeb38f5062754793b74d2',1,'looped_elem_to_loc::location()'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#a368d2a2204cee5055386954acd5ccb90',1,'looped_elem_to_loc< 1, offset_t >::location()'],['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html#a8c7aaffda0ca500d9f9566e5e74217a2',1,'looped_elem_to_loc< 0, offset_t >::location()']]], - ['log_63',['Log',['../struct_log.html',1,'Log'],['../structmlx_1_1core_1_1detail_1_1_log.html',1,'mlx::core::detail::Log'],['../classmlx_1_1core_1_1_log.html',1,'mlx::core::Log'],['../classmlx_1_1core_1_1_log.html#a663e54790c60b56eb0ff09f4f6635fb9',1,'mlx::core::Log::Log()']]], - ['log_64',['log',['../namespacemetal.html#a423a9f4f2fc7ef5ec7eda061277b51b6',1,'metal::log()'],['../namespacemetal_1_1fast.html#aef942e7f9e5c2e58c58644ab1bdd58d1',1,'metal::fast::log()'],['../namespacemetal_1_1precise.html#a341c2b8c27d1bed860f85f8b355023d4',1,'metal::precise::log()'],['../group__ops.html#ga6fb22d4926133573e430fcc92f4eef31',1,'mlx::core::log()']]], - ['log10_65',['Log10',['../struct_log10.html',1,'Log10'],['../structmlx_1_1core_1_1detail_1_1_log10.html',1,'mlx::core::detail::Log10']]], - ['log10_66',['log10',['../namespacemetal.html#a042b98827baa910e9d726227cec55a80',1,'metal::log10()'],['../namespacemetal_1_1fast.html#a0d1150cf2deee5100a7ea2988b3bb39e',1,'metal::fast::log10()'],['../namespacemetal_1_1precise.html#a44239067e8e9248b1574353f98e94d72',1,'metal::precise::log10()'],['../group__ops.html#ga1fdcc7fc8819caf2e6f1c327ed4e9b9e',1,'mlx::core::log10()']]], - ['log1p_67',['Log1p',['../struct_log1p.html',1,'Log1p'],['../structmlx_1_1core_1_1detail_1_1_log1p.html',1,'mlx::core::detail::Log1p'],['../classmlx_1_1core_1_1_log1p.html',1,'mlx::core::Log1p'],['../classmlx_1_1core_1_1_log1p.html#ab0d6eb90c6f98775fce56f3446ff127a',1,'mlx::core::Log1p::Log1p()']]], - ['log1p_68',['log1p',['../backend_2metal_2kernels_2utils_8h.html#a27c03f2f90ab56db2e4d59559a3d2e9a',1,'log1p(float x): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a3501b665c8837eabf9789ea27a7d6946',1,'log1p(bfloat16_t x): utils.h'],['../group__ops.html#ga20a1f4270c35b0fa544f5105a87a1604',1,'mlx::core::log1p()']]], - ['log2_69',['Log2',['../struct_log2.html',1,'Log2'],['../structmlx_1_1core_1_1detail_1_1_log2.html',1,'mlx::core::detail::Log2']]], - ['log2_70',['log2',['../namespacemetal.html#ae894dd5fc13799f120b55cab6267c89c',1,'metal::log2()'],['../namespacemetal_1_1fast.html#a986ef245dd433ae62af864f5cbb07118',1,'metal::fast::log2()'],['../namespacemetal_1_1precise.html#a632dbbdcc1a465cf4739a14306147573',1,'metal::precise::log2()'],['../group__ops.html#ga144228d7222d15af3a135b8b0f3fa21b',1,'mlx::core::log2()']]], - ['logaddexp_71',['LogAddExp',['../struct_log_add_exp.html',1,'LogAddExp'],['../structmlx_1_1core_1_1detail_1_1_log_add_exp.html',1,'mlx::core::detail::LogAddExp'],['../classmlx_1_1core_1_1_log_add_exp.html',1,'mlx::core::LogAddExp'],['../classmlx_1_1core_1_1_log_add_exp.html#ad8938ca90ccf1a3259973fc68902975a',1,'mlx::core::LogAddExp::LogAddExp()']]], - ['logaddexp_72',['logaddexp',['../group__ops.html#gaf985df6609c6bd75a14a844655d89eaa',1,'mlx::core']]], - ['logical_5fand_73',['logical_and',['../group__ops.html#ga768977cda8d68cf23f464a6af9907876',1,'mlx::core']]], - ['logical_5fnot_74',['logical_not',['../group__ops.html#gabca78d34ce93f0de2814e62225bb2a53',1,'mlx::core']]], - ['logical_5for_75',['logical_or',['../group__ops.html#ga23768728e4dd070c917fbb0ed0d0c2ec',1,'mlx::core']]], - ['logicaland_76',['LogicalAnd',['../struct_logical_and.html',1,'LogicalAnd'],['../structmlx_1_1core_1_1detail_1_1_logical_and.html',1,'mlx::core::detail::LogicalAnd'],['../classmlx_1_1core_1_1_logical_and.html',1,'mlx::core::LogicalAnd'],['../classmlx_1_1core_1_1_logical_and.html#aaf2cab8ffcf6606b8babfef60fc06fb3',1,'mlx::core::LogicalAnd::LogicalAnd()']]], - ['logicalnot_77',['LogicalNot',['../struct_logical_not.html',1,'LogicalNot'],['../structmlx_1_1core_1_1detail_1_1_logical_not.html',1,'mlx::core::detail::LogicalNot'],['../classmlx_1_1core_1_1_logical_not.html',1,'mlx::core::LogicalNot'],['../classmlx_1_1core_1_1_logical_not.html#a6f5850b4c78b83d5e2c0d37437fc79b7',1,'mlx::core::LogicalNot::LogicalNot()']]], - ['logicalor_78',['LogicalOr',['../struct_logical_or.html',1,'LogicalOr'],['../structmlx_1_1core_1_1detail_1_1_logical_or.html',1,'mlx::core::detail::LogicalOr'],['../classmlx_1_1core_1_1_logical_or.html',1,'mlx::core::LogicalOr'],['../classmlx_1_1core_1_1_logical_or.html#a269c22daca1c15ad010bb860bce93918',1,'mlx::core::LogicalOr::LogicalOr()']]], - ['logsumexp_79',['logsumexp',['../group__ops.html#gacff4eb57c085d571e722083680267ac5',1,'mlx::core::logsumexp(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga59be50b4e92f1dc20b53460cefa3910d',1,'mlx::core::logsumexp(const array &a, StreamOrDevice s={})'],['../group__ops.html#gae3969c7bd24c4f3ab97831df28239689',1,'mlx::core::logsumexp(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gafef5cb2159c16a60a95470cc823bdd44',1,'mlx::core::logsumexp(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['loopalignment_80',['LoopAlignment',['../structmlx_1_1steel_1_1_loop_alignment.html',1,'mlx::steel']]], - ['looped_5felem_5fto_5floc_81',['looped_elem_to_loc',['../structlooped__elem__to__loc.html',1,'']]], - ['looped_5felem_5fto_5floc_3c_200_2c_20offset_5ft_20_3e_82',['looped_elem_to_loc< 0, offset_t >',['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html',1,'']]], - ['looped_5felem_5fto_5floc_3c_201_2c_20offset_5ft_20_3e_83',['looped_elem_to_loc< 1, offset_t >',['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html',1,'']]], - ['lowest_84',['lowest',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ae81c58b8223e504965183c99d19a2116',1,'metal::_numeric_limits_impl< bfloat16_t >']]] -]; diff --git a/docs/build/html/search/all_d.js b/docs/build/html/search/all_d.js deleted file mode 100644 index ea259f2b..00000000 --- a/docs/build/html/search/all_d.js +++ /dev/null @@ -1,106 +0,0 @@ -var searchData= -[ - ['m_0',['M',['../struct_m_l_x_fast_attention_params.html#a5cd3ede5f41d5fdf8177cab3f059f4d8',1,'MLXFastAttentionParams::M'],['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a2117fc93662d5177c8f3e7c2dbb9e2db',1,'mlx::steel::ImplicitGemmConv2DParams::M'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a85b20a4c4558cc78d76fcbd045a9c694',1,'mlx::steel::GEMMParams::M'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a8bab0cf8a20d2abefe294a7505917e7e',1,'mlx::steel::GEMMSpiltKParams::M']]], - ['make_5farrays_1',['make_arrays',['../classmlx_1_1core_1_1array.html#a1173db4e23f5a8230911cb8fba45d5e6',1,'mlx::core::array']]], - ['make_5fcontiguous_5fstrides_2',['make_contiguous_strides',['../namespacemlx_1_1core.html#ac9fb1286a1a00395e901dbff80560895',1,'mlx::core']]], - ['make_5fstring_3',['make_string',['../namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27',1,'mlx::core']]], - ['make_5fsynchronize_5ftask_4',['make_synchronize_task',['../namespacemlx_1_1core_1_1metal.html#ab31abdda3052162d59f6590a89e38337',1,'mlx::core::metal']]], - ['make_5ftask_5',['make_task',['../namespacemlx_1_1core_1_1metal.html#a4552b7ccdfa7f3cc9895c09799d8048e',1,'mlx::core::metal']]], - ['malloc_6',['malloc',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a9a17d2c7a97772bf4a15e6c74af34ca4',1,'mlx::core::allocator::Allocator::malloc()'],['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#a4f3d5de6b8c0eba22e9403b28a5ef3f0',1,'mlx::core::allocator::CommonAllocator::malloc()'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a6c0feb9b1ff9977f76c69745393944bc',1,'mlx::core::metal::MetalAllocator::malloc()'],['../namespacemlx_1_1core_1_1allocator.html#a560d10a166e3c294f3757166f9bd6801',1,'mlx::core::allocator::malloc(size_t size)']]], - ['malloc_5for_5fwait_7',['malloc_or_wait',['../namespacemlx_1_1core_1_1allocator.html#a86ac0a11ff78f21e717f641716c34abc',1,'mlx::core::allocator']]], - ['mask_5fh_8',['mask_h',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a0b892c1a7edb9ed20c076d8945855c19',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], - ['mask_5ft_9',['mask_t',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a270ab3da7c98a12525a59952742cc97d',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], - ['mask_5fw_10',['mask_w',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a19ddba7259c3c2c02ed90f3f635557be',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], - ['matmul_11',['Matmul',['../classmlx_1_1core_1_1_matmul.html',1,'mlx::core::Matmul'],['../classmlx_1_1core_1_1_matmul.html#adef92f30ab35e540ccb316ea6b94e6f7',1,'mlx::core::Matmul::Matmul()']]], - ['matmul_12',['matmul',['../group__ops.html#ga753d59f5a9f5f2362865ee83b4dced2a',1,'mlx::core']]], - ['matmul_2eh_13',['matmul.h',['../matmul_8h.html',1,'']]], - ['max_14',['Max',['../struct_max.html',1,'']]], - ['max_15',['max',['../struct_limits.html#a2f0673b6f9da89ce1d64f9f3d74f50a8',1,'Limits::max'],['../struct_limits_3_01uint8__t_01_4.html#a1570fb640e2e41f96776db5ca08d500c',1,'Limits< uint8_t >::max'],['../struct_limits_3_01uint16__t_01_4.html#a228b33556ba4cb7e6137ab6258628488',1,'Limits< uint16_t >::max'],['../struct_limits_3_01uint32__t_01_4.html#a91fa8f7214ec936976a8324c7431c651',1,'Limits< uint32_t >::max'],['../struct_limits_3_01uint64__t_01_4.html#aa8c2257881a4e1fa8596fa07dba5e107',1,'Limits< uint64_t >::max'],['../struct_limits_3_01int8__t_01_4.html#a96fed01fa9249226be69760652643289',1,'Limits< int8_t >::max'],['../struct_limits_3_01int16__t_01_4.html#a12d64c398ca7609b7c906f3cf1a6f678',1,'Limits< int16_t >::max'],['../struct_limits_3_01int32__t_01_4.html#af756344b31e84222dd73d3445dcd5640',1,'Limits< int32_t >::max'],['../struct_limits_3_01int64__t_01_4.html#ac9c420604c0f3d237ddfb2b8a2439224',1,'Limits< int64_t >::max'],['../struct_limits_3_01half_01_4.html#a4f9515dbf2a622074f121bea39a7b175',1,'Limits< half >::max'],['../struct_limits_3_01float_01_4.html#aba172b22b388190aa3969ef16885d8a6',1,'Limits< float >::max'],['../struct_limits_3_01bfloat16__t_01_4.html#a0ead3618da6718629ea9fa4670b5005f',1,'Limits< bfloat16_t >::max'],['../struct_limits_3_01bool_01_4.html#acbd2132145888d51220558a101ffcff4',1,'Limits< bool >::max'],['../struct_limits_3_01complex64__t_01_4.html#ac01c274b224b90f5210b675a484f4607',1,'Limits< complex64_t >::max'],['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a92320d40a58218e40cc414986ac95c50',1,'metal::_numeric_limits_impl< bfloat16_t >::max()']]], - ['max_16',['Max',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924ac00cf69bbba24f7ab08d3ad618705988',1,'mlx::core::distributed::AllReduce::Max'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a3d11c500ea4f7f639e20dd0755d39260',1,'mlx::core::Reduce::Max'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ad54b2905015a390708f79bae6cdac56d',1,'mlx::core::Scan::Max'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca1c2da7b96d743296fe660f5fc4072f16',1,'mlx::core::Scatter::Max']]], - ['max_17',['max',['../namespacemetal.html#a853c80479ab2264d9c4587c7bcac767b',1,'metal::max()'],['../namespacemetal_1_1fast.html#a747e2e58092a27fb8b4dd3d16934fb52',1,'metal::fast::max()'],['../namespacemetal_1_1precise.html#a6a954a4e4e3753303d1dc734855a185f',1,'metal::precise::max()'],['../group__ops.html#ga7fed87d96cc7741d8267f4eac83f5fe7',1,'mlx::core::max(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga25be91d70a5f40341db0615a0b8bfedc',1,'mlx::core::max(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga1ca7b6b91fe2459a7d83897bf013827f',1,'mlx::core::max(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga7b638050e03a93f2896c981bc2850a47',1,'mlx::core::max(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['max3_18',['max3',['../namespacemetal.html#a00f9c0ad66d969794614f56912eed9c9',1,'metal::max3()'],['../namespacemetal_1_1fast.html#a6fc2cf18ffa8149561864c86dba0f803',1,'metal::fast::max3()'],['../namespacemetal_1_1precise.html#ac490e8614ebd2c9343af1ae6c0d4e82c',1,'metal::precise::max3()']]], - ['max_5fdigits10_19',['max_digits10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a8d3905e6f158379a0c52682266e8d0e2',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['max_5fexponent_20',['max_exponent',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61bb136f819fa392c50bdf3c38f3aad2',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['max_5fexponent10_21',['max_exponent10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a76bfb2deb0e0afc011f77bf5a6d0ed94',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['max_5foutput_5fsize_22',['MAX_OUTPUT_SIZE',['../backend_2metal_2kernels_2fft_8h.html#a28d683cf067736d76f867f30c066317e',1,'fft.h']]], - ['max_5fradix_23',['MAX_RADIX',['../backend_2metal_2kernels_2fft_8h.html#a7b6e56afa21f022c5e754b000955735a',1,'MAX_RADIX: fft.h'],['../readwrite_8h.html#a7b6e56afa21f022c5e754b000955735a',1,'MAX_RADIX: readwrite.h']]], - ['max_5freduce_5fspecialized_5fdims_24',['MAX_REDUCE_SPECIALIZED_DIMS',['../defines_8h.html#a15629f1b81a2b6f1cca26d07a2734623',1,'defines.h']]], - ['max_5fthreads_25',['max_threads',['../namespacepocketfft_1_1detail_1_1threading.html#a2d5c0729f0b66cf061918baea4337d70',1,'pocketfft::detail::threading']]], - ['maximum_26',['Maximum',['../struct_maximum.html',1,'Maximum'],['../structmlx_1_1core_1_1detail_1_1_maximum.html',1,'mlx::core::detail::Maximum'],['../classmlx_1_1core_1_1_maximum.html',1,'mlx::core::Maximum'],['../classmlx_1_1core_1_1_maximum.html#a28389307e385efe1b2955b86b115e816',1,'mlx::core::Maximum::Maximum()']]], - ['maximum_27',['maximum',['../group__ops.html#ga7ade2ea305e2e4219c3609443fb5db8d',1,'mlx::core']]], - ['mb_5fblock_5fmerge_28',['mb_block_merge',['../sort_8h.html#ab381cd57f344bc7304ab580bfdc78807',1,'sort.h']]], - ['mb_5fblock_5fpartition_29',['mb_block_partition',['../sort_8h.html#a32cbe4163b8b0f5cb2c97b256119a4b2',1,'sort.h']]], - ['mb_5fblock_5fsort_30',['mb_block_sort',['../sort_8h.html#a2a0533103661dd378d6bfe949930650a',1,'sort.h']]], - ['mean_31',['mean',['../group__ops.html#gade46e768fd46b8b640eb16f26abeecef',1,'mlx::core::mean(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga52b59fdd8e8430538e564f5bbcfa31e6',1,'mlx::core::mean(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga066161f3d3e395a1d76c638cb680d444',1,'mlx::core::mean(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga45fba73eab0e3b6e128ed3ce2f43a5da',1,'mlx::core::mean(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['median3_32',['median3',['../namespacemetal.html#aa3ff49457ce3c93fc1c0897fd1525157',1,'metal::median3()'],['../namespacemetal_1_1fast.html#a742b55f1e4369921ee7f60d70185bfbc',1,'metal::fast::median3()'],['../namespacemetal_1_1precise.html#a14555ff99c4388493fec48e070144ae2',1,'metal::precise::median3()']]], - ['merge_5fpartition_33',['merge_partition',['../struct_block_merge_sort.html#ab2300cbecb23f3433bad888924c831ca',1,'BlockMergeSort::merge_partition()'],['../struct_kernel_multi_block_merge_sort.html#ab15895b4233aba0e279cc44a07a201fe',1,'KernelMultiBlockMergeSort::merge_partition()']]], - ['merge_5fstep_34',['merge_step',['../struct_block_merge_sort.html#ab65f190edf1851b37c39ad49ce99a43c',1,'BlockMergeSort']]], - ['meshgrid_35',['meshgrid',['../group__ops.html#ga577c911618575314de63d1060656a26e',1,'mlx::core']]], - ['metal_36',['metal',['../namespacemetal.html',1,'']]], - ['metal_2eh_37',['metal.h',['../metal_8h.html',1,'']]], - ['metal_3a_3afast_38',['fast',['../namespacemetal_1_1fast.html',1,'metal']]], - ['metal_3a_3aprecise_39',['precise',['../namespacemetal_1_1precise.html',1,'metal']]], - ['metal_5fimpl_2eh_40',['metal_impl.h',['../metal__impl_8h.html',1,'']]], - ['metal_5fkernel_41',['metal_kernel',['../namespacemlx_1_1core_1_1fast.html#ab16436b465dc10ce472193d541d8426e',1,'mlx::core::fast']]], - ['metalallocator_42',['MetalAllocator',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html',1,'mlx::core::metal']]], - ['metalkernelfunction_43',['MetalKernelFunction',['../namespacemlx_1_1core_1_1fast.html#af93ccb7be1562f8f40abcbc4243fc8d5',1,'mlx::core::fast']]], - ['min_44',['Min',['../struct_min.html',1,'']]], - ['min_45',['min',['../struct_limits.html#a6e81584ba65a4dc6ff9366b458e3a20e',1,'Limits::min'],['../struct_limits_3_01uint8__t_01_4.html#a408bd5a337e7292f06e63da81193629a',1,'Limits< uint8_t >::min'],['../struct_limits_3_01uint16__t_01_4.html#ae173984c3be8b6750f27daed581805fe',1,'Limits< uint16_t >::min'],['../struct_limits_3_01uint32__t_01_4.html#ab0c3975e02053b234c7b606ababa66e1',1,'Limits< uint32_t >::min'],['../struct_limits_3_01uint64__t_01_4.html#a80627f39e951398283942cefa48f4dd0',1,'Limits< uint64_t >::min'],['../struct_limits_3_01int8__t_01_4.html#a7a809307d2bba80382f0645d277eaa4b',1,'Limits< int8_t >::min'],['../struct_limits_3_01int16__t_01_4.html#adca7139647801e223c35b0abc7da5240',1,'Limits< int16_t >::min'],['../struct_limits_3_01int32__t_01_4.html#af336a1b22a8ed6a83a4cfb5bf8869771',1,'Limits< int32_t >::min'],['../struct_limits_3_01int64__t_01_4.html#a1c90fb96af515badaccaa835b08f7428',1,'Limits< int64_t >::min'],['../struct_limits_3_01half_01_4.html#aca7b036c257878bf1b80912fb5d4516d',1,'Limits< half >::min'],['../struct_limits_3_01float_01_4.html#a3225e334d372ee86128c89a440d8648f',1,'Limits< float >::min'],['../struct_limits_3_01bfloat16__t_01_4.html#a2fd1811b9f615b2b897904bc27d1cb49',1,'Limits< bfloat16_t >::min'],['../struct_limits_3_01bool_01_4.html#a139f787b57536d455490b8ef801d37cc',1,'Limits< bool >::min'],['../struct_limits_3_01complex64__t_01_4.html#aa67b04aa7abcd67f7af0808737ab8e14',1,'Limits< complex64_t >::min'],['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#adaed80031f5ca0ff69d30ec4c5d0c98f',1,'metal::_numeric_limits_impl< bfloat16_t >::min()']]], - ['min_46',['Min',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924a4f685dcd48e6614d6bb2ccda4f2686ef',1,'mlx::core::distributed::AllReduce::Min'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a0d3d1f5c94725bdc42fa692e2c074418',1,'mlx::core::Reduce::Min'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1a7d2ee8f14f2e70a9d47170fecc6da898',1,'mlx::core::Scan::Min'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613cad914e4c3475ce9858f2de4bf35dcfdbf',1,'mlx::core::Scatter::Min']]], - ['min_47',['min',['../namespacemetal.html#a6653b28c9473087141eddce39878d4d3',1,'metal::min()'],['../namespacemetal_1_1fast.html#a3e958e56a4712687c381a0b64d123e61',1,'metal::fast::min()'],['../namespacemetal_1_1precise.html#afed0da2f7df3505b5dffa2389c3cb36e',1,'metal::precise::min()'],['../group__ops.html#gab27599802617a4c8f9964ab5f4ffee12',1,'mlx::core::min(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga0140b91e9cdfc3fef0da8e332f65a9e8',1,'mlx::core::min(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga6efb83cd46436678c8f8c4af15cc00f5',1,'mlx::core::min(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga36fa315eef677f4143868f552cd26d03',1,'mlx::core::min(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['min3_48',['min3',['../namespacemetal.html#a005510c8c0f964ce2b8aad3ba76a7a3f',1,'metal::min3()'],['../namespacemetal_1_1fast.html#a606a4c1b34ce05ea89ca5af81724036f',1,'metal::fast::min3()'],['../namespacemetal_1_1precise.html#a4d37ce31c3549ca4772a4ee29798e231',1,'metal::precise::min3()']]], - ['min_5fexponent_49',['min_exponent',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a13829f8c7a7c0efdc8946eff5d3c9470',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['min_5fexponent10_50',['min_exponent10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aeaed172780720e06b8731cef3177e277',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['minimum_51',['Minimum',['../struct_minimum.html',1,'Minimum'],['../structmlx_1_1core_1_1detail_1_1_minimum.html',1,'mlx::core::detail::Minimum'],['../classmlx_1_1core_1_1_minimum.html',1,'mlx::core::Minimum'],['../classmlx_1_1core_1_1_minimum.html#ab0f2ce17108df44b82cff68886b0f6f5',1,'mlx::core::Minimum::Minimum()']]], - ['minimum_52',['minimum',['../group__ops.html#ga49ba00c090f81f331c91b0c97040bce0',1,'mlx::core']]], - ['mlx_53',['mlx',['../namespacemlx.html',1,'']]], - ['mlx_2eh_54',['mlx.h',['../mlx_8h.html',1,'']]], - ['mlx_3a_3acore_55',['core',['../namespacemlx_1_1core.html',1,'mlx']]], - ['mlx_3a_3acore_3a_3aallocator_56',['allocator',['../namespacemlx_1_1core_1_1allocator.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3adetail_57',['detail',['../namespacemlx_1_1core_1_1detail.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3adistributed_58',['distributed',['../namespacemlx_1_1core_1_1distributed.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3adistributed_3a_3adetail_59',['detail',['../namespacemlx_1_1core_1_1distributed_1_1detail.html',1,'mlx::core::distributed']]], - ['mlx_3a_3acore_3a_3afast_60',['fast',['../namespacemlx_1_1core_1_1fast.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3afft_61',['fft',['../namespacemlx_1_1core_1_1fft.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3aio_62',['io',['../namespacemlx_1_1core_1_1io.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3alinalg_63',['linalg',['../namespacemlx_1_1core_1_1linalg.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3ametal_64',['metal',['../namespacemlx_1_1core_1_1metal.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3arandom_65',['random',['../namespacemlx_1_1core_1_1random.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3ascheduler_66',['scheduler',['../namespacemlx_1_1core_1_1scheduler.html',1,'mlx::core']]], - ['mlx_3a_3asteel_67',['steel',['../namespacemlx_1_1steel.html',1,'mlx']]], - ['mlx_5fatomic_68',['mlx_atomic',['../structmlx__atomic.html',1,'']]], - ['mlx_5fatomic_3c_20t_2c_20enable_5fif_5ft_3c_20is_5fmetal_5fatomic_3c_20t_20_3e_20_3e_20_3e_69',['mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >',['../structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html',1,'']]], - ['mlx_5fatomic_5fcompare_5fexchange_5fweak_5fexplicit_70',['mlx_atomic_compare_exchange_weak_explicit',['../atomic_8h.html#ad7f32327ff66354cfa2f0cfdac79316f',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread T *expected, T val, size_t offset): atomic.h'],['../atomic_8h.html#aa8f47b2e9b95d4b00ad51f08b070deb5',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread uint *expected, uint val, size_t offset): atomic.h']]], - ['mlx_5fatomic_5ffetch_5fadd_5fexplicit_71',['mlx_atomic_fetch_add_explicit',['../atomic_8h.html#aad448d9e06e001700b65ca8317216a3b',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fand_5fexplicit_72',['mlx_atomic_fetch_and_explicit',['../atomic_8h.html#a253e3c870c0ddc7c28ab2f6ca2c3eae5',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_73',['mlx_atomic_fetch_max_explicit',['../atomic_8h.html#ac480f2b459a8ad9095cee353e152d00c',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_3c_20float_20_3e_74',['mlx_atomic_fetch_max_explicit< float >',['../atomic_8h.html#a1dce2abfa16417122c4d2bf261129ae4',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_75',['mlx_atomic_fetch_min_explicit',['../atomic_8h.html#a2ec33dca0039bd944d73d1c2b378cc19',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_3c_20float_20_3e_76',['mlx_atomic_fetch_min_explicit< float >',['../atomic_8h.html#ab7d1dc49f319f239b7ee0b7c72976dd0',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmul_5fexplicit_77',['mlx_atomic_fetch_mul_explicit',['../atomic_8h.html#adfdbea60436f14f1af9ce36e2a0a77a3',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5for_5fexplicit_78',['mlx_atomic_fetch_or_explicit',['../atomic_8h.html#ab7391f197001471e4788312bdb6ab37a',1,'atomic.h']]], - ['mlx_5fatomic_5fload_5fexplicit_79',['mlx_atomic_load_explicit',['../atomic_8h.html#a253a4e8c2c5768a069e2791b627dfc99',1,'atomic.h']]], - ['mlx_5fatomic_5fstore_5fexplicit_80',['mlx_atomic_store_explicit',['../atomic_8h.html#a0ae453140b0819a4c02f265334de98c0',1,'atomic.h']]], - ['mlx_5flapack_5ffunc_81',['MLX_LAPACK_FUNC',['../lapack__helper_8h.html#ae22db9704827bf013a0a61f21a47464b',1,'lapack_helper.h']]], - ['mlx_5fmtl_5fconst_82',['MLX_MTL_CONST',['../kernels_2gemv__masked_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'MLX_MTL_CONST: gemv_masked.h'],['../quantized_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'MLX_MTL_CONST: quantized.h'],['../sort_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'MLX_MTL_CONST: sort.h']]], - ['mlx_5fmtl_5floop_5funroll_83',['MLX_MTL_LOOP_UNROLL',['../sort_8h.html#ad34b622323cebef136669fedd7229515',1,'sort.h']]], - ['mlx_5fmtl_5fpragma_5funroll_84',['MLX_MTL_PRAGMA_UNROLL',['../kernels_2gemv__masked_8h.html#a069b682d7d21827461544817d722bfd3',1,'MLX_MTL_PRAGMA_UNROLL: gemv_masked.h'],['../backend_2metal_2kernels_2utils_8h.html#a069b682d7d21827461544817d722bfd3',1,'MLX_MTL_PRAGMA_UNROLL: utils.h']]], - ['mlxconvparams_85',['MLXConvParams',['../struct_m_l_x_conv_params.html',1,'']]], - ['mlxconvparams_3c_202_20_3e_86',['MLXConvParams< 2 >',['../struct_m_l_x_conv_params.html',1,'']]], - ['mlxfastattentionparams_87',['MLXFastAttentionParams',['../struct_m_l_x_fast_attention_params.html',1,'']]], - ['mlxscaleddotproductattentionparams_88',['MLXScaledDotProductAttentionParams',['../struct_m_l_x_scaled_dot_product_attention_params.html',1,'']]], - ['mma_89',['mma',['../structmlx_1_1steel_1_1_block_m_m_a.html#a6a2c2a6d5e767d52c41b42a9d36086b0',1,'mlx::steel::BlockMMA']]], - ['mma_2eh_90',['mma.h',['../mma_8h.html',1,'']]], - ['mma_5ft_91',['mma_t',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#add8c6a31011a4895667c2a94a5af3782',1,'mlx::steel::GEMMKernel']]], - ['move_5fshared_5fbuffer_92',['move_shared_buffer',['../classmlx_1_1core_1_1array.html#acce00db63e0f3d80f797b02397ade836',1,'mlx::core::array::move_shared_buffer(array other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)'],['../classmlx_1_1core_1_1array.html#a38d7ad605f8282e5e49d0c09e0555c78',1,'mlx::core::array::move_shared_buffer(array other)']]], - ['moveaxis_93',['moveaxis',['../group__ops.html#ga24067d10a842db2c9d509ea48135a2c3',1,'mlx::core']]], - ['mpinplace_94',['MPINPLACE',['../namespacepocketfft_1_1detail.html#af5eedf3cdfc83c0a30807092c39a9ce2',1,'pocketfft::detail']]], - ['mtl_5fconst_95',['MTL_CONST',['../defines_8h.html#a767ed9f2604de22b259cee02c4ce1d22',1,'defines.h']]], - ['mtl_5fdevice_96',['mtl_device',['../classmlx_1_1core_1_1metal_1_1_device.html#a31dba377f2be44a746db10d1b9367653',1,'mlx::core::metal::Device']]], - ['mtlfclist_97',['MTLFCList',['../namespacemlx_1_1core_1_1metal.html#a616e09a1ef321d527770721cef264c54',1,'mlx::core::metal']]], - ['mtx_98',['mtx',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a70410c9e612f871663929f1e8441a976',1,'mlx::core::scheduler::StreamThread']]], - ['multi_5fiter_99',['multi_iter',['../classpocketfft_1_1detail_1_1multi__iter.html',1,'pocketfft::detail::multi_iter< N >'],['../classpocketfft_1_1detail_1_1multi__iter.html#a9be43bb18840202da6d17988fccc64b9',1,'pocketfft::detail::multi_iter::multi_iter()']]], - ['multiply_100',['Multiply',['../structmlx_1_1core_1_1detail_1_1_multiply.html',1,'mlx::core::detail::Multiply'],['../classmlx_1_1core_1_1_multiply.html',1,'mlx::core::Multiply'],['../struct_multiply.html',1,'Multiply'],['../classmlx_1_1core_1_1_multiply.html#aca5c50f900321f3eb4d6fbcbc225c00c',1,'mlx::core::Multiply::Multiply()']]], - ['multiply_101',['multiply',['../group__ops.html#gaf57392e641640b5d06e4c99518391c38',1,'mlx::core']]], - ['multivariate_5fnormal_102',['multivariate_normal',['../namespacemlx_1_1core_1_1random.html#a8c37da3c1c0c561cad7499d6d9db81fb',1,'mlx::core::random']]] -]; diff --git a/docs/build/html/search/all_e.js b/docs/build/html/search/all_e.js deleted file mode 100644 index 875d5fb0..00000000 --- a/docs/build/html/search/all_e.js +++ /dev/null @@ -1,44 +0,0 @@ -var searchData= -[ - ['n_0',['N',['../struct_m_l_x_fast_attention_params.html#ab42c792a80388002e34992cbd837a167',1,'MLXFastAttentionParams::N'],['../struct_m_l_x_conv_params.html#ae6b7054dc3cffa8e6aedeb29fa7da932',1,'MLXConvParams::N'],['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a213f5ea4018120d8b61ab82754aaba83',1,'mlx::steel::ImplicitGemmConv2DParams::N'],['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a174626ab98515d89923b2841a664b9a1',1,'mlx::steel::GEMMParams::N'],['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html#a1103e79fb8962812b9a3c9d5c902ff86',1,'mlx::steel::GEMMSpiltKParams::N']]], - ['n_1',['n',['../struct_read_writer.html#a655346c9ebfc33a69da3f1c1d4238dfb',1,'ReadWriter']]], - ['n_5factive_5ftasks_2',['n_active_tasks',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a3c9fa21442974acba3409d49bb033131',1,'mlx::core::scheduler::Scheduler::n_active_tasks()'],['../namespacemlx_1_1core_1_1scheduler.html#a9bf641981df5fc16b0fb0dbacc0c3afd',1,'mlx::core::scheduler::n_active_tasks()']]], - ['n_5fchannels_3',['n_channels',['../structmlx_1_1steel_1_1_channel_helper.html#aa476bd0fcb38494c268547fc9820fc0a',1,'mlx::steel::ChannelHelper::n_channels'],['../structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html#a06c2fb9c93660e8f6916228cd77f9494',1,'mlx::steel::ChannelHelper< 1 >::n_channels'],['../structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html#ac66ff37bc2cf78d96667192a6cca73b5',1,'mlx::steel::ChannelHelper< 2 >::n_channels'],['../structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html#a071c015713b7bab09930661165517eff',1,'mlx::steel::ChannelHelper< 3 >::n_channels'],['../structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html#a167b00a84adf93b60e3d7a943d5eb977',1,'mlx::steel::ChannelHelper< 4 >::n_channels']]], - ['n_5fkv_5fheads_4',['N_KV_HEADS',['../struct_m_l_x_scaled_dot_product_attention_params.html#a68a292b9986c20560aca88394f82e9f7',1,'MLXScaledDotProductAttentionParams']]], - ['n_5fper_5fblock_5',['N_PER_BLOCK',['../struct_kernel_merge_sort.html#a959aaf5bfb70796a525fed318f7ae8ab',1,'KernelMergeSort::N_PER_BLOCK'],['../struct_kernel_multi_block_merge_sort.html#ae5113ca5852d11999ae932439af95a5c',1,'KernelMultiBlockMergeSort::N_PER_BLOCK']]], - ['n_5fq_5fheads_6',['N_Q_HEADS',['../struct_m_l_x_scaled_dot_product_attention_params.html#a1a63d2e7ad712b4ba26219c784c95177',1,'MLXScaledDotProductAttentionParams']]], - ['n_5freads_7',['n_reads',['../struct_quantized_block_loader.html#a6213479f7a6d9314d8879f8856b0b6fb',1,'QuantizedBlockLoader']]], - ['n_5frows_8',['n_rows',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a097c48a23e1bd7d8cf3e9d531397602f',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::n_rows'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a3ec8a92c9e6643c1d5bf8af278026fe8',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::n_rows'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a593ec140370d53f8c968f6240116d38b',1,'mlx::steel::Conv2DWeightBlockLoader::n_rows'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#a8b6c0936c9ad2766242664f034d1115f',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::n_rows'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#ae905e56c1129606e93dbbcd7baed8f0f',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::n_rows'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#abff29c5d96645d9113314c9a997dd7a8',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::n_rows'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#aaebb6da2cac9961f5edf52d16c18de7d',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::n_rows'],['../structmlx_1_1steel_1_1_block_loader.html#a973804e5b1d418c98c90861cda1a6fb5',1,'mlx::steel::BlockLoader::n_rows']]], - ['names_9',['names',['../structmlx_1_1core_1_1_node_namer.html#a57823f9a2cdc60b2f06f857b36019277',1,'mlx::core::NodeNamer']]], - ['nan_5fto_5fnum_10',['nan_to_num',['../group__ops.html#gab1467c6a9e675152e768afd6dcfb61de',1,'mlx::core']]], - ['nanequal_11',['NaNEqual',['../structmlx_1_1core_1_1detail_1_1_na_n_equal.html',1,'mlx::core::detail::NaNEqual'],['../struct_na_n_equal.html',1,'NaNEqual']]], - ['nbytes_12',['nbytes',['../classmlx_1_1core_1_1array.html#a387b67cd3ef5cfc1e749c371766c4a05',1,'mlx::core::array']]], - ['nd_5floop_13',['nd_loop',['../namespacemlx_1_1core.html#a9a9254ce9975ec247a2718bc02d6f201',1,'mlx::core']]], - ['ndarr_14',['ndarr',['../classpocketfft_1_1detail_1_1ndarr.html',1,'pocketfft::detail::ndarr< T >'],['../classpocketfft_1_1detail_1_1ndarr.html#a8f0037a172d96cb1ad915a5069175fa2',1,'pocketfft::detail::ndarr::ndarr()']]], - ['ndim_15',['ndim',['../struct_indices.html#a7dec359e91d0eb2b64e5461b54308313',1,'Indices::ndim'],['../structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html#ae605df33f449872e3da9777d97008051',1,'mlx::core::fast::CustomKernelShapeInfo::ndim'],['../classpocketfft_1_1detail_1_1arr__info.html#ac608c8af2a59a28a0012e308be7ee414',1,'pocketfft::detail::arr_info::ndim()'],['../classmlx_1_1core_1_1array.html#a53006e77d13d9d88b525ef577748939f',1,'mlx::core::array::ndim()']]], - ['needs_5ftgp_5freduction_16',['needs_tgp_reduction',['../struct_g_e_m_v_kernel.html#ae8113fddf6fb637acfd12efd978b704c',1,'GEMVKernel::needs_tgp_reduction'],['../struct_g_e_m_v_t_kernel.html#a67be7ec69c3791f02e97ccdb00ae0e03',1,'GEMVTKernel::needs_tgp_reduction']]], - ['negative_17',['Negative',['../structmlx_1_1core_1_1detail_1_1_negative.html',1,'mlx::core::detail::Negative'],['../classmlx_1_1core_1_1_negative.html',1,'mlx::core::Negative'],['../struct_negative.html',1,'Negative'],['../classmlx_1_1core_1_1_negative.html#aa3b73395d9fa5b7215dca488bc0d3c70',1,'mlx::core::Negative::Negative()']]], - ['negative_18',['negative',['../group__ops.html#ga95d9a9425533b5ed1707eb00184dffc6',1,'mlx::core']]], - ['new_5fqueue_19',['new_queue',['../classmlx_1_1core_1_1metal_1_1_device.html#a8135ae2a8c1e6f3861e84d4e60c28b67',1,'mlx::core::metal::Device']]], - ['new_5fscoped_5fmemory_5fpool_20',['new_scoped_memory_pool',['../namespacemlx_1_1core_1_1metal.html#a6c52659362f6da31629216b65c297407',1,'mlx::core::metal']]], - ['new_5fstream_21',['new_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a157c8da85fa1bddb8eacf8515a3cc879',1,'mlx::core::scheduler::Scheduler::new_stream()'],['../namespacemlx_1_1core_1_1metal.html#a8b4188f9a090a1da42d62b8a369bf106',1,'mlx::core::metal::new_stream()'],['../namespacemlx_1_1core.html#a6f7c63a9be10337b3b96d527e1db3c2f',1,'mlx::core::new_stream()']]], - ['next_22',['next',['../struct_quantized_block_loader.html#a674138ef7c43cc45586ea9f8fd6f6bd9',1,'QuantizedBlockLoader::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a3b71f379ff9baf39830c92f4f1ecde52',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a78d2b0098311a278be8394edbd5fc731',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::next()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#aae56c19bb562219770fec38e5666c6ce',1,'mlx::steel::Conv2DWeightBlockLoader::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#af9ce1a767266664bea131a5437002c80',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::next()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a30b10bebde7f08b89d03bdd9ea0f48da',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a3e5ee68ed0ee43f7e979dd4222f76a8c',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::next()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a11743cb1c108f42ccdc6e59204a5b3e8',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::next()'],['../structmlx_1_1steel_1_1_block_loader.html#a6af21428f0e7c17b48ddedf4dd20a1e8',1,'mlx::steel::BlockLoader::next()'],['../structlooped__elem__to__loc.html#a05558dabba889ee0d80ed4b567d901ca',1,'looped_elem_to_loc::next(const constant int *shape, const constant size_t *strides)'],['../structlooped__elem__to__loc.html#add610f331ef8d7d2d1917050890f82b2',1,'looped_elem_to_loc::next(int n, const constant int *shape, const constant size_t *strides)'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#a96cf2987c04210c9197e5237e425c4b4',1,'looped_elem_to_loc< 1, offset_t >::next(const constant int *, const constant size_t *strides)'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#af2984b35f7d7300d4812e7872b3c8851',1,'looped_elem_to_loc< 1, offset_t >::next(int n, const constant int *, const constant size_t *strides)'],['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html#aa1e9e1009c16befb9a730835836436e0',1,'looped_elem_to_loc< 0, offset_t >::next(const constant int *, const constant size_t *)'],['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html#a1064cdfdcef779b5628ce5357a6fe4f0',1,'looped_elem_to_loc< 0, offset_t >::next(int, const constant int *, const constant size_t *)'],['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a4193c5eac3ef093a740d5305b25d3e18',1,'mlx::core::random::KeySequence::next()'],['../backend_2metal_2allocator_8h.html#ae704ab07eac590091daa5fc4aec7bddb',1,'next: allocator.h']]], - ['next_5fpower_5fof_5f2_23',['next_power_of_2',['../namespacemlx_1_1core.html#a685c0530e338aabc622325685846ce93',1,'mlx::core']]], - ['nextafter_24',['nextafter',['../namespacemetal.html#a9547fd7b09164931986f6db4813bd72d',1,'metal::nextafter()'],['../namespacemetal_1_1fast.html#a4583e8be04fc0bd475b97b0934604f23',1,'metal::fast::nextafter()'],['../namespacemetal_1_1precise.html#ad012ceeb55b77f1533749b351331e026',1,'metal::precise::nextafter()']]], - ['no_5ffuse_25',['no_fuse',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4ada8df7fd43da6073fec4fe5666b03dbb',1,'mlx::core']]], - ['no_5fsimplify_26',['no_simplify',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4a8e5611dfddbae6e68624c59aa3e4e3e2',1,'mlx::core']]], - ['nodenamer_27',['NodeNamer',['../structmlx_1_1core_1_1_node_namer.html',1,'mlx::core']]], - ['nomask_5ft_28',['nomask_t',['../kernels_2gemv__masked_8h.html#a1480c8cdff1cae1462a5a71632969bca',1,'nomask_t: gemv_masked.h'],['../steel__gemm__masked_8h.html#a1480c8cdff1cae1462a5a71632969bca',1,'nomask_t: steel_gemm_masked.h']]], - ['none_29',['None',['../struct_none.html',1,'None'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca87a6a1927de175b71d7d0b5c11b8665c',1,'mlx::core::Scatter::None']]], - ['norm_30',['norm',['../namespacemlx_1_1core_1_1linalg.html#aba765b8e95e9a1d33d31f727a185919d',1,'mlx::core::linalg::norm(const array &a, const double ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#acaa85b4146821c268abecec2422c02d2',1,'mlx::core::linalg::norm(const array &a, const double ord, int axis, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#af1ebe0c6dcba9a1c49b5e397dddf3264',1,'mlx::core::linalg::norm(const array &a, const std::string &ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#ae8da67e4c6e073f93889f1051203cd9e',1,'mlx::core::linalg::norm(const array &a, const std::string &ord, int axis, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#a229018071d5602e38d6248230f334a10',1,'mlx::core::linalg::norm(const array &a, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#a44250cff34238f01471fd61e76036f03',1,'mlx::core::linalg::norm(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['normal_31',['normal',['../namespacemlx_1_1core_1_1random.html#aa3977269b77f66c6397c7c72f873d17a',1,'mlx::core::random::normal(const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa3516ace3ebc5e80ca73fb8f50df436f',1,'mlx::core::random::normal(const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a75ecf88e36a4013ecda18a91cb60befb',1,'mlx::core::random::normal(const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a7723a27a0093a1f51ca31d26c1d061c8',1,'mlx::core::random::normal(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['normalize_5faxis_32',['normalize_axis',['../namespacemlx_1_1core.html#a0181b5d72bf3d34448dabc70f7ff858d',1,'mlx::core']]], - ['not_5fequal_33',['not_equal',['../group__ops.html#ga28f22c5d2c399eee53be7b3facc11103',1,'mlx::core']]], - ['notequal_34',['NotEqual',['../structmlx_1_1core_1_1detail_1_1_not_equal.html',1,'mlx::core::detail::NotEqual'],['../classmlx_1_1core_1_1_not_equal.html',1,'mlx::core::NotEqual'],['../struct_not_equal.html',1,'NotEqual'],['../classmlx_1_1core_1_1_not_equal.html#ac568397bd17b5d9f25ad1a0ebadedbb9',1,'mlx::core::NotEqual::NotEqual()']]], - ['notify_5fnew_5ftask_35',['notify_new_task',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#ae8aa34a9be8bc73508dd500000421173',1,'mlx::core::scheduler::Scheduler::notify_new_task()'],['../namespacemlx_1_1core_1_1scheduler.html#a6b7289e33cef665178fe614aac75c1b2',1,'mlx::core::scheduler::notify_new_task()']]], - ['notify_5ftask_5fcompletion_36',['notify_task_completion',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#abbb2b1c2f8bae2b9c7cc51db65f18a3b',1,'mlx::core::scheduler::Scheduler::notify_task_completion()'],['../namespacemlx_1_1core_1_1scheduler.html#a1d06ffdbab36790b78deb6e34adc737f',1,'mlx::core::scheduler::notify_task_completion()']]], - ['num_5fthreads_37',['num_threads',['../namespacepocketfft_1_1detail_1_1threading.html#af5432c2e25aed679a73fe7b29534c833',1,'pocketfft::detail::threading']]], - ['number_38',['number',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2dab1bc248a7ff2b2e95569f56de68615df',1,'mlx::core::Dtype::number'],['../namespacemlx_1_1core.html#a069c0aab6b36aef34419534ec4a4310d',1,'mlx::core::number']]], - ['number_5fof_5felements_39',['number_of_elements',['../group__ops.html#ga6d5f5f72362488b956cdc4615ef6c636',1,'mlx::core']]], - ['numberofelements_40',['NumberOfElements',['../classmlx_1_1core_1_1_number_of_elements.html',1,'mlx::core::NumberOfElements'],['../classmlx_1_1core_1_1_number_of_elements.html#ac64d7c40ae29d687f8b7d2fa33e13b06',1,'mlx::core::NumberOfElements::NumberOfElements()']]] -]; diff --git a/docs/build/html/search/all_f.js b/docs/build/html/search/all_f.js deleted file mode 100644 index 16235aba..00000000 --- a/docs/build/html/search/all_f.js +++ /dev/null @@ -1,59 +0,0 @@ -var searchData= -[ - ['o_0',['O',['../struct_m_l_x_conv_params.html#ad55ff586d30072d8154865f9dfe92d97',1,'MLXConvParams']]], - ['offset_1',['offset',['../structlooped__elem__to__loc.html#a11ef1389c9224e9117fd6374d740e0e0',1,'looped_elem_to_loc::offset'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#a7aebc0b0656e3a55d0dbca27a57d600e',1,'looped_elem_to_loc< 1, offset_t >::offset']]], - ['offset_5fneg_5fidx_2',['offset_neg_idx',['../kernels_2indexing_8h.html#ab41167dc537c06fbdb4df100972393df',1,'indexing.h']]], - ['ofs_3',['ofs',['../classpocketfft_1_1detail_1_1simple__iter.html#ab59481ad9c8f04addb907c3ebb89f8fa',1,'pocketfft::detail::simple_iter::ofs()'],['../classpocketfft_1_1detail_1_1rev__iter.html#a78c3b4ad19edf9d20cab40ad109e9dd1',1,'pocketfft::detail::rev_iter::ofs()']]], - ['ones_4',['ones',['../group__ops.html#ga54eeed455321a54c8e72e16552a978f2',1,'mlx::core::ones(const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga6cf4b5e8580e4436302c519d05897dab',1,'mlx::core::ones(const std::vector< int > &shape, StreamOrDevice s={})']]], - ['ones_5flike_5',['ones_like',['../group__ops.html#ga94f8d3b1906fee99da9cbe39f7be7d42',1,'mlx::core']]], - ['oofs_6',['oofs',['../classpocketfft_1_1detail_1_1multi__iter.html#aae63e67caac095d474ddd32daa5ffa34',1,'pocketfft::detail::multi_iter::oofs(size_t i) const'],['../classpocketfft_1_1detail_1_1multi__iter.html#a9236047e7419e5d21379cbf95eb3a78e',1,'pocketfft::detail::multi_iter::oofs(size_t j, size_t i) const']]], - ['op_7',['Op',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d',1,'mlx::core::BitwiseBinary']]], - ['op_8',['op',['../structmlx_1_1core_1_1_default_strided_reduce.html#ac871f55a7ddd205574974cb4492a240b',1,'mlx::core::DefaultStridedReduce::op'],['../structmlx_1_1core_1_1_default_contiguous_reduce.html#a1928f07db988715cc177999e386f4830',1,'mlx::core::DefaultContiguousReduce::op'],['../common_2binary_8h.html#a70228731d29946574b238d21fb4b360c',1,'op: binary.h']]], - ['operations_9',['Core array operations',['../group__ops.html',1,'']]], - ['operator_20bool_10',['operator bool',['../struct___no_mask.html#ad3723c1e70e46beefd283ce6317416cb',1,'_NoMask::operator bool()'],['../struct___no_mask.html#aafbf8a3201e1cc1abf74dd1f1b7272cd',1,'_NoMask::operator bool() const threadgroup'],['../struct___no_mask.html#a73e9612a619885cbc97cbd8f40df71e7',1,'_NoMask::operator bool() const device'],['../struct___no_mask.html#a4bf336d472bc677028250f76b9cdc08c',1,'_NoMask::operator bool() const constant'],['../struct___no_mask.html#ad3723c1e70e46beefd283ce6317416cb',1,'_NoMask::operator bool()'],['../struct___no_mask.html#aafbf8a3201e1cc1abf74dd1f1b7272cd',1,'_NoMask::operator bool() const threadgroup'],['../struct___no_mask.html#a73e9612a619885cbc97cbd8f40df71e7',1,'_NoMask::operator bool() const device'],['../struct___no_mask.html#a4bf336d472bc677028250f76b9cdc08c',1,'_NoMask::operator bool() const constant']]], - ['operator_20dtype_11',['operator Dtype',['../structmlx_1_1core_1_1_type_to_dtype.html#aefdd0fd6a5bbf0197a3996ccd4adea13',1,'mlx::core::TypeToDtype']]], - ['operator_20float_12',['operator float',['../structmlx_1_1core_1_1___m_l_x___b_float16.html#aaae72e5340ce91325f1925be36ba46cb',1,'mlx::core::_MLX_BFloat16::operator float()'],['../structmlx_1_1core_1_1complex128__t.html#a3e2faf180c0b785646a0e4296f709a5e',1,'mlx::core::complex128_t::operator float()'],['../structmlx_1_1core_1_1complex64__t.html#a90d224dd37308345086bb9cc882ef6fc',1,'mlx::core::complex64_t::operator float()'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a363de5054f3673bddc90293fc3c9bb99',1,'mlx::core::_MLX_Float16::operator float()']]], - ['operator_20t_13',['operator T',['../struct___m_l_x___b_float16.html#aa7dfefdf0d15e102d2b8258c9ab01836',1,'_MLX_BFloat16::operator T() const thread'],['../struct___m_l_x___b_float16.html#a2546a8afa77e14ed5b3c5da79a281260',1,'_MLX_BFloat16::operator T() const threadgroup'],['../struct___m_l_x___b_float16.html#a1d523f87740fcb852db6ab57896c245a',1,'_MLX_BFloat16::operator T() const device'],['../struct___m_l_x___b_float16.html#a95acd29283024d7093a0bc58c9468a0a',1,'_MLX_BFloat16::operator T() const constant'],['../structcomplex64__t.html#a70e9b16031eeaff3baa601f400023fcd',1,'complex64_t::operator T() const thread'],['../structcomplex64__t.html#a4f3beea7ab6001189b782a74d1746b67',1,'complex64_t::operator T() const threadgroup'],['../structcomplex64__t.html#a9f4f7eca89ffe6c8d126a4145df6d9f2',1,'complex64_t::operator T() const device'],['../structcomplex64__t.html#ac33e2e5263fec76a4fb4418c6e1d8d14',1,'complex64_t::operator T() const constant']]], - ['operator_20val_14',['operator Val',['../structmlx_1_1core_1_1_dtype.html#a3b3bc059be5836476da3cb88a4f5e9fd',1,'mlx::core::Dtype']]], - ['operator_21_3d_15',['operator!=',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a971aa511ab2e7ae1caae09556643a0bd',1,'mlx::core::array::ArrayIterator::operator!='],['../backend_2metal_2kernels_2bf16_8h.html#afc6e4fc5589bbf30f978f34868dd4e55',1,'operator!=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a6baa722c22d66c7510786bb275cb8cc2',1,'operator!=(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa8d9f01582a0a9f01a666d110c74db2a',1,'operator!=(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa504a474ab6e00ebe2b1b7ed2f7d1ffb',1,'operator!=(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abf5f3040227f021a5b84cf2eda248b2f',1,'operator!=(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a347c9bbf816bad2e9e5e91aa448f8b65',1,'operator!=(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a33ea086b561c652f25833a5e1ded34dd',1,'operator!=(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2bbdcece13148826d3fe33af727bb79b',1,'operator!=(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aeb1efa47c5f22cc0b35d49ccce73c406',1,'operator!=(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa6b99cde403405df1865c989e4ce845a',1,'operator!=(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a204d13a881ae8d337f6efbb98673790c',1,'operator!=(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3602117b4c61d5cd4fd72fb8e5f68bd6',1,'operator!=(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2721c088adfc9d73cde442d6badd2a6c',1,'operator!=(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a94d00a1b7f8a4717ab3f26f45e4da655',1,'mlx::core::operator!=(const Device &lhs, const Device &rhs)'],['../group__ops.html#ga0ac483d85f23252ca8757e9926d5a3c5',1,'mlx::core::operator!=(const array &a, const array &b)'],['../group__ops.html#ga3fecba9f3cb9a19afd8ca492cf509ce0',1,'mlx::core::operator!=(T a, const array &b)'],['../group__ops.html#gaebbf1cfde388c7480159a03c92c9a385',1,'mlx::core::operator!=(const array &a, T b)'],['../namespacemlx_1_1core.html#a164f109bc19c927b2b3bcc47a5021419',1,'mlx::core::operator!=(const Stream &lhs, const Stream &rhs)'],['../namespacemlx_1_1core.html#ad2f9e1c230ec35d5c406dd616e8f4dea',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af5899b4d5644682cb0ac2a488f630d55',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a72ac8edd190601d7a46782582cedecd8',1,'mlx::core::operator!=(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a8084162ba2dd3f9b89195d2bebc3fbb0',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a514263e63f6825b490203ca586864687',1,'mlx::core::operator!=(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a1c482bb3d9f9d4c62dee5865892c1f96',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a0030fe7ad09837c670cdfb7d51279519',1,'mlx::core::operator!=(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ade3791bc723b8f10fbab22eadb0f705a',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ad78c664f242cd36247c13868547e3dd4',1,'mlx::core::operator!=(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab0743a1a1dcb92d40f41ca42d36f242c',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ae7a0f810e546a166c7d05849b5d41f30',1,'mlx::core::operator!=(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a676a40637a563f013c725d24fa33fdc8',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a9fcb662b1561e4136bac0106cfb63b6c',1,'mlx::core::operator!=(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abcca7fd43590c4347e0f5df8f134030c',1,'mlx::core::operator!=(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af3ede3688a2e3b3ba8cb2da180ffe151',1,'mlx::core::operator!=(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a54f48469fabd1414bef5097bcded0002',1,'mlx::core::operator!=(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af8c648e892cbc6973de535aa17dc2cfe',1,'mlx::core::operator!=(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#abc855e1c0584b64d7d995e33211361ab',1,'mlx::core::operator!=(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad3684d660d18a54505c759ab286bd936',1,'mlx::core::operator!=(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a8afdda14b14262ab5ce0a00c7745d7e8',1,'mlx::core::operator!=(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7ccc479be236f2bf3f7725729c5ba201',1,'mlx::core::operator!=(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a26a721b8111fce3a1dec9bf724034cd4',1,'mlx::core::operator!=(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad5f8c221a53a89e8095aa39fd1f61867',1,'mlx::core::operator!=(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a017b52ecf30b33da4aa8da35ccc43220',1,'mlx::core::operator!=(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a43c10ca5fb05ee7d0ee63ba56f8a08a3',1,'mlx::core::operator!=(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a81284b6ac737f91a8d1ffbbbbf938fe5',1,'mlx::core::operator!=(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_25_16',['operator%',['../backend_2metal_2kernels_2complex_8h.html#aaf53122a07c8eca858b5a8e38ae280e0',1,'operator%(): complex.h'],['../group__ops.html#gab3bfbf82b1e4de7b00bbcf1a2255fbde',1,'mlx::core::operator%(const array &a, const array &b)'],['../group__ops.html#ga50817666f0b82afcbf4a123486af9908',1,'mlx::core::operator%(T a, const array &b)'],['../group__ops.html#ga46c01daa07433542a477d216e13a8480',1,'mlx::core::operator%(const array &a, T b)'],['../namespacemlx_1_1core.html#a8723d145dd49021bfcb8e6c99e1c91a5',1,'mlx::core::operator%(complex64_t a, complex64_t b)']]], - ['operator_26_17',['operator&',['../group__ops.html#gaf0d232de4cbfffda1e2c838f8afdf6ff',1,'mlx::core::operator&(const array &a, const array &b)'],['../namespacemlx_1_1core.html#a9ee95f97bbd69262d99d7bea3bf77631',1,'mlx::core::operator&(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0fefc3ae4f1350ebe05ec6098fd6bae3',1,'mlx::core::operator&(_MLX_BFloat16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a1e4cb758ccfe5c267baed9aeb0044834',1,'mlx::core::operator&(uint16_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab9d0f9910070231695d61de08cadb930',1,'mlx::core::operator&(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a889d401f425db79d1868aa3beea4829b',1,'mlx::core::operator&(_MLX_Float16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a76dcd1fa3c68b386bc1d1d899a68a120',1,'mlx::core::operator&(uint16_t lhs, _MLX_Float16 rhs)']]], - ['operator_26_26_18',['operator&&',['../group__ops.html#gaee1d774bb0843601d7a0a4257d616ae3',1,'mlx::core']]], - ['operator_26_3d_19',['operator&=',['../namespacemlx_1_1core.html#a60c263ef46e552c3954688869734b513',1,'mlx::core::operator&=(_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af9670fc8088339669c54c68b3a320e25',1,'mlx::core::operator&=(_MLX_BFloat16 &lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#ad1f96f0a02024f347b4c4431629407fc',1,'mlx::core::operator&=(_MLX_Float16 &lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae0540f16c4e7bd55d0e86a88495e4967',1,'mlx::core::operator&=(_MLX_Float16 &lhs, uint16_t rhs)']]], - ['operator_28_29_20',['operator()',['../structpocketfft_1_1detail_1_1_exec_c2_c.html#a4fd637f1a6d335826789af28ac089ecb',1,'pocketfft::detail::ExecC2C::operator()()'],['../structpocketfft_1_1detail_1_1_exec_hartley.html#a67c98b38d12440781053552b9a33bba1',1,'pocketfft::detail::ExecHartley::operator()()'],['../structpocketfft_1_1detail_1_1_exec_dcst.html#a67f4f56e3574c491695f8cb8a1e983d8',1,'pocketfft::detail::ExecDcst::operator()()'],['../structpocketfft_1_1detail_1_1_exec_r2_r.html#acdba1650962714e6afff51e9ca456970',1,'pocketfft::detail::ExecR2R::operator()()'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a0d657bc9a381dca1b5860b9a1b5a5702',1,'mlx::core::detail::Abs::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a564232db7d32811e2ae126c86de104f0',1,'mlx::core::detail::Abs::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a5fac7e6c8277d8706535a52820503c9d',1,'mlx::core::detail::Abs::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#af2c3723e648bd5ed2fe558cc20b7f5eb',1,'mlx::core::detail::Abs::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a57312cd8530dd0ede3b8037f9c401883',1,'mlx::core::detail::Abs::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#ab3b5e3853ed56bfbfa577d965c21112e',1,'mlx::core::detail::Abs::operator()(bool x)'],['../structmlx_1_1core_1_1detail_1_1_arc_cos.html#a04b4c9d1fc0160973aa28b1f809b9d51',1,'mlx::core::detail::ArcCos::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_cosh.html#a767d354bec863942822ee0b9b6742a88',1,'mlx::core::detail::ArcCosh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_sin.html#ac69091929815e5317308b4088f5c2f46',1,'mlx::core::detail::ArcSin::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_sinh.html#ac7bf9bac66fef917f75494b2345e6aaf',1,'mlx::core::detail::ArcSinh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_tan.html#aee87bf10c278a70ca788085d1b499afe',1,'mlx::core::detail::ArcTan::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_tan2.html#a9040b7afcdb4969924aa782fa67f03ac',1,'mlx::core::detail::ArcTan2::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_tanh.html#a601e8c52bb938eb3a616756a35419e8b',1,'mlx::core::detail::ArcTanh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a672f65e47d65e4e8d88be252bce0164b',1,'mlx::core::detail::Ceil::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a72a2cab2728fb5e1cc6329a539e5d573',1,'mlx::core::detail::Ceil::operator()(int8_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#aa34590f6a41331be92988558a90dc6fa',1,'mlx::core::detail::Ceil::operator()(int16_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#af14120f3dd98f6198ea257d75be223f7',1,'mlx::core::detail::Ceil::operator()(int32_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#af263ce7743cf7319387baba616c375b5',1,'mlx::core::detail::Ceil::operator()(int64_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a48f00affcd5c2ea1f81d821e019fec29',1,'mlx::core::detail::Ceil::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#ad4d24a44e8a328948393701dacb0ceac',1,'mlx::core::detail::Ceil::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a70da19b5c9c69f04b9f196bdf266f93c',1,'mlx::core::detail::Ceil::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#af0e7e806b73c664ada837476f9d4d43b',1,'mlx::core::detail::Ceil::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#acc1bfc84a9b91f6e9764234cbe3b9687',1,'mlx::core::detail::Ceil::operator()(bool x)'],['../structmlx_1_1core_1_1detail_1_1_conjugate.html#a7e662d05c6998bd6ced8ad9c187324a5',1,'mlx::core::detail::Conjugate::operator()()'],['../structmlx_1_1core_1_1detail_1_1_cos.html#ad4caef573f9d9071f8945a8efed231ad',1,'mlx::core::detail::Cos::operator()()'],['../structmlx_1_1core_1_1detail_1_1_cosh.html#a63591f49776d9aadc02200036ae38317',1,'mlx::core::detail::Cosh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_erf.html#a168f8ccc6c8053b05dd1a48904ca8fd4',1,'mlx::core::detail::Erf::operator()()'],['../structmlx_1_1core_1_1detail_1_1_erf_inv.html#acc93c0511141404208b35f302f8c1fcb',1,'mlx::core::detail::ErfInv::operator()()'],['../structmlx_1_1core_1_1detail_1_1_exp.html#a0846300cee28315e5b42f74acafbd1a1',1,'mlx::core::detail::Exp::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_exp.html#af247c0d19d59f3310fd0a081eb92cf8b',1,'mlx::core::detail::Exp::operator()(complex64_t x)'],['../structmlx_1_1core_1_1detail_1_1_expm1.html#abf7e61b8387521e9d44334ce88d833a0',1,'mlx::core::detail::Expm1::operator()()'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a16c13cfe736098bffc81d655e172294a',1,'mlx::core::detail::Floor::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a9b6c4c34b6594b8c413abe31f34a73df',1,'mlx::core::detail::Floor::operator()(int8_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#aca4c71204b3ceeca6329f7ea2b041f4c',1,'mlx::core::detail::Floor::operator()(int16_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a3c3ab9e00d1fbd124802517e8c35fe02',1,'mlx::core::detail::Floor::operator()(int32_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a4b5954ffc59c741dd7b86bafda69d5cc',1,'mlx::core::detail::Floor::operator()(int64_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a2e33b10bd5b04551054a87c601440bc7',1,'mlx::core::detail::Floor::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a2500f971100919a694f78669a5e4f438',1,'mlx::core::detail::Floor::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a23df818301d68389e6e12f5a9ec1fbd7',1,'mlx::core::detail::Floor::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#ac988b4f265cf46c68609c9c8787c15fb',1,'mlx::core::detail::Floor::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a7f936e3fd53772bc189d845c73b53202',1,'mlx::core::detail::Floor::operator()(bool x)'],['../structmlx_1_1core_1_1detail_1_1_log.html#a0012a4e1744dbe9a28c3b5652be6e1c6',1,'mlx::core::detail::Log::operator()()'],['../structmlx_1_1core_1_1detail_1_1_log2.html#a467bd4c995674721ff5fff6df33aead8',1,'mlx::core::detail::Log2::operator()()'],['../structmlx_1_1core_1_1detail_1_1_log10.html#a2633c5b772bbc9f8b66cffd4a3e01a3f',1,'mlx::core::detail::Log10::operator()()'],['../structmlx_1_1core_1_1detail_1_1_log1p.html#a3220de8c6090c44aa2070b1fbb2dc340',1,'mlx::core::detail::Log1p::operator()()'],['../structmlx_1_1core_1_1detail_1_1_logical_not.html#a79799668ea5c364b0b4e2bc330e76253',1,'mlx::core::detail::LogicalNot::operator()()'],['../structmlx_1_1core_1_1detail_1_1_negative.html#afc4595c70ef7196df374cf4b2cc5e526',1,'mlx::core::detail::Negative::operator()()'],['../structmlx_1_1core_1_1detail_1_1_round.html#a653f29c059bbfa6192378732a8a23351',1,'mlx::core::detail::Round::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_round.html#a82a984f13568051009e257fe85227da6',1,'mlx::core::detail::Round::operator()(complex64_t x)'],['../structmlx_1_1core_1_1detail_1_1_sigmoid.html#a64b72561bfaf758632167f00648f4c89',1,'mlx::core::detail::Sigmoid::operator()()'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a64ed5013cee7ff18c7fe70bc04737e7b',1,'mlx::core::detail::Sign::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a7106ed1f2f98a365fcb3e6ee39084748',1,'mlx::core::detail::Sign::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a7163e8c068dcc460600ed04014dc9945',1,'mlx::core::detail::Sign::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#ae8f56c7134721c846240830169424c22',1,'mlx::core::detail::Sign::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a10ae519e9a74a327fc72c410e9ab2936',1,'mlx::core::detail::Sign::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a91be4e273f6c7ea5d44cfab380b77603',1,'mlx::core::detail::Sign::operator()(complex64_t x)'],['../structmlx_1_1core_1_1detail_1_1_sin.html#ae95671816529cc2188389af37a2f1a13',1,'mlx::core::detail::Sin::operator()()'],['../structmlx_1_1core_1_1detail_1_1_sinh.html#a9663ddf0fa4c0003576b48f3d5385f00',1,'mlx::core::detail::Sinh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_square.html#a54e9e3c0d0896e142289e8282eab1099',1,'mlx::core::detail::Square::operator()()'],['../structmlx_1_1core_1_1detail_1_1_sqrt.html#aa5a4830b3ef7efab20ea88a110667efd',1,'mlx::core::detail::Sqrt::operator()()'],['../structmlx_1_1core_1_1detail_1_1_rsqrt.html#a9af247be16bab83243038aac54446b79',1,'mlx::core::detail::Rsqrt::operator()()'],['../structmlx_1_1core_1_1detail_1_1_tan.html#aba397cd7ac05bbe06dfa9e3a64bdb05f',1,'mlx::core::detail::Tan::operator()()'],['../structmlx_1_1core_1_1detail_1_1_tanh.html#a1749ba1edfd53095ed7d45c0e53bab61',1,'mlx::core::detail::Tanh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_add.html#a2d6011c35768b5fcd2bb75747b944353',1,'mlx::core::detail::Add::operator()()'],['../structmlx_1_1core_1_1detail_1_1_divide.html#a5e0d22e2084c4ca81bec0d457a46c662',1,'mlx::core::detail::Divide::operator()()'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a3bdaf1095ad883ecc0fecc455f02cbf3',1,'mlx::core::detail::Remainder::operator()(T numerator, T denominator)'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a52c3a2ba86fccb24d37d218ae8328954',1,'mlx::core::detail::Remainder::operator()(T numerator, T denominator)'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a0b0dd6ef5b08585fdf8355770da8d747',1,'mlx::core::detail::Remainder::operator()(T numerator, T denominator)'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a68fe542084fb94d9a5abd740fe07832b',1,'mlx::core::detail::Remainder::operator()(complex64_t numerator, complex64_t denominator)'],['../structmlx_1_1core_1_1detail_1_1_equal.html#a2994cf1884e7126e76d0a20b215fe3ab',1,'mlx::core::detail::Equal::operator()()'],['../structmlx_1_1core_1_1detail_1_1_na_n_equal.html#a073b20b0d8d41ec8364b7c477421b9bf',1,'mlx::core::detail::NaNEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_greater.html#aa3844c2bae3c7a981739f642aa0dd094',1,'mlx::core::detail::Greater::operator()()'],['../structmlx_1_1core_1_1detail_1_1_greater_equal.html#a3b005f85522ad0e4b57044eed930ac30',1,'mlx::core::detail::GreaterEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_less.html#a0b4032dff1ad2b387745cb000aabdcbb',1,'mlx::core::detail::Less::operator()()'],['../structmlx_1_1core_1_1detail_1_1_less_equal.html#a31e70f8830a07557697541301555a7a7',1,'mlx::core::detail::LessEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_maximum.html#a3eb37abec8426ebc42b8c685075c523a',1,'mlx::core::detail::Maximum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_maximum.html#af99345c7c8bc95ccab1b22c0792ac6fd',1,'mlx::core::detail::Maximum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_minimum.html#afca0861556416a8547dd8574528feb69',1,'mlx::core::detail::Minimum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_minimum.html#a64b2eecfbc56aaef7deb939423bac3f8',1,'mlx::core::detail::Minimum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_log_add_exp.html#ad1663fd809acaa4038f90666436599e5',1,'mlx::core::detail::LogAddExp::operator()()'],['../structmlx_1_1core_1_1detail_1_1_multiply.html#a898b090966b047723513224b8d3b22f1',1,'mlx::core::detail::Multiply::operator()()'],['../structmlx_1_1core_1_1detail_1_1_not_equal.html#a23d662b5fd968dc17d3bee2595b5f99d',1,'mlx::core::detail::NotEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_power.html#a2c047e1b488e6525447a224975a75db8',1,'mlx::core::detail::Power::operator()(T base, T exp)'],['../structmlx_1_1core_1_1detail_1_1_power.html#a9967db24b8f67d54b6aa3810e274f28c',1,'mlx::core::detail::Power::operator()(T base, T exp)'],['../structmlx_1_1core_1_1detail_1_1_subtract.html#a72ef05830615a2d5d9662926ed82672a',1,'mlx::core::detail::Subtract::operator()()'],['../structmlx_1_1core_1_1detail_1_1_logical_and.html#a046536c1f2f9367983f052a213d7b7d8',1,'mlx::core::detail::LogicalAnd::operator()()'],['../structmlx_1_1core_1_1detail_1_1_logical_or.html#afb134dbab79307d4ba597843c61d0b1a',1,'mlx::core::detail::LogicalOr::operator()()'],['../structmlx_1_1core_1_1detail_1_1_select.html#a930f9da2e6b3453e04f21382435a2cfb',1,'mlx::core::detail::Select::operator()()'],['../structmlx_1_1core_1_1detail_1_1_bitwise_and.html#ae0bed77f95fe2b2f0b594addddd04700',1,'mlx::core::detail::BitwiseAnd::operator()()'],['../structmlx_1_1core_1_1detail_1_1_bitwise_or.html#a5ab05734c5000b454975de6647a08d20',1,'mlx::core::detail::BitwiseOr::operator()()'],['../structmlx_1_1core_1_1detail_1_1_bitwise_xor.html#a0989e3bcd064ae06c33f660696a869a0',1,'mlx::core::detail::BitwiseXor::operator()()'],['../structmlx_1_1core_1_1detail_1_1_left_shift.html#a9385f580830a6ad163dd9bb8c4905e7a',1,'mlx::core::detail::LeftShift::operator()()'],['../structmlx_1_1core_1_1detail_1_1_right_shift.html#a154528ba50e89a4c532a181f135b1620',1,'mlx::core::detail::RightShift::operator()()'],['../structmlx_1_1core_1_1_default_strided_reduce.html#a024682ab93b84e544a07e3a9c3c51fba',1,'mlx::core::DefaultStridedReduce::operator()()'],['../structmlx_1_1core_1_1_default_contiguous_reduce.html#a08144c7a3cdf10af5e47f4575da3694f',1,'mlx::core::DefaultContiguousReduce::operator()()'],['../struct_add.html#ac5c66b63d63a222d3ae0ab8cc7c90eb5',1,'Add::operator()()'],['../struct_floor_divide.html#a2b328e4d768e718fa439f955c524666a',1,'FloorDivide::operator()(T x, T y)'],['../struct_floor_divide.html#afc16a2b2a745225e0bc95640f3fc0219',1,'FloorDivide::operator()(float x, float y)'],['../struct_floor_divide.html#ae91719a15f7e643d552129f476089c6a',1,'FloorDivide::operator()(half x, half y)'],['../struct_floor_divide.html#a4aa9f858626583e02bd79f747229bbca',1,'FloorDivide::operator()(bfloat16_t x, bfloat16_t y)'],['../struct_divide.html#a0a16b9194abc2ab7c61129f81a9bbb3d',1,'Divide::operator()()'],['../struct_remainder.html#ab7875512ff4341c580c6dc372e64fc58',1,'Remainder::operator()(T x, T y)'],['../struct_remainder.html#a18150b5f4425e30b95ffabc6bb25cede',1,'Remainder::operator()(T x, T y)'],['../struct_remainder.html#ab3b75f54b56fd357c9755daadb2cafc2',1,'Remainder::operator()(T x, T y)'],['../struct_remainder.html#ae918ce0e246937d4fe04e2ea36e4b2c1',1,'Remainder::operator()(complex64_t x, complex64_t y)'],['../struct_equal.html#aa498087080900d4428ba428a6496a769',1,'Equal::operator()()'],['../struct_na_n_equal.html#a00220898e02db656d21dde9e9354a8dc',1,'NaNEqual::operator()(T x, T y)'],['../struct_na_n_equal.html#a6185e4554dce5b4659d21673c576be51',1,'NaNEqual::operator()(complex64_t x, complex64_t y)'],['../struct_greater.html#a98d7d8ee360cd0f469c6eb9a017560f5',1,'Greater::operator()()'],['../struct_greater_equal.html#ae69a3bccc567a46506cf0d296294ce80',1,'GreaterEqual::operator()()'],['../struct_less.html#a5ee0b31b2d9123dc4504f2979a5854d3',1,'Less::operator()()'],['../struct_less_equal.html#ae9f9a1b2eae548977139704f0044acfe',1,'LessEqual::operator()()'],['../struct_log_add_exp.html#ab32417f18e8ff68c15f78aceeb624edf',1,'LogAddExp::operator()()'],['../struct_maximum.html#a3ea0f42bc4cd80b68a98f189f9fa859c',1,'Maximum::operator()(T x, T y)'],['../struct_maximum.html#a0bc8fadc87f2c49fc440d625bfc97ca6',1,'Maximum::operator()(T x, T y)'],['../struct_maximum.html#a907e8793900be5927625377dab199644',1,'Maximum::operator()(complex64_t x, complex64_t y)'],['../struct_minimum.html#aa6113dfac3986c0f571fa53f65c5330e',1,'Minimum::operator()(T x, T y)'],['../struct_minimum.html#a0c939921de87ab9c6959238aac81a059',1,'Minimum::operator()(T x, T y)'],['../struct_minimum.html#a800fba087280f79c2f7e9aff75bed093',1,'Minimum::operator()(complex64_t x, complex64_t y)'],['../struct_multiply.html#a1327fc5a0713931afe997b0d4d2988e0',1,'Multiply::operator()()'],['../struct_not_equal.html#af008d73a5d9cde0b8309b7e8ee7438b2',1,'NotEqual::operator()(T x, T y)'],['../struct_not_equal.html#a14de494cea4e4869351202cad1149f17',1,'NotEqual::operator()(complex64_t x, complex64_t y)'],['../struct_power.html#a2b6df2a9e48155ff9734caca8504a79f',1,'Power::operator()(T base, T exp)'],['../struct_power.html#a36829163d42973034a1f8a7ecc57a1de',1,'Power::operator()(T base, T exp)'],['../struct_power.html#a27cdfb313c4e82b63bdcdaee923cbbef',1,'Power::operator()(complex64_t x, complex64_t y)'],['../struct_subtract.html#ae0856cd8d449074ca287baa7e460f68a',1,'Subtract::operator()()'],['../struct_logical_and.html#a8bc6bdabc0ea0678a46e2cf6217cb3a6',1,'LogicalAnd::operator()()'],['../struct_logical_or.html#ade6a931324a604a3119d2220d6f5460d',1,'LogicalOr::operator()()'],['../struct_bitwise_and.html#afb48af090b01dd0200963bc12d842e36',1,'BitwiseAnd::operator()()'],['../struct_bitwise_or.html#a41f847463daafa99ee56f4035578390f',1,'BitwiseOr::operator()()'],['../struct_bitwise_xor.html#a3a3e8a56caab739d40262d9349c9c485',1,'BitwiseXor::operator()()'],['../struct_left_shift.html#aa729747784c38bfdbba34794fcf5175b',1,'LeftShift::operator()()'],['../struct_right_shift.html#a2cc59b400c68342b0e43050431323c17',1,'RightShift::operator()()'],['../struct_arc_tan2.html#ac9b7729753e13be293ab700231d061ac',1,'ArcTan2::operator()()'],['../struct_div_mod.html#a8b5758f2ea18d4c903b462331b25abfe',1,'DivMod::operator()()'],['../struct_cum_sum.html#aacc713dde086ef04b54abb675131468e',1,'CumSum::operator()()'],['../struct_cum_prod.html#af1ffa2672332ca27e287c3ba59c73e1e',1,'CumProd::operator()()'],['../struct_cum_prod_3_01bool_01_4.html#ad634be0b139d10ce6d21332eef0d936b',1,'CumProd< bool >::operator()()'],['../struct_cum_max.html#a781b9b955c5412466da6af6c70d73c06',1,'CumMax::operator()()'],['../struct_cum_min.html#ae0b8c3761e04fa538d304ca842281a66',1,'CumMin::operator()()'],['../struct_less_than.html#a2798eb377b411c93a4ed30cf35caade2',1,'LessThan::operator()()'],['../struct_select.html#adb51692aae3038de07dd745891bf9848',1,'Select::operator()()'],['../struct_abs.html#a9e7481dfcc162509769852026ff4a344',1,'Abs::operator()(T x)'],['../struct_abs.html#a0ca113fd036151c443df3f83cc667f28',1,'Abs::operator()(uint8_t x)'],['../struct_abs.html#adaeab32a7e377dc990077ab15f3dc4c2',1,'Abs::operator()(uint16_t x)'],['../struct_abs.html#a99d2a2f37a6cddd3168b0224f2a9b963',1,'Abs::operator()(uint32_t x)'],['../struct_abs.html#ac9cbc02422d930479303f240a7ea6c71',1,'Abs::operator()(uint64_t x)'],['../struct_abs.html#ac30835b27784d451bd2e4524c8eb9e11',1,'Abs::operator()(bool x)'],['../struct_abs.html#ab82917d6b30a2c579e7eb879d305c5fc',1,'Abs::operator()(complex64_t x)'],['../struct_arc_cos.html#a5553cecf58511e24e76ac97f2d90b9ac',1,'ArcCos::operator()()'],['../struct_arc_cosh.html#a5c9e7712c14c97298b23ec48e19abc58',1,'ArcCosh::operator()()'],['../struct_arc_sin.html#a0343872f2da93bae2bb0baadf49da022',1,'ArcSin::operator()()'],['../struct_arc_sinh.html#a3066fb7dc7c3180100fb55ff94af6a7a',1,'ArcSinh::operator()()'],['../struct_arc_tan.html#af3a0aec6acec8ae8f5e4c4d5cf8c91ba',1,'ArcTan::operator()()'],['../struct_arc_tanh.html#a37dc3e01ec2830de7e82ed6c6363ac88',1,'ArcTanh::operator()()'],['../struct_ceil.html#a5e2a4ef1b012f5d352064489156e5e44',1,'Ceil::operator()(T x)'],['../struct_ceil.html#a455cd8083ba859993077f2e078ae165b',1,'Ceil::operator()(int8_t x)'],['../struct_ceil.html#a2acb61bc658c7a216795e7f76ebcf98a',1,'Ceil::operator()(int16_t x)'],['../struct_ceil.html#aef8c37f7a8ee3fc80700d605a09891fb',1,'Ceil::operator()(int32_t x)'],['../struct_ceil.html#a93d0110511ad5dd200e12d37a3d7d6e3',1,'Ceil::operator()(int64_t x)'],['../struct_ceil.html#aa335b745fa26e0f443cdb36298105484',1,'Ceil::operator()(uint8_t x)'],['../struct_ceil.html#ade17e13b7f30f5c590fae1581a2013ac',1,'Ceil::operator()(uint16_t x)'],['../struct_ceil.html#a411c75cc35cdc088402e176a1defd22d',1,'Ceil::operator()(uint32_t x)'],['../struct_ceil.html#a9ac660ca29eef7a7429fceb7b917a68a',1,'Ceil::operator()(uint64_t x)'],['../struct_ceil.html#a40de367e62f06ebd7e1330afa93a9ad9',1,'Ceil::operator()(bool x)'],['../struct_cos.html#ae222f8710f6b8254c471ebd475aa5bda',1,'Cos::operator()(T x)'],['../struct_cos.html#a5f26feb1dcc4bec5f59a9ff511c5b163',1,'Cos::operator()(complex64_t x)'],['../struct_cosh.html#a5847ebeebb236fdc926798ddc16475ba',1,'Cosh::operator()(T x)'],['../struct_cosh.html#aefdd91298dac16d528d29ee47e2f7252',1,'Cosh::operator()(complex64_t x)'],['../struct_conjugate.html#acb0a2694285f1f57c7654b371ce8cbd8',1,'Conjugate::operator()()'],['../struct_erf.html#a80719402ad7f7d418859a6677d7b604d',1,'Erf::operator()()'],['../struct_erf_inv.html#afbf3668d1a512e889f093a0bc7673309',1,'ErfInv::operator()()'],['../struct_exp.html#a5ef395868e055348c0802fd5fe45669c',1,'Exp::operator()(T x)'],['../struct_exp.html#a2b341ac400c4d145397950eb60734336',1,'Exp::operator()(complex64_t x)'],['../struct_expm1.html#a4b834d42cf0b84daf03fec62c222091a',1,'Expm1::operator()()'],['../struct_floor.html#ace3551f28429081e9f3a3dab0c84212b',1,'Floor::operator()(T x)'],['../struct_floor.html#a10d7fd05b4c224c9f135451246d13014',1,'Floor::operator()(int8_t x)'],['../struct_floor.html#a2865a04a492e3590302f4bd3215a10d7',1,'Floor::operator()(int16_t x)'],['../struct_floor.html#a41012343ff0463ec44b4d06196f41182',1,'Floor::operator()(int32_t x)'],['../struct_floor.html#aae3181d15856796aa0628cf30c92aa2e',1,'Floor::operator()(int64_t x)'],['../struct_floor.html#ac6cf38d82c8e270911afdca4c69ad51b',1,'Floor::operator()(uint8_t x)'],['../struct_floor.html#a78969b9e2b53ae248e72a67259eea5d8',1,'Floor::operator()(uint16_t x)'],['../struct_floor.html#a959009320ed622ed45b39becab1d5b98',1,'Floor::operator()(uint32_t x)'],['../struct_floor.html#a7d04b83c3345cd867315cae2d7ff68ab',1,'Floor::operator()(uint64_t x)'],['../struct_floor.html#abea845fe5e8e6b93bd4bca8717337e0b',1,'Floor::operator()(bool x)'],['../struct_log.html#a32a383cb6be06e616a75f23bf49089c3',1,'Log::operator()()'],['../struct_log2.html#ac1e067ecdcbdbffb6106e789c2b98b64',1,'Log2::operator()()'],['../struct_log10.html#ac596a74c1642a00f3eced07ee3334122',1,'Log10::operator()()'],['../struct_log1p.html#a4464c6e7bdbe55ffd7d961c695cd13ce',1,'Log1p::operator()()'],['../struct_logical_not.html#a8a620bac957ab8c09ac85adfddd96708',1,'LogicalNot::operator()()'],['../struct_negative.html#af6879b374314a559faa321e8cce3d710',1,'Negative::operator()()'],['../struct_round.html#aa06a0195867e2ceb679c403b6909a1c4',1,'Round::operator()(T x)'],['../struct_round.html#ad3a08f2276ff1033900bc0a7da812655',1,'Round::operator()(complex64_t x)'],['../struct_sigmoid.html#a75a24cd75cb4d4c9a072811b2d70ad55',1,'Sigmoid::operator()()'],['../struct_sign.html#aa3304c6b43bcad53061614b741d8403c',1,'Sign::operator()(T x)'],['../struct_sign.html#ac48992b675b8b28be1e27e1f2ec5d2f7',1,'Sign::operator()(uint32_t x)'],['../struct_sign.html#ae07a4249e1b61419a3b9ca6c337b7bb5',1,'Sign::operator()(complex64_t x)'],['../struct_sin.html#a7caf98c777521fa5d5c6ddaaa3b779fd',1,'Sin::operator()(T x)'],['../struct_sin.html#aa510cf4595b6d49065ab6b602d8fcb14',1,'Sin::operator()(complex64_t x)'],['../struct_sinh.html#a02cf32bcf560657b9ee34fb1affed8e2',1,'Sinh::operator()(T x)'],['../struct_sinh.html#a1f8ba1858d352ee68861cd6ea861af43',1,'Sinh::operator()(complex64_t x)'],['../struct_square.html#afde739fc544e45dd30964c02dca94310',1,'Square::operator()()'],['../struct_sqrt.html#ab9b16d2b9b03a1c54190f4479a56a4ad',1,'Sqrt::operator()()'],['../struct_rsqrt.html#ae16699fd829e40416436247a39233fda',1,'Rsqrt::operator()()'],['../struct_tan.html#a1e6fb8c691621c69cb9bd393de4f6e78',1,'Tan::operator()(T x)'],['../struct_tan.html#a2ef120c9f92b0d2e9cec8389eda05724',1,'Tan::operator()(complex64_t x)'],['../struct_tanh.html#adce11a7ad33226c6ecff34f46f5c45d7',1,'Tanh::operator()(T x)'],['../struct_tanh.html#aa8423b43c725bb4b88965a11e8cf20f6',1,'Tanh::operator()(complex64_t x)']]], - ['operator_2a_21',['operator*',['../structpocketfft_1_1detail_1_1cmplx.html#a26bf3d709a58f06228e502af6db8e5ac',1,'pocketfft::detail::cmplx::operator*(const T2 &other) const -> cmplx< decltype(r *other)>'],['../structpocketfft_1_1detail_1_1cmplx.html#ad9c591ef8ae976293f207937d273e9a1',1,'pocketfft::detail::cmplx::operator*(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>'],['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a153756072fda6d3e53bcca11b46a1238',1,'mlx::core::array::ArrayIterator::operator*()'],['../backend_2metal_2kernels_2bf16_8h.html#a8f06316063fc91747533105f256b55b5',1,'operator*(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7b3bce3f6f17089d87e13e91f580a581',1,'operator*(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a54ae7216b82c5cea362f6b83e1df3a9b',1,'operator*(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a852689073c17596de4fb545bc046b380',1,'operator*(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a168300bbd04d8e97c5e4218cb14ae378',1,'operator*(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a6278bd2e0e2805090b33ef666bf7f6bb',1,'operator*(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aecf703522d9ce32dfeefe1e6e903db06',1,'operator*(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7cd44d27fa9a4f13df39894c34fdb348',1,'operator*(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aee64dc1890abb6d1035361cb8c751f96',1,'operator*(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad1a559ab88dbbb4fd2c7509d2c94e55b',1,'operator*(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a495ae2d9be5d97c4c6448fc4e50a03e1',1,'operator*(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a87ab4b7a502430da664ccb8abd383058',1,'operator*(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5f997839cf49c24ab594a0dff486a7bc',1,'operator*(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a681d4fb076973f58f7dac894ec62a385',1,'operator*(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga26c33f5cdb6fc10d272acd6e208034e0',1,'mlx::core::operator*(const array &a, const array &b)'],['../group__ops.html#gac22a67f7de797b1ae59029843cbdcab6',1,'mlx::core::operator*(T a, const array &b)'],['../group__ops.html#ga6f2369ed5fae8ff9b1528670a004dde2',1,'mlx::core::operator*(const array &a, T b)'],['../namespacemlx_1_1core.html#a0cc824d6318f97f7058918ab64ddfc25',1,'mlx::core::operator*(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a81e1c727c3fc48910b030cb65a9e7afa',1,'mlx::core::operator*(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a861d948220d8f48d46c68d2ddb16a096',1,'mlx::core::operator*(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a13d16561812679b36e68185dc4b2d04d',1,'mlx::core::operator*(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a5287610200ff573730c9c92413f48881',1,'mlx::core::operator*(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a377ccc6b4ef36767abca102dca56dc10',1,'mlx::core::operator*(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a5d696b63635ce6967526d6a410f7f6b1',1,'mlx::core::operator*(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abe90e9527bfa3e1c813d41df4a2372e7',1,'mlx::core::operator*(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a5f14963c77f96bcb5a3bef5661a86ba4',1,'mlx::core::operator*(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#acfb06fe9f5fee01dbb5a2b23bccfd0d3',1,'mlx::core::operator*(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#afc9a87f1fccbac05242b91bfbb35c24d',1,'mlx::core::operator*(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0b9678af9b487900cacf6639a4693de0',1,'mlx::core::operator*(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ad5950619081389e6ed7512f38358d33d',1,'mlx::core::operator*(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a65d25d082374761c05b056e1046d1d4e',1,'mlx::core::operator*(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a759191fb984e7737f0ef529c2053ad73',1,'mlx::core::operator*(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a3a52675c3d4552b319dd9707844abdec',1,'mlx::core::operator*(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a45d67f5d80fba4d42e34c682a8d22beb',1,'mlx::core::operator*(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ad25880c67bbcbfafbe54dc16418bf736',1,'mlx::core::operator*(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a63c836e1141e07ae72cee770bad01200',1,'mlx::core::operator*(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a265a37b8ee4a97390213e9ec49693e66',1,'mlx::core::operator*(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab5a457da04dcb157a0b5172c4b2244b6',1,'mlx::core::operator*(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#aa56a8bda08be9ef3711496e216a75c95',1,'mlx::core::operator*(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af89612098dd355b1eefb841c753b36ab',1,'mlx::core::operator*(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a4552687a0637f710b5d55bb6378fcabe',1,'mlx::core::operator*(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af69db7def588d7da430434a69456e29c',1,'mlx::core::operator*(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a00af6e5095888f00791ee0ab6d993ad6',1,'mlx::core::operator*(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab48feddc1aa304383e5493923506ad7a',1,'mlx::core::operator*(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a0367b582e85162b4180e086f725e49e9',1,'mlx::core::operator*(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a45f0479526fbccdb00bc73ea7f3b7625',1,'mlx::core::operator*(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a394797646010ba9ef2a1f9b9a4b8ddd9',1,'mlx::core::operator*(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#acaaa86b59c7ceb2e092ac07f2a75225c',1,'mlx::core::operator*(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#a067d47823a322b88043cce7ce4a3ec78',1,'mlx::core::operator*(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2a_3d_22',['operator*=',['../structpocketfft_1_1detail_1_1cmplx.html#a683fd490182c9189fa2c05b1823edd93',1,'pocketfft::detail::cmplx::operator*=(T2 other)'],['../structpocketfft_1_1detail_1_1cmplx.html#a06f2c26c6fc4722e61b44da4c242ed87',1,'pocketfft::detail::cmplx::operator*=(const cmplx< T2 > &other)'],['../backend_2metal_2kernels_2bf16_8h.html#a7232b0a0e193b3c6172d6fc2578bf419',1,'operator*=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ade65ebca11e38d56408c512df89b99f4',1,'operator*=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af4348ce3425dd99d069e8fdf06e25a3c',1,'operator*=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2c3c5f793b3d957d7295d7f1faabebee',1,'operator*=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac66657077d55e94197b52b63acb50b7d',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a383165ea838cc3feeee4d9cf54aa77cc',1,'operator*=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab706af260b61f735b28464877d02137c',1,'operator*=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a979374b1dd4e0eaf602326fa901336d1',1,'operator*=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac815eec2c1b15a47b1c6ea6790e77d24',1,'operator*=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8110fae7bcc34a0de5927546b24aa935',1,'operator*=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae4acef3e7ae7dfe359422503f894e885',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adc268cdbc30500f3009f5de2b2f0f67a',1,'operator*=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a81f65b04a87a25c7eb1a751d1be9fa55',1,'operator*=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08c1f916302eb9d48c93f8b7260538fe',1,'operator*=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adc8e82b8f593b12c6d405e2250ab0f62',1,'operator*=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4611728172afea51860a77fdb06cafa0',1,'operator*=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0b8736e2ae24758b6e24ea72668df5b4',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad920df9579603f0b0ee2689eba330617',1,'operator*=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae97ab6c3ddcc2754b24f86319a5398be',1,'operator*=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3ff4ff59f411010ac8502cfabda4bd6f',1,'operator*=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abd3d82e2dec1847e97eb8fc3bab2985a',1,'operator*=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a738078eb7d5ff94ff48156a555d763a5',1,'operator*=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a435f2f4256aadb1b57fd62bb7f733cf7',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0e4377b120d6305335d296e031ee5b30',1,'operator*=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a917354f77eac26189da8a2f610a00074',1,'operator*=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af725f935bfa0405e5ff17ede3ac47283',1,'operator*=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7c56980c234a04260b8b19298085e526',1,'operator*=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab840ff9de0cdd0e9afffb8baa2a850a3',1,'operator*=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a73416a7415f3fe31525e33419e5e8aab',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a16978f4b16d954ef4d4cf0f32f6c0b94',1,'operator*=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a99aa4cc110d1c7aa3b4c8c5cbf9235b7',1,'operator*=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2179abbc91ce8763e96e39e1917bfa6e',1,'operator*=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab070ea4676d10a10ff3e9379a4068a57',1,'operator*=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0197e039d4c65bf49649a6f250c2d436',1,'operator*=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad3565cc6fd1e088d052b1108aa065851',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a711693988c437c2fb4d7da505982fe21',1,'operator*=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aeff4c28986f98c23de1df17043edb0f5',1,'operator*=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7dbf0c75df4817cb4ef8b60c417a89d0',1,'operator*=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a323a80492cd17a49e2c3dd18f8c8b5cc',1,'operator*=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adb465776d3868bda0525d632ffc4d129',1,'operator*=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a12a98d71d670b409b8065e0d61672d55',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5d00eb2ec2b0e15b2753d100694c45ae',1,'operator*=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1a2a683ff40490226eb1371fb905023d',1,'operator*=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4126fb7ed5bbb27a2332c543cf56a337',1,'operator*=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab092d9790ef20fc0386707530aee89db',1,'operator*=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abff1fd2439e31e6e64a3d2fdee3c7821',1,'operator*=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a625dcb133f1f953f263e6200399866c6',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08b6071245513e1726ec68e3b63edc53',1,'operator*=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a13aa79165ec87710e977f33fe0361e91',1,'operator*=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3796dcf819adb1ef8152f57ba63ff6b1',1,'operator*=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aaab79d0b4c9e9bdc059ace6ec58c5b00',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a0dd3893abc8986901872c8365ab1509d',1,'mlx::core::operator*=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a3cc5c154e4ad9a83ad43da8513146fdc',1,'mlx::core::operator*=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a600e77dbc72e78207b5f5dbf4b298781',1,'mlx::core::operator*=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a54833be1d44bc3adfc9ea218fc3685bd',1,'mlx::core::operator*=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_2b_23',['operator+',['../structpocketfft_1_1detail_1_1cmplx.html#a76447ef141c8732d57421749fc81b236',1,'pocketfft::detail::cmplx::operator+()'],['../structmlx_1_1core_1_1array_1_1_array_iterator.html#ae2adde594b5a4853f6bc78263a957d85',1,'mlx::core::array::ArrayIterator::operator+()'],['../backend_2metal_2kernels_2bf16_8h.html#a09c1a797eb7f43742578680899932f50',1,'operator+(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a551b970f73bb4a3b287653021d000b60',1,'operator+(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a43a225e7e548bb041f3a5d844faaf0da',1,'operator+(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8b6c3fd9d068a2159084359df8b9b449',1,'operator+(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0a5bfe15d95ba540795f4c25ebfa4f07',1,'operator+(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa415ce182fe7582d885fe633fc3527ce',1,'operator+(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a62f891b7dbba0000749cf338f594bedb',1,'operator+(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab43932322f81bf322aa1b0deeee9a987',1,'operator+(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acd15d46ea5827a2a39898ccbb8352eb8',1,'operator+(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a006763fae6e0577fc168ec9446f0f747',1,'operator+(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a12a47e8ac0be788edff57ae0a96d7830',1,'operator+(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af87dfa2122e9c76042dc41fb7f338a87',1,'operator+(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af2737d09c887ee8cd43fdeabceddbe82',1,'operator+(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#ad6af5c6c5ed4898b49758618e5aee189',1,'operator+(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga26e5a043eaaaf066d1400adac9c11d0c',1,'mlx::core::operator+(const array &a, const array &b)'],['../group__ops.html#ga7d0ec8d01e7cefa6a6b25f11876761b5',1,'mlx::core::operator+(T a, const array &b)'],['../group__ops.html#ga7cc080a4f9d4a667f2099aa0dbfefadd',1,'mlx::core::operator+(const array &a, T b)'],['../namespacemlx_1_1core.html#ac14b984970cafd8fbe24d080949515cc',1,'mlx::core::operator+(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab076069c6f0047c548a8dc29d35dd36a',1,'mlx::core::operator+(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#aab9d96b0a168f4d05146000a6212b5d8',1,'mlx::core::operator+(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ac4e6f03d7e4ae701b4eefa784f36185b',1,'mlx::core::operator+(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a4cabd600a5271b0d416c91e8d31dd9c1',1,'mlx::core::operator+(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af26df9dc279d71b7cc10892c72162b58',1,'mlx::core::operator+(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#ac3b97eecec9bd8efb313f8f201560343',1,'mlx::core::operator+(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2e3bb121cbde30c2e6d806df0d41ff59',1,'mlx::core::operator+(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ac87ecce4b44b0826e666a169ddc6f878',1,'mlx::core::operator+(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aed3d9cd32698ef0fe65b1280f103b3f5',1,'mlx::core::operator+(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a6fa13b9359cf3f575fbda5260e6e035d',1,'mlx::core::operator+(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af240a6471ff827819192808bffeb857a',1,'mlx::core::operator+(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ac25a05679f312b724c406d8b282803c9',1,'mlx::core::operator+(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a54863a54f258acf2b5c734950618e4e1',1,'mlx::core::operator+(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a9f81f5ea8909db9660197217612ee446',1,'mlx::core::operator+(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a13e26c38da0a4e332e0ae4eb0aed9cb8',1,'mlx::core::operator+(const std::complex< float > &x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a59bb13a0bb7f748c8de34415b248bc57',1,'mlx::core::operator+(const complex64_t &x, const std::complex< float > &y)'],['../namespacemlx_1_1core.html#a38a44c412c8be4c8b952d3082cc7db74',1,'mlx::core::operator+(const complex64_t &x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a011dbdbd2413e59e744cf82b05431340',1,'mlx::core::operator+(bool x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a230e3b7c479add1b171fa0aaa3a8b13c',1,'mlx::core::operator+(const complex64_t &x, bool y)'],['../namespacemlx_1_1core.html#a3a6f43c2485f0d42293184f1aecbeaee',1,'mlx::core::operator+(uint32_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a766157c5d5d00fdf3da95eb7cb2981b9',1,'mlx::core::operator+(const complex64_t &x, uint32_t y)'],['../namespacemlx_1_1core.html#a64dceec2bb03eee963a2a1bc1ac69284',1,'mlx::core::operator+(uint64_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#ae36badb78a17cd7d13663a69645fc328',1,'mlx::core::operator+(const complex64_t &x, uint64_t y)'],['../namespacemlx_1_1core.html#ac1afa5d4c856e4b58109eff086e70ffd',1,'mlx::core::operator+(int32_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a8978def3c2cfe2a96314d564613b80db',1,'mlx::core::operator+(const complex64_t &x, int32_t y)'],['../namespacemlx_1_1core.html#a5b8af5ca4c0e37aba0b7530542bd64c2',1,'mlx::core::operator+(int64_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a3eaa72850205c18450c3af9a01cda219',1,'mlx::core::operator+(const complex64_t &x, int64_t y)'],['../namespacemlx_1_1core.html#ad38b38a3faf050735d45eed4438ee27a',1,'mlx::core::operator+(float16_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a358e66ff205bda3e8542427b6d2edadc',1,'mlx::core::operator+(const complex64_t &x, float16_t y)'],['../namespacemlx_1_1core.html#af56d4b85e329e39a825c01a50e3a2522',1,'mlx::core::operator+(bfloat16_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a806a495a129ebaab69cc57ca7db831d6',1,'mlx::core::operator+(const complex64_t &x, bfloat16_t y)'],['../namespacemlx_1_1core.html#a09fc6ebda917969383783a112a8547e7',1,'mlx::core::operator+(float x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a7ed0e2cdb65612f54e67166762cb6408',1,'mlx::core::operator+(const complex64_t &x, float y)'],['../namespacemlx_1_1core.html#af7577c91b8c43682f0ebc9eb9758aae4',1,'mlx::core::operator+(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#abe36af9951afd8dd3ffe90ceedeb7f2b',1,'mlx::core::operator+(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#afb9f780dd056a4f975518f71a3b021ee',1,'mlx::core::operator+(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a6a8e093b24c4c789b7cd160f7e7f7de9',1,'mlx::core::operator+(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#af3a603690fd3de9e4f7f2035a4d25621',1,'mlx::core::operator+(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#afa2a4bccfeea9688ac922cb638341511',1,'mlx::core::operator+(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a6111e94d51de12391e5d68b765f28fc3',1,'mlx::core::operator+(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7c7dd6d346e0cdf398a896f2c6958258',1,'mlx::core::operator+(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a00872a443f462b0ae0a30c84fb001bc0',1,'mlx::core::operator+(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a4f5d80d03bae6d8d90455d3c47a8c116',1,'mlx::core::operator+(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a78f1f388f9d81ed93f60311f4645d8d0',1,'mlx::core::operator+(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#aa43e1d6958c5d5a6fa9a625a1660e741',1,'mlx::core::operator+(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ae877e1d5e3cf57734da8b49535fe3fb3',1,'mlx::core::operator+(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a9a5ae769f67f886d59c8e292a8218550',1,'mlx::core::operator+(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a058878237ce50baa4c909d8d15448d7e',1,'mlx::core::operator+(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a95fd207028f125eefbafe9e0522407fe',1,'mlx::core::operator+(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#abc6425a3fbb386f5ea5964b42507e989',1,'mlx::core::operator+(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2b_2b_24',['operator++',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a3efe69356a84d0d4438f033992fcbd9d',1,'mlx::core::array::ArrayIterator']]], - ['operator_2b_3d_25',['operator+=',['../structpocketfft_1_1detail_1_1cmplx.html#ad4e69dcd89bdb7764c9c5807168f911e',1,'pocketfft::detail::cmplx::operator+=(const cmplx &other)'],['../structpocketfft_1_1detail_1_1cmplx.html#affa618d8850a7c232793b7c61db6d184',1,'pocketfft::detail::cmplx::operator+=(const cmplx< T2 > &other)'],['../backend_2metal_2kernels_2bf16_8h.html#ab04f480aea9fbba0895068c7558dd400',1,'operator+=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a251780ac4592cc2b1a543e417ff57770',1,'operator+=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a24381d991c2d570aa953694f396a69b5',1,'operator+=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7595740d4cc12924905d6bd1b99ee4da',1,'operator+=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac1498acb8c3623b5f412f70ab6a6528b',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abce5ab327110c164f054b43ed47f79a0',1,'operator+=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae0c70198e236ffe1a98f79987c686419',1,'operator+=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a13b3338935440ae51ecc4a356093efc5',1,'operator+=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5a0cb8544b4ebd2906ba8e7f2868e8de',1,'operator+=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7b134429ea0c8493800ff8b465410f9c',1,'operator+=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4154f90ab7857ca856f9e15fe1bf5acf',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab9ae6a51e2027b02cac9966e05f3ba68',1,'operator+=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab93ce536eb7998bee00de4af868e31a9',1,'operator+=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad0ae9e2b4874f991a2c853e1c1fe735d',1,'operator+=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a194a6670cc25ade35a24b566f31af785',1,'operator+=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3d0d689516c99003659c5d026847bd2e',1,'operator+=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a007f58508b98bb79e5c323ed0dec89b6',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa7198e580e2a83c1fd01a4b6fdf86a80',1,'operator+=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a15573fefd880adefbba079b1c1bd8082',1,'operator+=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a104cf94cb9e359d1b6ef92ced2ce0c27',1,'operator+=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa04cfcb52191fd23205a1a3572b46ae0',1,'operator+=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad684bc2ae1a2a627cd3e4a4c641e2d77',1,'operator+=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad1e28448e35f4934075b397c34ba3d66',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8ad16afd7f1711de83c0cec5af868f76',1,'operator+=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac45e9ca0c7155caebe3d0f7261518077',1,'operator+=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3c62ac679d6aa515144d40ebafe4a188',1,'operator+=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9ff5ab3aef1057fa083b53a65c8aba03',1,'operator+=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae74bb0a3c12cd1a23f3d29ce307d6fb1',1,'operator+=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac188bd19f236b098d603b0d8acd08921',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aef9fa600d107b509f2e3df7d6b080e01',1,'operator+=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af5713afb3a62967a02c3c20661951ee4',1,'operator+=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7f1b84352a3ed6171444a43da1fc7e92',1,'operator+=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af1983edd26245e6e51c6e47354095e32',1,'operator+=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8cd55d1a579540eb450e12a8a8a950be',1,'operator+=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a588ef0f7e03f306758524d378278976f',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a74751abec7086f85f4f26ced44f1ca1f',1,'operator+=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4dd3cf0e5aa116ff330352a50c18cde7',1,'operator+=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afb9a0e18c0e40c77e6143fb7d84ebfba',1,'operator+=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adf0cfd9a608a6fb3d57933e32e7d81d2',1,'operator+=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4bd92db6c8b9b5dc96332c7ae3eff8c7',1,'operator+=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5d628a5bc4fa755610392f47a523a1f1',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7c790442f77f2437b482c4a55e224fc3',1,'operator+=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a77bab4481b41be50297b257e95058706',1,'operator+=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7816a97d16b1d2f8a90227bb1da2f6ac',1,'operator+=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac244d140c6149726ea44174d3e836ca3',1,'operator+=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af802541c4c65ee4442acd495de4d27fe',1,'operator+=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac06eb2fea47a09a8a8abdaa1aa9b4603',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5263b2463fecdc97f9521d00bffea059',1,'operator+=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a24ca436ab299a710263d65302532dd3b',1,'operator+=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aee1bdf0ab2e445293708b476e8cfde3b',1,'operator+=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a190e27077f0fba642a86f5c8f488bcc2',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a9f2c9d2f21fbf9fbbacd940c6967c9d1',1,'mlx::core::operator+=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a0b1b3c48afc0a785282e43435bba8418',1,'mlx::core::operator+=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a7b763db8194e6fcb1b87eab143dfa47a',1,'mlx::core::operator+=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a827167f6a1ae55428fd218ddd51ec3b6',1,'mlx::core::operator+=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_2d_26',['operator-',['../structpocketfft_1_1detail_1_1cmplx.html#a460da5db36d1c72fb1ed3496fd3abde4',1,'pocketfft::detail::cmplx::operator-()'],['../backend_2metal_2kernels_2bf16_8h.html#a6aedc8d6d0980134ac69b96f22d9a855',1,'operator-(_MLX_BFloat16 x): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a333f67614dbf8027439a7e124052cb85',1,'operator-(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a891aa4bf46c20a26a55061736aba25f1',1,'operator-(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7ad7ff44a3200853711869f7a577d931',1,'operator-(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af69ef8f1d8ecae0e6f755bf1c46cf075',1,'operator-(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5bd875a54b79b2dcedf674807c3e53c5',1,'operator-(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab02f8646b47806e1d2038f248df03f06',1,'operator-(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab27b26182c7c6e08af37e6d511fd9253',1,'operator-(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5868c85c988ec3432cf86d7df40e464d',1,'operator-(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad03ef47e6cc7521bbfb45740dee20f88',1,'operator-(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab789f8a400512ff27e36b3373170f0c5',1,'operator-(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7f601b22ecc480132d82ad782e5363bf',1,'operator-(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a152366ab4e2ccc867e919af6c74ced91',1,'operator-(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a42bead8ef0beb9f3452128d64cd4df9d',1,'operator-(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a226cfd54d49f02e35c5aab3139c7596b',1,'operator-(complex64_t x): complex.h'],['../backend_2metal_2kernels_2complex_8h.html#af5608264cf920688607059b4e8cd3117',1,'operator-(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#gade2eea48989f4caaf36e89f7bd2a8816',1,'mlx::core::operator-(const array &a)'],['../group__ops.html#ga0c7f3cb36d4ca516c7a33142f88b9181',1,'mlx::core::operator-(const array &a, const array &b)'],['../group__ops.html#gae68d3d0691ba951501218e98439f3465',1,'mlx::core::operator-(T a, const array &b)'],['../group__ops.html#gaf5e5d882c51ad0a0ea315c274d5439b2',1,'mlx::core::operator-(const array &a, T b)'],['../namespacemlx_1_1core.html#a622ce842fe44e4b6a95e03242341b459',1,'mlx::core::operator-(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af32a99d930d49e9b178472d7a65531ab',1,'mlx::core::operator-(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a3555a2b31fc0925850d3240e85e03ec5',1,'mlx::core::operator-(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a46080889fd9e5c3f9916508e97dff5ad',1,'mlx::core::operator-(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a9ca27fd1e512c8ed126342e565da12ae',1,'mlx::core::operator-(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a3803f8d36558d32bb7dd6e580ea683b4',1,'mlx::core::operator-(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#af5d865528989ca66b3d357e5ce4e0300',1,'mlx::core::operator-(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#afb784b960f55aeb4edd7f567fa74d443',1,'mlx::core::operator-(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a29cbacf4b399c24728fb0808fad498f9',1,'mlx::core::operator-(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aececc0e451237aa6c0d1a2c3d828c86e',1,'mlx::core::operator-(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a383a26cc2689c98fd6c4435ade8dc669',1,'mlx::core::operator-(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad6311ef8df59bdfb212b5cf8169246b2',1,'mlx::core::operator-(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a23b7329bc1c93c8ac0a1f576565fefb0',1,'mlx::core::operator-(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad8d650bf63998abd716ee0ca28e1cbb9',1,'mlx::core::operator-(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a7339b33201254e9119d99d3a728ded72',1,'mlx::core::operator-(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a064318b7a16e5cb6d0a6407501b5c7dc',1,'mlx::core::operator-(_MLX_BFloat16 lhs)'],['../namespacemlx_1_1core.html#a7bae3ff296d9a60ff3c7e448f7fbc6bd',1,'mlx::core::operator-(const complex64_t &v)'],['../namespacemlx_1_1core.html#afb5069ecebdfd9d388c26f83df12c93c',1,'mlx::core::operator-(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a8d126e3f3fa9f8c1c1ae1b09f94df487',1,'mlx::core::operator-(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ad04f1ccd2cd7c487a2f2aaa055939f64',1,'mlx::core::operator-(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a15eb2ea76508ff823fa0591e811d0b7d',1,'mlx::core::operator-(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a96d9577db38d6809d022893e32feeda1',1,'mlx::core::operator-(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a5d9c02765c1672930757416411567bf2',1,'mlx::core::operator-(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a6105d3b5266666b7c6bb9469285a9ec3',1,'mlx::core::operator-(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a777aa772dfb205b25d26f3180d98a2f6',1,'mlx::core::operator-(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a085eb092f4ada47f8169de62886cff90',1,'mlx::core::operator-(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab25e5d211e2c8785b45c3a81a6282e2b',1,'mlx::core::operator-(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#abf5d09561a81b0f0b32d59d77e32e16f',1,'mlx::core::operator-(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a4ce6867dbb4d1631d1870dac14022dbb',1,'mlx::core::operator-(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a8a049e646e0442064cfe9e202d7047c5',1,'mlx::core::operator-(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a78e2a1cfc65453185bcca13bd4f523cf',1,'mlx::core::operator-(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#af143cf68673e06390d4bb2ec2892bd22',1,'mlx::core::operator-(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a46d502dfe0b027955950d4e716c2eb26',1,'mlx::core::operator-(_MLX_Float16 lhs)'],['../namespacemlx_1_1core.html#a2631e78c6f0a602f6754ac577ec75f83',1,'mlx::core::operator-(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#a73d79cbd75d543d0837b8a51bf103f9e',1,'mlx::core::operator-(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2d_3d_27',['operator-=',['../structpocketfft_1_1detail_1_1cmplx.html#a12441ff423274bd1b54245933d69ad7e',1,'pocketfft::detail::cmplx::operator-=()'],['../backend_2metal_2kernels_2bf16_8h.html#ab225043bd02bb423930bc98aae9c2bca',1,'operator-=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac2f1e1f2365cfa531b1519aa9ff67695',1,'operator-=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a513501355a5912a1263fd8b10864142b',1,'operator-=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab4f4ecd62c3d8b3363d02019573dc9f1',1,'operator-=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a92d1348f201d78fcd474f75d5b23ef68',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3eefe9a7f5fb226335ea687012f32d5c',1,'operator-=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aef62c7e3e494b6a511a7833c0d942a60',1,'operator-=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad30726cc8b69fd300d33c2a46e123c28',1,'operator-=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8859b5b8dc241e4f58243c85d2630cc8',1,'operator-=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7003e1e5881e3d106257f22b6a3e59fe',1,'operator-=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3165e37d393be50c2cfa9ddcba153684',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a76f5bd895b7214cbc3cea3440992718a',1,'operator-=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7167343d90eb70e5a0d5fa9ec5398e94',1,'operator-=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9b31c363ebc93d592b6fa0e27b00335a',1,'operator-=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a967a1d7b5664f616e5b6f2d257367f0c',1,'operator-=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aff19193e1b2cee29a8737318e95cc74a',1,'operator-=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aede0cc4179507b739849948f1a2fed4b',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7e1a6056f9c96f3c89fe204dbf103be5',1,'operator-=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9d06cceea5c179bcc608452188bd7d6a',1,'operator-=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0aa9ffe056f49fda181bbacbd60556ea',1,'operator-=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ada5685d99c2d6708d1c4ef826d68e879',1,'operator-=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a726cecf778b8584b6f7c37db1b064576',1,'operator-=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3816a35f8468156d59c239256c12dcf3',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa332fae098e7c6dc23b98bc0026f1070',1,'operator-=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afb3cd302e0b78902c62111dce4494fe8',1,'operator-=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abb884888f14086cc674657677cb4b8bc',1,'operator-=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a38bb89f925eca4f9c042f6ee7a2c0193',1,'operator-=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac30c580713f354916088a7dc049ae4cd',1,'operator-=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a715c824ee8c87e0256114a85624d9949',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7bc91aaaf476a37063264d1d53d862cc',1,'operator-=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab155f418f15cabd86ff942c6f9472ddb',1,'operator-=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aaa66dc6d7b2c5efbfaa97ca9c7872bd8',1,'operator-=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a696978d9401e09200045b2d8aad045c2',1,'operator-=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae998d8f423a9fb73405cfbd4b836bc72',1,'operator-=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a279d09ab8542f1c1a8dc8173b65946b6',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a491dadfae957cd7cc0c36188d910f6f6',1,'operator-=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9a837c3b9c4e42f53d7cd1ed0d266e2f',1,'operator-=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acf7af2284269544064b68e807064bba4',1,'operator-=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a28d297705e29009197418546ef435393',1,'operator-=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a948579a4d9ba276523190b03b09578fb',1,'operator-=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5a4b98a0a11db5b77cf9168df37c8bc7',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a31a3d8f2ff8038f7e0d717845c039808',1,'operator-=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1dac193d9f1c8c0eb4473441895f8c58',1,'operator-=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad2817d53fdd4b112babfb6f0b38c8f39',1,'operator-=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa705d87cf4b78e9d7c6b07dd0c66cac6',1,'operator-=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a542affc376726840647a6e93acf2c1a7',1,'operator-=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#add18cfe4c0d38e95c6dff6bab3e7a932',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab1de7e7e7304ff3598925d2e69134764',1,'operator-=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0d3fb52437c677c5d0f1a3642384b15c',1,'operator-=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adda64cae388baac1f138b06dc8595237',1,'operator-=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af20874a61c6c3f4c3fd045a96e806644',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a8b8a55690df46d97fcfc2a60120783af',1,'mlx::core::operator-=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#ab03949b1f60fa035ce454a894cd73ae9',1,'mlx::core::operator-=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#adaf70bbfb3667df0d08fd3c99896e20a',1,'mlx::core::operator-=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a321c98e5a78621d3c9a3895f707f2f1c',1,'mlx::core::operator-=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_2d_3e_28',['operator->',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#aac45ab0630ea32cf7d15c7ba3e229966',1,'mlx::core::metal::CommandEncoder']]], - ['operator_2f_29',['operator/',['../backend_2metal_2kernels_2bf16_8h.html#a9f16a44e1c9836ca57edc1d7b93b5d7c',1,'operator/(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aacaedf12f862c76457133336dd6fc446',1,'operator/(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a584a513596de20663dad951a5b81695e',1,'operator/(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad8f7b11669736fbd6ed2e28211d877d4',1,'operator/(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a59515695ebc48844345fa5120511aed1',1,'operator/(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8c8ac6736440fdca366ebdefe2a12b9f',1,'operator/(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad6859b04680d0d26d75fd6c4dd74ee24',1,'operator/(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4720cc79ab2b8e39952ea9ef20e51250',1,'operator/(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a72d10ec0e62949247da129eb3a83fb9b',1,'operator/(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad6399ba2b8708899739b4cdbb44add8d',1,'operator/(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a998b1ba877a606aedf722ab46b290403',1,'operator/(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa3277ae33976c70f7bd937ddff027b72',1,'operator/(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa708a970a200822c99c0489f389469fa',1,'operator/(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#ae6a708f67d6fd9b0962aa8877cec6d35',1,'operator/(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#gaeedf77f722b394429f1a7f6c367883bf',1,'mlx::core::operator/(const array &a, const array &b)'],['../group__ops.html#ga7366ec7f453be2a4dc449f0faa1bf554',1,'mlx::core::operator/(double a, const array &b)'],['../group__ops.html#gadfb324ae9b4feb2c7ea0ac6ade639f38',1,'mlx::core::operator/(const array &a, double b)'],['../namespacemlx_1_1core.html#a7573ac3b93ddecd69e9c88a26fc84ba9',1,'mlx::core::operator/(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a40e868dad70401d9aa9ee9c32235c315',1,'mlx::core::operator/(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a7587c28fbd2023b134e5fc12bb0dde23',1,'mlx::core::operator/(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a92cdd377c408becf4cf83c1ee9b7085d',1,'mlx::core::operator/(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#aef89566301cb133d98c8e7bdd2b7bec6',1,'mlx::core::operator/(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a94e7b51185590492b46916685641276f',1,'mlx::core::operator/(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a04584788c08180835219d0ea1e2b97b1',1,'mlx::core::operator/(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad5af96e2ff09d207eb1e1980fe3e7c2d',1,'mlx::core::operator/(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ac2217bf760038cd011781158923149ed',1,'mlx::core::operator/(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aea414c04bddc4b9b609262e97398f1b4',1,'mlx::core::operator/(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a27fe23230cd082c0363b9451b731ce6b',1,'mlx::core::operator/(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abdd9bb8fb4411e5924f3eb7ef1bb52f8',1,'mlx::core::operator/(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a50bae338a7353f8b0ed3441071bb0cf6',1,'mlx::core::operator/(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aab26a3284dd3ac7d47c8b5b3a3290ce3',1,'mlx::core::operator/(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a749f48db01de38f259a0c6750a97fa77',1,'mlx::core::operator/(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a32a6a08a2a4652975b0a1bd1fcf3eafd',1,'mlx::core::operator/(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a4b66fb38ddc5cc0c2489583d5c499602',1,'mlx::core::operator/(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a45726f1905b709cf8253e6efa046027b',1,'mlx::core::operator/(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#afd4170c1e364384f30e6bae341146fa6',1,'mlx::core::operator/(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#aef85739d150b9d5609973da8a3f1086a',1,'mlx::core::operator/(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af52a941f8ed9b25eec91402c7b9e281f',1,'mlx::core::operator/(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a477cade78296bc85894170f62db68870',1,'mlx::core::operator/(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a22f5a2257e11423fc2fe18e2dce91590',1,'mlx::core::operator/(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a640d3574dfe6ad934c720ae8bdd78bfa',1,'mlx::core::operator/(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a6f65d8fd0cdddc96fc01f6af95804873',1,'mlx::core::operator/(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a517019d42d4e426b7b98e1c719bb47ce',1,'mlx::core::operator/(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a0beb7a223c542015a4eff4aed814a9dd',1,'mlx::core::operator/(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#abc9b1bd5018d46514bc19d23db2e5063',1,'mlx::core::operator/(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af22937df654ddbd6e398ef12764d18c0',1,'mlx::core::operator/(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a775aed5f49b530c57e71cbac81404d45',1,'mlx::core::operator/(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a97efcd96d6be666e5608034ae77289ef',1,'mlx::core::operator/(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#a899851f85dbddd96f9d36319b82542a0',1,'mlx::core::operator/(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2f_3d_30',['operator/=',['../backend_2metal_2kernels_2bf16_8h.html#a5aa3b8c68a2b58d41ea33eaabbf83095',1,'operator/=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a90a1c5130db515db48624d8587edbb91',1,'operator/=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a65f30a2dc199134e35bc7c5d431b2263',1,'operator/=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7172d84db640e6c49dff0d08dd64b53e',1,'operator/=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acf7cb9927bf09022088401923f2e1916',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a86b2a001cbec0d3a8d762a3c7ff47b0b',1,'operator/=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a744f72ba83522fe3cc2a49a007b42543',1,'operator/=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a77c678665b34df7652dcde053ca73185',1,'operator/=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae0614b6b199d8a65ae95d4621b118b82',1,'operator/=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa846fde89c7d2d18b18ef180a8a9c8a3',1,'operator/=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08e778be18e4a291c108fcc528b981d3',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a6b9e49ad9ea256d2d0220c0d81552602',1,'operator/=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab933bc3cdf9adfea10ab9dba5292c812',1,'operator/=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a25e7c5d2ecf3375756d59074f333858f',1,'operator/=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4ae4a80fde67eea9a0a37b2803946544',1,'operator/=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a912393b7208fa45bd1e87f30b218b68b',1,'operator/=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a18963246f2b640874bef6dca7049f64d',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0e2c2c2cb50b3a55ff213f18978aca35',1,'operator/=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a64f1136b17006f168ef837e17240814f',1,'operator/=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae46d75b8046d557452d74513f1106710',1,'operator/=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08d2460e259b9106d90d889481ad60d5',1,'operator/=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0f7fd418408806ef498745c6fdb2c062',1,'operator/=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac703495cb370b52526a5a2d36ae26038',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4ca11d43174baf0a729f93b35eabcbea',1,'operator/=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9f835a0a80c411580c97b65fdc5bdfd3',1,'operator/=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a17f47ec9cff60f8e1b3477a2793b7ac0',1,'operator/=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5be23e296bbed3a885586a6424b1666e',1,'operator/=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afba39221eb54e272aae79910b3cd7ef5',1,'operator/=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac057d95a2bf087575584aa6f9a2c6bf5',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab986ae2cec780a1f494b7b4468b7ba11',1,'operator/=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a44522c2304c6396bbe6b9d32000f4b6f',1,'operator/=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aef8e7e499ea9d432aa743d83c076f945',1,'operator/=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3a0a3edbf1ba2314551454059c3f422b',1,'operator/=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acb9f0aef9fbdfde8a4f46e33b0d6c52f',1,'operator/=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a303dfcc81ffd355f866f863d7d9f0fa5',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a359edd4bcb8776861ceb26a3005624c0',1,'operator/=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adc9f32cc6f40768df4285fba2e4783c7',1,'operator/=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae71f66d814a03f6377c9d86cf0a2b5d7',1,'operator/=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad0125b6baba3065a87a174ec27aa9a61',1,'operator/=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5cc74ad3e522d7104e6e2117751151ad',1,'operator/=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab3b594321fb42b0c2da99954d1e0976c',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4a0023e2fd08875156cd6ef747fbb5cd',1,'operator/=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4358ee606e66ba2081fcf94f9c3b5915',1,'operator/=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad1e7ef6f065695d4b1d017547b60ef62',1,'operator/=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a284dfc702f0f67b9c233b87162eeabdd',1,'operator/=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab8f211ea896fc5190004f3ad6ad8932f',1,'operator/=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7e1bcf3bc06cbcbc304c0cdf729802bc',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abbe42648a46092137b303ccd08f7df86',1,'operator/=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af1a12a1efb618a57da6dd41ae18cb53c',1,'operator/=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a94686039356dfa9aa45608a8b0562fdc',1,'operator/=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa251d6483d3b099d1b5311fbe6f0bce2',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a045ff27257cb6d8ab7a94771ba5a17e6',1,'mlx::core::operator/=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a58112951a56a0f9f8c90b60fe74f9508',1,'mlx::core::operator/=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae736defc89a04fbaf7627ad2695bb838',1,'mlx::core::operator/=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#ab1f260710251256ef737dd59be9e143c',1,'mlx::core::operator/=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_3c_31',['operator<',['../backend_2metal_2kernels_2bf16_8h.html#a9ef6a57b7185e9ca49e255fec1a44e25',1,'operator<(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aab02c65bc38ea66335b2192ead4095a8',1,'operator<(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae91686513e284bcc9635833744bbdda1',1,'operator<(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2486f3b5de85b0d57f458d8f21f82b42',1,'operator<(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a435a2aec4c777b4b184ff5d24992e8a1',1,'operator<(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abdd04257e6a73883b5f56f1186d0e906',1,'operator<(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a69984aaa05ae1d4fccccf7f57e8ecb4a',1,'operator<(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a501cc01d5bf15d9f03aa28545f9624ea',1,'operator<(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1b029e4ca72125a5f9471f582c819705',1,'operator<(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0736a76f56578d26ba1422dc8b744a18',1,'operator<(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a24b1fa8998c892f90f8dde7c34fb10a5',1,'operator<(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af80ff2020ec2c4b406c5fdae3fe55e63',1,'operator<(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac03f6eefb836373d37dc280b0d813d78',1,'operator<(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a67674e32596a9dae2258bb8e0e6a2058',1,'operator<(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#gaee41e2b8f61d563200ff03575ac1d6c3',1,'mlx::core::operator<(const array &a, const array &b)'],['../group__ops.html#ga1ef8ea11cf15ce628c54201fa42748ef',1,'mlx::core::operator<(T a, const array &b)'],['../group__ops.html#ga95e72226dc7a79c40b3d16f990922050',1,'mlx::core::operator<(const array &a, T b)'],['../namespacemlx_1_1core.html#a987d631e1508e8df55d98ddd57e4d086',1,'mlx::core::operator<(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad3fb46370cd8f0992866fad9e2c64a3c',1,'mlx::core::operator<(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a3026691bf7ee5095243a8611bf3411aa',1,'mlx::core::operator<(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0d42d6c1d5f77a96e2f296b8ebd79ee6',1,'mlx::core::operator<(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#ab5ce08a7de0a0ca00d61f7a7f8ea3ab4',1,'mlx::core::operator<(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abce8b7f24b61e5ec0f9a3afe20845caf',1,'mlx::core::operator<(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#aff97612627ae1ed260c43c0a7af0d306',1,'mlx::core::operator<(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a9119e518234df7923cae2b3802d59bf2',1,'mlx::core::operator<(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#aefb9b05ce8864ada99a920ab32017b89',1,'mlx::core::operator<(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abc55f3676c2d112a6e9ab276bd6b1796',1,'mlx::core::operator<(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#afe6581a2c45f24d7fab1e4006c1e3c70',1,'mlx::core::operator<(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aca1d50cdd9506481dcc4cd1ad4a4f734',1,'mlx::core::operator<(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a310720f513b6a2490e9df80c65f1bfb3',1,'mlx::core::operator<(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a29e457a170b6cefb6ba1e394c96c6f7b',1,'mlx::core::operator<(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#afd4519985b6b207ec41ad8530d1036df',1,'mlx::core::operator<(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae1e41ca94022e43a00cdfc5845102daa',1,'mlx::core::operator<(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ac80f4022bffd95b57526685ce8e1cbc1',1,'mlx::core::operator<(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a3a8f6f0af477788c4f0aa98abfc5f1ab',1,'mlx::core::operator<(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a3728ed9b6cbd152bf675251a0501b466',1,'mlx::core::operator<(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a5b9ad811a5e1358100c5423dd70ea387',1,'mlx::core::operator<(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a5c77e1db83995d3e06a8a26265bce5d6',1,'mlx::core::operator<(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab8a0a3f70664049b35ce1887bd8ff5c2',1,'mlx::core::operator<(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a6652d93bfb2d426e261a1712a181a4d2',1,'mlx::core::operator<(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a03758b8d13da2de07cc4f4fc45d2854b',1,'mlx::core::operator<(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a325161b81a9ff179fd37d949780a17ba',1,'mlx::core::operator<(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a92eca79fce8233e4299343eee3996511',1,'mlx::core::operator<(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#adb016662b8f7eb680abfe1a421eabe72',1,'mlx::core::operator<(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3c_3c_32',['operator<<',['../group__ops.html#gad656c30f9fd7d9467e405657b325aa7e',1,'mlx::core::operator<<(const array &a, const array &b)'],['../namespacemlx_1_1core.html#a1e5c30e316afa30c14bc48b92afdb794',1,'mlx::core::operator<<(std::ostream &os, const Device &d)'],['../namespacemlx_1_1core.html#a4ddd07021b36c848d6fb1dd9ac276822',1,'mlx::core::operator<<(std::ostream &os, const Stream &s)'],['../namespacemlx_1_1core.html#a0023c267cf81345fad65e7a797954cd3',1,'mlx::core::operator<<(std::ostream &os, const Dtype &d)'],['../namespacemlx_1_1core.html#a1fd58658474fb842d648dcf8f7d9f078',1,'mlx::core::operator<<(std::ostream &os, const Dtype::Kind &k)'],['../namespacemlx_1_1core.html#a123331f01188bd76e37623b63b6b4340',1,'mlx::core::operator<<(std::ostream &os, array a)'],['../namespacemlx_1_1core.html#a4e733bba89760abed32393e085812b22',1,'mlx::core::operator<<(std::ostream &os, const std::vector< int > &v)'],['../namespacemlx_1_1core.html#a6276bb9bad43ed4a27a1e2c3f5bfd990',1,'mlx::core::operator<<(std::ostream &os, const std::vector< size_t > &v)'],['../namespacemlx_1_1core.html#a5e5bd5c57b1cf19776bdb41e732861d9',1,'mlx::core::operator<<(std::ostream &os, const std::vector< int64_t > &v)'],['../namespacemlx_1_1core.html#a42a19c8442b173606e714364227e7d45',1,'mlx::core::operator<<(std::ostream &os, const complex64_t &v)'],['../namespacemlx_1_1core.html#a57eb97a5eba99a846ac429795e407574',1,'mlx::core::operator<<(std::ostream &os, const float16_t &v)'],['../namespacemlx_1_1core.html#a7db909d54cf07375e89424c32c07a29c',1,'mlx::core::operator<<(std::ostream &os, const bfloat16_t &v)']]], - ['operator_3c_3d_33',['operator<=',['../backend_2metal_2kernels_2bf16_8h.html#af469c58cffeab488c681f4b33f02cd05',1,'operator<=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5a81eae168dfafd299c2b94e3e8558cf',1,'operator<=(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0f486bf02c6ad5b9b6a96d3450f03e47',1,'operator<=(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acba9efe192d22b7781b4622103c7a944',1,'operator<=(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aff100489cc40ad276c2d5d67a9df67db',1,'operator<=(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7eac96f64ca42991caf819c8e8c8d2bc',1,'operator<=(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a88c11cd37600de5480570da3d2ae5732',1,'operator<=(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08c7d12a0d16565fbf052dba2db8b22d',1,'operator<=(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2b9de9624c0a507b4ead85f898ad9daf',1,'operator<=(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a28f8d21c5eef047c701cf690ce9c2ef0',1,'operator<=(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a14b56c687053ee2432398a25663c068f',1,'operator<=(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0f360806708b95a3be400af0b8871b57',1,'operator<=(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a80d288f22cadfdf5e904410349e616a1',1,'operator<=(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#aee04c9a63c6716a99a027418354debb0',1,'operator<=(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga4c8b8a1632944acaae50f0de6c23ece6',1,'mlx::core::operator<=(const array &a, const array &b)'],['../group__ops.html#ga150a9be467c9f91482a6d6fc13504bc4',1,'mlx::core::operator<=(T a, const array &b)'],['../group__ops.html#ga624eeccef0cc4b130e1325abfea057cb',1,'mlx::core::operator<=(const array &a, T b)'],['../namespacemlx_1_1core.html#a0066a47cb21223ddebc77992ee874fb9',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2593dbace3ce50e7146d9514726a543f',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a88654bcf6c9728517a2933ca2e29a7c1',1,'mlx::core::operator<=(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a5d4f449e9c1699b99fcf894dd15e8af3',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a6b678bea8fdcda1f11c6691b56a15211',1,'mlx::core::operator<=(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae8aacc606ea16f018a90eae758830a35',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a25668dea4ffb51c7c00eeecb9530d1d8',1,'mlx::core::operator<=(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a084558b6a5487549799c49c37c9e9652',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ade2e2a0daa79d5c52f278f85f03dde2e',1,'mlx::core::operator<=(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a750a2d2b4976ad94b08994d081f83445',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ade5a175ff45347689ac4c798d04c8ffc',1,'mlx::core::operator<=(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae25e0c01b46612f039313a4825ba6428',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a5c90f16d8f6edf4b75c96b945b9fa591',1,'mlx::core::operator<=(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a8cd6583fa0fc9957f993e00b2ec01d91',1,'mlx::core::operator<=(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#a012130a0458cbc30b88365e0e0eab232',1,'mlx::core::operator<=(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae8c890bdcffadee8c5dab85c907f57eb',1,'mlx::core::operator<=(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a43cb070553c1f2fffb32ef6670e30980',1,'mlx::core::operator<=(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ac759b7798d668a99535e59e26d6ba192',1,'mlx::core::operator<=(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a70e528a789b5660d98e783b045aaa379',1,'mlx::core::operator<=(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a40bd8abb8a4d989ddabbb298518bd7f5',1,'mlx::core::operator<=(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a4155d4b0c76f37ab5e0b54f9cd683f35',1,'mlx::core::operator<=(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad8bb648d0603a206e0392990c911ca0b',1,'mlx::core::operator<=(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ace72a5853f2afd6510dcb97d54fa650d',1,'mlx::core::operator<=(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab38f7a0d3c0809071ff5d3af859018d6',1,'mlx::core::operator<=(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a7904b886d7b535a6af0a885d00597323',1,'mlx::core::operator<=(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a57952168bd0b54c2677204d4ab1cb6e5',1,'mlx::core::operator<=(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a6235dc5f4db517618bb3449b08c96e8b',1,'mlx::core::operator<=(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3d_34',['operator=',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a027b84cddc8d476f736ac1f1a9991fe4',1,'mlx::core::allocator::Allocator::operator=(const Allocator &other)=delete'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a2e971b47339b1d0849a334a902a9df3c',1,'mlx::core::allocator::Allocator::operator=(Allocator &&other)=delete'],['../classmlx_1_1core_1_1array.html#a8acf2b4c75f9b7f79da6675dbc36cf36',1,'mlx::core::array::operator=(const array &other) &&=delete'],['../classmlx_1_1core_1_1array.html#a5c89c2406a610b32943955f9a5060fbd',1,'mlx::core::array::operator=(array &&other) &&=delete'],['../classmlx_1_1core_1_1array.html#ad3277ff68f1336aa217f9cbe40181479',1,'mlx::core::array::operator=(array &&other) &=default'],['../classmlx_1_1core_1_1array.html#a5da41aabecf4c8055b7515341bf57147',1,'mlx::core::array::operator=(const array &other) &'],['../structmlx_1_1core_1_1array_1_1_data.html#a68e9417954fe811b5e41e6317a526748',1,'mlx::core::array::Data::operator=()'],['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a3f42a1362b4a513fa89e7b3dcc570a8e',1,'mlx::core::metal::CommandEncoder::operator=()'],['../classmlx_1_1core_1_1metal_1_1_device.html#ad1d6382fd18a46b1906e1b43e0bd2e73',1,'mlx::core::metal::Device::operator=()'],['../classmlx_1_1core_1_1_primitive.html#a6b1be7ea92f3a7bb19875c70259dad6b',1,'mlx::core::Primitive::operator=(const Primitive &other)=delete'],['../classmlx_1_1core_1_1_primitive.html#a50bbddd43e1ba0cf5f127cd7aa756a9e',1,'mlx::core::Primitive::operator=(Primitive &&other)=delete'],['../classmlx_1_1core_1_1_unary_primitive.html#a0a859309a4f192f2679e07f2e4ff4d22',1,'mlx::core::UnaryPrimitive::operator=(const UnaryPrimitive &other)=delete'],['../classmlx_1_1core_1_1_unary_primitive.html#ab90b2ea80f1d914be03cf44def5db5a5',1,'mlx::core::UnaryPrimitive::operator=(UnaryPrimitive &&other)=delete'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#ab170dbd2ce34c51e2eeebf5d08e7e2db',1,'mlx::core::scheduler::Scheduler::operator=(const Scheduler &)=delete'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a035ea35f4dd8ee985973080f14029379',1,'mlx::core::scheduler::Scheduler::operator=(Scheduler &&)=delete'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#a0f65b0523b8ddd989f338da6cb2860e3',1,'mlx::core::_MLX_BFloat16::operator=(std::vector< bool >::reference x)'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#abb8cd44ee22b17c55333ff2eb4e13a14',1,'mlx::core::_MLX_BFloat16::operator=(const float &x)'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a608a099bf7116ee608dcfd31ea3ade2c',1,'mlx::core::_MLX_Float16::operator=(std::vector< bool >::reference x)'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a35543c3653d477c46350697fb808373d',1,'mlx::core::_MLX_Float16::operator=(const float &x)']]], - ['operator_3d_3d_35',['operator==',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a1afd6d2a19a2b0d712063f221ab4eba7',1,'mlx::core::array::ArrayIterator::operator=='],['../backend_2metal_2kernels_2bf16_8h.html#a49a13b06a325ed3cca4004b6a0cde065',1,'operator==(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0aa3bfcfab53700488e5f386e6de60d5',1,'operator==(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3936148781ab1c4f33f58d12c116f370',1,'operator==(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae753526b669fba27771089dc809abd66',1,'operator==(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a05a4f197a71d0f16879032f44492bb79',1,'operator==(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae86f5917847b1ec9f313996250f2e0be',1,'operator==(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aab74ec4d33a64b92b908717d500f1ecf',1,'operator==(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac30a2c1fa6f172af903fdeb6a8632606',1,'operator==(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab4e9ad547aa23daa351075e0ecc58fa2',1,'operator==(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa5fa1a8f2b39c3508fe38205469756d1',1,'operator==(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aeadc1f36c6bdc219294ce9341d80afa5',1,'operator==(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3ae2091ada1e39e857fbc53c97bdb79f',1,'operator==(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac7b4d295f3c7b1e09964f24f306422da',1,'operator==(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#abfc19f03616441245dfc7726b278f190',1,'operator==(complex64_t a, complex64_t b): complex.h'],['../namespacemlx_1_1core.html#a937503d72b66c661bf3f5fdcd98ef97c',1,'mlx::core::operator==(const Device &lhs, const Device &rhs)'],['../group__ops.html#gaa30cf69f3d22f65615f5e1696dd5703f',1,'mlx::core::operator==(const array &a, const array &b)'],['../group__ops.html#gaf115782d009ac2a547fcca395c9ec797',1,'mlx::core::operator==(T a, const array &b)'],['../group__ops.html#ga3ad3ed7aece2650943a35082dbe3a0a5',1,'mlx::core::operator==(const array &a, T b)'],['../namespacemlx_1_1core.html#ac470f937a379d6356c8f567c97cd7481',1,'mlx::core::operator==(const Stream &lhs, const Stream &rhs)'],['../namespacemlx_1_1core.html#aec63a0472cb943fe39f31e7678555572',1,'mlx::core::operator==(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad05311ca8e2f19ffe5849e963837cec7',1,'mlx::core::operator==(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#aaaf591cb2188381e6cbd857132d04eb7',1,'mlx::core::operator==(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a7ef33c33509ccccf1ab217500e8b3c1a',1,'mlx::core::operator==(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#abec4200a718b7c5ed80b7abcc4447260',1,'mlx::core::operator==(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad853981b1c5ba69b07d54c7b77055d22',1,'mlx::core::operator==(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a752d6cb4172a9cb91e5da19582329c6d',1,'mlx::core::operator==(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0175beb3de139faa08479a88215b35ea',1,'mlx::core::operator==(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a61da2851cb3beeef28049228346c28b5',1,'mlx::core::operator==(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aa24713cb9e39bacb516c992eb03d2b2b',1,'mlx::core::operator==(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a6d565dd93c46259f9486d9fdf0969589',1,'mlx::core::operator==(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a24e79a82557861de64dad66d36e6ff30',1,'mlx::core::operator==(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#af27d515ac390d62bd852b73ea759a947',1,'mlx::core::operator==(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae3e1e8b7a5410e0edf35f31f74295e2f',1,'mlx::core::operator==(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#aaa22230a66b15c3e774d8ce45783a746',1,'mlx::core::operator==(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ae2a0bcdc171d7e9745d33e1d9aac4f8a',1,'mlx::core::operator==(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a331ec62442a8d3eb8ccba7b4de5168d1',1,'mlx::core::operator==(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#acfcaefe0990eb3533e2b11a6f2657492',1,'mlx::core::operator==(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a8d48dbd49cccff07777affb2a412058c',1,'mlx::core::operator==(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a88eae27edd22fa4418776672023cb276',1,'mlx::core::operator==(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a188b363f633ea360407b3f9cf4e1f1a6',1,'mlx::core::operator==(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ae065fe5c42c1a333d7858d19f6434fa9',1,'mlx::core::operator==(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a2f98db199deb6d7a82551fa4afec655a',1,'mlx::core::operator==(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a85f83add412cb320b5cd1c3da6aadbd5',1,'mlx::core::operator==(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7e2cee66c3ca1b56f4f3d7fd1d6e0be1',1,'mlx::core::operator==(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#ad436557da5c7fea71fc58182a876cfe5',1,'mlx::core::operator==(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3e_36',['operator>',['../backend_2metal_2kernels_2bf16_8h.html#ae394c0a10e47d1d047854a888402eb57',1,'operator>(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab9cd098786d2f4c855c42e4a6f30ab3e',1,'operator>(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a55600f3b9859e2891e0e0b5690867b72',1,'operator>(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afd7cdb8ed2a9820efe9cf322c06f188c',1,'operator>(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a31bbdbe0b62b90a4d6ea4bb0a7db586b',1,'operator>(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a68125e66f74eaffe5ea9267638ce870d',1,'operator>(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac89eb6b29edad8cca63727ab97171c29',1,'operator>(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a74e477567c9477c2cf0684f81ef4498f',1,'operator>(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2d37130b6fd79b425f5ba92b65e36bed',1,'operator>(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a41d55d167e9dc63bf29d15e0ff004869',1,'operator>(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa95f9ebfdab3c5f524775651362ce914',1,'operator>(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2826bd301bb5393473ccd363f2052c0d',1,'operator>(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a62a512d0edd894759c69f724b970fbdb',1,'operator>(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a032a8d3eec2384c9f03066f7fd945995',1,'operator>(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga74fd2777adef10e6fe628a9cdadb01cb',1,'mlx::core::operator>(const array &a, const array &b)'],['../group__ops.html#ga32e106e794e2c32e4e7decee2df2477f',1,'mlx::core::operator>(T a, const array &b)'],['../group__ops.html#ga96552b90e89923c5d2064cc427775ec5',1,'mlx::core::operator>(const array &a, T b)'],['../namespacemlx_1_1core.html#aedc4e9df4bf71c0ac34fcfae60cdf550',1,'mlx::core::operator>(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a14c188303d09b97867bcfd34519aa4a6',1,'mlx::core::operator>(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ac97736fadafa7efa201624d0e1128ee8',1,'mlx::core::operator>(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a3c41a304126bc225bdc68062d1eb6e7e',1,'mlx::core::operator>(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#ab594f3ae1ee13227fae940fef0d00cb9',1,'mlx::core::operator>(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a01dabc077a872c115a9a9ccd95f1acec',1,'mlx::core::operator>(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#adabbd8768d216873617768249473a5c7',1,'mlx::core::operator>(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#adae1b14669d27ce1fe0c214771c07b77',1,'mlx::core::operator>(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ab03a22961d99fa12d3e74b3116e94e8f',1,'mlx::core::operator>(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a42011a27a3d23a60be5be44ee7cac87c',1,'mlx::core::operator>(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a50f6a94bb36d89cf28817aff88ab89c8',1,'mlx::core::operator>(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ac173de50ee57b1b066d49363ba978c53',1,'mlx::core::operator>(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#ab09f1b4879aa3190c2f66c9bd1224021',1,'mlx::core::operator>(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a91eb6ca854217424129a55ae95a123b5',1,'mlx::core::operator>(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#a58d5795d8312599d101ae16f194e4a2a',1,'mlx::core::operator>(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#aafa3bbeda78610c4285f3e57042268f3',1,'mlx::core::operator>(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a8a928d76a6fbf3d336296401e14617a4',1,'mlx::core::operator>(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ade2f9222fd433cd4d673c6182f256235',1,'mlx::core::operator>(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#ae24c337810c841ff23e327efde7045e1',1,'mlx::core::operator>(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#acf401ede354fcc998b13ea6442994d7e',1,'mlx::core::operator>(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a2bb28a9a0894a73ae1b27e7f4da0841a',1,'mlx::core::operator>(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a09d631e8a85fd7ae72e1a868b8f9b9cb',1,'mlx::core::operator>(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a49421ea65b5a98df080d75b1636b2157',1,'mlx::core::operator>(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a692ce931b660415e17f92d18a8e0d446',1,'mlx::core::operator>(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a579bb87b3ede5663d7cd68c7c0f6fb9e',1,'mlx::core::operator>(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af810587a17e692f4eec256d3c3cd27de',1,'mlx::core::operator>(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a50f4177d3ca03a95fc2614e100c7391d',1,'mlx::core::operator>(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3e_3d_37',['operator>=',['../backend_2metal_2kernels_2bf16_8h.html#a430dd11fbf4c6f39bc1506ab43b2341f',1,'operator>=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a64f6787a96386246f83a8981d274150e',1,'operator>=(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1a788f82212afad30e4c2ee40f1c313c',1,'operator>=(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae88617c4a012c5dc12781a349a28c886',1,'operator>=(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a467a88531150a4d9d30fce07c49c126e',1,'operator>=(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9e21c5ea9dd724dc2ca8c54ad908f09c',1,'operator>=(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2f6286d222e2176bcbdc824c5d598100',1,'operator>=(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abec53064aa96265385ecc57de5fbc74c',1,'operator>=(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac766839f8f9e4863e8e18418c342c875',1,'operator>=(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2807fa6862b0f9689c81199b1e695ed8',1,'operator>=(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aee3ae0d0d1f941463b06eca0bf041b2b',1,'operator>=(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a523eda93c809733368e2b45382d2add6',1,'operator>=(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1f4e90909ac1c7280f4c7d1977c55fb7',1,'operator>=(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#aafbd686c180398c98b33d7643f893a46',1,'operator>=(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga3a41895f25ed083a36994d95fa102546',1,'mlx::core::operator>=(const array &a, const array &b)'],['../group__ops.html#gaf509f2cb3b18963232f20d6c3bd229b2',1,'mlx::core::operator>=(T a, const array &b)'],['../group__ops.html#gafa0eb25d5978674bfc9e59d4145ec590',1,'mlx::core::operator>=(const array &a, T b)'],['../namespacemlx_1_1core.html#a8494764f5c686743ede66dc76d85d955',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a019df48807b506d9995856684bf7797a',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a96ab6405430efb887cdb5c828cb67d6e',1,'mlx::core::operator>=(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ac18be72269b1bcfb0249cc00a0600681',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#aeb879815228efbd2c8f80986e1c8d41f',1,'mlx::core::operator>=(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0051156f6a568f58cd54850f746fb507',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ae93556906e115625ed1b62d36cf21b70',1,'mlx::core::operator>=(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab81ad16e3be591dfc9e42ac3c19b055f',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a6cfe9b03e7c5f1eb9374208a552c3cc9',1,'mlx::core::operator>=(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2f5add83812fb137dd9226c6c01e45d5',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ad1014a836e7ce9301de8588eef1e89ee',1,'mlx::core::operator>=(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a17791561434dc995de9f268d145c0ed1',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a3755925b24a903045937464be117de2f',1,'mlx::core::operator>=(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a6262aeb513d27fc8313293b261e72abb',1,'mlx::core::operator>=(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#a6feb4b3ea511b0eda4d1ec9725f3fb4c',1,'mlx::core::operator>=(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a03b3f7fcb755ec075985ab26336926f0',1,'mlx::core::operator>=(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#aecfbf5ef4872ae447eb4a374e4db28e4',1,'mlx::core::operator>=(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae4690f349b2483f5d1a4b75aba67399f',1,'mlx::core::operator>=(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a667e95146dd5199e67bcb121b984b1f0',1,'mlx::core::operator>=(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a3375f1562f148bdc07451f2b6e54e6df',1,'mlx::core::operator>=(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ae83df12368cb07ccb1c10c1117ff3922',1,'mlx::core::operator>=(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad41251938cf852b5560c1180944ebb49',1,'mlx::core::operator>=(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a4ddb5ef0b88929086f9b09729fda0dde',1,'mlx::core::operator>=(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a0908a61ab261aff726922b33fa6ed159',1,'mlx::core::operator>=(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a0fdadf87edd8a0a57c63953fb0ebe053',1,'mlx::core::operator>=(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a47c82778e43032c0bbf5d59407e81dc9',1,'mlx::core::operator>=(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a14e6c43b924eacca1b2dac1d5d00ca2b',1,'mlx::core::operator>=(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3e_3e_38',['operator>>',['../group__ops.html#ga498b61f7e8f056ae00297fa0dc17303a',1,'mlx::core']]], - ['operator_5b_5d_39',['operator[]',['../classpocketfft_1_1detail_1_1arr.html#aea0bd899b19e03f54dfd6c188727061a',1,'pocketfft::detail::arr::operator[](size_t idx)'],['../classpocketfft_1_1detail_1_1arr.html#a99c54f96bc79c7cdd8925c1663462842',1,'pocketfft::detail::arr::operator[](size_t idx) const'],['../classpocketfft_1_1detail_1_1sincos__2pibyn.html#a71b02f67c47b24adb296eafd2c7a3598',1,'pocketfft::detail::sincos_2pibyn::operator[]()'],['../classpocketfft_1_1detail_1_1cndarr.html#ae4852d1fe936a5d61832b507816c7054',1,'pocketfft::detail::cndarr::operator[]()'],['../classpocketfft_1_1detail_1_1ndarr.html#a2b2c4e205e8b5c32c9fe55dfd7b8c8d8',1,'pocketfft::detail::ndarr::operator[]()']]], - ['operator_5e_40',['operator^',['../group__ops.html#gac3a6fe18694e84b3d63458e9553ac181',1,'mlx::core::operator^(const array &a, const array &b)'],['../namespacemlx_1_1core.html#ae36ea40b8477bfa12d41aae8245225c9',1,'mlx::core::operator^(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a03fc96696f5c6d9411841889d05f4670',1,'mlx::core::operator^(_MLX_BFloat16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a55130edf926366db0d6207989e609b7c',1,'mlx::core::operator^(uint16_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0b75198f364d742a1c25dd13e398f2c2',1,'mlx::core::operator^(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7f205f1b10b23180a23bf2be4bb726b1',1,'mlx::core::operator^(_MLX_Float16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a9edfe65f3c6da583c7b109290ec94b22',1,'mlx::core::operator^(uint16_t lhs, _MLX_Float16 rhs)']]], - ['operator_5e_3d_41',['operator^=',['../namespacemlx_1_1core.html#a97cb7d3eac404a442e84656cefe7cfb4',1,'mlx::core::operator^=(_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abcfd2d9615c96561fd44dfb9c341cf8e',1,'mlx::core::operator^=(_MLX_BFloat16 &lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#ae78083d766b9cf6f87cded341bbcd63e',1,'mlx::core::operator^=(_MLX_Float16 &lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#acf36c10779fbf1efbe1e6a7fd41176cd',1,'mlx::core::operator^=(_MLX_Float16 &lhs, uint16_t rhs)']]], - ['operator_7c_42',['operator|',['../group__ops.html#ga52392a2a98f09a80da8d338c4908bd02',1,'mlx::core::operator|(const array &a, const array &b)'],['../namespacemlx_1_1core.html#af84ed854132c1514dca5a524fdb7ed05',1,'mlx::core::operator|(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a7423aac70f9f2e3fb6a5c9a3fc96f703',1,'mlx::core::operator|(_MLX_BFloat16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a19805f505cb7ac72bfab66c339ea7900',1,'mlx::core::operator|(uint16_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2d933573edf4ed305fddd8a0caef1ee8',1,'mlx::core::operator|(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#afab3d4eb1b36a276922879ce6e44b7f5',1,'mlx::core::operator|(_MLX_Float16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#ab132729fa6912d22a8e402057eb4ba12',1,'mlx::core::operator|(uint16_t lhs, _MLX_Float16 rhs)']]], - ['operator_7c_3d_43',['operator|=',['../namespacemlx_1_1core.html#a8e1d21375ae4b89b3cbea3a46d262abd',1,'mlx::core::operator|=(_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a28d6c2f89e73b7b874dd1f67f853a96f',1,'mlx::core::operator|=(_MLX_BFloat16 &lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a2d8470b69cbbeefece08d3ffd46c0082',1,'mlx::core::operator|=(_MLX_Float16 &lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a359c6257097a304c00d41d64296ef4c9',1,'mlx::core::operator|=(_MLX_Float16 &lhs, uint16_t rhs)']]], - ['operator_7c_7c_44',['operator||',['../group__ops.html#ga27af56a98270d4d76d139f0f9171b83a',1,'mlx::core']]], - ['ops_2eh_45',['ops.h',['../backend_2common_2ops_8h.html',1,'(Global Namespace)'],['../backend_2metal_2kernels_2reduction_2ops_8h.html',1,'(Global Namespace)'],['../distributed_2ops_8h.html',1,'(Global Namespace)'],['../ops_8h.html',1,'(Global Namespace)']]], - ['or_46',['Or',['../struct_or.html',1,'Or< U >'],['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924a7a959bb7b33f410a03b3c887173fd7ed',1,'mlx::core::distributed::AllReduce::Or'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23da51065a44e7f9a76a6dab6de637c6db22',1,'mlx::core::BitwiseBinary::Or'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a2e53e38f8b906ed4def9a5653aeb51fe',1,'mlx::core::Reduce::Or']]], - ['ortho_47',['ortho',['../structpocketfft_1_1detail_1_1_exec_dcst.html#aea17551a49acaca5e7808dc181d38b7f',1,'pocketfft::detail::ExecDcst']]], - ['os_48',['oS',['../struct_m_l_x_conv_params.html#a19ccb9fecfccdc18b6a7f0cc43adbc6e',1,'MLXConvParams']]], - ['out_49',['out',['../struct_read_writer.html#abea3b913c952c505d0ca4e529c7316ef',1,'ReadWriter']]], - ['out_5fof_5fbounds_50',['out_of_bounds',['../struct_read_writer.html#a08e10626fbc789b6dff9172fd6c36f7c',1,'ReadWriter::out_of_bounds() const'],['../struct_read_writer.html#a6f946aea5452109dca7fc70ed39c6efe',1,'ReadWriter::out_of_bounds() const'],['../struct_read_writer.html#a8f40d7f343d32134fe27a694abfde6bf',1,'ReadWriter::out_of_bounds() const']]], - ['out_5fstrides_51',['out_strides',['../struct_m_l_x_conv_params.html#a0c8b2cfc26859a2af9d39a2cfcc3aea6',1,'MLXConvParams']]], - ['outer_52',['outer',['../group__ops.html#ga866af24e10db2797e1c5a5986dbf6c0d',1,'mlx::core']]], - ['output_5fshapes_53',['output_shapes',['../classmlx_1_1core_1_1_primitive.html#a8849dc20991398f6f9a24d6785673853',1,'mlx::core::Primitive::output_shapes()'],['../classmlx_1_1core_1_1_abs.html#ab6a2b147f58c83439ecefb9189c2da32',1,'mlx::core::Abs::output_shapes()'],['../classmlx_1_1core_1_1_add.html#a9884fece6ca4061a65241c985fcf1594',1,'mlx::core::Add::output_shapes()'],['../classmlx_1_1core_1_1_arc_cos.html#a8ecd5b9a8cc9cba841768a5b2b497974',1,'mlx::core::ArcCos::output_shapes()'],['../classmlx_1_1core_1_1_arc_cosh.html#ae5d6660121f7f5a55824b95e7fd3dc6b',1,'mlx::core::ArcCosh::output_shapes()'],['../classmlx_1_1core_1_1_arc_sin.html#a1c6e478804eb5d171e4859b872db29f5',1,'mlx::core::ArcSin::output_shapes()'],['../classmlx_1_1core_1_1_arc_sinh.html#a6e0319a3cee5f6b9d43a3ac256b2c2ed',1,'mlx::core::ArcSinh::output_shapes()'],['../classmlx_1_1core_1_1_arc_tan.html#aa5d1e60d50ffa77b1d0e14af8d7e127a',1,'mlx::core::ArcTan::output_shapes()'],['../classmlx_1_1core_1_1_arc_tan2.html#a3f4ad806a0c59c2d1ae1c55c9889bf03',1,'mlx::core::ArcTan2::output_shapes()'],['../classmlx_1_1core_1_1_arc_tanh.html#a30246c56e1d75638c3696f84323861d8',1,'mlx::core::ArcTanh::output_shapes()'],['../classmlx_1_1core_1_1_arg_partition.html#a28608aee76a2db25f6455da561526c64',1,'mlx::core::ArgPartition::output_shapes()'],['../classmlx_1_1core_1_1_arg_reduce.html#a40a047cb3ed8d1445d42100b3fd85179',1,'mlx::core::ArgReduce::output_shapes()'],['../classmlx_1_1core_1_1_arg_sort.html#ac50e0b76c457aae944425b3a57c33859',1,'mlx::core::ArgSort::output_shapes()'],['../classmlx_1_1core_1_1_as_type.html#a18922e68006b5cf005355f5c9ac57ac4',1,'mlx::core::AsType::output_shapes()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a7d2dfa8884832fc1a94ce6400d0ed599',1,'mlx::core::BitwiseBinary::output_shapes()'],['../classmlx_1_1core_1_1_ceil.html#a1eb263c04df810e212855a17af0658ea',1,'mlx::core::Ceil::output_shapes()'],['../classmlx_1_1core_1_1_compiled.html#a453a10c68b7825def5b53207bc04a71c',1,'mlx::core::Compiled::output_shapes()'],['../classmlx_1_1core_1_1_conjugate.html#ada40413e9f210251476a37cc0d0ea37f',1,'mlx::core::Conjugate::output_shapes()'],['../classmlx_1_1core_1_1_copy.html#ac3d13ebc6464403962fa1a9897fe6df3',1,'mlx::core::Copy::output_shapes()'],['../classmlx_1_1core_1_1_cos.html#a05b2d43942aa1d93a40c20ae8b90a25b',1,'mlx::core::Cos::output_shapes()'],['../classmlx_1_1core_1_1_cosh.html#a1bef7feac9a387ea80e7fc774f579962',1,'mlx::core::Cosh::output_shapes()'],['../classmlx_1_1core_1_1_divide.html#ad514bed77ad94742e26c93e446940994',1,'mlx::core::Divide::output_shapes()'],['../classmlx_1_1core_1_1_div_mod.html#a61d835d777c8063089dc708898ff314b',1,'mlx::core::DivMod::output_shapes()'],['../classmlx_1_1core_1_1_select.html#a295cd22e2284f2216bc93fdcf0b54867',1,'mlx::core::Select::output_shapes()'],['../classmlx_1_1core_1_1_remainder.html#a74bf3a9723b59200573ff8bac9a0b666',1,'mlx::core::Remainder::output_shapes()'],['../classmlx_1_1core_1_1_equal.html#a2f91e9603f63ad539837356b1ff3e7a9',1,'mlx::core::Equal::output_shapes()'],['../classmlx_1_1core_1_1_erf.html#afa4abbd7786b474c44c336a95481d187',1,'mlx::core::Erf::output_shapes()'],['../classmlx_1_1core_1_1_erf_inv.html#a22a95594e68b43b50c05355c82779639',1,'mlx::core::ErfInv::output_shapes()'],['../classmlx_1_1core_1_1_exp.html#aee7ba8d5be4a11f4b8f359b0338ab670',1,'mlx::core::Exp::output_shapes()'],['../classmlx_1_1core_1_1_expm1.html#ab9dbf34806eb43b928722ed9e8feed08',1,'mlx::core::Expm1::output_shapes()'],['../classmlx_1_1core_1_1_floor.html#aaf86becc7bfba6ee2af0d1f6d8e25015',1,'mlx::core::Floor::output_shapes()'],['../classmlx_1_1core_1_1_greater.html#ab2167a38c3baff99f527f17eb4c71d46',1,'mlx::core::Greater::output_shapes()'],['../classmlx_1_1core_1_1_greater_equal.html#a636a9cc00b0333e49978f39814af640f',1,'mlx::core::GreaterEqual::output_shapes()'],['../classmlx_1_1core_1_1_hadamard.html#a458614bc7820ae56493eb56d813b2cde',1,'mlx::core::Hadamard::output_shapes()'],['../classmlx_1_1core_1_1_less.html#a5e8b56574ccb91c065548f4bda40e278',1,'mlx::core::Less::output_shapes()'],['../classmlx_1_1core_1_1_less_equal.html#a2e259f3de11f97f3bd38a2e65667d78f',1,'mlx::core::LessEqual::output_shapes()'],['../classmlx_1_1core_1_1_log.html#a113dcc95e2a1a052238b1f5c8935a63d',1,'mlx::core::Log::output_shapes()'],['../classmlx_1_1core_1_1_log1p.html#aebf8f5b6670f55fa24283a934f4b25df',1,'mlx::core::Log1p::output_shapes()'],['../classmlx_1_1core_1_1_logical_not.html#a4a40511a052a6627085be378bbebe69c',1,'mlx::core::LogicalNot::output_shapes()'],['../classmlx_1_1core_1_1_logical_and.html#a191d69d92c01ed5ad82d4688f1de2617',1,'mlx::core::LogicalAnd::output_shapes()'],['../classmlx_1_1core_1_1_logical_or.html#a26259843be2de75d5e07cb7ea94fcfe4',1,'mlx::core::LogicalOr::output_shapes()'],['../classmlx_1_1core_1_1_log_add_exp.html#ac35cf432ecdd141d957b55fc4bff6635',1,'mlx::core::LogAddExp::output_shapes()'],['../classmlx_1_1core_1_1_maximum.html#a7bb80360ba4b74d0b0f3f74a5ff90d1b',1,'mlx::core::Maximum::output_shapes()'],['../classmlx_1_1core_1_1_minimum.html#ab4a85741dffaa64d8ead028f11539d70',1,'mlx::core::Minimum::output_shapes()'],['../classmlx_1_1core_1_1_multiply.html#a072de3911113247c95c28d3b52400061',1,'mlx::core::Multiply::output_shapes()'],['../classmlx_1_1core_1_1_negative.html#a253c08c7461bf2dce05f555c8dbf0014',1,'mlx::core::Negative::output_shapes()'],['../classmlx_1_1core_1_1_not_equal.html#a5b10e99bc564197e7b16dccb0577d89a',1,'mlx::core::NotEqual::output_shapes()'],['../classmlx_1_1core_1_1_number_of_elements.html#aae36bb1e125c0a2d7cd54e78be0f2af8',1,'mlx::core::NumberOfElements::output_shapes()'],['../classmlx_1_1core_1_1_partition.html#ae5b792df683bc14dde89f75ac6bcbeaf',1,'mlx::core::Partition::output_shapes()'],['../classmlx_1_1core_1_1_power.html#a1c17867ea1bad8899adb38185c9423c1',1,'mlx::core::Power::output_shapes()'],['../classmlx_1_1core_1_1_reduce.html#a0f73c2a55dc324145e11020c9b4d9a65',1,'mlx::core::Reduce::output_shapes()'],['../classmlx_1_1core_1_1_round.html#ad9a26817864dfc94b56e66bc6d80b047',1,'mlx::core::Round::output_shapes()'],['../classmlx_1_1core_1_1_sigmoid.html#a34572023c8748971289c2cb109ff9a43',1,'mlx::core::Sigmoid::output_shapes()'],['../classmlx_1_1core_1_1_sign.html#a719709b3c5d6b15a75614bdadd185f67',1,'mlx::core::Sign::output_shapes()'],['../classmlx_1_1core_1_1_sin.html#a46f059f04fd540f175f6031d28dc9f3a',1,'mlx::core::Sin::output_shapes()'],['../classmlx_1_1core_1_1_sinh.html#a4f10e7e6daf500575d97e077901e7d28',1,'mlx::core::Sinh::output_shapes()'],['../classmlx_1_1core_1_1_softmax.html#afea757ba328b9d8f35058793eae73e35',1,'mlx::core::Softmax::output_shapes()'],['../classmlx_1_1core_1_1_sort.html#a271545b66607b22e5f06a0fefe69f22d',1,'mlx::core::Sort::output_shapes()'],['../classmlx_1_1core_1_1_square.html#ac4c4927639cab1c5b91a074e7f68da02',1,'mlx::core::Square::output_shapes()'],['../classmlx_1_1core_1_1_sqrt.html#ae3d4f99729a7e72be7decf5a56d095d5',1,'mlx::core::Sqrt::output_shapes()'],['../classmlx_1_1core_1_1_stop_gradient.html#a12e7f55e087aea58b2a56f239c69bb4e',1,'mlx::core::StopGradient::output_shapes()'],['../classmlx_1_1core_1_1_subtract.html#a0fbf4bc9a0c76edc37ebb4083d98f3fc',1,'mlx::core::Subtract::output_shapes()'],['../classmlx_1_1core_1_1_tan.html#a7be9fd77491a48b07b6e126ab68bdf37',1,'mlx::core::Tan::output_shapes()'],['../classmlx_1_1core_1_1_tanh.html#a0392f51a9e51915d4691615757ba4325',1,'mlx::core::Tanh::output_shapes()']]], - ['outputs_54',['outputs',['../classmlx_1_1core_1_1array.html#a2c186fd527f984f0589d4183b4976289',1,'mlx::core::array']]], - ['overwrite_5fdescriptor_55',['overwrite_descriptor',['../classmlx_1_1core_1_1array.html#a95e6b156c8e05439f076b85c05079387',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/classes_0.js b/docs/build/html/search/classes_0.js deleted file mode 100644 index 9baf1e35..00000000 --- a/docs/build/html/search/classes_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['_5fmlx_5fbfloat16_0',['_MLX_BFloat16',['../struct___m_l_x___b_float16.html',1,'_MLX_BFloat16'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html',1,'mlx::core::_MLX_BFloat16']]], - ['_5fmlx_5ffloat16_1',['_MLX_Float16',['../structmlx_1_1core_1_1___m_l_x___float16.html',1,'mlx::core']]], - ['_5fnomask_2',['_NoMask',['../struct___no_mask.html',1,'']]], - ['_5fnumeric_5flimits_5fimpl_3c_20bfloat16_5ft_20_3e_3',['_numeric_limits_impl< bfloat16_t >',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html',1,'metal']]] -]; diff --git a/docs/build/html/search/classes_1.js b/docs/build/html/search/classes_1.js deleted file mode 100644 index f2ad7365..00000000 --- a/docs/build/html/search/classes_1.js +++ /dev/null @@ -1,35 +0,0 @@ -var searchData= -[ - ['abs_0',['Abs',['../struct_abs.html',1,'Abs'],['../classmlx_1_1core_1_1_abs.html',1,'mlx::core::Abs'],['../structmlx_1_1core_1_1detail_1_1_abs.html',1,'mlx::core::detail::Abs']]], - ['accumhelper_1',['AccumHelper',['../structmlx_1_1steel_1_1_accum_helper.html',1,'mlx::steel']]], - ['add_2',['Add',['../struct_add.html',1,'Add'],['../classmlx_1_1core_1_1_add.html',1,'mlx::core::Add'],['../structmlx_1_1core_1_1detail_1_1_add.html',1,'mlx::core::detail::Add']]], - ['add_5fvec_3',['add_vec',['../structpocketfft_1_1detail_1_1add__vec.html',1,'pocketfft::detail']]], - ['add_5fvec_3c_20cmplx_3c_20t_20_3e_20_3e_4',['add_vec< cmplx< T > >',['../structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html',1,'pocketfft::detail']]], - ['addmm_5',['AddMM',['../classmlx_1_1core_1_1_add_m_m.html',1,'mlx::core']]], - ['affinequantize_6',['AffineQuantize',['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html',1,'mlx::core::fast']]], - ['aligned_5fallocator_7',['aligned_allocator',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html',1,'pocketfft::detail::threading']]], - ['allgather_8',['AllGather',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html',1,'mlx::core::distributed']]], - ['allocator_9',['Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html',1,'mlx::core::allocator']]], - ['allreduce_10',['AllReduce',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html',1,'mlx::core::distributed']]], - ['and_11',['And',['../struct_and.html',1,'']]], - ['arange_12',['Arange',['../classmlx_1_1core_1_1_arange.html',1,'mlx::core']]], - ['arccos_13',['ArcCos',['../struct_arc_cos.html',1,'ArcCos'],['../classmlx_1_1core_1_1_arc_cos.html',1,'mlx::core::ArcCos'],['../structmlx_1_1core_1_1detail_1_1_arc_cos.html',1,'mlx::core::detail::ArcCos']]], - ['arccosh_14',['ArcCosh',['../struct_arc_cosh.html',1,'ArcCosh'],['../classmlx_1_1core_1_1_arc_cosh.html',1,'mlx::core::ArcCosh'],['../structmlx_1_1core_1_1detail_1_1_arc_cosh.html',1,'mlx::core::detail::ArcCosh']]], - ['arcsin_15',['ArcSin',['../struct_arc_sin.html',1,'ArcSin'],['../classmlx_1_1core_1_1_arc_sin.html',1,'mlx::core::ArcSin'],['../structmlx_1_1core_1_1detail_1_1_arc_sin.html',1,'mlx::core::detail::ArcSin']]], - ['arcsinh_16',['ArcSinh',['../struct_arc_sinh.html',1,'ArcSinh'],['../classmlx_1_1core_1_1_arc_sinh.html',1,'mlx::core::ArcSinh'],['../structmlx_1_1core_1_1detail_1_1_arc_sinh.html',1,'mlx::core::detail::ArcSinh']]], - ['arctan_17',['ArcTan',['../struct_arc_tan.html',1,'ArcTan'],['../classmlx_1_1core_1_1_arc_tan.html',1,'mlx::core::ArcTan'],['../structmlx_1_1core_1_1detail_1_1_arc_tan.html',1,'mlx::core::detail::ArcTan']]], - ['arctan2_18',['ArcTan2',['../struct_arc_tan2.html',1,'ArcTan2'],['../classmlx_1_1core_1_1_arc_tan2.html',1,'mlx::core::ArcTan2'],['../structmlx_1_1core_1_1detail_1_1_arc_tan2.html',1,'mlx::core::detail::ArcTan2']]], - ['arctanh_19',['ArcTanh',['../struct_arc_tanh.html',1,'ArcTanh'],['../classmlx_1_1core_1_1_arc_tanh.html',1,'mlx::core::ArcTanh'],['../structmlx_1_1core_1_1detail_1_1_arc_tanh.html',1,'mlx::core::detail::ArcTanh']]], - ['argpartition_20',['ArgPartition',['../classmlx_1_1core_1_1_arg_partition.html',1,'mlx::core']]], - ['argreduce_21',['ArgReduce',['../classmlx_1_1core_1_1_arg_reduce.html',1,'mlx::core']]], - ['argsort_22',['ArgSort',['../classmlx_1_1core_1_1_arg_sort.html',1,'mlx::core']]], - ['arr_23',['arr',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_3c_20pocketfft_3a_3adetail_3a_3acmplx_3c_20t0_20_3e_20_3e_24',['arr< pocketfft::detail::cmplx< T0 > >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_3c_20pocketfft_3a_3adetail_3a_3acmplx_3c_20thigh_20_3e_20_3e_25',['arr< pocketfft::detail::cmplx< Thigh > >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_3c_20t0_20_3e_26',['arr< T0 >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], - ['arr_5finfo_27',['arr_info',['../classpocketfft_1_1detail_1_1arr__info.html',1,'pocketfft::detail']]], - ['array_28',['array',['../classmlx_1_1core_1_1array.html',1,'mlx::core']]], - ['arrayiterator_29',['ArrayIterator',['../structmlx_1_1core_1_1array_1_1_array_iterator.html',1,'mlx::core::array']]], - ['asstrided_30',['AsStrided',['../classmlx_1_1core_1_1_as_strided.html',1,'mlx::core']]], - ['astype_31',['AsType',['../classmlx_1_1core_1_1_as_type.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_10.js b/docs/build/html/search/classes_10.js deleted file mode 100644 index a89c7a76..00000000 --- a/docs/build/html/search/classes_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['qrf_0',['QRF',['../classmlx_1_1core_1_1_q_r_f.html',1,'mlx::core']]], - ['quantizedblockloader_1',['QuantizedBlockLoader',['../struct_quantized_block_loader.html',1,'']]], - ['quantizedmatmul_2',['QuantizedMatmul',['../classmlx_1_1core_1_1_quantized_matmul.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_11.js b/docs/build/html/search/classes_11.js deleted file mode 100644 index af9f1f6a..00000000 --- a/docs/build/html/search/classes_11.js +++ /dev/null @@ -1,21 +0,0 @@ -var searchData= -[ - ['randombits_0',['RandomBits',['../classmlx_1_1core_1_1_random_bits.html',1,'mlx::core']]], - ['reader_1',['Reader',['../classmlx_1_1core_1_1io_1_1_reader.html',1,'mlx::core::io']]], - ['readvector_2',['ReadVector',['../structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html',1,'mlx::steel::BlockLoader']]], - ['readwriter_3',['ReadWriter',['../struct_read_writer.html',1,'']]], - ['recv_4',['Recv',['../classmlx_1_1core_1_1distributed_1_1_recv.html',1,'mlx::core::distributed']]], - ['reduce_5',['Reduce',['../classmlx_1_1core_1_1_reduce.html',1,'mlx::core']]], - ['reductionplan_6',['ReductionPlan',['../structmlx_1_1core_1_1_reduction_plan.html',1,'mlx::core']]], - ['remainder_7',['Remainder',['../structmlx_1_1core_1_1detail_1_1_remainder.html',1,'mlx::core::detail::Remainder'],['../classmlx_1_1core_1_1_remainder.html',1,'mlx::core::Remainder'],['../struct_remainder.html',1,'Remainder']]], - ['reshape_8',['Reshape',['../classmlx_1_1core_1_1_reshape.html',1,'mlx::core']]], - ['retaingraph_9',['RetainGraph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html',1,'mlx::core::detail']]], - ['rev_5fiter_10',['rev_iter',['../classpocketfft_1_1detail_1_1rev__iter.html',1,'pocketfft::detail']]], - ['rfftp_11',['rfftp',['../classpocketfft_1_1detail_1_1rfftp.html',1,'pocketfft::detail']]], - ['rightshift_12',['RightShift',['../structmlx_1_1core_1_1detail_1_1_right_shift.html',1,'mlx::core::detail::RightShift'],['../struct_right_shift.html',1,'RightShift']]], - ['rmsnorm_13',['RMSNorm',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html',1,'mlx::core::fast']]], - ['rmsnormvjp_14',['RMSNormVJP',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html',1,'mlx::core::fast']]], - ['rope_15',['RoPE',['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html',1,'mlx::core::fast']]], - ['round_16',['Round',['../structmlx_1_1core_1_1detail_1_1_round.html',1,'mlx::core::detail::Round'],['../classmlx_1_1core_1_1_round.html',1,'mlx::core::Round'],['../struct_round.html',1,'Round']]], - ['rsqrt_17',['Rsqrt',['../structmlx_1_1core_1_1detail_1_1_rsqrt.html',1,'mlx::core::detail::Rsqrt'],['../struct_rsqrt.html',1,'Rsqrt']]] -]; diff --git a/docs/build/html/search/classes_12.js b/docs/build/html/search/classes_12.js deleted file mode 100644 index d3f29cb2..00000000 --- a/docs/build/html/search/classes_12.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['scaleddotproductattention_0',['ScaledDotProductAttention',['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html',1,'mlx::core::fast']]], - ['scaleop_1',['ScaleOp',['../struct_scale_op.html',1,'']]], - ['scan_2',['Scan',['../classmlx_1_1core_1_1_scan.html',1,'mlx::core']]], - ['scatter_3',['Scatter',['../classmlx_1_1core_1_1_scatter.html',1,'mlx::core']]], - ['scheduler_4',['Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html',1,'mlx::core::scheduler']]], - ['select_5',['Select',['../structmlx_1_1core_1_1detail_1_1_select.html',1,'mlx::core::detail::Select'],['../classmlx_1_1core_1_1_select.html',1,'mlx::core::Select'],['../struct_select.html',1,'Select']]], - ['send_6',['Send',['../classmlx_1_1core_1_1distributed_1_1_send.html',1,'mlx::core::distributed']]], - ['sigmoid_7',['Sigmoid',['../structmlx_1_1core_1_1detail_1_1_sigmoid.html',1,'mlx::core::detail::Sigmoid'],['../classmlx_1_1core_1_1_sigmoid.html',1,'mlx::core::Sigmoid'],['../struct_sigmoid.html',1,'Sigmoid']]], - ['sign_8',['Sign',['../structmlx_1_1core_1_1detail_1_1_sign.html',1,'mlx::core::detail::Sign'],['../classmlx_1_1core_1_1_sign.html',1,'mlx::core::Sign'],['../struct_sign.html',1,'Sign']]], - ['simple_5fiter_9',['simple_iter',['../classpocketfft_1_1detail_1_1simple__iter.html',1,'pocketfft::detail']]], - ['sin_10',['Sin',['../structmlx_1_1core_1_1detail_1_1_sin.html',1,'mlx::core::detail::Sin'],['../classmlx_1_1core_1_1_sin.html',1,'mlx::core::Sin'],['../struct_sin.html',1,'Sin']]], - ['sincos_5f2pibyn_11',['sincos_2pibyn',['../classpocketfft_1_1detail_1_1sincos__2pibyn.html',1,'pocketfft::detail']]], - ['sinh_12',['Sinh',['../structmlx_1_1core_1_1detail_1_1_sinh.html',1,'mlx::core::detail::Sinh'],['../classmlx_1_1core_1_1_sinh.html',1,'mlx::core::Sinh'],['../struct_sinh.html',1,'Sinh']]], - ['slice_13',['Slice',['../classmlx_1_1core_1_1_slice.html',1,'mlx::core']]], - ['sliceupdate_14',['SliceUpdate',['../classmlx_1_1core_1_1_slice_update.html',1,'mlx::core']]], - ['softmax_15',['Softmax',['../classmlx_1_1core_1_1_softmax.html',1,'mlx::core']]], - ['sort_16',['Sort',['../classmlx_1_1core_1_1_sort.html',1,'mlx::core']]], - ['split_17',['Split',['../classmlx_1_1core_1_1_split.html',1,'mlx::core']]], - ['sqrt_18',['Sqrt',['../structmlx_1_1core_1_1detail_1_1_sqrt.html',1,'mlx::core::detail::Sqrt'],['../classmlx_1_1core_1_1_sqrt.html',1,'mlx::core::Sqrt'],['../struct_sqrt.html',1,'Sqrt']]], - ['square_19',['Square',['../structmlx_1_1core_1_1detail_1_1_square.html',1,'mlx::core::detail::Square'],['../classmlx_1_1core_1_1_square.html',1,'mlx::core::Square'],['../struct_square.html',1,'Square']]], - ['stopgradient_20',['StopGradient',['../classmlx_1_1core_1_1_stop_gradient.html',1,'mlx::core']]], - ['stream_21',['Stream',['../structmlx_1_1core_1_1_stream.html',1,'mlx::core']]], - ['streamcontext_22',['StreamContext',['../structmlx_1_1core_1_1_stream_context.html',1,'mlx::core']]], - ['streamthread_23',['StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html',1,'mlx::core::scheduler']]], - ['subtract_24',['Subtract',['../structmlx_1_1core_1_1detail_1_1_subtract.html',1,'mlx::core::detail::Subtract'],['../classmlx_1_1core_1_1_subtract.html',1,'mlx::core::Subtract'],['../struct_subtract.html',1,'Subtract']]], - ['sum_25',['Sum',['../struct_sum.html',1,'']]], - ['svd_26',['SVD',['../classmlx_1_1core_1_1_s_v_d.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_13.js b/docs/build/html/search/classes_13.js deleted file mode 100644 index a256f73b..00000000 --- a/docs/build/html/search/classes_13.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['t_5fdcst23_0',['T_dcst23',['../classpocketfft_1_1detail_1_1_t__dcst23.html',1,'pocketfft::detail']]], - ['t_5fdcst4_1',['T_dcst4',['../classpocketfft_1_1detail_1_1_t__dcst4.html',1,'pocketfft::detail']]], - ['t_5fdct1_2',['T_dct1',['../classpocketfft_1_1detail_1_1_t__dct1.html',1,'pocketfft::detail']]], - ['t_5fdst1_3',['T_dst1',['../classpocketfft_1_1detail_1_1_t__dst1.html',1,'pocketfft::detail']]], - ['tan_4',['Tan',['../structmlx_1_1core_1_1detail_1_1_tan.html',1,'mlx::core::detail::Tan'],['../classmlx_1_1core_1_1_tan.html',1,'mlx::core::Tan'],['../struct_tan.html',1,'Tan']]], - ['tanh_5',['Tanh',['../structmlx_1_1core_1_1detail_1_1_tanh.html',1,'mlx::core::detail::Tanh'],['../classmlx_1_1core_1_1_tanh.html',1,'mlx::core::Tanh'],['../struct_tanh.html',1,'Tanh']]], - ['thread_5fpool_6',['thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html',1,'pocketfft::detail::threading']]], - ['threadpool_7',['ThreadPool',['../class_thread_pool.html',1,'']]], - ['threadsort_8',['ThreadSort',['../struct_thread_sort.html',1,'']]], - ['transformadd_9',['TransformAdd',['../structmlx_1_1steel_1_1_transform_add.html',1,'mlx::steel']]], - ['transformaxpby_10',['TransformAxpby',['../structmlx_1_1steel_1_1_transform_axpby.html',1,'mlx::steel']]], - ['transformnone_11',['TransformNone',['../structmlx_1_1steel_1_1_transform_none.html',1,'mlx::steel']]], - ['transpose_12',['Transpose',['../classmlx_1_1core_1_1_transpose.html',1,'mlx::core']]], - ['typetodtype_13',['TypeToDtype',['../structmlx_1_1core_1_1_type_to_dtype.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_14.js b/docs/build/html/search/classes_14.js deleted file mode 100644 index 0be6b5a2..00000000 --- a/docs/build/html/search/classes_14.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['unaryprimitive_0',['UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html',1,'mlx::core']]], - ['uniform_1',['Uniform',['../classmlx_1_1core_1_1_uniform.html',1,'mlx::core']]], - ['util_2',['util',['../structpocketfft_1_1detail_1_1util.html',1,'pocketfft::detail']]] -]; diff --git a/docs/build/html/search/classes_15.js b/docs/build/html/search/classes_15.js deleted file mode 100644 index e6aaa080..00000000 --- a/docs/build/html/search/classes_15.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['view_0',['View',['../classmlx_1_1core_1_1_view.html',1,'mlx::core']]], - ['vlen_1',['VLEN',['../structpocketfft_1_1detail_1_1_v_l_e_n.html',1,'pocketfft::detail']]], - ['vtype_2',['VTYPE',['../structpocketfft_1_1detail_1_1_v_t_y_p_e.html',1,'pocketfft::detail']]] -]; diff --git a/docs/build/html/search/classes_16.js b/docs/build/html/search/classes_16.js deleted file mode 100644 index 07fc35c5..00000000 --- a/docs/build/html/search/classes_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['writer_0',['Writer',['../classmlx_1_1core_1_1io_1_1_writer.html',1,'mlx::core::io']]] -]; diff --git a/docs/build/html/search/classes_2.js b/docs/build/html/search/classes_2.js deleted file mode 100644 index f828b46c..00000000 --- a/docs/build/html/search/classes_2.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['bits_5fto_5fbfloat_5fstruct_0',['bits_to_bfloat_struct',['../struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html',1,'_MLX_BFloat16']]], - ['bitwiseand_1',['BitwiseAnd',['../struct_bitwise_and.html',1,'BitwiseAnd'],['../structmlx_1_1core_1_1detail_1_1_bitwise_and.html',1,'mlx::core::detail::BitwiseAnd']]], - ['bitwisebinary_2',['BitwiseBinary',['../classmlx_1_1core_1_1_bitwise_binary.html',1,'mlx::core']]], - ['bitwiseor_3',['BitwiseOr',['../struct_bitwise_or.html',1,'BitwiseOr'],['../structmlx_1_1core_1_1detail_1_1_bitwise_or.html',1,'mlx::core::detail::BitwiseOr']]], - ['bitwisexor_4',['BitwiseXor',['../struct_bitwise_xor.html',1,'BitwiseXor'],['../structmlx_1_1core_1_1detail_1_1_bitwise_xor.html',1,'mlx::core::detail::BitwiseXor']]], - ['blockloader_5',['BlockLoader',['../structmlx_1_1steel_1_1_block_loader.html',1,'mlx::steel']]], - ['blockmaskedmm_6',['BlockMaskedMM',['../classmlx_1_1core_1_1_block_masked_m_m.html',1,'mlx::core']]], - ['blockmergesort_7',['BlockMergeSort',['../struct_block_merge_sort.html',1,'']]], - ['blockmma_8',['BlockMMA',['../structmlx_1_1steel_1_1_block_m_m_a.html',1,'mlx::steel']]], - ['blockswizzle_9',['BlockSwizzle',['../structmlx_1_1steel_1_1_block_swizzle.html',1,'mlx::steel']]], - ['bool4_5for_5fuint_10',['bool4_or_uint',['../unionbool4__or__uint.html',1,'']]], - ['broadcast_11',['Broadcast',['../classmlx_1_1core_1_1_broadcast.html',1,'mlx::core']]], - ['buffer_12',['Buffer',['../classmlx_1_1core_1_1allocator_1_1_buffer.html',1,'mlx::core::allocator']]] -]; diff --git a/docs/build/html/search/classes_3.js b/docs/build/html/search/classes_3.js deleted file mode 100644 index 608532d1..00000000 --- a/docs/build/html/search/classes_3.js +++ /dev/null @@ -1,47 +0,0 @@ -var searchData= -[ - ['ceil_0',['Ceil',['../struct_ceil.html',1,'Ceil'],['../classmlx_1_1core_1_1_ceil.html',1,'mlx::core::Ceil'],['../structmlx_1_1core_1_1detail_1_1_ceil.html',1,'mlx::core::detail::Ceil']]], - ['cfftp_1',['cfftp',['../classpocketfft_1_1detail_1_1cfftp.html',1,'pocketfft::detail']]], - ['channelhelper_2',['ChannelHelper',['../structmlx_1_1steel_1_1_channel_helper.html',1,'mlx::steel']]], - ['channelhelper_3c_201_20_3e_3',['ChannelHelper< 1 >',['../structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html',1,'mlx::steel']]], - ['channelhelper_3c_202_20_3e_4',['ChannelHelper< 2 >',['../structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html',1,'mlx::steel']]], - ['channelhelper_3c_203_20_3e_5',['ChannelHelper< 3 >',['../structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html',1,'mlx::steel']]], - ['channelhelper_3c_204_20_3e_6',['ChannelHelper< 4 >',['../structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html',1,'mlx::steel']]], - ['cholesky_7',['Cholesky',['../classmlx_1_1core_1_1_cholesky.html',1,'mlx::core']]], - ['cmplx_8',['cmplx',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], - ['cmplx_3c_20t0_20_3e_9',['cmplx< T0 >',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], - ['cmplx_3c_20thigh_20_3e_10',['cmplx< Thigh >',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], - ['cndarr_11',['cndarr',['../classpocketfft_1_1detail_1_1cndarr.html',1,'pocketfft::detail']]], - ['commandencoder_12',['CommandEncoder',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html',1,'mlx::core::metal']]], - ['commonallocator_13',['CommonAllocator',['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html',1,'mlx::core::allocator']]], - ['compiled_14',['Compiled',['../classmlx_1_1core_1_1_compiled.html',1,'mlx::core']]], - ['complex128_5ft_15',['complex128_t',['../structmlx_1_1core_1_1complex128__t.html',1,'mlx::core']]], - ['complex64_5ft_16',['complex64_t',['../structcomplex64__t.html',1,'complex64_t'],['../structmlx_1_1core_1_1complex64__t.html',1,'mlx::core::complex64_t']]], - ['concatenate_17',['Concatenate',['../classmlx_1_1core_1_1_concatenate.html',1,'mlx::core']]], - ['concurrent_5fqueue_18',['concurrent_queue',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html',1,'pocketfft::detail::threading']]], - ['concurrent_5fqueue_3c_20std_3a_3afunction_3c_20void_28_29_3e_20_3e_19',['concurrent_queue< std::function< void()> >',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html',1,'pocketfft::detail::threading']]], - ['concurrentcontext_20',['ConcurrentContext',['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html',1,'mlx::core::metal::CommandEncoder']]], - ['conjugate_21',['Conjugate',['../struct_conjugate.html',1,'Conjugate'],['../classmlx_1_1core_1_1_conjugate.html',1,'mlx::core::Conjugate'],['../structmlx_1_1core_1_1detail_1_1_conjugate.html',1,'mlx::core::detail::Conjugate']]], - ['conv2dgeneralbaseinfo_22',['Conv2DGeneralBaseInfo',['../structmlx_1_1steel_1_1_conv2_d_general_base_info.html',1,'mlx::steel']]], - ['conv2dgeneraljumpparams_23',['Conv2DGeneralJumpParams',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html',1,'mlx::steel']]], - ['conv2dinputblockloadergeneral_24',['Conv2DInputBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html',1,'mlx::steel']]], - ['conv2dinputblockloaderlargefilter_25',['Conv2DInputBlockLoaderLargeFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html',1,'mlx::steel']]], - ['conv2dinputblockloadersmallchannels_26',['Conv2DInputBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html',1,'mlx::steel']]], - ['conv2dinputblockloadersmallfilter_27',['Conv2DInputBlockLoaderSmallFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html',1,'mlx::steel']]], - ['conv2dweightblockloader_28',['Conv2DWeightBlockLoader',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html',1,'mlx::steel']]], - ['conv2dweightblockloadergeneral_29',['Conv2DWeightBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html',1,'mlx::steel']]], - ['conv2dweightblockloadersmallchannels_30',['Conv2DWeightBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html',1,'mlx::steel']]], - ['convolution_31',['Convolution',['../classmlx_1_1core_1_1_convolution.html',1,'mlx::core']]], - ['copy_32',['Copy',['../classmlx_1_1core_1_1_copy.html',1,'mlx::core']]], - ['cos_33',['Cos',['../struct_cos.html',1,'Cos'],['../classmlx_1_1core_1_1_cos.html',1,'mlx::core::Cos'],['../structmlx_1_1core_1_1detail_1_1_cos.html',1,'mlx::core::detail::Cos']]], - ['cosh_34',['Cosh',['../struct_cosh.html',1,'Cosh'],['../classmlx_1_1core_1_1_cosh.html',1,'mlx::core::Cosh'],['../structmlx_1_1core_1_1detail_1_1_cosh.html',1,'mlx::core::detail::Cosh']]], - ['cummax_35',['CumMax',['../struct_cum_max.html',1,'']]], - ['cummin_36',['CumMin',['../struct_cum_min.html',1,'']]], - ['cumprod_37',['CumProd',['../struct_cum_prod.html',1,'']]], - ['cumprod_3c_20bool_20_3e_38',['CumProd< bool >',['../struct_cum_prod_3_01bool_01_4.html',1,'']]], - ['cumsum_39',['CumSum',['../struct_cum_sum.html',1,'']]], - ['custom_40',['Custom',['../classmlx_1_1core_1_1fast_1_1_custom.html',1,'mlx::core::fast']]], - ['customkernel_41',['CustomKernel',['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html',1,'mlx::core::fast']]], - ['customkernelshapeinfo_42',['CustomKernelShapeInfo',['../structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html',1,'mlx::core::fast']]], - ['customtransforms_43',['CustomTransforms',['../classmlx_1_1core_1_1_custom_transforms.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_4.js b/docs/build/html/search/classes_4.js deleted file mode 100644 index c39ffeac..00000000 --- a/docs/build/html/search/classes_4.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['data_0',['Data',['../structmlx_1_1core_1_1array_1_1_data.html',1,'mlx::core::array']]], - ['defaultcontiguousreduce_1',['DefaultContiguousReduce',['../structmlx_1_1core_1_1_default_contiguous_reduce.html',1,'mlx::core']]], - ['defaultstridedreduce_2',['DefaultStridedReduce',['../structmlx_1_1core_1_1_default_strided_reduce.html',1,'mlx::core']]], - ['depends_3',['Depends',['../classmlx_1_1core_1_1_depends.html',1,'mlx::core']]], - ['device_4',['Device',['../structmlx_1_1core_1_1_device.html',1,'mlx::core::Device'],['../classmlx_1_1core_1_1metal_1_1_device.html',1,'mlx::core::metal::Device']]], - ['distprimitive_5',['DistPrimitive',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html',1,'mlx::core::distributed']]], - ['divide_6',['Divide',['../struct_divide.html',1,'Divide'],['../structmlx_1_1core_1_1detail_1_1_divide.html',1,'mlx::core::detail::Divide'],['../classmlx_1_1core_1_1_divide.html',1,'mlx::core::Divide']]], - ['divmod_7',['DivMod',['../struct_div_mod.html',1,'DivMod'],['../classmlx_1_1core_1_1_div_mod.html',1,'mlx::core::DivMod']]], - ['dtype_8',['Dtype',['../structmlx_1_1core_1_1_dtype.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_5.js b/docs/build/html/search/classes_5.js deleted file mode 100644 index fbd639a1..00000000 --- a/docs/build/html/search/classes_5.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['equal_0',['Equal',['../struct_equal.html',1,'Equal'],['../structmlx_1_1core_1_1detail_1_1_equal.html',1,'mlx::core::detail::Equal'],['../classmlx_1_1core_1_1_equal.html',1,'mlx::core::Equal']]], - ['erf_1',['Erf',['../struct_erf.html',1,'Erf'],['../structmlx_1_1core_1_1detail_1_1_erf.html',1,'mlx::core::detail::Erf'],['../classmlx_1_1core_1_1_erf.html',1,'mlx::core::Erf']]], - ['erfinv_2',['ErfInv',['../struct_erf_inv.html',1,'ErfInv'],['../structmlx_1_1core_1_1detail_1_1_erf_inv.html',1,'mlx::core::detail::ErfInv'],['../classmlx_1_1core_1_1_erf_inv.html',1,'mlx::core::ErfInv']]], - ['event_3',['Event',['../classmlx_1_1core_1_1_event.html',1,'mlx::core']]], - ['execc2c_4',['ExecC2C',['../structpocketfft_1_1detail_1_1_exec_c2_c.html',1,'pocketfft::detail']]], - ['execdcst_5',['ExecDcst',['../structpocketfft_1_1detail_1_1_exec_dcst.html',1,'pocketfft::detail']]], - ['exechartley_6',['ExecHartley',['../structpocketfft_1_1detail_1_1_exec_hartley.html',1,'pocketfft::detail']]], - ['execr2r_7',['ExecR2R',['../structpocketfft_1_1detail_1_1_exec_r2_r.html',1,'pocketfft::detail']]], - ['exp_8',['Exp',['../struct_exp.html',1,'Exp'],['../structmlx_1_1core_1_1detail_1_1_exp.html',1,'mlx::core::detail::Exp'],['../classmlx_1_1core_1_1_exp.html',1,'mlx::core::Exp']]], - ['expm1_9',['Expm1',['../struct_expm1.html',1,'Expm1'],['../structmlx_1_1core_1_1detail_1_1_expm1.html',1,'mlx::core::detail::Expm1'],['../classmlx_1_1core_1_1_expm1.html',1,'mlx::core::Expm1']]] -]; diff --git a/docs/build/html/search/classes_6.js b/docs/build/html/search/classes_6.js deleted file mode 100644 index 6968fccd..00000000 --- a/docs/build/html/search/classes_6.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['fft_0',['FFT',['../classmlx_1_1core_1_1_f_f_t.html',1,'mlx::core']]], - ['fftblue_1',['fftblue',['../classpocketfft_1_1detail_1_1fftblue.html',1,'pocketfft::detail']]], - ['filewriter_2',['FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html',1,'mlx::core::io']]], - ['flags_3',['Flags',['../structmlx_1_1core_1_1array_1_1_flags.html',1,'mlx::core::array']]], - ['floor_4',['Floor',['../struct_floor.html',1,'Floor'],['../structmlx_1_1core_1_1detail_1_1_floor.html',1,'mlx::core::detail::Floor'],['../classmlx_1_1core_1_1_floor.html',1,'mlx::core::Floor']]], - ['floordivide_5',['FloorDivide',['../struct_floor_divide.html',1,'']]], - ['full_6',['Full',['../classmlx_1_1core_1_1_full.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_7.js b/docs/build/html/search/classes_7.js deleted file mode 100644 index c9171a22..00000000 --- a/docs/build/html/search/classes_7.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['gather_0',['Gather',['../classmlx_1_1core_1_1_gather.html',1,'mlx::core']]], - ['gathermm_1',['GatherMM',['../classmlx_1_1core_1_1_gather_m_m.html',1,'mlx::core']]], - ['gatherqmm_2',['GatherQMM',['../classmlx_1_1core_1_1_gather_q_m_m.html',1,'mlx::core']]], - ['gemmaddmmparams_3',['GEMMAddMMParams',['../structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html',1,'mlx::steel']]], - ['gemmkernel_4',['GEMMKernel',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html',1,'mlx::steel']]], - ['gemmparams_5',['GEMMParams',['../structmlx_1_1steel_1_1_g_e_m_m_params.html',1,'mlx::steel']]], - ['gemmspiltkparams_6',['GEMMSpiltKParams',['../structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html',1,'mlx::steel']]], - ['gemvkernel_7',['GEMVKernel',['../struct_g_e_m_v_kernel.html',1,'']]], - ['gemvtkernel_8',['GEMVTKernel',['../struct_g_e_m_v_t_kernel.html',1,'']]], - ['greater_9',['Greater',['../struct_greater.html',1,'Greater'],['../structmlx_1_1core_1_1detail_1_1_greater.html',1,'mlx::core::detail::Greater'],['../classmlx_1_1core_1_1_greater.html',1,'mlx::core::Greater']]], - ['greaterequal_10',['GreaterEqual',['../struct_greater_equal.html',1,'GreaterEqual'],['../structmlx_1_1core_1_1detail_1_1_greater_equal.html',1,'mlx::core::detail::GreaterEqual'],['../classmlx_1_1core_1_1_greater_equal.html',1,'mlx::core::GreaterEqual']]], - ['group_11',['Group',['../structmlx_1_1core_1_1distributed_1_1_group.html',1,'mlx::core::distributed']]] -]; diff --git a/docs/build/html/search/classes_8.js b/docs/build/html/search/classes_8.js deleted file mode 100644 index 802cbce8..00000000 --- a/docs/build/html/search/classes_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hadamard_0',['Hadamard',['../classmlx_1_1core_1_1_hadamard.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_9.js b/docs/build/html/search/classes_9.js deleted file mode 100644 index a49c3ac4..00000000 --- a/docs/build/html/search/classes_9.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['implicitgemmconv2dparams_0',['ImplicitGemmConv2DParams',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html',1,'mlx::steel']]], - ['indices_1',['Indices',['../struct_indices.html',1,'']]], - ['intorfloat_2',['IntOrFloat',['../unionmlx_1_1core_1_1detail_1_1_int_or_float.html',1,'mlx::core::detail']]], - ['intracing_3',['InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html',1,'mlx::core::detail']]], - ['inverse_4',['Inverse',['../classmlx_1_1core_1_1_inverse.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_a.js b/docs/build/html/search/classes_a.js deleted file mode 100644 index 68da9be6..00000000 --- a/docs/build/html/search/classes_a.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['kernelmergesort_0',['KernelMergeSort',['../struct_kernel_merge_sort.html',1,'']]], - ['kernelmultiblockmergesort_1',['KernelMultiBlockMergeSort',['../struct_kernel_multi_block_merge_sort.html',1,'']]], - ['keysequence_2',['KeySequence',['../classmlx_1_1core_1_1random_1_1_key_sequence.html',1,'mlx::core::random']]] -]; diff --git a/docs/build/html/search/classes_b.js b/docs/build/html/search/classes_b.js deleted file mode 100644 index 07d520fd..00000000 --- a/docs/build/html/search/classes_b.js +++ /dev/null @@ -1,37 +0,0 @@ -var searchData= -[ - ['latch_0',['latch',['../classpocketfft_1_1detail_1_1threading_1_1latch.html',1,'pocketfft::detail::threading']]], - ['layernorm_1',['LayerNorm',['../classmlx_1_1core_1_1fast_1_1_layer_norm.html',1,'mlx::core::fast']]], - ['layernormvjp_2',['LayerNormVJP',['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html',1,'mlx::core::fast']]], - ['leftshift_3',['LeftShift',['../struct_left_shift.html',1,'LeftShift'],['../structmlx_1_1core_1_1detail_1_1_left_shift.html',1,'mlx::core::detail::LeftShift']]], - ['less_4',['Less',['../struct_less.html',1,'Less'],['../structmlx_1_1core_1_1detail_1_1_less.html',1,'mlx::core::detail::Less'],['../classmlx_1_1core_1_1_less.html',1,'mlx::core::Less']]], - ['lessequal_5',['LessEqual',['../struct_less_equal.html',1,'LessEqual'],['../structmlx_1_1core_1_1detail_1_1_less_equal.html',1,'mlx::core::detail::LessEqual'],['../classmlx_1_1core_1_1_less_equal.html',1,'mlx::core::LessEqual']]], - ['lessthan_6',['LessThan',['../struct_less_than.html',1,'']]], - ['limits_7',['Limits',['../struct_limits.html',1,'']]], - ['limits_3c_20bfloat16_5ft_20_3e_8',['Limits< bfloat16_t >',['../struct_limits_3_01bfloat16__t_01_4.html',1,'']]], - ['limits_3c_20bool_20_3e_9',['Limits< bool >',['../struct_limits_3_01bool_01_4.html',1,'']]], - ['limits_3c_20complex64_5ft_20_3e_10',['Limits< complex64_t >',['../struct_limits_3_01complex64__t_01_4.html',1,'']]], - ['limits_3c_20float_20_3e_11',['Limits< float >',['../struct_limits_3_01float_01_4.html',1,'']]], - ['limits_3c_20half_20_3e_12',['Limits< half >',['../struct_limits_3_01half_01_4.html',1,'']]], - ['limits_3c_20int16_5ft_20_3e_13',['Limits< int16_t >',['../struct_limits_3_01int16__t_01_4.html',1,'']]], - ['limits_3c_20int32_5ft_20_3e_14',['Limits< int32_t >',['../struct_limits_3_01int32__t_01_4.html',1,'']]], - ['limits_3c_20int64_5ft_20_3e_15',['Limits< int64_t >',['../struct_limits_3_01int64__t_01_4.html',1,'']]], - ['limits_3c_20int8_5ft_20_3e_16',['Limits< int8_t >',['../struct_limits_3_01int8__t_01_4.html',1,'']]], - ['limits_3c_20uint16_5ft_20_3e_17',['Limits< uint16_t >',['../struct_limits_3_01uint16__t_01_4.html',1,'']]], - ['limits_3c_20uint32_5ft_20_3e_18',['Limits< uint32_t >',['../struct_limits_3_01uint32__t_01_4.html',1,'']]], - ['limits_3c_20uint64_5ft_20_3e_19',['Limits< uint64_t >',['../struct_limits_3_01uint64__t_01_4.html',1,'']]], - ['limits_3c_20uint8_5ft_20_3e_20',['Limits< uint8_t >',['../struct_limits_3_01uint8__t_01_4.html',1,'']]], - ['load_21',['Load',['../classmlx_1_1core_1_1_load.html',1,'mlx::core']]], - ['log_22',['Log',['../struct_log.html',1,'Log'],['../structmlx_1_1core_1_1detail_1_1_log.html',1,'mlx::core::detail::Log'],['../classmlx_1_1core_1_1_log.html',1,'mlx::core::Log']]], - ['log10_23',['Log10',['../struct_log10.html',1,'Log10'],['../structmlx_1_1core_1_1detail_1_1_log10.html',1,'mlx::core::detail::Log10']]], - ['log1p_24',['Log1p',['../struct_log1p.html',1,'Log1p'],['../structmlx_1_1core_1_1detail_1_1_log1p.html',1,'mlx::core::detail::Log1p'],['../classmlx_1_1core_1_1_log1p.html',1,'mlx::core::Log1p']]], - ['log2_25',['Log2',['../struct_log2.html',1,'Log2'],['../structmlx_1_1core_1_1detail_1_1_log2.html',1,'mlx::core::detail::Log2']]], - ['logaddexp_26',['LogAddExp',['../struct_log_add_exp.html',1,'LogAddExp'],['../structmlx_1_1core_1_1detail_1_1_log_add_exp.html',1,'mlx::core::detail::LogAddExp'],['../classmlx_1_1core_1_1_log_add_exp.html',1,'mlx::core::LogAddExp']]], - ['logicaland_27',['LogicalAnd',['../struct_logical_and.html',1,'LogicalAnd'],['../structmlx_1_1core_1_1detail_1_1_logical_and.html',1,'mlx::core::detail::LogicalAnd'],['../classmlx_1_1core_1_1_logical_and.html',1,'mlx::core::LogicalAnd']]], - ['logicalnot_28',['LogicalNot',['../struct_logical_not.html',1,'LogicalNot'],['../structmlx_1_1core_1_1detail_1_1_logical_not.html',1,'mlx::core::detail::LogicalNot'],['../classmlx_1_1core_1_1_logical_not.html',1,'mlx::core::LogicalNot']]], - ['logicalor_29',['LogicalOr',['../struct_logical_or.html',1,'LogicalOr'],['../structmlx_1_1core_1_1detail_1_1_logical_or.html',1,'mlx::core::detail::LogicalOr'],['../classmlx_1_1core_1_1_logical_or.html',1,'mlx::core::LogicalOr']]], - ['loopalignment_30',['LoopAlignment',['../structmlx_1_1steel_1_1_loop_alignment.html',1,'mlx::steel']]], - ['looped_5felem_5fto_5floc_31',['looped_elem_to_loc',['../structlooped__elem__to__loc.html',1,'']]], - ['looped_5felem_5fto_5floc_3c_200_2c_20offset_5ft_20_3e_32',['looped_elem_to_loc< 0, offset_t >',['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html',1,'']]], - ['looped_5felem_5fto_5floc_3c_201_2c_20offset_5ft_20_3e_33',['looped_elem_to_loc< 1, offset_t >',['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html',1,'']]] -]; diff --git a/docs/build/html/search/classes_c.js b/docs/build/html/search/classes_c.js deleted file mode 100644 index 55bf64ba..00000000 --- a/docs/build/html/search/classes_c.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['matmul_0',['Matmul',['../classmlx_1_1core_1_1_matmul.html',1,'mlx::core']]], - ['max_1',['Max',['../struct_max.html',1,'']]], - ['maximum_2',['Maximum',['../struct_maximum.html',1,'Maximum'],['../structmlx_1_1core_1_1detail_1_1_maximum.html',1,'mlx::core::detail::Maximum'],['../classmlx_1_1core_1_1_maximum.html',1,'mlx::core::Maximum']]], - ['metalallocator_3',['MetalAllocator',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html',1,'mlx::core::metal']]], - ['min_4',['Min',['../struct_min.html',1,'']]], - ['minimum_5',['Minimum',['../struct_minimum.html',1,'Minimum'],['../structmlx_1_1core_1_1detail_1_1_minimum.html',1,'mlx::core::detail::Minimum'],['../classmlx_1_1core_1_1_minimum.html',1,'mlx::core::Minimum']]], - ['mlx_5fatomic_6',['mlx_atomic',['../structmlx__atomic.html',1,'']]], - ['mlx_5fatomic_3c_20t_2c_20enable_5fif_5ft_3c_20is_5fmetal_5fatomic_3c_20t_20_3e_20_3e_20_3e_7',['mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >',['../structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html',1,'']]], - ['mlxconvparams_8',['MLXConvParams',['../struct_m_l_x_conv_params.html',1,'']]], - ['mlxconvparams_3c_202_20_3e_9',['MLXConvParams< 2 >',['../struct_m_l_x_conv_params.html',1,'']]], - ['mlxfastattentionparams_10',['MLXFastAttentionParams',['../struct_m_l_x_fast_attention_params.html',1,'']]], - ['mlxscaleddotproductattentionparams_11',['MLXScaledDotProductAttentionParams',['../struct_m_l_x_scaled_dot_product_attention_params.html',1,'']]], - ['multi_5fiter_12',['multi_iter',['../classpocketfft_1_1detail_1_1multi__iter.html',1,'pocketfft::detail']]], - ['multiply_13',['Multiply',['../structmlx_1_1core_1_1detail_1_1_multiply.html',1,'mlx::core::detail::Multiply'],['../classmlx_1_1core_1_1_multiply.html',1,'mlx::core::Multiply'],['../struct_multiply.html',1,'Multiply']]] -]; diff --git a/docs/build/html/search/classes_d.js b/docs/build/html/search/classes_d.js deleted file mode 100644 index 01ecdbf2..00000000 --- a/docs/build/html/search/classes_d.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['nanequal_0',['NaNEqual',['../structmlx_1_1core_1_1detail_1_1_na_n_equal.html',1,'mlx::core::detail::NaNEqual'],['../struct_na_n_equal.html',1,'NaNEqual']]], - ['ndarr_1',['ndarr',['../classpocketfft_1_1detail_1_1ndarr.html',1,'pocketfft::detail']]], - ['negative_2',['Negative',['../structmlx_1_1core_1_1detail_1_1_negative.html',1,'mlx::core::detail::Negative'],['../classmlx_1_1core_1_1_negative.html',1,'mlx::core::Negative'],['../struct_negative.html',1,'Negative']]], - ['nodenamer_3',['NodeNamer',['../structmlx_1_1core_1_1_node_namer.html',1,'mlx::core']]], - ['none_4',['None',['../struct_none.html',1,'']]], - ['notequal_5',['NotEqual',['../structmlx_1_1core_1_1detail_1_1_not_equal.html',1,'mlx::core::detail::NotEqual'],['../classmlx_1_1core_1_1_not_equal.html',1,'mlx::core::NotEqual'],['../struct_not_equal.html',1,'NotEqual']]], - ['numberofelements_6',['NumberOfElements',['../classmlx_1_1core_1_1_number_of_elements.html',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/classes_e.js b/docs/build/html/search/classes_e.js deleted file mode 100644 index 7d7191ab..00000000 --- a/docs/build/html/search/classes_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['or_0',['Or',['../struct_or.html',1,'']]] -]; diff --git a/docs/build/html/search/classes_f.js b/docs/build/html/search/classes_f.js deleted file mode 100644 index 70415501..00000000 --- a/docs/build/html/search/classes_f.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['pad_0',['Pad',['../classmlx_1_1core_1_1_pad.html',1,'mlx::core']]], - ['parallelfilereader_1',['ParallelFileReader',['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html',1,'mlx::core::io']]], - ['partition_2',['Partition',['../classmlx_1_1core_1_1_partition.html',1,'mlx::core']]], - ['pocketfft_5fc_3',['pocketfft_c',['../classpocketfft_1_1detail_1_1pocketfft__c.html',1,'pocketfft::detail']]], - ['pocketfft_5fr_4',['pocketfft_r',['../classpocketfft_1_1detail_1_1pocketfft__r.html',1,'pocketfft::detail']]], - ['power_5',['Power',['../structmlx_1_1core_1_1detail_1_1_power.html',1,'mlx::core::detail::Power'],['../classmlx_1_1core_1_1_power.html',1,'mlx::core::Power'],['../struct_power.html',1,'Power']]], - ['primitive_6',['Primitive',['../classmlx_1_1core_1_1_primitive.html',1,'mlx::core']]], - ['printformatter_7',['PrintFormatter',['../structmlx_1_1core_1_1_print_formatter.html',1,'mlx::core']]], - ['prod_8',['Prod',['../struct_prod.html',1,'']]] -]; diff --git a/docs/build/html/search/close.svg b/docs/build/html/search/close.svg deleted file mode 100644 index 337d6cc1..00000000 --- a/docs/build/html/search/close.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/docs/build/html/search/defines_0.js b/docs/build/html/search/defines_0.js deleted file mode 100644 index 98127781..00000000 --- a/docs/build/html/search/defines_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5f_5fmlx_5fbfloat_5fnan_5f_5f_0',['__MLX_BFLOAT_NAN__',['../types_2bf16_8h.html#a78cafe726142a0166894e0c0a70b19f6',1,'bf16.h']]], - ['_5f_5fmlx_5fhalf_5fnan_5f_5f_1',['__MLX_HALF_NAN__',['../fp16_8h.html#a10abf57a099efdbb9db0c78e9c120e50',1,'fp16.h']]] -]; diff --git a/docs/build/html/search/defines_1.js b/docs/build/html/search/defines_1.js deleted file mode 100644 index 1abab1b5..00000000 --- a/docs/build/html/search/defines_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['add_5fhalf_5fbinops_0',['ADD_HALF_BINOPS',['../half__types_8h.html#a6bc906918877a7084068a9f0ed571dca',1,'ADD_HALF_BINOPS: half_types.h'],['../half__types_8h.html#a6bc906918877a7084068a9f0ed571dca',1,'ADD_HALF_BINOPS: half_types.h']]] -]; diff --git a/docs/build/html/search/defines_2.js b/docs/build/html/search/defines_2.js deleted file mode 100644 index 51c520bf..00000000 --- a/docs/build/html/search/defines_2.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['bfloat16_5fto_5fuint16_0',['bfloat16_to_uint16',['../bf16__math_8h.html#a51cfdd4502e755310f6f3456f039bea7',1,'bf16_math.h']]], - ['bfloat_5fbinop_1',['bfloat_binop',['../backend_2metal_2kernels_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707',1,'bfloat_binop: bf16.h'],['../types_2bf16_8h.html#a7694892a131c0e31e5153c088cccb707',1,'bfloat_binop: bf16.h']]], - ['bfloat_5fbinop_5fbase_2',['bfloat_binop_base',['../backend_2metal_2kernels_2bf16_8h.html#a78c92beda4436da9a2e520fa98c59f70',1,'bfloat_binop_base: bf16.h'],['../types_2bf16_8h.html#a78c92beda4436da9a2e520fa98c59f70',1,'bfloat_binop_base: bf16.h']]], - ['bfloat_5fbinop_5fhelper_3',['bfloat_binop_helper',['../backend_2metal_2kernels_2bf16_8h.html#ac7ff36230dab17e8f17b7a7c80888594',1,'bfloat_binop_helper: bf16.h'],['../types_2bf16_8h.html#ac7ff36230dab17e8f17b7a7c80888594',1,'bfloat_binop_helper: bf16.h']]], - ['bfloat_5fbitop_4',['bfloat_bitop',['../types_2bf16_8h.html#aac9ba86d4bf05bcda1936494f9b9b4d3',1,'bf16.h']]], - ['bfloat_5fcompop_5',['bfloat_compop',['../backend_2metal_2kernels_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239',1,'bfloat_compop: bf16.h'],['../types_2bf16_8h.html#a330a0883503cb640f1cf628a7ca50239',1,'bfloat_compop: bf16.h']]], - ['bfloat_5finplace_5fbitop_6',['bfloat_inplace_bitop',['../types_2bf16_8h.html#af13b46bc58e6e6f675ae47aabec37711',1,'bf16.h']]], - ['bfloat_5finplace_5fop_7',['bfloat_inplace_op',['../backend_2metal_2kernels_2bf16_8h.html#a4ac82467fbc674e990090f482b9c1e5c',1,'bfloat_inplace_op: bf16.h'],['../types_2bf16_8h.html#aee905053f51f76e0c1af94199714d514',1,'bfloat_inplace_op: bf16.h']]], - ['bfloat_5finplace_5fop_5faddr_5fspace_5fhelper_8',['bfloat_inplace_op_addr_space_helper',['../backend_2metal_2kernels_2bf16_8h.html#af30a2cbd2c3415516203b83bd21872f8',1,'bfloat_inplace_op_addr_space_helper: bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1457da931c28fa4e2500daa4e6441e8b',1,'bfloat_inplace_op_addr_space_helper: bf16.h']]], - ['bfloat_5finplace_5fop_5fhelper_9',['bfloat_inplace_op_helper',['../backend_2metal_2kernels_2bf16_8h.html#a2846fd11b5e19b435e9f7ef0998c9b1d',1,'bfloat_inplace_op_helper: bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afe5988aa8147be2bafda6a5b7792fe15',1,'bfloat_inplace_op_helper: bf16.h']]] -]; diff --git a/docs/build/html/search/defines_3.js b/docs/build/html/search/defines_3.js deleted file mode 100644 index 9671e6eb..00000000 --- a/docs/build/html/search/defines_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['complex_5fbinop_0',['complex_binop',['../types_2complex_8h.html#a9c7995d495359894e1b30c0f1678d6bd',1,'complex.h']]], - ['complex_5fbinop_5fhelper_1',['complex_binop_helper',['../types_2complex_8h.html#ac6890f9852de12339b09b65757ebc8c4',1,'complex.h']]] -]; diff --git a/docs/build/html/search/defines_4.js b/docs/build/html/search/defines_4.js deleted file mode 100644 index 0f05e8ba..00000000 --- a/docs/build/html/search/defines_4.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['define_5fdefault_5fis_5fequivalent_0',['DEFINE_DEFAULT_IS_EQUIVALENT',['../primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a',1,'primitives.h']]], - ['define_5fgrads_1',['DEFINE_GRADS',['../primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6',1,'primitives.h']]], - ['define_5finput_5foutput_5fshape_2',['DEFINE_INPUT_OUTPUT_SHAPE',['../primitives_8h.html#a649a06267b75e007224ea4ddefedb999',1,'primitives.h']]], - ['define_5fprint_3',['DEFINE_PRINT',['../primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592',1,'primitives.h']]], - ['define_5fsimd_5freduce_4',['DEFINE_SIMD_REDUCE',['../backend_2metal_2kernels_2reduction_2ops_8h.html#acacf99e0ba629ed062ccc3c2eba89b05',1,'ops.h']]], - ['define_5fvmap_5',['DEFINE_VMAP',['../primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd',1,'primitives.h']]] -]; diff --git a/docs/build/html/search/defines_5.js b/docs/build/html/search/defines_5.js deleted file mode 100644 index 3cffc479..00000000 --- a/docs/build/html/search/defines_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fp16_5fbf16_5fbinop_5fhelper_0',['fp16_bf16_binop_helper',['../half__types_8h.html#a1f0d5d395d403bde764fffe4846617f9',1,'half_types.h']]] -]; diff --git a/docs/build/html/search/defines_6.js b/docs/build/html/search/defines_6.js deleted file mode 100644 index 2fd5f085..00000000 --- a/docs/build/html/search/defines_6.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['half_5fbinop_0',['half_binop',['../fp16_8h.html#af58966694c5d80f9a0241670f3128199',1,'fp16.h']]], - ['half_5fbinop_5fbase_1',['half_binop_base',['../fp16_8h.html#a8420acf5d2687fbdafcc9052c949f323',1,'fp16.h']]], - ['half_5fbinop_5fhelper_2',['half_binop_helper',['../fp16_8h.html#aa300338c53d5a9f52fbbde8fd777f13d',1,'fp16.h']]], - ['half_5fbitop_3',['half_bitop',['../fp16_8h.html#a2242eaa64839925fd8f586dde7a59800',1,'fp16.h']]], - ['half_5fcompop_4',['half_compop',['../fp16_8h.html#acec0b85a9974cbde7b270a121f382405',1,'fp16.h']]], - ['half_5finplace_5fbitop_5',['half_inplace_bitop',['../fp16_8h.html#a378e011e994bf62a961c3c1cd6f7c290',1,'fp16.h']]], - ['half_5finplace_5fop_6',['half_inplace_op',['../fp16_8h.html#a6348c00d31a50b2df1b47d18af49c4b8',1,'fp16.h']]] -]; diff --git a/docs/build/html/search/defines_7.js b/docs/build/html/search/defines_7.js deleted file mode 100644 index 5f2affee..00000000 --- a/docs/build/html/search/defines_7.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['instantiate_5fdefault_5flimit_0',['instantiate_default_limit',['../backend_2metal_2kernels_2utils_8h.html#abedffa358e7ba7782cc78d6772064c7c',1,'utils.h']]], - ['instantiate_5ffloat_5flimit_1',['instantiate_float_limit',['../backend_2metal_2kernels_2utils_8h.html#a1e520e23f58ca645dea1ac20998d987a',1,'utils.h']]], - ['instantiate_5fkernel_2',['instantiate_kernel',['../defines_8h.html#a0cc4a821c1090d4183ff3a31da7e9f7b',1,'defines.h']]], - ['instantiate_5fmetal_5fmath_5ffuncs_3',['instantiate_metal_math_funcs',['../bf16__math_8h.html#a9e9f0fdd6e304522bc88acd22c576842',1,'bf16_math.h']]], - ['instantiate_5fmetal_5fsimd_5fcomm_5ffuncs_4',['instantiate_metal_simd_comm_funcs',['../bf16__math_8h.html#aecc11cb898846d01bfc9faa109fcf791',1,'bf16_math.h']]], - ['instantiate_5fmetal_5fsimd_5freduction_5ffuncs_5',['instantiate_metal_simd_reduction_funcs',['../bf16__math_8h.html#a51688bc24fc9292aaec5f54a58eaa2d0',1,'bf16_math.h']]] -]; diff --git a/docs/build/html/search/defines_8.js b/docs/build/html/search/defines_8.js deleted file mode 100644 index 79205dfb..00000000 --- a/docs/build/html/search/defines_8.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['max_5foutput_5fsize_0',['MAX_OUTPUT_SIZE',['../backend_2metal_2kernels_2fft_8h.html#a28d683cf067736d76f867f30c066317e',1,'fft.h']]], - ['max_5fradix_1',['MAX_RADIX',['../backend_2metal_2kernels_2fft_8h.html#a7b6e56afa21f022c5e754b000955735a',1,'MAX_RADIX: fft.h'],['../readwrite_8h.html#a7b6e56afa21f022c5e754b000955735a',1,'MAX_RADIX: readwrite.h']]], - ['mlx_5flapack_5ffunc_2',['MLX_LAPACK_FUNC',['../lapack__helper_8h.html#ae22db9704827bf013a0a61f21a47464b',1,'lapack_helper.h']]], - ['mlx_5fmtl_5fconst_3',['MLX_MTL_CONST',['../kernels_2gemv__masked_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'MLX_MTL_CONST: gemv_masked.h'],['../quantized_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'MLX_MTL_CONST: quantized.h'],['../sort_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'MLX_MTL_CONST: sort.h']]], - ['mlx_5fmtl_5floop_5funroll_4',['MLX_MTL_LOOP_UNROLL',['../sort_8h.html#ad34b622323cebef136669fedd7229515',1,'sort.h']]], - ['mlx_5fmtl_5fpragma_5funroll_5',['MLX_MTL_PRAGMA_UNROLL',['../kernels_2gemv__masked_8h.html#a069b682d7d21827461544817d722bfd3',1,'MLX_MTL_PRAGMA_UNROLL: gemv_masked.h'],['../backend_2metal_2kernels_2utils_8h.html#a069b682d7d21827461544817d722bfd3',1,'MLX_MTL_PRAGMA_UNROLL: utils.h']]], - ['mtl_5fconst_6',['MTL_CONST',['../defines_8h.html#a767ed9f2604de22b259cee02c4ce1d22',1,'defines.h']]] -]; diff --git a/docs/build/html/search/defines_9.js b/docs/build/html/search/defines_9.js deleted file mode 100644 index 5aca25ab..00000000 --- a/docs/build/html/search/defines_9.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['pocketfft_5fcache_5fsize_0',['POCKETFFT_CACHE_SIZE',['../pocketfft_8h.html#a9e604bcf20603d70b62b233d3f306714',1,'pocketfft.h']]], - ['pocketfft_5fno_5fvectors_1',['POCKETFFT_NO_VECTORS',['../pocketfft_8h.html#aa9cdaed0819c48f97fcd19f05c289160',1,'pocketfft.h']]], - ['pocketfft_5fnoinline_2',['POCKETFFT_NOINLINE',['../pocketfft_8h.html#a7020984e0ca1d6e565629ca6e7c1a7e0',1,'pocketfft.h']]], - ['pocketfft_5fpartstep11_3',['POCKETFFT_PARTSTEP11',['../pocketfft_8h.html#a1793d0d00f2e13101eb5ad0719c40817',1,'pocketfft.h']]], - ['pocketfft_5fpartstep11a_4',['POCKETFFT_PARTSTEP11a',['../pocketfft_8h.html#ac35e1aa5ae84d655256b7a0afd9051c2',1,'pocketfft.h']]], - ['pocketfft_5fpartstep11a0_5',['POCKETFFT_PARTSTEP11a0',['../pocketfft_8h.html#ab2df44457945ab625fb38a777a46af1b',1,'pocketfft.h']]], - ['pocketfft_5fpartstep3a_6',['POCKETFFT_PARTSTEP3a',['../pocketfft_8h.html#ac112b26e5130636ac1d91c2f0af45e0b',1,'pocketfft.h']]], - ['pocketfft_5fpartstep3b_7',['POCKETFFT_PARTSTEP3b',['../pocketfft_8h.html#a41e646e5535a3a1c6e0d0e67122382f5',1,'pocketfft.h']]], - ['pocketfft_5fpartstep5a_8',['POCKETFFT_PARTSTEP5a',['../pocketfft_8h.html#a078bc2bd38ab0ffb15b981878c9de03c',1,'pocketfft.h']]], - ['pocketfft_5fpartstep5b_9',['POCKETFFT_PARTSTEP5b',['../pocketfft_8h.html#ab8a5da142555e059c5e9c618f75b46fa',1,'pocketfft.h']]], - ['pocketfft_5fpartstep7_10',['POCKETFFT_PARTSTEP7',['../pocketfft_8h.html#af7de1f82911a973d8446cf3f40ff3044',1,'pocketfft.h']]], - ['pocketfft_5fpartstep7a_11',['POCKETFFT_PARTSTEP7a',['../pocketfft_8h.html#a2b27f6e1f0ee131765186870517255c6',1,'pocketfft.h']]], - ['pocketfft_5fpartstep7a0_12',['POCKETFFT_PARTSTEP7a0',['../pocketfft_8h.html#a9c2fc2de74a031c38e9d8a21249ae1cd',1,'pocketfft.h']]], - ['pocketfft_5fprep11_13',['POCKETFFT_PREP11',['../pocketfft_8h.html#a536d2ea61479d4b074bf52ce09fdbc3a',1,'pocketfft.h']]], - ['pocketfft_5fprep3_14',['POCKETFFT_PREP3',['../pocketfft_8h.html#ae2fd9d433c417f0768fe1b58145b2e59',1,'pocketfft.h']]], - ['pocketfft_5fprep5_15',['POCKETFFT_PREP5',['../pocketfft_8h.html#a73077c26d2a82754db2a9c48bc0e11a6',1,'pocketfft.h']]], - ['pocketfft_5fprep7_16',['POCKETFFT_PREP7',['../pocketfft_8h.html#ae7c4d0cda5b3824f84eac54addabd6ec',1,'pocketfft.h']]], - ['pocketfft_5frearrange_17',['POCKETFFT_REARRANGE',['../pocketfft_8h.html#acffdf2e1ab84f36a7a097e1b8b87a9f9',1,'pocketfft.h']]], - ['pocketfft_5frestrict_18',['POCKETFFT_RESTRICT',['../pocketfft_8h.html#abbe177c4872821b32d76d5ce08d6ce82',1,'pocketfft.h']]] -]; diff --git a/docs/build/html/search/defines_a.js b/docs/build/html/search/defines_a.js deleted file mode 100644 index b1a537ec..00000000 --- a/docs/build/html/search/defines_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['radix_5fstep_0',['RADIX_STEP',['../backend_2metal_2kernels_2fft_8h.html#a794032d3a9acff0e31c77c69d0007f10',1,'fft.h']]] -]; diff --git a/docs/build/html/search/defines_b.js b/docs/build/html/search/defines_b.js deleted file mode 100644 index 3a705c84..00000000 --- a/docs/build/html/search/defines_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['steel_5fconst_0',['STEEL_CONST',['../steel_2defines_8h.html#a90b91c866313ffa46eff6d9cc944ad2b',1,'defines.h']]], - ['steel_5fpragma_5funroll_1',['STEEL_PRAGMA_UNROLL',['../steel_2defines_8h.html#a5a5c3095b132a7589bc19cd5cb80e2c6',1,'defines.h']]] -]; diff --git a/docs/build/html/search/defines_c.js b/docs/build/html/search/defines_c.js deleted file mode 100644 index 822e6ecf..00000000 --- a/docs/build/html/search/defines_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['uint16_5fto_5fbfloat16_0',['uint16_to_bfloat16',['../bf16__math_8h.html#a030d871474c0e7d907fccffcc8c047e0',1,'bf16_math.h']]] -]; diff --git a/docs/build/html/search/enums_0.js b/docs/build/html/search/enums_0.js deleted file mode 100644 index ce385f30..00000000 --- a/docs/build/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['base_0',['Base',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421',1,'mlx::core::Log']]] -]; diff --git a/docs/build/html/search/enums_1.js b/docs/build/html/search/enums_1.js deleted file mode 100644 index 26751f6c..00000000 --- a/docs/build/html/search/enums_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['category_0',['Category',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2d',1,'mlx::core::Dtype']]], - ['compilemode_1',['CompileMode',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4',1,'mlx::core']]], - ['copytype_2',['CopyType',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/enums_2.js b/docs/build/html/search/enums_2.js deleted file mode 100644 index 84a072b3..00000000 --- a/docs/build/html/search/enums_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['devicetype_0',['DeviceType',['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdb',1,'mlx::core::Device']]] -]; diff --git a/docs/build/html/search/enums_3.js b/docs/build/html/search/enums_3.js deleted file mode 100644 index 35a78600..00000000 --- a/docs/build/html/search/enums_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kind_0',['Kind',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enums_4.js b/docs/build/html/search/enums_4.js deleted file mode 100644 index 32da2e0f..00000000 --- a/docs/build/html/search/enums_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['op_0',['Op',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d',1,'mlx::core::BitwiseBinary']]] -]; diff --git a/docs/build/html/search/enums_5.js b/docs/build/html/search/enums_5.js deleted file mode 100644 index c1bd7737..00000000 --- a/docs/build/html/search/enums_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['reducetype_0',['ReduceType',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924',1,'mlx::core::distributed::AllReduce::ReduceType'],['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3',1,'mlx::core::ArgReduce::ReduceType'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9',1,'mlx::core::Reduce::ReduceType'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1',1,'mlx::core::Scan::ReduceType'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613c',1,'mlx::core::Scatter::ReduceType']]], - ['reductionoptype_1',['ReductionOpType',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/enums_6.js b/docs/build/html/search/enums_6.js deleted file mode 100644 index 2ae88c71..00000000 --- a/docs/build/html/search/enums_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['status_0',['Status',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/enums_7.js b/docs/build/html/search/enums_7.js deleted file mode 100644 index 6a3fc021..00000000 --- a/docs/build/html/search/enums_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['val_0',['Val',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1da',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enumvalues_0.js b/docs/build/html/search/enumvalues_0.js deleted file mode 100644 index 1fbbee9e..00000000 --- a/docs/build/html/search/enumvalues_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['and_0',['And',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924aba3b7fb927f6b6c8b198a9cdc3dd9e02',1,'mlx::core::distributed::AllReduce::And'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dab14e7d426f45ae7f029f4e00210fbae4',1,'mlx::core::BitwiseBinary::And'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a5cc3412a1f243dcb11661bca42daea93',1,'mlx::core::Reduce::And']]], - ['argmax_1',['ArgMax',['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e',1,'mlx::core::ArgReduce']]], - ['argmin_2',['ArgMin',['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9',1,'mlx::core::ArgReduce']]], - ['available_3',['available',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078a308bd3e5bf976888b120dd36d0c2d2ae',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/enumvalues_1.js b/docs/build/html/search/enumvalues_1.js deleted file mode 100644 index e85f13ab..00000000 --- a/docs/build/html/search/enumvalues_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['b_0',['b',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a92eb5ffee6ae2fec3ad71c777531578f',1,'mlx::core::Dtype']]], - ['bfloat16_1',['bfloat16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa444fe01f3a7a54d1809aef0912846a47',1,'mlx::core::Dtype']]], - ['bool_5f_2',['bool_',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa467afb5838aa377d55cce81f84c5512b',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enumvalues_10.js b/docs/build/html/search/enumvalues_10.js deleted file mode 100644 index b173a990..00000000 --- a/docs/build/html/search/enumvalues_10.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['u_0',['u',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a7b774effe4a349c6dd82ad4f4f21d34c',1,'mlx::core::Dtype']]], - ['uint16_1',['uint16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daaa00ef2ef85ff67b7b39339886f19044f',1,'mlx::core::Dtype']]], - ['uint32_2',['uint32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa3de84ad0700f2a1571f633d399e1900e',1,'mlx::core::Dtype']]], - ['uint64_3',['uint64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa2e8d31865e5d4b9d8611e1b991baed07',1,'mlx::core::Dtype']]], - ['uint8_4',['uint8',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa5f423e669d0a8f4ab7c4c3e6da27161a',1,'mlx::core::Dtype']]], - ['unscheduled_5',['unscheduled',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078ae8a9988458b0355001674020a45656fb',1,'mlx::core::array']]], - ['unsignedinteger_6',['unsignedinteger',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da9c035d4e66b2c72f583cde964cf3a0d3',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enumvalues_11.js b/docs/build/html/search/enumvalues_11.js deleted file mode 100644 index c5c21816..00000000 --- a/docs/build/html/search/enumvalues_11.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['v_0',['V',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a5206560a306a2e085a437fd258eb57ce',1,'mlx::core::Dtype']]], - ['vector_1',['Vector',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a57dea6f5039281b7fee517fc43bf3110',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/enumvalues_12.js b/docs/build/html/search/enumvalues_12.js deleted file mode 100644 index 4dc4a475..00000000 --- a/docs/build/html/search/enumvalues_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xor_0',['Xor',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23dac95e7d8e6205449a70c8134e7dae3bd1',1,'mlx::core::BitwiseBinary']]] -]; diff --git a/docs/build/html/search/enumvalues_2.js b/docs/build/html/search/enumvalues_2.js deleted file mode 100644 index 0ecbf5d8..00000000 --- a/docs/build/html/search/enumvalues_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['c_0',['c',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a4a8a08f09d37b73795649038408b5f33',1,'mlx::core::Dtype']]], - ['complex64_1',['complex64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa8c022579455bcd2c681f007e84f4e2cf',1,'mlx::core::Dtype']]], - ['complexfloating_2',['complexfloating',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2dafb203630099d501ff7c255a574bc4812',1,'mlx::core::Dtype']]], - ['contiguousallreduce_3',['ContiguousAllReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ae4e34c7154eb8dc47aa8503209730424',1,'mlx::core']]], - ['contiguousreduce_4',['ContiguousReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ad2547f25dffe8d8936dbec25601cfc84',1,'mlx::core']]], - ['contiguousstridedreduce_5',['ContiguousStridedReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ab48dac7508a2c790de1bdc33f29177ed',1,'mlx::core']]], - ['cpu_6',['cpu',['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdbad9747e2da342bdb995f6389533ad1a3d',1,'mlx::core::Device']]] -]; diff --git a/docs/build/html/search/enumvalues_3.js b/docs/build/html/search/enumvalues_3.js deleted file mode 100644 index e83d1495..00000000 --- a/docs/build/html/search/enumvalues_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['disabled_0',['disabled',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4a075ae3d2fc31640504f814f60e5ef713',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/enumvalues_4.js b/docs/build/html/search/enumvalues_4.js deleted file mode 100644 index f11f4cfa..00000000 --- a/docs/build/html/search/enumvalues_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['e_0',['e',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a491d45f7af463017c1f8cae94cd05590',1,'mlx::core::Log']]], - ['enabled_1',['enabled',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4aa10311459433adf322f2590a4987c423',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/enumvalues_5.js b/docs/build/html/search/enumvalues_5.js deleted file mode 100644 index e51f6e11..00000000 --- a/docs/build/html/search/enumvalues_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['f_0',['f',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a8fa14cdd754f91cc6554c9e71929cce7',1,'mlx::core::Dtype']]], - ['float16_1',['float16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa098e7844282e240fdee28a9dac11c1c6',1,'mlx::core::Dtype']]], - ['float32_2',['float32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daad33ec2b0bbea6d471a4706cea030e1e3',1,'mlx::core::Dtype']]], - ['floating_3',['floating',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da374515b23d6f106696387776a6077d17',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enumvalues_6.js b/docs/build/html/search/enumvalues_6.js deleted file mode 100644 index 5deb1fa6..00000000 --- a/docs/build/html/search/enumvalues_6.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['general_0',['General',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a0db377921f4ce762c62526131097968f',1,'mlx::core']]], - ['generalcontiguousreduce_1',['GeneralContiguousReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65a540cf31fe6858115a02e789938297cdb',1,'mlx::core']]], - ['generalgeneral_2',['GeneralGeneral',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a6fe62e8ce1fae1e70cb9eeaa67d29dab',1,'mlx::core']]], - ['generalreduce_3',['GeneralReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65a3622f95ed0ec99657f9ad8ef39ec2184',1,'mlx::core']]], - ['generalstridedreduce_4',['GeneralStridedReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ad999b1a8ae1d7436efb5ffdfafb1dd3d',1,'mlx::core']]], - ['generic_5',['generic',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da3d517f8924ac7fd03699a29d97dc52d9',1,'mlx::core::Dtype']]], - ['gpu_6',['gpu',['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdba0aa0be2a866411d9ff03515227454947',1,'mlx::core::Device']]] -]; diff --git a/docs/build/html/search/enumvalues_7.js b/docs/build/html/search/enumvalues_7.js deleted file mode 100644 index af83b67e..00000000 --- a/docs/build/html/search/enumvalues_7.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['i_0',['i',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a865c0c0b4ab0e063e5caa3387c1a8741',1,'mlx::core::Dtype']]], - ['inexact_1',['inexact',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2dae03b116564cd944b048fde87dbd4d5c9',1,'mlx::core::Dtype']]], - ['int16_2',['int16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daace80d5ec65b1d2a2f1049eadc100db23',1,'mlx::core::Dtype']]], - ['int32_3',['int32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa0241adbbd83925f051b694d40f02747f',1,'mlx::core::Dtype']]], - ['int64_4',['int64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daaff9b3f96d37353c528517bc3656a00a8',1,'mlx::core::Dtype']]], - ['int8_5',['int8',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa27c006cc56b1ba88f960cf8b5144fcac',1,'mlx::core::Dtype']]], - ['integer_6',['integer',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da157db7df530023575515d366c9b672e8',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enumvalues_8.js b/docs/build/html/search/enumvalues_8.js deleted file mode 100644 index 2314e295..00000000 --- a/docs/build/html/search/enumvalues_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['leftshift_0',['LeftShift',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23da986b39e75cbe29fcda1d7bf7942a65a0',1,'mlx::core::BitwiseBinary']]] -]; diff --git a/docs/build/html/search/enumvalues_9.js b/docs/build/html/search/enumvalues_9.js deleted file mode 100644 index 06b9c4e9..00000000 --- a/docs/build/html/search/enumvalues_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['max_0',['Max',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924ac00cf69bbba24f7ab08d3ad618705988',1,'mlx::core::distributed::AllReduce::Max'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a3d11c500ea4f7f639e20dd0755d39260',1,'mlx::core::Reduce::Max'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ad54b2905015a390708f79bae6cdac56d',1,'mlx::core::Scan::Max'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca1c2da7b96d743296fe660f5fc4072f16',1,'mlx::core::Scatter::Max']]], - ['min_1',['Min',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924a4f685dcd48e6614d6bb2ccda4f2686ef',1,'mlx::core::distributed::AllReduce::Min'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a0d3d1f5c94725bdc42fa692e2c074418',1,'mlx::core::Reduce::Min'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1a7d2ee8f14f2e70a9d47170fecc6da898',1,'mlx::core::Scan::Min'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613cad914e4c3475ce9858f2de4bf35dcfdbf',1,'mlx::core::Scatter::Min']]] -]; diff --git a/docs/build/html/search/enumvalues_a.js b/docs/build/html/search/enumvalues_a.js deleted file mode 100644 index bcafee1d..00000000 --- a/docs/build/html/search/enumvalues_a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['no_5ffuse_0',['no_fuse',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4ada8df7fd43da6073fec4fe5666b03dbb',1,'mlx::core']]], - ['no_5fsimplify_1',['no_simplify',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4a8e5611dfddbae6e68624c59aa3e4e3e2',1,'mlx::core']]], - ['none_2',['None',['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca87a6a1927de175b71d7d0b5c11b8665c',1,'mlx::core::Scatter']]], - ['number_3',['number',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2dab1bc248a7ff2b2e95569f56de68615df',1,'mlx::core::Dtype']]] -]; diff --git a/docs/build/html/search/enumvalues_b.js b/docs/build/html/search/enumvalues_b.js deleted file mode 100644 index 988ee11f..00000000 --- a/docs/build/html/search/enumvalues_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['or_0',['Or',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924a7a959bb7b33f410a03b3c887173fd7ed',1,'mlx::core::distributed::AllReduce::Or'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23da51065a44e7f9a76a6dab6de637c6db22',1,'mlx::core::BitwiseBinary::Or'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a2e53e38f8b906ed4def9a5653aeb51fe',1,'mlx::core::Reduce::Or']]] -]; diff --git a/docs/build/html/search/enumvalues_c.js b/docs/build/html/search/enumvalues_c.js deleted file mode 100644 index 1d6cd51c..00000000 --- a/docs/build/html/search/enumvalues_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['prod_0',['Prod',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924acdd1ec09a2fd99c81c561b5c63a4b482',1,'mlx::core::distributed::AllReduce::Prod'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9ac5b077bfec55fe2b141b197dfa00ecf7',1,'mlx::core::Reduce::Prod'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1a33edce755ed1a74632c302ad93a14789',1,'mlx::core::Scan::Prod'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca5e43e8ffd1f5ba49826e2e7ac3450466',1,'mlx::core::Scatter::Prod']]] -]; diff --git a/docs/build/html/search/enumvalues_d.js b/docs/build/html/search/enumvalues_d.js deleted file mode 100644 index a6ee0e4c..00000000 --- a/docs/build/html/search/enumvalues_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rightshift_0',['RightShift',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23da011e7b275a1f0edbd9345cfcf6501503',1,'mlx::core::BitwiseBinary']]] -]; diff --git a/docs/build/html/search/enumvalues_e.js b/docs/build/html/search/enumvalues_e.js deleted file mode 100644 index 6a250e52..00000000 --- a/docs/build/html/search/enumvalues_e.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['scalar_0',['Scalar',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337af60357a8d17e45793298323f1b372a74',1,'mlx::core']]], - ['scheduled_1',['scheduled',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078af8a6f8eed2395ab89a758dec434393ae',1,'mlx::core::array']]], - ['signedinteger_2',['signedinteger',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2daed58b4631ff157bec9e35ed1182d2c10',1,'mlx::core::Dtype']]], - ['sum_3',['Sum',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abb4560980e5d01aed14175ce8f6fc924a1fc7c1f09c80650ab0497e2d6781d65f',1,'mlx::core::distributed::AllReduce::Sum'],['../classmlx_1_1core_1_1_reduce.html#a0848518b16ae6d4043d6be247bdf31c9a8582875544f1d3d396a1a376473ef1dd',1,'mlx::core::Reduce::Sum'],['../classmlx_1_1core_1_1_scan.html#a47bf2ec54ead4b8f00f9f188518630f1ade23893033e4849f5596e7ce76a5fc36',1,'mlx::core::Scan::Sum'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca14abe2d8818efa71726be4e156813d6f',1,'mlx::core::Scatter::Sum']]] -]; diff --git a/docs/build/html/search/enumvalues_f.js b/docs/build/html/search/enumvalues_f.js deleted file mode 100644 index 7e1105b7..00000000 --- a/docs/build/html/search/enumvalues_f.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ten_0',['ten',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a394d85b39676763bdf35b8d54b9e43a1',1,'mlx::core::Log']]], - ['two_1',['two',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a41877eab6fa3db7d7ed2cda9eba14251',1,'mlx::core::Log']]] -]; diff --git a/docs/build/html/search/files_0.js b/docs/build/html/search/files_0.js deleted file mode 100644 index 257073d8..00000000 --- a/docs/build/html/search/files_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['allocator_2eh_0',['allocator.h',['../allocator_8h.html',1,'(Global Namespace)'],['../backend_2metal_2allocator_8h.html',1,'(Global Namespace)']]], - ['arange_2eh_1',['arange.h',['../common_2arange_8h.html',1,'(Global Namespace)'],['../metal_2jit_2arange_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2arange_8h.html',1,'(Global Namespace)']]], - ['array_2eh_2',['array.h',['../array_8h.html',1,'']]], - ['atomic_2eh_3',['atomic.h',['../atomic_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_1.js b/docs/build/html/search/files_1.js deleted file mode 100644 index 7a407299..00000000 --- a/docs/build/html/search/files_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['bf16_2eh_0',['bf16.h',['../backend_2metal_2kernels_2bf16_8h.html',1,'(Global Namespace)'],['../types_2bf16_8h.html',1,'(Global Namespace)']]], - ['bf16_5fmath_2eh_1',['bf16_math.h',['../bf16__math_8h.html',1,'']]], - ['binary_2eh_2',['binary.h',['../common_2binary_8h.html',1,'(Global Namespace)'],['../metal_2binary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2binary_8h.html',1,'(Global Namespace)']]], - ['binary_5fops_2eh_3',['binary_ops.h',['../binary__ops_8h.html',1,'']]], - ['binary_5ftwo_2eh_4',['binary_two.h',['../common_2binary__two_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2binary__two_8h.html',1,'(Global Namespace)']]] -]; diff --git a/docs/build/html/search/files_10.js b/docs/build/html/search/files_10.js deleted file mode 100644 index a448679e..00000000 --- a/docs/build/html/search/files_10.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['scaled_5fdot_5fproduct_5fattention_5fparams_2eh_0',['scaled_dot_product_attention_params.h',['../scaled__dot__product__attention__params_8h.html',1,'']]], - ['scan_2eh_1',['scan.h',['../jit_2scan_8h.html',1,'(Global Namespace)'],['../kernels_2scan_8h.html',1,'(Global Namespace)']]], - ['scatter_2eh_2',['scatter.h',['../scatter_8h.html',1,'']]], - ['scheduler_2eh_3',['scheduler.h',['../scheduler_8h.html',1,'']]], - ['slicing_2eh_4',['slicing.h',['../common_2slicing_8h.html',1,'(Global Namespace)'],['../metal_2slicing_8h.html',1,'(Global Namespace)']]], - ['softmax_2eh_5',['softmax.h',['../jit_2softmax_8h.html',1,'(Global Namespace)'],['../kernels_2softmax_8h.html',1,'(Global Namespace)']]], - ['sort_2eh_6',['sort.h',['../sort_8h.html',1,'']]], - ['steel_5fconv_2eh_7',['steel_conv.h',['../jit_2steel__conv_8h.html',1,'(Global Namespace)'],['../kernels_2steel_2conv_2kernels_2steel__conv_8h.html',1,'(Global Namespace)']]], - ['steel_5fconv_5fgeneral_2eh_8',['steel_conv_general.h',['../steel__conv__general_8h.html',1,'']]], - ['steel_5fgemm_2eh_9',['steel_gemm.h',['../steel__gemm_8h.html',1,'']]], - ['steel_5fgemm_5ffused_2eh_10',['steel_gemm_fused.h',['../steel__gemm__fused_8h.html',1,'']]], - ['steel_5fgemm_5fmasked_2eh_11',['steel_gemm_masked.h',['../steel__gemm__masked_8h.html',1,'']]], - ['steel_5fgemm_5fsplitk_2eh_12',['steel_gemm_splitk.h',['../steel__gemm__splitk_8h.html',1,'']]], - ['stream_2eh_13',['stream.h',['../stream_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_11.js b/docs/build/html/search/files_11.js deleted file mode 100644 index f04a7ed5..00000000 --- a/docs/build/html/search/files_11.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['ternary_2eh_0',['ternary.h',['../common_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2ternary_8h.html',1,'(Global Namespace)']]], - ['ternary_5fops_2eh_1',['ternary_ops.h',['../ternary__ops_8h.html',1,'']]], - ['threadpool_2eh_2',['threadpool.h',['../threadpool_8h.html',1,'']]], - ['threefry_2eh_3',['threefry.h',['../threefry_8h.html',1,'']]], - ['transforms_2eh_4',['transforms.h',['../backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html',1,'(Global Namespace)'],['../transforms_8h.html',1,'(Global Namespace)']]], - ['transforms_5fimpl_2eh_5',['transforms_impl.h',['../transforms__impl_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_12.js b/docs/build/html/search/files_12.js deleted file mode 100644 index 3cd8eae9..00000000 --- a/docs/build/html/search/files_12.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['unary_2eh_0',['unary.h',['../common_2unary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2unary_8h.html',1,'(Global Namespace)'],['../metal_2unary_8h.html',1,'(Global Namespace)']]], - ['unary_5fops_2eh_1',['unary_ops.h',['../unary__ops_8h.html',1,'']]], - ['utils_2eh_2',['utils.h',['../backend_2accelerate_2utils_8h.html',1,'(Global Namespace)'],['../backend_2common_2utils_8h.html',1,'(Global Namespace)'],['../backend_2metal_2kernels_2steel_2utils_8h.html',1,'(Global Namespace)'],['../backend_2metal_2kernels_2utils_8h.html',1,'(Global Namespace)'],['../backend_2metal_2utils_8h.html',1,'(Global Namespace)'],['../utils_8h.html',1,'(Global Namespace)']]] -]; diff --git a/docs/build/html/search/files_2.js b/docs/build/html/search/files_2.js deleted file mode 100644 index 8762eebe..00000000 --- a/docs/build/html/search/files_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['compile_2eh_0',['compile.h',['../compile_8h.html',1,'']]], - ['compile_5fimpl_2eh_1',['compile_impl.h',['../compile__impl_8h.html',1,'']]], - ['compiled_2eh_2',['compiled.h',['../compiled_8h.html',1,'']]], - ['compiled_5fpreamble_2eh_3',['compiled_preamble.h',['../compiled__preamble_8h.html',1,'']]], - ['complex_2eh_4',['complex.h',['../backend_2metal_2kernels_2complex_8h.html',1,'(Global Namespace)'],['../types_2complex_8h.html',1,'(Global Namespace)']]], - ['conv_2eh_5',['conv.h',['../conv_8h.html',1,'']]], - ['copy_2eh_6',['copy.h',['../common_2copy_8h.html',1,'(Global Namespace)'],['../metal_2copy_8h.html',1,'(Global Namespace)'],['../metal_2jit_2copy_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2copy_8h.html',1,'(Global Namespace)']]] -]; diff --git a/docs/build/html/search/files_3.js b/docs/build/html/search/files_3.js deleted file mode 100644 index 71af9803..00000000 --- a/docs/build/html/search/files_3.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['defines_2eh_0',['defines.h',['../defines_8h.html',1,'(Global Namespace)'],['../steel_2defines_8h.html',1,'(Global Namespace)']]], - ['device_2eh_1',['device.h',['../backend_2metal_2device_8h.html',1,'(Global Namespace)'],['../device_8h.html',1,'(Global Namespace)']]], - ['distributed_2eh_2',['distributed.h',['../distributed_8h.html',1,'']]], - ['distributed_5fimpl_2eh_3',['distributed_impl.h',['../distributed__impl_8h.html',1,'']]], - ['dtype_2eh_4',['dtype.h',['../dtype_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_4.js b/docs/build/html/search/files_4.js deleted file mode 100644 index b5b0cd89..00000000 --- a/docs/build/html/search/files_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['einsum_2eh_0',['einsum.h',['../einsum_8h.html',1,'']]], - ['erf_2eh_1',['erf.h',['../erf_8h.html',1,'']]], - ['event_2eh_2',['event.h',['../event_8h.html',1,'']]], - ['expm1f_2eh_3',['expm1f.h',['../expm1f_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_5.js b/docs/build/html/search/files_5.js deleted file mode 100644 index d25e2e8c..00000000 --- a/docs/build/html/search/files_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fast_2eh_0',['fast.h',['../fast_8h.html',1,'']]], - ['fast_5fprimitives_2eh_1',['fast_primitives.h',['../fast__primitives_8h.html',1,'']]], - ['fft_2eh_2',['fft.h',['../backend_2metal_2kernels_2fft_8h.html',1,'(Global Namespace)'],['../fft_8h.html',1,'(Global Namespace)']]], - ['fp16_2eh_3',['fp16.h',['../fp16_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_6.js b/docs/build/html/search/files_6.js deleted file mode 100644 index d246684e..00000000 --- a/docs/build/html/search/files_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['gather_2eh_0',['gather.h',['../gather_8h.html',1,'']]], - ['gemm_2eh_1',['gemm.h',['../gemm_8h.html',1,'']]], - ['gemv_5fmasked_2eh_2',['gemv_masked.h',['../jit_2gemv__masked_8h.html',1,'(Global Namespace)'],['../kernels_2gemv__masked_8h.html',1,'(Global Namespace)']]], - ['gguf_2eh_3',['gguf.h',['../gguf_8h.html',1,'']]], - ['graph_5futils_2eh_4',['graph_utils.h',['../graph__utils_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_7.js b/docs/build/html/search/files_7.js deleted file mode 100644 index 7f9a7281..00000000 --- a/docs/build/html/search/files_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['hadamard_2eh_0',['hadamard.h',['../common_2hadamard_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2hadamard_8h.html',1,'(Global Namespace)']]], - ['half_5ftypes_2eh_1',['half_types.h',['../half__types_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_8.js b/docs/build/html/search/files_8.js deleted file mode 100644 index b09ce584..00000000 --- a/docs/build/html/search/files_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['includes_2eh_0',['includes.h',['../includes_8h.html',1,'']]], - ['indexing_2eh_1',['indexing.h',['../jit_2indexing_8h.html',1,'(Global Namespace)'],['../kernels_2indexing_8h.html',1,'(Global Namespace)']]], - ['io_2eh_2',['io.h',['../io_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_9.js b/docs/build/html/search/files_9.js deleted file mode 100644 index 2e60058c..00000000 --- a/docs/build/html/search/files_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kernels_2eh_0',['kernels.h',['../kernels_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_a.js b/docs/build/html/search/files_a.js deleted file mode 100644 index 15c05bb5..00000000 --- a/docs/build/html/search/files_a.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['lapack_5fhelper_2eh_0',['lapack_helper.h',['../lapack__helper_8h.html',1,'']]], - ['linalg_2eh_1',['linalg.h',['../linalg_8h.html',1,'']]], - ['load_2eh_2',['load.h',['../backend_2common_2load_8h.html',1,'(Global Namespace)'],['../io_2load_8h.html',1,'(Global Namespace)']]], - ['loader_2eh_3',['loader.h',['../conv_2loader_8h.html',1,'(Global Namespace)'],['../gemm_2loader_8h.html',1,'(Global Namespace)']]], - ['loader_5fchannel_5fl_2eh_4',['loader_channel_l.h',['../loader__channel__l_8h.html',1,'']]], - ['loader_5fchannel_5fn_2eh_5',['loader_channel_n.h',['../loader__channel__n_8h.html',1,'']]], - ['loader_5fgeneral_2eh_6',['loader_general.h',['../loader__general_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_b.js b/docs/build/html/search/files_b.js deleted file mode 100644 index e87b8227..00000000 --- a/docs/build/html/search/files_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['matmul_2eh_0',['matmul.h',['../matmul_8h.html',1,'']]], - ['metal_2eh_1',['metal.h',['../metal_8h.html',1,'']]], - ['metal_5fimpl_2eh_2',['metal_impl.h',['../metal__impl_8h.html',1,'']]], - ['mlx_2eh_3',['mlx.h',['../mlx_8h.html',1,'']]], - ['mma_2eh_4',['mma.h',['../mma_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_c.js b/docs/build/html/search/files_c.js deleted file mode 100644 index 1679dc0b..00000000 --- a/docs/build/html/search/files_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ops_2eh_0',['ops.h',['../backend_2common_2ops_8h.html',1,'(Global Namespace)'],['../backend_2metal_2kernels_2reduction_2ops_8h.html',1,'(Global Namespace)'],['../distributed_2ops_8h.html',1,'(Global Namespace)'],['../ops_8h.html',1,'(Global Namespace)']]] -]; diff --git a/docs/build/html/search/files_d.js b/docs/build/html/search/files_d.js deleted file mode 100644 index 506b3e16..00000000 --- a/docs/build/html/search/files_d.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['params_2eh_0',['params.h',['../conv_2params_8h.html',1,'(Global Namespace)'],['../gemm_2params_8h.html',1,'(Global Namespace)']]], - ['pocketfft_2eh_1',['pocketfft.h',['../pocketfft_8h.html',1,'']]], - ['primitives_2eh_2',['primitives.h',['../distributed_2primitives_8h.html',1,'(Global Namespace)'],['../primitives_8h.html',1,'(Global Namespace)']]] -]; diff --git a/docs/build/html/search/files_e.js b/docs/build/html/search/files_e.js deleted file mode 100644 index 9dd3bc54..00000000 --- a/docs/build/html/search/files_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['quantized_2eh_0',['quantized.h',['../quantized_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/files_f.js b/docs/build/html/search/files_f.js deleted file mode 100644 index a2b24523..00000000 --- a/docs/build/html/search/files_f.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['radix_2eh_0',['radix.h',['../radix_8h.html',1,'']]], - ['random_2eh_1',['random.h',['../random_8h.html',1,'']]], - ['readwrite_2eh_2',['readwrite.h',['../readwrite_8h.html',1,'']]], - ['reduce_2eh_3',['reduce.h',['../common_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2reduce_8h.html',1,'(Global Namespace)']]], - ['reduce_5fall_2eh_4',['reduce_all.h',['../reduce__all_8h.html',1,'']]], - ['reduce_5fcol_2eh_5',['reduce_col.h',['../reduce__col_8h.html',1,'']]], - ['reduce_5finit_2eh_6',['reduce_init.h',['../reduce__init_8h.html',1,'']]], - ['reduce_5frow_2eh_7',['reduce_row.h',['../reduce__row_8h.html',1,'']]], - ['reduce_5futils_2eh_8',['reduce_utils.h',['../reduce__utils_8h.html',1,'']]] -]; diff --git a/docs/build/html/search/functions_0.js b/docs/build/html/search/functions_0.js deleted file mode 100644 index fdc1fe40..00000000 --- a/docs/build/html/search/functions_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['_5fmlx_5fbfloat16_0',['_MLX_BFloat16',['../struct___m_l_x___b_float16.html#ab1af7700f5d1e4ab567da6a34fa84668',1,'_MLX_BFloat16::_MLX_BFloat16() thread=default'],['../struct___m_l_x___b_float16.html#ae5c51644c3bd7cda6b796cb63c60c0b4',1,'_MLX_BFloat16::_MLX_BFloat16() threadgroup=default'],['../struct___m_l_x___b_float16.html#a21998a3c852d0e0f52681f8b453172bf',1,'_MLX_BFloat16::_MLX_BFloat16() device=default'],['../struct___m_l_x___b_float16.html#a64d8fc2e2463d7fa19cd3d5dd1ffdae8',1,'_MLX_BFloat16::_MLX_BFloat16() const ant=default'],['../struct___m_l_x___b_float16.html#a50d825f05a162d0ac133ad8b6f3c3112',1,'_MLX_BFloat16::_MLX_BFloat16(uint16_t bits, bits_to_bfloat_struct)'],['../struct___m_l_x___b_float16.html#a24c5736f234e09a0c82b00c7e44cc547',1,'_MLX_BFloat16::_MLX_BFloat16(T x) thread'],['../struct___m_l_x___b_float16.html#adeb880f31121c6dc40ce47765c6c7455',1,'_MLX_BFloat16::_MLX_BFloat16(T x) threadgroup'],['../struct___m_l_x___b_float16.html#ad2701d003e8fad168c89abc3907c6e53',1,'_MLX_BFloat16::_MLX_BFloat16(T x) device'],['../struct___m_l_x___b_float16.html#aec7fa716fd621ce1843338027bcb0118',1,'_MLX_BFloat16::_MLX_BFloat16(T x) const ant'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#a2c81f14fea4c01255a191f2146515917',1,'mlx::core::_MLX_BFloat16::_MLX_BFloat16()=default'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#ad43561d38ca00f9c37e8b130220233c0',1,'mlx::core::_MLX_BFloat16::_MLX_BFloat16(_MLX_BFloat16 const &)=default'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#aedbead2d935a12e8d5a4ff6269ba9ab2',1,'mlx::core::_MLX_BFloat16::_MLX_BFloat16(const float &x)']]], - ['_5fmlx_5ffloat16_1',['_MLX_Float16',['../structmlx_1_1core_1_1___m_l_x___float16.html#a69a4ab5b456c4f3b786f43632e9a4fbc',1,'mlx::core::_MLX_Float16::_MLX_Float16()=default'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a0d7ed78b78c6d446f220f83b0cdebb86',1,'mlx::core::_MLX_Float16::_MLX_Float16(_MLX_Float16 const &)=default'],['../structmlx_1_1core_1_1___m_l_x___float16.html#afde284cbe678e0333ae277ffc8b131c0',1,'mlx::core::_MLX_Float16::_MLX_Float16(const float &x)']]] -]; diff --git a/docs/build/html/search/functions_1.js b/docs/build/html/search/functions_1.js deleted file mode 100644 index a0b19b4d..00000000 --- a/docs/build/html/search/functions_1.js +++ /dev/null @@ -1,81 +0,0 @@ -var searchData= -[ - ['abs_0',['Abs',['../classmlx_1_1core_1_1_abs.html#a1247e72feb640fb562d036b2dd1ae4ad',1,'mlx::core::Abs']]], - ['abs_1',['abs',['../namespacemetal.html#a87c5122c60f9a12afceb9925a5b78ffb',1,'metal::abs()'],['../namespacemetal_1_1fast.html#a90d2973f71f83180e7f02e38d11c7a8f',1,'metal::fast::abs()'],['../namespacemetal_1_1precise.html#a99f2b2746e813b9ca7b4249afbaf2a14',1,'metal::precise::abs()'],['../group__ops.html#ga5528e80f5e8bad71e106a0cf9edd8920',1,'mlx::core::abs()']]], - ['acos_2',['acos',['../namespacemetal.html#ad4537748b3c832b6569ff7ccb209fcb2',1,'metal::acos()'],['../namespacemetal_1_1fast.html#a805ce5c3a94b618b7349d70bbb82f0b2',1,'metal::fast::acos()'],['../namespacemetal_1_1precise.html#a8a2bcc89fc0b7e74f0453f82f89a8604',1,'metal::precise::acos()']]], - ['acosh_3',['acosh',['../namespacemetal.html#a2d0efb92b7f61eff342d776bd6c5f3a0',1,'metal::acosh()'],['../namespacemetal_1_1fast.html#afb656fc3406649a238b6f1e0509de751',1,'metal::fast::acosh()'],['../namespacemetal_1_1precise.html#a1f489fabffab969b8677b56bb1136067',1,'metal::precise::acosh()']]], - ['add_4',['Add',['../classmlx_1_1core_1_1_add.html#ae3fd5483f3454eac3df256e3f5f3cdae',1,'mlx::core::Add']]], - ['add_5',['add',['../group__ops.html#ga2d32d67cfd76785a72c43d89b94dc7d7',1,'mlx::core']]], - ['addmm_6',['AddMM',['../classmlx_1_1core_1_1_add_m_m.html#a8ae4372b3f96e72e8a5a06d59de8a550',1,'mlx::core::AddMM']]], - ['addmm_7',['addmm',['../group__ops.html#ga82a53e083205a965387b3c3e2463244a',1,'mlx::core']]], - ['adjust_5fmatrix_5foffsets_8',['adjust_matrix_offsets',['../quantized_8h.html#a3ab400746ad77be89c30d25638e01698',1,'quantized.h']]], - ['advance_9',['advance',['../classpocketfft_1_1detail_1_1multi__iter.html#a5ddcc0666125b3cb6c0d62b30befdd2c',1,'pocketfft::detail::multi_iter::advance()'],['../classpocketfft_1_1detail_1_1simple__iter.html#a73a9ecd3008d2bd35aaa00bf9fac074f',1,'pocketfft::detail::simple_iter::advance()'],['../classpocketfft_1_1detail_1_1rev__iter.html#ad1918c84ae963188afc7599629b29686',1,'pocketfft::detail::rev_iter::advance()']]], - ['affine_5fdequantize_10',['affine_dequantize',['../quantized_8h.html#a6076203615038eb06816158f7b3869c6',1,'affine_dequantize(): quantized.h'],['../namespacemlx_1_1core_1_1fast.html#a12c7ef41409d6fb378008e67b6fab328',1,'mlx::core::fast::affine_dequantize()']]], - ['affine_5fquantize_11',['affine_quantize',['../quantized_8h.html#a47bcf4a14566e01e14bd3c155811db59',1,'affine_quantize(): quantized.h'],['../namespacemlx_1_1core_1_1fast.html#aa4b5f6886b2288cb6dfdd8598579f080',1,'mlx::core::fast::affine_quantize(const array &w, int group_size=64, int bits=4, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fast.html#a638c7e9b9ea8677f01786d8f9738baf8',1,'mlx::core::fast::affine_quantize(const array &w, const array &scales, const array &biases, int group_size=64, int bits=4, StreamOrDevice s={})']]], - ['affine_5fquantize_5fscales_5fbiases_12',['affine_quantize_scales_biases',['../quantized_8h.html#a7561acefd7b55e7e2b25393be08bb99c',1,'quantized.h']]], - ['affinequantize_13',['AffineQuantize',['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a84d5fa9e8c3de407fbcc5f38d2ed1473',1,'mlx::core::fast::AffineQuantize']]], - ['aligned_5falloc_14',['aligned_alloc',['../namespacepocketfft_1_1detail.html#ae397445c61400f47a8fe3f8e1b6d0b76',1,'pocketfft::detail']]], - ['aligned_5fallocator_15',['aligned_allocator',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a57c07047ac09c6cf48a269429de2b0fb',1,'pocketfft::detail::threading::aligned_allocator::aligned_allocator(const aligned_allocator< U > &)'],['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a0c390851ec37c5cdc5c1e7c6232a0b94',1,'pocketfft::detail::threading::aligned_allocator::aligned_allocator()=default']]], - ['aligned_5fdealloc_16',['aligned_dealloc',['../namespacepocketfft_1_1detail.html#aec7820e36a33e0a8bb83aa03b04b81e8',1,'pocketfft::detail']]], - ['all_17',['all',['../group__ops.html#ga3b1b90ef1275ca17655b6d7f25d3ee68',1,'mlx::core::all(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga3689e12e8f42dadb4cbe2b07dc4099f4',1,'mlx::core::all(const array &a, StreamOrDevice s={})'],['../group__ops.html#gac0919c6ba53aea35a7683dea7e9a9a59',1,'mlx::core::all(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gae2d5fcc5b62d673cca76c08b7b4afbbc',1,'mlx::core::all(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['all_5fgather_18',['all_gather',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aeb5a1726358213bc75756506f7b54d04',1,'mlx::core::distributed::detail::all_gather()'],['../namespacemlx_1_1core_1_1distributed.html#a82ef5e8cc7ac62cd228e51b1c1b77cb7',1,'mlx::core::distributed::all_gather()']]], - ['all_5freduce_19',['all_reduce',['../reduce__all_8h.html#a99ef48ae72b3e715c5f4d7ea07cd213d',1,'reduce_all.h']]], - ['all_5freduce_5fdispatch_20',['all_reduce_dispatch',['../namespacemlx_1_1core.html#af7b7ca7c6aa87558d9f98cee5c7a99a8',1,'mlx::core']]], - ['all_5fsum_21',['all_sum',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aa1d225b25f7b6426c48c5e35860ee960',1,'mlx::core::distributed::detail::all_sum()'],['../namespacemlx_1_1core_1_1distributed.html#a67ccb1a5445fc6f5db49dd36a15e5980',1,'mlx::core::distributed::all_sum()']]], - ['allclose_22',['allclose',['../group__ops.html#gaf0cd4257de7542daf9faf5e605e31020',1,'mlx::core']]], - ['allgather_23',['AllGather',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#af4b10a5b61f160fb64353057c185b661',1,'mlx::core::distributed::AllGather']]], - ['alloc_5ftmp_24',['alloc_tmp',['../namespacepocketfft_1_1detail.html#a4db03cbcd9d43d9e0b0b9067713c80e9',1,'pocketfft::detail::alloc_tmp(const shape_t &shape, size_t axsize, size_t elemsize)'],['../namespacepocketfft_1_1detail.html#a13832735696303b9559c4663631d5475',1,'pocketfft::detail::alloc_tmp(const shape_t &shape, const shape_t &axes, size_t elemsize)']]], - ['allocate_25',['allocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a4f785747b898980756af9e5515363826',1,'pocketfft::detail::threading::aligned_allocator']]], - ['allocator_26',['Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a5803678a418fef687fc65fa9d5c37b65',1,'mlx::core::allocator::Allocator::Allocator()=default'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#aa05c081ce80dc036f9d3dd8c195259d2',1,'mlx::core::allocator::Allocator::Allocator(const Allocator &other)=delete'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a8e8ce346a16cf0c62847bed9289f9959',1,'mlx::core::allocator::Allocator::Allocator(Allocator &&other)=delete']]], - ['allocator_27',['allocator',['../namespacemlx_1_1core_1_1allocator.html#aa23e2f20a336d0b159c097087194634e',1,'mlx::core::allocator::allocator()'],['../namespacemlx_1_1core_1_1metal.html#a74b3558bd518aecde6b14b0ba5e1a0d5',1,'mlx::core::metal::allocator()']]], - ['allreduce_28',['AllReduce',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a2d1ea56cbf72a316680ea90aa6da1c2d',1,'mlx::core::distributed::AllReduce']]], - ['any_29',['any',['../group__ops.html#ga8598dd718fb05cb28535e250372d4e6f',1,'mlx::core::any(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#gad37df97f253a963bece124198dbaf9ba',1,'mlx::core::any(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaf240618fc8b06debf5f56e97e84f18ef',1,'mlx::core::any(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gab1d56277d468a55227f4dad6bc2fc1ce',1,'mlx::core::any(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['apply_30',['apply',['../struct_scale_op.html#a69f82bc925843a4e1c14dfe8ad2f3218',1,'ScaleOp::apply(InT x) const'],['../struct_scale_op.html#a69f82bc925843a4e1c14dfe8ad2f3218',1,'ScaleOp::apply(InT x) const'],['../structmlx_1_1steel_1_1_transform_none.html#a84daa89be5b3348b5715bf8c5a01da75',1,'mlx::steel::TransformNone::apply(InT x)'],['../structmlx_1_1steel_1_1_transform_none.html#ae4c397038f386b13eaa386638a0fce90',1,'mlx::steel::TransformNone::apply(InT x, OutT)'],['../structmlx_1_1steel_1_1_transform_add.html#afbb688d84443fd622b4dd2768cfe0acf',1,'mlx::steel::TransformAdd::apply(InT x)'],['../structmlx_1_1steel_1_1_transform_add.html#a4923b0059d88099b2739f2cf0273ea19',1,'mlx::steel::TransformAdd::apply(InT x, OutT c)'],['../structmlx_1_1steel_1_1_transform_axpby.html#a14ad48b0189d6bdde06c66f1b567ae87',1,'mlx::steel::TransformAxpby::apply(InT x)'],['../structmlx_1_1steel_1_1_transform_axpby.html#aaf3a45e25d7abf7a34b48cc612e631ba',1,'mlx::steel::TransformAxpby::apply(InT x, OutT c) const']]], - ['apply_5fepilogue_31',['apply_epilogue',['../structmlx_1_1steel_1_1_block_m_m_a.html#af653c0808ba4fa9a25286f1febb7baff',1,'mlx::steel::BlockMMA::apply_epilogue(thread const UnaryEpilogue &epilogue_op)'],['../structmlx_1_1steel_1_1_block_m_m_a.html#a823c56cbd2086f10272df7284a5247ae',1,'mlx::steel::BlockMMA::apply_epilogue(const device U *C, const int ldc, const int fdc, thread const BinaryEpilogue &epilogue_op)']]], - ['apply_5fepilogue_5fsafe_32',['apply_epilogue_safe',['../structmlx_1_1steel_1_1_block_m_m_a.html#a9e48f2d51099ec00171506724faab54a',1,'mlx::steel::BlockMMA']]], - ['apply_5finplace_5fop_33',['apply_inplace_op',['../structmlx_1_1steel_1_1_block_loader.html#adb4ca2cc193630a779de552fa8847ddf',1,'mlx::steel::BlockLoader']]], - ['arange_34',['Arange',['../classmlx_1_1core_1_1_arange.html#a1a70c3b0b9c67d5a9446c141c5b7c574',1,'mlx::core::Arange']]], - ['arange_35',['arange',['../namespacemlx_1_1core.html#a369aa886219b83cf219e7a7862ce260b',1,'mlx::core::arange()'],['../namespacemlx_1_1core_1_1metal.html#a272c36f0faf2570cbb2f36030e9a3f26',1,'mlx::core::metal::arange()'],['../metal_2kernels_2arange_8h.html#a1e5126ee6ae0164c2343230c4d87c03e',1,'arange(): arange.h'],['../group__ops.html#ga7ca088b8090b9f84f2e08345cf3f835a',1,'mlx::core::arange(double start, double stop, double step, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga4c36b841dc5cba391dad029be5a0ad98',1,'mlx::core::arange(double start, double stop, double step, StreamOrDevice s={})'],['../group__ops.html#ga8d7cf9eb15e2daf1469058907e8abc85',1,'mlx::core::arange(double start, double stop, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga74566a14e69ba6a25f5a35e7ade5c282',1,'mlx::core::arange(double start, double stop, StreamOrDevice s={})'],['../group__ops.html#ga345aa27af3dae3646b8b4b1068e89a3e',1,'mlx::core::arange(double stop, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#gaae179075d0fe23f4bd53fdf8c41f4c70',1,'mlx::core::arange(double stop, StreamOrDevice s={})'],['../group__ops.html#ga6b945f513077c2978afc1a952c884860',1,'mlx::core::arange(int start, int stop, int step, StreamOrDevice s={})'],['../group__ops.html#ga1c39fcc6eaa1c1867735c7f849d708d6',1,'mlx::core::arange(int start, int stop, StreamOrDevice s={})'],['../group__ops.html#gafe6e4580452c873cac294f16129e633f',1,'mlx::core::arange(int stop, StreamOrDevice s={})']]], - ['arccos_36',['ArcCos',['../classmlx_1_1core_1_1_arc_cos.html#a66f4ee841d17923d93241b71ea5103e9',1,'mlx::core::ArcCos']]], - ['arccos_37',['arccos',['../group__ops.html#ga08bec7cb10c84466487b507fc5bf9776',1,'mlx::core']]], - ['arccosh_38',['ArcCosh',['../classmlx_1_1core_1_1_arc_cosh.html#a34597054db467941a2a883c653ba4d71',1,'mlx::core::ArcCosh']]], - ['arccosh_39',['arccosh',['../group__ops.html#gaafafcfcebdf7248679c8543d0c0497e5',1,'mlx::core']]], - ['arcsin_40',['ArcSin',['../classmlx_1_1core_1_1_arc_sin.html#a97cb8c3d4d9d6abc627dec49a404f013',1,'mlx::core::ArcSin']]], - ['arcsin_41',['arcsin',['../group__ops.html#ga8770e8c8f23f13343911f4c9d6e1c619',1,'mlx::core']]], - ['arcsinh_42',['ArcSinh',['../classmlx_1_1core_1_1_arc_sinh.html#a30076b222788deeaaf9ad92d3c535f20',1,'mlx::core::ArcSinh']]], - ['arcsinh_43',['arcsinh',['../group__ops.html#gac62e2cedc49ef2c90dd8584000317450',1,'mlx::core']]], - ['arctan_44',['ArcTan',['../classmlx_1_1core_1_1_arc_tan.html#a3511153bbd421e89fd9294cdb3f79b44',1,'mlx::core::ArcTan']]], - ['arctan_45',['arctan',['../group__ops.html#gaa041f3f070e68f4946db07516b7d092e',1,'mlx::core']]], - ['arctan2_46',['ArcTan2',['../classmlx_1_1core_1_1_arc_tan2.html#aa1a4ebab9924b6bcc80df5b52ed0121a',1,'mlx::core::ArcTan2']]], - ['arctan2_47',['arctan2',['../group__ops.html#ga6caba9c92b5989123501f909cc7da354',1,'mlx::core']]], - ['arctanh_48',['ArcTanh',['../classmlx_1_1core_1_1_arc_tanh.html#a17857bd0e2a3ecf1f7bf8e1a3d354358',1,'mlx::core::ArcTanh']]], - ['arctanh_49',['arctanh',['../group__ops.html#gab46a35925a04c5a9d2ec7898ee55358e',1,'mlx::core']]], - ['argmax_50',['argmax',['../group__ops.html#gae60b0b5339b9c50b9970260faf613e83',1,'mlx::core::argmax(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#gae6f6c5a840320b336fdc9687e0ed56c8',1,'mlx::core::argmax(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga2efa67466510fc26ab9ea8dff30f2ba5',1,'mlx::core::argmax(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['argmin_51',['argmin',['../group__ops.html#ga7c3bd5ef430a71dfd298e626741e3c71',1,'mlx::core::argmin(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga6bc577c5ab10cd9c848ba81321595070',1,'mlx::core::argmin(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaf66dc3c77b88e4009e0678eda41eca81',1,'mlx::core::argmin(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['argpartition_52',['ArgPartition',['../classmlx_1_1core_1_1_arg_partition.html#ab54b13dbf92351ba1ac06fd3e5a802df',1,'mlx::core::ArgPartition']]], - ['argpartition_53',['argpartition',['../group__ops.html#gaf301c49c10fa9b95a9e8dc52ead1a8dd',1,'mlx::core::argpartition(const array &a, int kth, StreamOrDevice s={})'],['../group__ops.html#ga7b15c654c7463def57857a0e239989a3',1,'mlx::core::argpartition(const array &a, int kth, int axis, StreamOrDevice s={})']]], - ['argreduce_54',['ArgReduce',['../classmlx_1_1core_1_1_arg_reduce.html#aaccf8021dc24895656e25142eb65aa03',1,'mlx::core::ArgReduce']]], - ['argsort_55',['ArgSort',['../classmlx_1_1core_1_1_arg_sort.html#a38507a8445302a81cb44674c4a5fc0b0',1,'mlx::core::ArgSort']]], - ['argsort_56',['argsort',['../group__ops.html#ga8df3b2703bf671457422894dd870cdc5',1,'mlx::core::argsort(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga7878e0daa5a75f44e57b5fe948fa3ef6',1,'mlx::core::argsort(const array &a, int axis, StreamOrDevice s={})']]], - ['argument_5fencoder_57',['argument_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#a6e33e2b1287324fb4a6575e0da5e5881',1,'mlx::core::metal::Device']]], - ['arr_58',['arr',['../classpocketfft_1_1detail_1_1arr.html#a961a24410638b35129cd6b81850d2a42',1,'pocketfft::detail::arr::arr()'],['../classpocketfft_1_1detail_1_1arr.html#a04f832b780a4453fdf3b69bf75b182bd',1,'pocketfft::detail::arr::arr(size_t n)'],['../classpocketfft_1_1detail_1_1arr.html#a0cd8fb4a588a74d428a7349d38b477d0',1,'pocketfft::detail::arr::arr(arr &&other)']]], - ['arr_5finfo_59',['arr_info',['../classpocketfft_1_1detail_1_1arr__info.html#a0dbddb7d86ca306159fc9ef9a453b21e',1,'pocketfft::detail::arr_info']]], - ['array_60',['array',['../classmlx_1_1core_1_1array.html#a75fac72da3ce214fa3737df92a64b232',1,'mlx::core::array::array(T val, Dtype dtype=TypeToDtype< T >())'],['../classmlx_1_1core_1_1array.html#a6db4b8c28c767cc16ad2785ece496dca',1,'mlx::core::array::array(const std::complex< float > &val, Dtype dtype=complex64)'],['../classmlx_1_1core_1_1array.html#a3e506a53b9c7567448f7809dda680210',1,'mlx::core::array::array(It data, std::vector< int > shape, Dtype dtype=TypeToDtype< typename std::iterator_traits< It >::value_type >())'],['../classmlx_1_1core_1_1array.html#a87f170384f4fb93decf2b80ae7280f00',1,'mlx::core::array::array(std::initializer_list< T > data, Dtype dtype=TypeToDtype< T >())'],['../classmlx_1_1core_1_1array.html#a46642301da11e3eb4312c37349fbc9d7',1,'mlx::core::array::array(std::initializer_list< float > data)'],['../classmlx_1_1core_1_1array.html#a5e1812029394bfb1a706c83611286f49',1,'mlx::core::array::array(std::initializer_list< int > data, Dtype dtype)'],['../classmlx_1_1core_1_1array.html#a44e57a41819321e0d796e08cb9a06e4b',1,'mlx::core::array::array(std::initializer_list< T > data, std::vector< int > shape, Dtype dtype=TypeToDtype< T >())'],['../classmlx_1_1core_1_1array.html#a5b5f562ff14c150842cb61628e531663',1,'mlx::core::array::array(allocator::Buffer data, std::vector< int > shape, Dtype dtype, deleter_t deleter=allocator::free)'],['../classmlx_1_1core_1_1array.html#a297df274e2da5cb884257bbeffd6b187',1,'mlx::core::array::array(const array &other)=default'],['../classmlx_1_1core_1_1array.html#ab6cbccbba66cc54acda4390b19f0397c',1,'mlx::core::array::array(array &&other)=default'],['../classmlx_1_1core_1_1array.html#adaade8f4bb7f8ecc0ba07efb17cd2620',1,'mlx::core::array::array(std::vector< int > shape, Dtype dtype, std::shared_ptr< Primitive > primitive, std::vector< array > inputs)']]], - ['array_5fequal_61',['array_equal',['../group__ops.html#ga8f3059336ee0c87207b1f8c6ab312645',1,'mlx::core::array_equal(const array &a, const array &b, bool equal_nan, StreamOrDevice s={})'],['../group__ops.html#gaf79cf0271ca0105d7b14295a90d0ed14',1,'mlx::core::array_equal(const array &a, const array &b, StreamOrDevice s={})']]], - ['arrayiterator_62',['ArrayIterator',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#ad3afcb24c6db7642bbc06835f7f3e27a',1,'mlx::core::array::ArrayIterator']]], - ['as_5fstrided_63',['as_strided',['../group__ops.html#ga8de80ecef30fc560003d40f61a38b99d',1,'mlx::core']]], - ['asin_64',['asin',['../namespacemetal.html#a16e843194df3fd136404bf80ba5ac95c',1,'metal::asin()'],['../namespacemetal_1_1fast.html#a769455a283da99654b6e42c3acf13eb1',1,'metal::fast::asin()'],['../namespacemetal_1_1precise.html#adc7b8b6e12e320cb32030f728dcbf438',1,'metal::precise::asin()']]], - ['asinh_65',['asinh',['../namespacemetal.html#abcc3251866930cfe880f89e7473d0e63',1,'metal::asinh()'],['../namespacemetal_1_1fast.html#a4367034b7b3e14310803bb2be975a556',1,'metal::fast::asinh()'],['../namespacemetal_1_1precise.html#aaad1cdde6687c8011fbc5fda1bb13424',1,'metal::precise::asinh()']]], - ['asstrided_66',['AsStrided',['../classmlx_1_1core_1_1_as_strided.html#a80c0547f72ed53374eafc57d57b5d4af',1,'mlx::core::AsStrided']]], - ['astype_67',['AsType',['../classmlx_1_1core_1_1_as_type.html#a8c3241d402a8977bb4db037e225f5b47',1,'mlx::core::AsType']]], - ['astype_68',['astype',['../group__ops.html#ga0e58c24fc5668e5a521e5b45e8370a62',1,'mlx::core']]], - ['async_5feval_69',['async_eval',['../namespacemlx_1_1core.html#a15dda19aa7fa1fc5fca35df5cf963297',1,'mlx::core']]], - ['atan_70',['atan',['../namespacemetal.html#a80a771553d9a0012b93620d19c48b00f',1,'metal::atan()'],['../namespacemetal_1_1fast.html#a769503b4b7f89071d0983258c5a3ac5a',1,'metal::fast::atan()'],['../namespacemetal_1_1precise.html#aaaf4b5f4786a912089bbf0ae7619a6be',1,'metal::precise::atan()']]], - ['atan2_71',['atan2',['../namespacemetal.html#a1d430793eaa38ccf0d07145e3fcd1e61',1,'metal::atan2()'],['../namespacemetal_1_1fast.html#a00e687ea46f5affe26e6aef8fd62b89a',1,'metal::fast::atan2()'],['../namespacemetal_1_1precise.html#a6f161b049cc6884f87b09b33c2d1cd7f',1,'metal::precise::atan2()']]], - ['atanh_72',['atanh',['../namespacemetal.html#a57116427997ba71dd3863bfb15de33bf',1,'metal::atanh()'],['../namespacemetal_1_1fast.html#af24608fc605db9a14427d37c36dc1c53',1,'metal::fast::atanh()'],['../namespacemetal_1_1precise.html#a902994837653b90c47f4285673e712c4',1,'metal::precise::atanh()']]], - ['atleast_5f1d_73',['atleast_1d',['../group__ops.html#gaba4d25e7a2bf87ba4feb7837ec7fa396',1,'mlx::core::atleast_1d(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga08ca172ce80157c916c89dd0b45b95c5',1,'mlx::core::atleast_1d(const std::vector< array > &a, StreamOrDevice s={})']]], - ['atleast_5f2d_74',['atleast_2d',['../group__ops.html#gaeeb7f5bb88aa32a3ac2be1f39c5f8087',1,'mlx::core::atleast_2d(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga9950299a80c2562f13448758f856d1f5',1,'mlx::core::atleast_2d(const std::vector< array > &a, StreamOrDevice s={})']]], - ['atleast_5f3d_75',['atleast_3d',['../group__ops.html#ga4afd919601e67782ff964465919956a0',1,'mlx::core::atleast_3d(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaffdf742ad79440a60dda40062a8074fe',1,'mlx::core::atleast_3d(const std::vector< array > &a, StreamOrDevice s={})']]], - ['atomic_5fupdate_76',['atomic_update',['../struct_none.html#aecbce7c97e8b1d5dc4afd2e788c24e06',1,'None']]], - ['attach_5fevent_77',['attach_event',['../classmlx_1_1core_1_1array.html#a000c3cfe13cb378bf0523b62816190da',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/functions_10.js b/docs/build/html/search/functions_10.js deleted file mode 100644 index e578fed6..00000000 --- a/docs/build/html/search/functions_10.js +++ /dev/null @@ -1,37 +0,0 @@ -var searchData= -[ - ['pad_0',['Pad',['../classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43',1,'mlx::core::Pad']]], - ['pad_1',['pad',['../group__ops.html#ga81c2f138ea81d78affd42e9a646cacbc',1,'mlx::core::pad(const array &a, const std::vector< int > &axes, const std::vector< int > &low_pad_size, const std::vector< int > &high_pad_size, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})'],['../group__ops.html#ga8495c9902b0a67f288918cb528d5abeb',1,'mlx::core::pad(const array &a, const std::vector< std::pair< int, int > > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})'],['../group__ops.html#gaeaae2f9637b0b3e2b4c6c0517e285935',1,'mlx::core::pad(const array &a, const std::pair< int, int > &pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})'],['../group__ops.html#ga5b8684361f57cbfd5e6eedf82a62ded0',1,'mlx::core::pad(const array &a, int pad_width, const array &pad_value=array(0), const std::string mode="constant", StreamOrDevice s={})']]], - ['pad_5fgpu_2',['pad_gpu',['../namespacemlx_1_1core.html#a6e2054d396ae487d810642dc19cdd0b0',1,'mlx::core']]], - ['parallelfilereader_3',['ParallelFileReader',['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a6cdb4547408f8cbca9e2ddd82514e697',1,'mlx::core::io::ParallelFileReader']]], - ['partition_4',['Partition',['../classmlx_1_1core_1_1_partition.html#a7b82ca3895b6654308fac566b277ac0d',1,'mlx::core::Partition']]], - ['partition_5',['partition',['../group__ops.html#gac1b30830a972fb9a2601379ad2b32405',1,'mlx::core::partition(const array &a, int kth, StreamOrDevice s={})'],['../group__ops.html#ga4fbea3a5f66cf81e3c119d1661119321',1,'mlx::core::partition(const array &a, int kth, int axis, StreamOrDevice s={})']]], - ['per_5fthread_5frow_5freduce_6',['per_thread_row_reduce',['../reduce__row_8h.html#a9d5e0049a2276f43702fc6907e74a35f',1,'per_thread_row_reduce(thread U totals[N_WRITES], const device T *inputs[N_WRITES], int blocks, int extra, uint lsize_x, uint lid_x): reduce_row.h'],['../reduce__row_8h.html#a045ec34228e77c79ec67d11c39ff097a',1,'per_thread_row_reduce(thread U totals[N_WRITES], const device T *in, const constant size_t &reduction_size, int blocks, int extra, uint lsize_x, uint lid_x): reduce_row.h'],['../reduce__row_8h.html#a4d00c44e5f4a13be529ff8b664a0a342',1,'per_thread_row_reduce(thread U totals[N_WRITES], const device T *in, const size_t row_idx, int blocks, int extra, const constant int *shape, const constant size_t *strides, const constant int &ndim, uint lsize_x, uint lid_x): reduce_row.h']]], - ['perform_5ffft_7',['perform_fft',['../backend_2metal_2kernels_2fft_8h.html#a050ead8fa5cacdaec13d68ca3c0dcb81',1,'fft.h']]], - ['pinv_8',['pinv',['../namespacemlx_1_1core_1_1linalg.html#ad9f8348091e5ff4f74ad456e9fbd3e01',1,'mlx::core::linalg']]], - ['pm_9',['PM',['../namespacepocketfft_1_1detail.html#a8c6ec35091d5136d991577623133fcf2',1,'pocketfft::detail']]], - ['pminplace_10',['PMINPLACE',['../namespacepocketfft_1_1detail.html#aa3477781ef54788c9fa7755cb8ea75fd',1,'pocketfft::detail']]], - ['pocketfft_5fc_11',['pocketfft_c',['../classpocketfft_1_1detail_1_1pocketfft__c.html#a44f46cf06f572b42ad8b53c7c6f38e4d',1,'pocketfft::detail::pocketfft_c']]], - ['pocketfft_5fr_12',['pocketfft_r',['../classpocketfft_1_1detail_1_1pocketfft__r.html#a60e9b3d1f9b20ec5b86d46b0398f6f7d',1,'pocketfft::detail::pocketfft_r']]], - ['post_5fin_13',['post_in',['../struct_read_writer.html#ab555cec93b66eead607e6a03d9324e1c',1,'ReadWriter::post_in(float2 elem) const'],['../struct_read_writer.html#a6c47a25b2135393045fa5f95ada59d9d',1,'ReadWriter::post_in(float elem) const']]], - ['pow_14',['pow',['../namespacemetal.html#acd288d4552215bd10455584a214c57b8',1,'metal::pow()'],['../namespacemetal_1_1fast.html#ade2367eaec894bd2e14a1351c363e003',1,'metal::fast::pow()'],['../namespacemetal_1_1precise.html#a4cce64f1f20c1c6dfd29115bdb7c8d42',1,'metal::precise::pow()']]], - ['power_15',['Power',['../classmlx_1_1core_1_1_power.html#a7bc6c64179b7a2aef56fe1dafb6459b2',1,'mlx::core::Power']]], - ['power_16',['power',['../group__ops.html#ga7972058715c26559dff9c9ae2a3ef76d',1,'mlx::core']]], - ['powr_17',['powr',['../namespacemetal.html#ae529e431f178bafedc18a889323c0bc2',1,'metal::powr()'],['../namespacemetal_1_1fast.html#a4293cbc94175b4dcc724fe4747eb5d5a',1,'metal::fast::powr()'],['../namespacemetal_1_1precise.html#ac9dbab0bd99b2b94e364aba5353bdcd7',1,'metal::precise::powr()']]], - ['pre_5fout_18',['pre_out',['../struct_read_writer.html#a94da8aa85fa2916eaa3eaeb11499234a',1,'ReadWriter::pre_out(float2 elem) const'],['../struct_read_writer.html#a185553204b07a407ef02c41dd78e8239',1,'ReadWriter::pre_out(float2 elem, int length) const']]], - ['prepare_5fslice_19',['prepare_slice',['../namespacemlx_1_1core.html#a70f45639df899de421fe0f22f90877f2',1,'mlx::core']]], - ['primitive_20',['primitive',['../classmlx_1_1core_1_1array.html#a790548666511d8c6d9f92ee79d2ce14c',1,'mlx::core::array']]], - ['primitive_21',['Primitive',['../classmlx_1_1core_1_1_primitive.html#afc69f22ee1f6e8a9ecc2c3a8f43b8fdb',1,'mlx::core::Primitive::Primitive(Stream stream)'],['../classmlx_1_1core_1_1_primitive.html#a3349f745fae50ca7627f79a731a19e32',1,'mlx::core::Primitive::Primitive(const Primitive &other)=delete'],['../classmlx_1_1core_1_1_primitive.html#a342da891b9882bdee9a0e0c1ac826eda',1,'mlx::core::Primitive::Primitive(Primitive &&other)=delete']]], - ['primitive_5fid_22',['primitive_id',['../classmlx_1_1core_1_1array.html#af5ad83605d4eea81561246873bee1d7c',1,'mlx::core::array']]], - ['primitive_5fptr_23',['primitive_ptr',['../classmlx_1_1core_1_1array.html#a5119cd616ec3c05d65878944b8889469',1,'mlx::core::array']]], - ['print_24',['print',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a6814f9008a683c6911d5b8991ef770ab',1,'mlx::core::distributed::AllReduce::print()'],['../classmlx_1_1core_1_1_primitive.html#ae1aff91354ce036596088a3e19474ecb',1,'mlx::core::Primitive::print()'],['../classmlx_1_1core_1_1_abs.html#a643d6db5116eed978e3208804a992107',1,'mlx::core::Abs::print()'],['../classmlx_1_1core_1_1_add.html#a8a96345aa63724f22b68bca7b861211d',1,'mlx::core::Add::print()'],['../classmlx_1_1core_1_1_add_m_m.html#a1262ac2c4c6e9ff6b6047bf7605e5cc9',1,'mlx::core::AddMM::print()'],['../classmlx_1_1core_1_1_arange.html#abd73d2b793da796dc7cf04c9f7d5c19e',1,'mlx::core::Arange::print()'],['../classmlx_1_1core_1_1_arc_cos.html#aa48d8bec4efbac569d809cf11648b739',1,'mlx::core::ArcCos::print()'],['../classmlx_1_1core_1_1_arc_cosh.html#a6a9a2ab0cc360d7e2f9676db17f8e630',1,'mlx::core::ArcCosh::print()'],['../classmlx_1_1core_1_1_arc_sin.html#a895a35c9dd22fdb06e7b971bfd6fde87',1,'mlx::core::ArcSin::print()'],['../classmlx_1_1core_1_1_arc_sinh.html#aa8b2934a8a0b2eedec8257bbb5726430',1,'mlx::core::ArcSinh::print()'],['../classmlx_1_1core_1_1_arc_tan.html#ab0309e4feca36f221b3d672dc92cac05',1,'mlx::core::ArcTan::print()'],['../classmlx_1_1core_1_1_arc_tan2.html#abdfef9f572d06df1251c28222756a361',1,'mlx::core::ArcTan2::print()'],['../classmlx_1_1core_1_1_arc_tanh.html#aa9549311240d7ba225b84e1df9ad8523',1,'mlx::core::ArcTanh::print()'],['../classmlx_1_1core_1_1_arg_partition.html#aa8678d94fa1571ea71a7bf790cdb8d63',1,'mlx::core::ArgPartition::print()'],['../classmlx_1_1core_1_1_arg_reduce.html#a153a6d8dba7301c4fcd0e429154ead8f',1,'mlx::core::ArgReduce::print()'],['../classmlx_1_1core_1_1_arg_sort.html#a0b59ce43e0982d634a01631728b419bd',1,'mlx::core::ArgSort::print()'],['../classmlx_1_1core_1_1_as_type.html#aa617e29147c14bd5d1fa8ad0bf65af0c',1,'mlx::core::AsType::print()'],['../classmlx_1_1core_1_1_as_strided.html#af2e21b77ea9e6c70bca45224967745bf',1,'mlx::core::AsStrided::print()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a69b28e239da7fdb89f0a9f9467dd797d',1,'mlx::core::BitwiseBinary::print()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#a37ecf6fa296d28efb7651a3c510fe159',1,'mlx::core::BlockMaskedMM::print()'],['../classmlx_1_1core_1_1_gather_m_m.html#ae7a6f4eecb15e95b21e6c87068ebd758',1,'mlx::core::GatherMM::print()'],['../classmlx_1_1core_1_1_broadcast.html#a6a610412861c6e472f930b6721b99a11',1,'mlx::core::Broadcast::print()'],['../classmlx_1_1core_1_1_ceil.html#a14a0048dd6496341cacaddada68276ee',1,'mlx::core::Ceil::print()'],['../classmlx_1_1core_1_1_compiled.html#a271521f92eef49c39799f38e26b64a9b',1,'mlx::core::Compiled::print()'],['../classmlx_1_1core_1_1_concatenate.html#a56f29b585a6d1d958954a68dcc893f33',1,'mlx::core::Concatenate::print()'],['../classmlx_1_1core_1_1_conjugate.html#a40281539bbd543ac8fd8e28650de17e4',1,'mlx::core::Conjugate::print()'],['../classmlx_1_1core_1_1_convolution.html#a844eab7c4cc99e775cfb561265ed14fd',1,'mlx::core::Convolution::print()'],['../classmlx_1_1core_1_1_copy.html#acfa1a02ab9cdab593e928faa515a8008',1,'mlx::core::Copy::print()'],['../classmlx_1_1core_1_1_cos.html#a81858457e4bea931a4bc6f6e38b0f696',1,'mlx::core::Cos::print()'],['../classmlx_1_1core_1_1_cosh.html#ac247faad68c1050cda9f72d7d6d040e2',1,'mlx::core::Cosh::print()'],['../classmlx_1_1core_1_1_custom_transforms.html#a2ddbacbc468271b11caee0ad97005298',1,'mlx::core::CustomTransforms::print()'],['../classmlx_1_1core_1_1_depends.html#aed575b0d927f4341f60442c70adeeb82',1,'mlx::core::Depends::print()'],['../classmlx_1_1core_1_1_divide.html#af3c15337ac15522cc34ed98b97895bb6',1,'mlx::core::Divide::print()'],['../classmlx_1_1core_1_1_div_mod.html#a7edbed50d07869d921e529157931b7a1',1,'mlx::core::DivMod::print()'],['../classmlx_1_1core_1_1_select.html#a678285f2c0b9dae85692399c3aa692a7',1,'mlx::core::Select::print()'],['../classmlx_1_1core_1_1_remainder.html#aeaecac5ea8e606d7ecd393d8019029e4',1,'mlx::core::Remainder::print()'],['../classmlx_1_1core_1_1_equal.html#a0787bf32f0b405a8b2ac809d2d990774',1,'mlx::core::Equal::print()'],['../classmlx_1_1core_1_1_erf.html#a186af7b783cf832c3b25eec3a09f5a0c',1,'mlx::core::Erf::print()'],['../classmlx_1_1core_1_1_erf_inv.html#a0acb31bd5780abf61877bd1a3e0fd4f9',1,'mlx::core::ErfInv::print()'],['../classmlx_1_1core_1_1_exp.html#ad87cc1b2ae595a613b03b0fdca63ae6a',1,'mlx::core::Exp::print()'],['../classmlx_1_1core_1_1_expm1.html#af1a99266fc50aa5948cdd298e2916ef1',1,'mlx::core::Expm1::print()'],['../classmlx_1_1core_1_1_f_f_t.html#a15a2a5f7647f5fb78611a251d3270edf',1,'mlx::core::FFT::print()'],['../classmlx_1_1core_1_1_floor.html#ac289e87c5fac15e2f491e2513be610f6',1,'mlx::core::Floor::print()'],['../classmlx_1_1core_1_1_full.html#a68e08303f4960ab373b84a3312edc013',1,'mlx::core::Full::print()'],['../classmlx_1_1core_1_1_gather.html#a9d57637a8a65008683c3847251bdcf91',1,'mlx::core::Gather::print()'],['../classmlx_1_1core_1_1_greater.html#aa2980e45cd2c79ebfb394012d3108a04',1,'mlx::core::Greater::print()'],['../classmlx_1_1core_1_1_greater_equal.html#ab98045c861d2d2ffb0398c2c1d671cef',1,'mlx::core::GreaterEqual::print()'],['../classmlx_1_1core_1_1_hadamard.html#a3df6e7e3b3b71bf50be5f1a05d0870b6',1,'mlx::core::Hadamard::print()'],['../classmlx_1_1core_1_1_less.html#ad67e6f66d7b75546fd98dbee6b631d78',1,'mlx::core::Less::print()'],['../classmlx_1_1core_1_1_less_equal.html#a409842d3862113c53cbbdf7467a06950',1,'mlx::core::LessEqual::print()'],['../classmlx_1_1core_1_1_load.html#a54e08a0ca41b7c9f1a76b00c889f0bfa',1,'mlx::core::Load::print()'],['../classmlx_1_1core_1_1_log.html#a7b946d98d4a228c6be9f606a3bd8a30d',1,'mlx::core::Log::print()'],['../classmlx_1_1core_1_1_log1p.html#a8a1569dde30440ce11ea466ccc69d2d4',1,'mlx::core::Log1p::print()'],['../classmlx_1_1core_1_1_logical_not.html#a001ff3eca46440f0d8a287e0b98a8a2c',1,'mlx::core::LogicalNot::print()'],['../classmlx_1_1core_1_1_logical_and.html#a9a5220eb56e1fd94fd879394ee5ad397',1,'mlx::core::LogicalAnd::print()'],['../classmlx_1_1core_1_1_logical_or.html#a6becc5fbfadde850de9857099dcd5003',1,'mlx::core::LogicalOr::print()'],['../classmlx_1_1core_1_1_log_add_exp.html#a702a2eff0bd1ae7b6fb829dd0b0b11b9',1,'mlx::core::LogAddExp::print()'],['../classmlx_1_1core_1_1_matmul.html#abb4a16a265a05d56a2f5d2e89d6f9dfd',1,'mlx::core::Matmul::print()'],['../classmlx_1_1core_1_1_maximum.html#a3b708a1d6b526719c62850294776f8ca',1,'mlx::core::Maximum::print()'],['../classmlx_1_1core_1_1_minimum.html#a137677bf32c626a768b732a7b8575512',1,'mlx::core::Minimum::print()'],['../classmlx_1_1core_1_1_multiply.html#aa4f1f7af68346ce80c2636df415c9909',1,'mlx::core::Multiply::print()'],['../classmlx_1_1core_1_1_negative.html#a0d5c30e267ff6468d64f1987f9f83f91',1,'mlx::core::Negative::print()'],['../classmlx_1_1core_1_1_not_equal.html#a12aa2f764880d29e627540610b63af09',1,'mlx::core::NotEqual::print()'],['../classmlx_1_1core_1_1_number_of_elements.html#aecde30826970938f3aa688979a668f52',1,'mlx::core::NumberOfElements::print()'],['../classmlx_1_1core_1_1_pad.html#af87754daaf51f6a6cf8bd4949ca1e70a',1,'mlx::core::Pad::print()'],['../classmlx_1_1core_1_1_partition.html#ab5c7aa4fed325475b33d4004649f0dc0',1,'mlx::core::Partition::print()'],['../classmlx_1_1core_1_1_power.html#a33e2d7ff078426fe66ea2370ceb5af60',1,'mlx::core::Power::print()'],['../classmlx_1_1core_1_1_quantized_matmul.html#aaef8c96d4d40b4fa08ced540d341a4db',1,'mlx::core::QuantizedMatmul::print()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a53c3fa7beb51ce2e1c2da28633406fe0',1,'mlx::core::GatherQMM::print()'],['../classmlx_1_1core_1_1_random_bits.html#a8a5593c34fd868d94b36a8ced1390271',1,'mlx::core::RandomBits::print()'],['../classmlx_1_1core_1_1_reshape.html#a0f2323d5d67ece0eb25ecff565b21862',1,'mlx::core::Reshape::print()'],['../classmlx_1_1core_1_1_reduce.html#a399be3a89553787a0a687706881f03cd',1,'mlx::core::Reduce::print()'],['../classmlx_1_1core_1_1_round.html#af0dfe8943109c936b35ab0082f566f72',1,'mlx::core::Round::print()'],['../classmlx_1_1core_1_1_scan.html#ad5b6308c79e9b985a49df35eadd15b22',1,'mlx::core::Scan::print()'],['../classmlx_1_1core_1_1_scatter.html#aa9d45cbfb27b814517f6016092b30efa',1,'mlx::core::Scatter::print()'],['../classmlx_1_1core_1_1_sigmoid.html#ad4cd19938e5159754aa7516f405580c2',1,'mlx::core::Sigmoid::print()'],['../classmlx_1_1core_1_1_sign.html#a2aa0720fe0a6d2408eb43c25d3d45b0a',1,'mlx::core::Sign::print()'],['../classmlx_1_1core_1_1_sin.html#a73b31005551015897f15c00e8b0222e4',1,'mlx::core::Sin::print()'],['../classmlx_1_1core_1_1_sinh.html#a5b4753d52e80799d4fea0b9172d25a77',1,'mlx::core::Sinh::print()'],['../classmlx_1_1core_1_1_slice.html#a50851148948d924b71817cfbd4401504',1,'mlx::core::Slice::print()'],['../classmlx_1_1core_1_1_slice_update.html#a751eefb9922c56479b4b0de2ad45439b',1,'mlx::core::SliceUpdate::print()'],['../classmlx_1_1core_1_1_softmax.html#aa783610ef6b82b92681e78fc99412d83',1,'mlx::core::Softmax::print()'],['../classmlx_1_1core_1_1_sort.html#ada81b9343f80958174eba708452927a2',1,'mlx::core::Sort::print()'],['../classmlx_1_1core_1_1_split.html#ad0c31fe5972643cc75fde10445fc47f2',1,'mlx::core::Split::print()'],['../classmlx_1_1core_1_1_square.html#a75feb558cd1d615e96309dd7d1e81384',1,'mlx::core::Square::print()'],['../classmlx_1_1core_1_1_sqrt.html#a8681c8de2f50049848d320c47f713c0f',1,'mlx::core::Sqrt::print()'],['../classmlx_1_1core_1_1_stop_gradient.html#acc7a7d51cbf014dae8ba3d20bedcad50',1,'mlx::core::StopGradient::print()'],['../classmlx_1_1core_1_1_subtract.html#a3834fd305435fb5a8e512566832e372b',1,'mlx::core::Subtract::print()'],['../classmlx_1_1core_1_1_tan.html#aeea7c284d595a2a928d5f28a55e9be7f',1,'mlx::core::Tan::print()'],['../classmlx_1_1core_1_1_tanh.html#a73f4976d641daf697cc1a231d773d78e',1,'mlx::core::Tanh::print()'],['../classmlx_1_1core_1_1_uniform.html#a01510998719b19df137451cc37850b8d',1,'mlx::core::Uniform::print()'],['../classmlx_1_1core_1_1_view.html#a513b034919a8a494add3155f910a360c',1,'mlx::core::View::print()'],['../classmlx_1_1core_1_1_transpose.html#ac6c87b850f4e5560aa13a5e1e9f9fe04',1,'mlx::core::Transpose::print()'],['../classmlx_1_1core_1_1_q_r_f.html#aba3526722b3a52b41fa8103b909f7f3b',1,'mlx::core::QRF::print()'],['../classmlx_1_1core_1_1_s_v_d.html#ab87a4e7ef857936bea66ba9e24662f53',1,'mlx::core::SVD::print()'],['../classmlx_1_1core_1_1_inverse.html#a543f18f1ce5c06c897141091e95a66e9',1,'mlx::core::Inverse::print()'],['../classmlx_1_1core_1_1_cholesky.html#a0a8b51ff7f5369d22bdc58910d4aaf84',1,'mlx::core::Cholesky::print()'],['../structmlx_1_1core_1_1_print_formatter.html#a79fad4cf5844db8c92b066539146281b',1,'mlx::core::PrintFormatter::print(std::ostream &os, bool val)'],['../structmlx_1_1core_1_1_print_formatter.html#a8da448a8adae671b26359341ea514316',1,'mlx::core::PrintFormatter::print(std::ostream &os, int16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#a9d750c134a6fbfa8251c5b1d01d73287',1,'mlx::core::PrintFormatter::print(std::ostream &os, uint16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#adbbb9cbff767f9db73c659a0c07ba633',1,'mlx::core::PrintFormatter::print(std::ostream &os, int32_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#a520adb07fafd911b22bc24b295e4f6cf',1,'mlx::core::PrintFormatter::print(std::ostream &os, uint32_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ab0c702f1ae201e17cd328c9855cf522e',1,'mlx::core::PrintFormatter::print(std::ostream &os, int64_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ac59a5137ddd8b32aae057bb9826ee80d',1,'mlx::core::PrintFormatter::print(std::ostream &os, uint64_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ac4b7895d1168cfc1a3d1186d8a414d2f',1,'mlx::core::PrintFormatter::print(std::ostream &os, float16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#ae21005f92bc641f2d657096f5d176a6d',1,'mlx::core::PrintFormatter::print(std::ostream &os, bfloat16_t val)'],['../structmlx_1_1core_1_1_print_formatter.html#a57af5c32561b95d6ac2a3a1dc4f5d43e',1,'mlx::core::PrintFormatter::print(std::ostream &os, float val)'],['../structmlx_1_1core_1_1_print_formatter.html#a9e1dc67c9afb0a09966336504790823d',1,'mlx::core::PrintFormatter::print(std::ostream &os, complex64_t val)']]], - ['print_5fcomplex_5fconstant_25',['print_complex_constant',['../namespacemlx_1_1core.html#a2b78f270942c6eb185e8045f1c5b4286',1,'mlx::core']]], - ['print_5fconstant_26',['print_constant',['../namespacemlx_1_1core.html#a7d11b000895d44d183260634f4192d92',1,'mlx::core']]], - ['print_5ffloat_5fconstant_27',['print_float_constant',['../namespacemlx_1_1core.html#a93a8ac59c644b801ec8881a58368caf2',1,'mlx::core']]], - ['print_5fgraph_28',['print_graph',['../namespacemlx_1_1core.html#a8ac23fb7f4d4c52e592d6296e63b80d4',1,'mlx::core::print_graph(std::ostream &os, const std::vector< array > &outputs)'],['../namespacemlx_1_1core.html#a17505ed8064dcaddc011cb3d52da2523',1,'mlx::core::print_graph(std::ostream &os, Arrays &&... outputs)']]], - ['print_5fint_5fconstant_29',['print_int_constant',['../namespacemlx_1_1core.html#a948ce3dfc4520d3aa98b33e42f617c64',1,'mlx::core']]], - ['prod_30',['prod',['../structpocketfft_1_1detail_1_1util.html#a33acae07b20b28fe4658bc338fce1b89',1,'pocketfft::detail::util::prod()'],['../group__ops.html#ga4a09b7241d564d92548bc2773eb1d544',1,'mlx::core::prod(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga61832191f3c42ea549cf04953edc3602',1,'mlx::core::prod(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga2b3935108f641e20a70dbf63f540d970',1,'mlx::core::prod(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga8a10a10b81c69996d0aca8ba401f8ff0',1,'mlx::core::prod(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['promote_5ftypes_31',['promote_types',['../namespacemlx_1_1core.html#a505922e54acd43114308e3bdbda0e497',1,'mlx::core']]], - ['ptr_32',['ptr',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#a990643feac06961c5599aac098c17b94',1,'mlx::core::allocator::Buffer::ptr() const'],['../classmlx_1_1core_1_1allocator_1_1_buffer.html#acb15b2f057568828ea09635ed968b62a',1,'mlx::core::allocator::Buffer::ptr()']]], - ['push_33',['push',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#ae8ebd6bc1b4d18e75bd046005e7dde7b',1,'pocketfft::detail::threading::concurrent_queue']]] -]; diff --git a/docs/build/html/search/functions_11.js b/docs/build/html/search/functions_11.js deleted file mode 100644 index e77cfdd8..00000000 --- a/docs/build/html/search/functions_11.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['qdot_0',['qdot',['../quantized_8h.html#ab364d58ab652e3ad87a8f80910556071',1,'quantized.h']]], - ['qdot_5fsafe_1',['qdot_safe',['../quantized_8h.html#a07b26d2d0b0d65dfe925c452c453fa42',1,'quantized.h']]], - ['qmm_5fn_2',['qmm_n',['../quantized_8h.html#ab5c4cfe531d7a0e1c19353060e3d3a6c',1,'quantized.h']]], - ['qmm_5fn_5fimpl_3',['qmm_n_impl',['../quantized_8h.html#a5f7b71eef2e328af3225d7c777ffb339',1,'quantized.h']]], - ['qmm_5ft_4',['qmm_t',['../quantized_8h.html#af9b25269ab95632e343631eeef79dc8d',1,'quantized.h']]], - ['qmm_5ft_5fimpl_5',['qmm_t_impl',['../quantized_8h.html#ac7b6accc41b026ef8efc312987aa9efe',1,'quantized.h']]], - ['qmv_6',['qmv',['../quantized_8h.html#ae024e11c3e38dda71fef772ff0a82fe2',1,'quantized.h']]], - ['qmv_5ffast_7',['qmv_fast',['../quantized_8h.html#ad6d0aa9b080358581844d6583aa2f4ea',1,'quantized.h']]], - ['qmv_5ffast_5fimpl_8',['qmv_fast_impl',['../quantized_8h.html#aba7687e6f8f1d29c0a1b2a3db150bd81',1,'quantized.h']]], - ['qmv_5fimpl_9',['qmv_impl',['../quantized_8h.html#a8e13c7d895624f738d2a6d9893b687fd',1,'quantized.h']]], - ['qouter_10',['qouter',['../quantized_8h.html#ae756f6817b584c60f5dcdd1d9c6b4f58',1,'quantized.h']]], - ['qr_11',['qr',['../namespacemlx_1_1core_1_1linalg.html#ae6d97829459353fe3b31c8a0867c0ca2',1,'mlx::core::linalg']]], - ['qrf_12',['QRF',['../classmlx_1_1core_1_1_q_r_f.html#a44ed2924dc574c4aeb79b1188b5c3983',1,'mlx::core::QRF']]], - ['quantize_13',['quantize',['../group__ops.html#gab43cc28690da7cdd43b43065adbd31da',1,'mlx::core']]], - ['quantized_14',['quantized',['../namespacemlx_1_1core_1_1metal.html#a949f029424218ab5c5588563d2e076f5',1,'mlx::core::metal']]], - ['quantized_5fmatmul_15',['quantized_matmul',['../group__ops.html#ga6381c7062b232ac21f3fdc3136aaf86e',1,'mlx::core']]], - ['quantizedblockloader_16',['QuantizedBlockLoader',['../struct_quantized_block_loader.html#af59b054750a65e7e79c1cd05c4acac93',1,'QuantizedBlockLoader']]], - ['quantizedmatmul_17',['QuantizedMatmul',['../classmlx_1_1core_1_1_quantized_matmul.html#a5bd164d038d9dc21919f7e0bfdeaa25c',1,'mlx::core::QuantizedMatmul']]], - ['quiet_5fnan_18',['quiet_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['qvm_19',['qvm',['../quantized_8h.html#a2cce78e6692cfcbab8f6aa89afa61580',1,'quantized.h']]], - ['qvm_5fimpl_20',['qvm_impl',['../quantized_8h.html#a9d466e3e3af0d75cfc4eddcf46cb13e4',1,'quantized.h']]] -]; diff --git a/docs/build/html/search/functions_12.js b/docs/build/html/search/functions_12.js deleted file mode 100644 index ead6e230..00000000 --- a/docs/build/html/search/functions_12.js +++ /dev/null @@ -1,77 +0,0 @@ -var searchData= -[ - ['r2c_0',['r2c',['../namespacepocketfft_1_1detail.html#a4e46762466d399e35b79c324cfe21616',1,'pocketfft::detail::r2c(const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)'],['../namespacepocketfft_1_1detail.html#a454179497c44714d4b7425f116468c17',1,'pocketfft::detail::r2c(const shape_t &shape_in, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const T *data_in, std::complex< T > *data_out, T fct, size_t nthreads=1)']]], - ['r2r_5ffftpack_1',['r2r_fftpack',['../namespacepocketfft_1_1detail.html#a1ccca4cbbc6150d65620e2f9cdff62ac',1,'pocketfft::detail']]], - ['r2r_5fgenuine_5fhartley_2',['r2r_genuine_hartley',['../namespacepocketfft_1_1detail.html#a072a67f2c4b3b3ebd030604f3383e1ed',1,'pocketfft::detail']]], - ['r2r_5fseparable_5fhartley_3',['r2r_separable_hartley',['../namespacepocketfft_1_1detail.html#a40b56ae882eea17e6960618415f8eb42',1,'pocketfft::detail']]], - ['rader_5ffft_4',['rader_fft',['../backend_2metal_2kernels_2fft_8h.html#ad123452303f6415904f3592f660769b8',1,'fft.h']]], - ['radians_5',['radians',['../group__ops.html#ga07aa8059adba5b9a8818027b8aafd31e',1,'mlx::core']]], - ['radix10_6',['radix10',['../radix_8h.html#a27054992e148bfcd9f7a69c96d75d926',1,'radix.h']]], - ['radix11_7',['radix11',['../radix_8h.html#a34f7dcefd29f8a7f6bddf9a17609a8a7',1,'radix.h']]], - ['radix12_8',['radix12',['../radix_8h.html#a3c61aa04a4b38575722d864cc9ffd0b7',1,'radix.h']]], - ['radix13_9',['radix13',['../radix_8h.html#a833b7b31facbd62f6971bb108c54d1db',1,'radix.h']]], - ['radix2_10',['radix2',['../radix_8h.html#a745e50244f1470bba233d8b6b993729c',1,'radix.h']]], - ['radix3_11',['radix3',['../radix_8h.html#a497b31cfa28418e1c2fad53d09f7bc0b',1,'radix.h']]], - ['radix4_12',['radix4',['../radix_8h.html#a12cb26bd3ad635d16a195ccea750256d',1,'radix.h']]], - ['radix5_13',['radix5',['../radix_8h.html#a026e6779e6d2ecdef39ff4aad186091e',1,'radix.h']]], - ['radix6_14',['radix6',['../radix_8h.html#afaaa5de58a97f0a5e6a84fc0d598a884',1,'radix.h']]], - ['radix7_15',['radix7',['../radix_8h.html#a6d37e483d806c550deefabf56caf4ec8',1,'radix.h']]], - ['radix8_16',['radix8',['../radix_8h.html#a6b306e1afe1c5b6af4cd80aa02adb138',1,'radix.h']]], - ['radix_5fbutterfly_17',['radix_butterfly',['../backend_2metal_2kernels_2fft_8h.html#a278d980ed397e6841ce0af44b9aa4396',1,'fft.h']]], - ['radix_5ffunc_18',['radix_func',['../metal_2kernels_2hadamard_8h.html#a590e5366adc78bab4fe44e37885d413f',1,'hadamard.h']]], - ['radix_5fn_5fsteps_19',['radix_n_steps',['../backend_2metal_2kernels_2fft_8h.html#aba8d32e0911499671df93678f39da08b',1,'fft.h']]], - ['randint_20',['randint',['../namespacemlx_1_1core_1_1random.html#a7289d3791aa4e8bfe28fafef4fb40e3b',1,'mlx::core::random::randint(const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#afe20b1c6188f4c8a83203e60b70b8946',1,'mlx::core::random::randint(T low, U high, const std::vector< int > &shape, Dtype dtype=int32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['randombits_21',['RandomBits',['../classmlx_1_1core_1_1_random_bits.html#a7dd5ed03f2a4ab45d1d5e8e2b587de6b',1,'mlx::core::RandomBits']]], - ['rank_22',['rank',['../structmlx_1_1core_1_1distributed_1_1_group.html#ad4a5cdab8e2209ad4825f0c63a9cbec7',1,'mlx::core::distributed::Group']]], - ['raw_5fevent_23',['raw_event',['../classmlx_1_1core_1_1_event.html#af408d30df17c4771e9e2aa550cb6e921',1,'mlx::core::Event']]], - ['raw_5fgroup_24',['raw_group',['../structmlx_1_1core_1_1distributed_1_1_group.html#a3285b94851cf145a2a472f60b7f7ca36',1,'mlx::core::distributed::Group']]], - ['raw_5fptr_25',['raw_ptr',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#a2dfe63e0b4bffeb965cdc50ad4228dbc',1,'mlx::core::allocator::Buffer']]], - ['read_26',['read',['../classmlx_1_1core_1_1io_1_1_reader.html#ad8d74e2c62b579511089faa4cc6f50a1',1,'mlx::core::io::Reader::read(char *data, size_t n)=0'],['../classmlx_1_1core_1_1io_1_1_reader.html#a3e82cc31bd2a8594f19dc9858dca3efc',1,'mlx::core::io::Reader::read(char *data, size_t n, size_t offset)=0'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a6691826fc8d28f83792bfa2f92660a3b',1,'mlx::core::io::ParallelFileReader::read(char *data, size_t n) override'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a2b83b4576f1942db869171cccbf607df',1,'mlx::core::io::ParallelFileReader::read(char *data, size_t n, size_t offset) override']]], - ['readwriter_27',['ReadWriter',['../struct_read_writer.html#a1aa07e41d7ac286ad79bd26a072dfa0c',1,'ReadWriter']]], - ['reciprocal_28',['reciprocal',['../group__ops.html#ga4d29556bb93e2f66916116cf1f062b36',1,'mlx::core']]], - ['recv_29',['Recv',['../classmlx_1_1core_1_1distributed_1_1_recv.html#a511dd4e0259da18a181a25579d9b55db',1,'mlx::core::distributed::Recv']]], - ['recv_30',['recv',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#a003de04deb00ecbb19179b3f557df548',1,'mlx::core::distributed::detail::recv()'],['../namespacemlx_1_1core_1_1distributed.html#a10f9d39c02e6e5db600912c03de8b393',1,'mlx::core::distributed::recv(std::vector< int > shape, Dtype dtype, int src, std::optional< Group > group=std::nullopt, StreamOrDevice s={})']]], - ['recv_5flike_31',['recv_like',['../namespacemlx_1_1core_1_1distributed.html#a2822b78bce2c679e6ff940b2fca944f0',1,'mlx::core::distributed']]], - ['reduce_32',['Reduce',['../classmlx_1_1core_1_1_reduce.html#a055368c1d036fb953a23ef230e33dcbf',1,'mlx::core::Reduce']]], - ['reduce_33',['reduce',['../namespacemlx_1_1core_1_1metal.html#abb997ccbed4c9a9ccd975b1574755fca',1,'mlx::core::metal']]], - ['reduce_5futils_34',['reduce_utils',['../namespacemlx_1_1core_1_1metal.html#a2ec39572806310cf528aea06530e8af8',1,'mlx::core::metal']]], - ['reduction_5fop_35',['reduction_op',['../namespacemlx_1_1core.html#aa08ffc1e8f2c58afb2d463496f827ef0',1,'mlx::core::reduction_op(const array &x, array &out, const std::vector< int > &axes, U init, OpS ops, OpC opc, Op op)'],['../namespacemlx_1_1core.html#a064d61b6ddc9e5d1e261a7e33de71083',1,'mlx::core::reduction_op(const array &x, array &out, const std::vector< int > &axes, U init, Op op)']]], - ['reductionplan_36',['ReductionPlan',['../structmlx_1_1core_1_1_reduction_plan.html#a3df6acc08ef92647aab19d68b0961610',1,'mlx::core::ReductionPlan::ReductionPlan(ReductionOpType type_, std::vector< int > shape_, std::vector< size_t > strides_)'],['../structmlx_1_1core_1_1_reduction_plan.html#aec7496f3740a0b0d51aaa606f6fd68f4',1,'mlx::core::ReductionPlan::ReductionPlan(ReductionOpType type_)']]], - ['register_5flibrary_37',['register_library',['../classmlx_1_1core_1_1metal_1_1_device.html#a45945f2efcd242d915ffa2171e92bf9d',1,'mlx::core::metal::Device::register_library(const std::string &lib_name, const std::string &lib_path)'],['../classmlx_1_1core_1_1metal_1_1_device.html#a99ff72689b7beb65ad4541391b0eeabf',1,'mlx::core::metal::Device::register_library(const std::string &lib_name)']]], - ['remainder_38',['Remainder',['../classmlx_1_1core_1_1_remainder.html#a4f3eada4a21898af4a77d1d27ce14641',1,'mlx::core::Remainder']]], - ['remainder_39',['remainder',['../group__ops.html#ga99f5c904f724156a814d7817188351d2',1,'mlx::core']]], - ['remaining_40',['remaining',['../classpocketfft_1_1detail_1_1multi__iter.html#a034d12f842df90e6471dffd3fa6ba4bd',1,'pocketfft::detail::multi_iter::remaining()'],['../classpocketfft_1_1detail_1_1simple__iter.html#a9267d37f51a9a5aecc69293c7ed1b1f6',1,'pocketfft::detail::simple_iter::remaining()'],['../classpocketfft_1_1detail_1_1rev__iter.html#a143637135c441a4b9a2959c2370d8c63',1,'pocketfft::detail::rev_iter::remaining()']]], - ['repeat_41',['repeat',['../group__ops.html#gab49e3a687e826554ed1574186e8ae974',1,'mlx::core::repeat(const array &arr, int repeats, int axis, StreamOrDevice s={})'],['../group__ops.html#ga4f75f5d5db999f02f43ecbc6dccf3ba6',1,'mlx::core::repeat(const array &arr, int repeats, StreamOrDevice s={})']]], - ['reset_5fpeak_5fmemory_42',['reset_peak_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a26b9c8ac7ed56c3bb7ddc194009ec5a6',1,'mlx::core::metal::MetalAllocator::reset_peak_memory()'],['../namespacemlx_1_1core_1_1metal.html#adec8bb375da6c9dd5ff625a3a8434122',1,'mlx::core::metal::reset_peak_memory()']]], - ['reshape_43',['Reshape',['../classmlx_1_1core_1_1_reshape.html#aa7c5a6e18d0615ad36102de01929eb26',1,'mlx::core::Reshape']]], - ['reshape_44',['reshape',['../group__ops.html#ga7b0e3d46a39d99b1628b422049790082',1,'mlx::core']]], - ['resize_45',['resize',['../classpocketfft_1_1detail_1_1arr.html#a8d73baaefa02dff8714e4398c83917e0',1,'pocketfft::detail::arr']]], - ['restart_46',['restart',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a51d252df8d0cd060f15be8ba2bfe3288',1,'pocketfft::detail::threading::thread_pool']]], - ['result_5ftype_47',['result_type',['../namespacemlx_1_1core.html#a8b984eef832f757e28cd262d64a49ae7',1,'mlx::core::result_type(const array &a, const array &b)'],['../namespacemlx_1_1core.html#ac457c232f956ba802acb69c5a621633d',1,'mlx::core::result_type(const array &a, const array &b, const array &c)'],['../namespacemlx_1_1core.html#aafaf24a28297428caf6d0c36c623489e',1,'mlx::core::result_type(const std::vector< array > &arrays)']]], - ['retain_5fgraph_48',['retain_graph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html#a12ead93cb70ebab865c5e9ce7718f814',1,'mlx::core::detail::RetainGraph']]], - ['retaingraph_49',['RetainGraph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html#a7fac0244c14cc9e8f580bc1298ff68da',1,'mlx::core::detail::RetainGraph']]], - ['rev_5fiter_50',['rev_iter',['../classpocketfft_1_1detail_1_1rev__iter.html#af7b8c2f1534d3038ba2a3c6b9919e134',1,'pocketfft::detail::rev_iter']]], - ['rev_5fofs_51',['rev_ofs',['../classpocketfft_1_1detail_1_1rev__iter.html#a7f112afa76cb7a4c29cff217a6f5f5a9',1,'pocketfft::detail::rev_iter']]], - ['rfft_52',['rfft',['../namespacemlx_1_1core_1_1fft.html#a9cb0edfb831b1ed607a8124d38540c13',1,'mlx::core::fft::rfft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a464016cbc948bb3af17d43ce39cf54bd',1,'mlx::core::fft::rfft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['rfft2_53',['rfft2',['../namespacemlx_1_1core_1_1fft.html#af63a8d42005954aa5cba69823e9c9de7',1,'mlx::core::fft::rfft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a59ca0c3c455e4ff1fed3dbd2327c55f0',1,'mlx::core::fft::rfft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['rfftn_54',['rfftn',['../namespacemlx_1_1core_1_1fft.html#a2e4287e110dfb23aaa7f4d65eb72465a',1,'mlx::core::fft::rfftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#ab502e092ba4bb571ecc421a25e4cb968',1,'mlx::core::fft::rfftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a53d44fd9b6c7645f9303c24099755bf2',1,'mlx::core::fft::rfftn(const array &a, StreamOrDevice s={})']]], - ['rfftp_55',['rfftp',['../classpocketfft_1_1detail_1_1rfftp.html#a0c590f917b8e8afa3ff53ccff52e68c5',1,'pocketfft::detail::rfftp']]], - ['right_5fshift_56',['right_shift',['../group__ops.html#gafa376ad57d38ba87378f0272dc379b23',1,'mlx::core']]], - ['rint_57',['rint',['../namespacemetal.html#a29ab6060527120eee745aec0daa06e01',1,'metal::rint()'],['../namespacemetal_1_1fast.html#aa613bc252f8d8069e175ec9e9d05a7ec',1,'metal::fast::rint()'],['../namespacemetal_1_1precise.html#ab17bd408098270ad92f37bcd1039c254',1,'metal::precise::rint()']]], - ['rms_5fnorm_58',['rms_norm',['../namespacemlx_1_1core_1_1fast.html#ac7b620275c6386f822b7aacc6b312e62',1,'mlx::core::fast']]], - ['rmsnorm_59',['RMSNorm',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#a22adaff0749711263388ec151fcfebe2',1,'mlx::core::fast::RMSNorm']]], - ['rmsnormvjp_60',['RMSNormVJP',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#aac060129b2e1af79bf388bfe705381ca',1,'mlx::core::fast::RMSNormVJP']]], - ['rope_61',['RoPE',['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a031fa27aeba94cfa5ccc633137a12163',1,'mlx::core::fast::RoPE']]], - ['rope_62',['rope',['../namespacemlx_1_1core_1_1fast.html#a534ef357eae24892684a6ecd866d3fab',1,'mlx::core::fast']]], - ['rot90_63',['ROT90',['../namespacepocketfft_1_1detail.html#a928bad5278df636ee47402c0a75f64ef',1,'pocketfft::detail']]], - ['rotx90_64',['ROTX90',['../namespacepocketfft_1_1detail.html#ab6a43dc0cec4291e163e68a0875ac501',1,'pocketfft::detail']]], - ['round_65',['Round',['../classmlx_1_1core_1_1_round.html#a1327a359b2aed91f576145a0e70d1dde',1,'mlx::core::Round']]], - ['round_66',['round',['../namespacemetal.html#a46c667e169ff9d51a9204a045305442f',1,'metal::round()'],['../namespacemetal_1_1fast.html#a4cb687257a004726d49e496417eaa40f',1,'metal::fast::round()'],['../namespacemetal_1_1precise.html#a5295ab08055d12534cc3775da855ac12',1,'metal::precise::round()'],['../group__ops.html#ga2d74d43f007a069384e89d8416525331',1,'mlx::core::round(const array &a, int decimals, StreamOrDevice s={})'],['../group__ops.html#gaf18fb7e98bf8cf3b7fbc5e64c988a95b',1,'mlx::core::round(const array &a, StreamOrDevice s={})']]], - ['round_5ferror_67',['round_error',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#afa223448fa4f04c1113a85345dd720c3',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['row_5freduce_5fgeneral_5fdispatch_68',['row_reduce_general_dispatch',['../namespacemlx_1_1core.html#ab1eeca8ec6fa31819ee108fa6ed2c41b',1,'mlx::core']]], - ['row_5freduce_5flooped_69',['row_reduce_looped',['../reduce__row_8h.html#ad98332d74a6824aa7499df3e2f2246ae',1,'reduce_row.h']]], - ['row_5freduce_5fsimple_70',['row_reduce_simple',['../reduce__row_8h.html#ac01d30987668930c8b38900e47b8308b',1,'reduce_row.h']]], - ['row_5freduce_5fsmall_71',['row_reduce_small',['../reduce__row_8h.html#a27e75312086e31f6bd1bbf4b366679da',1,'reduce_row.h']]], - ['rsqrt_72',['rsqrt',['../namespacemetal.html#a1cf4b605c0aa7ff5bfe5e979a16f5157',1,'metal::rsqrt()'],['../namespacemetal_1_1fast.html#aa62097c750f1e4b69d09277f19976ab1',1,'metal::fast::rsqrt()'],['../namespacemetal_1_1precise.html#afb397b477745f12a44423934fa2b05ac',1,'metal::precise::rsqrt()'],['../group__ops.html#ga102f23aa0b0c3d3296a321c694617aa1',1,'mlx::core::rsqrt()']]], - ['run_73',['run',['../struct_g_e_m_v_kernel.html#ac4a7b5011a0ea938ab1949bb1767fc1a',1,'GEMVKernel::run()'],['../struct_g_e_m_v_t_kernel.html#a5d68656832de892f33db939005713927',1,'GEMVTKernel::run()'],['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a00e55d4a161758350ed7310817d2d2a5',1,'mlx::steel::GEMMKernel::run()']]] -]; diff --git a/docs/build/html/search/functions_13.js b/docs/build/html/search/functions_13.js deleted file mode 100644 index 73587d77..00000000 --- a/docs/build/html/search/functions_13.js +++ /dev/null @@ -1,137 +0,0 @@ -var searchData= -[ - ['sanity_5fcheck_0',['sanity_check',['../structpocketfft_1_1detail_1_1util.html#a3d2f5f00d4fed5c09bd1509ffa9a44cd',1,'pocketfft::detail::util::sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace)'],['../structpocketfft_1_1detail_1_1util.html#a280945ba7af964102b1d0d1d83469130',1,'pocketfft::detail::util::sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, const shape_t &axes)'],['../structpocketfft_1_1detail_1_1util.html#a670e044dadbbf680537e1fb11bc8b724',1,'pocketfft::detail::util::sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, size_t axis)']]], - ['save_1',['save',['../namespacemlx_1_1core.html#ad4c2cebe9e54582295f98c5a448a1f32',1,'mlx::core::save(std::shared_ptr< io::Writer > out_stream, array a)'],['../namespacemlx_1_1core.html#a22a37f3e33e0658680f6227bdd2d0b91',1,'mlx::core::save(std::string file, array a)']]], - ['save_5fgguf_2',['save_gguf',['../namespacemlx_1_1core.html#a8bcc29ca8846ec99dce333df4a34dc5f',1,'mlx::core']]], - ['save_5fsafetensors_3',['save_safetensors',['../namespacemlx_1_1core.html#a9f158db20c2405557f3ebc397e876de8',1,'mlx::core::save_safetensors(std::shared_ptr< io::Writer > in_stream, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})'],['../namespacemlx_1_1core.html#a21e256d852d587bcdc0827831b2c5c16',1,'mlx::core::save_safetensors(std::string file, std::unordered_map< std::string, array >, std::unordered_map< std::string, std::string > metadata={})']]], - ['scaled_5fdot_5fproduct_5fattention_4',['scaled_dot_product_attention',['../namespacemlx_1_1core_1_1fast.html#a3663b50265b0a9c0cca2b5376852e059',1,'mlx::core::fast']]], - ['scaleddotproductattention_5',['ScaledDotProductAttention',['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#a6a904c377fffc3c193102a3123f5e706',1,'mlx::core::fast::ScaledDotProductAttention']]], - ['scan_6',['Scan',['../classmlx_1_1core_1_1_scan.html#ac93e8f9c6771de825d2186ef34fa7087',1,'mlx::core::Scan']]], - ['scan_7',['scan',['../namespacemlx_1_1core_1_1metal.html#a81c2cf124b0803098a54a78f8f6873a6',1,'mlx::core::metal']]], - ['scatter_8',['Scatter',['../classmlx_1_1core_1_1_scatter.html#ac9b3eff67389ef9aa820753379ffeaa3',1,'mlx::core::Scatter']]], - ['scatter_9',['scatter',['../namespacemlx_1_1core_1_1metal.html#a32e902c6cd6d35fcc3119ed6685a170f',1,'mlx::core::metal::scatter()'],['../group__ops.html#gad438be8f90bae9d37c6853b8f4225d61',1,'mlx::core::scatter(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#gac2c2b379a3ce959dbe1c4a68f112edfe',1,'mlx::core::scatter(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5f1d_5findex_5fimpl_10',['scatter_1d_index_impl',['../scatter_8h.html#ac1fd901b5ef9f39be32316a17297781e',1,'scatter.h']]], - ['scatter_5fadd_11',['scatter_add',['../group__ops.html#gacd14c2b5cfebf343fc2d672722f8d174',1,'mlx::core::scatter_add(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#gac13318518e5703f1273c5366eb523a5a',1,'mlx::core::scatter_add(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5fimpl_12',['scatter_impl',['../scatter_8h.html#a75f61cc43682a72dd66a1da43a1809fe',1,'scatter.h']]], - ['scatter_5fmax_13',['scatter_max',['../group__ops.html#ga05881a4157cd113c9392d168a79e6673',1,'mlx::core::scatter_max(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga9adda5f9202bb3486e4d9e1114e3a56f',1,'mlx::core::scatter_max(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5fmin_14',['scatter_min',['../group__ops.html#ga0ca16b7579dfc899f3f7fd40245ba7c5',1,'mlx::core::scatter_min(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga51fa762a997c243ca7a19e1ed3e83199',1,'mlx::core::scatter_min(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scatter_5fprod_15',['scatter_prod',['../group__ops.html#ga3708b5bcb61e2c63d213c4ce6ad0ffc0',1,'mlx::core::scatter_prod(const array &a, const std::vector< array > &indices, const array &updates, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#gaf83c53c453faa9083ba27e4b97539339',1,'mlx::core::scatter_prod(const array &a, const array &indices, const array &updates, int axis, StreamOrDevice s={})']]], - ['scheduler_16',['Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a3ae42aed78a2200e9d02776fcd2316ba',1,'mlx::core::scheduler::Scheduler::Scheduler()'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a61a74e3628899e66dde600e24a750648',1,'mlx::core::scheduler::Scheduler::Scheduler(const Scheduler &)=delete'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#ac3f77b7c93220dadd0b3bb2e903b7059',1,'mlx::core::scheduler::Scheduler::Scheduler(Scheduler &&)=delete']]], - ['scheduler_17',['scheduler',['../namespacemlx_1_1core_1_1scheduler.html#ae856e468c2f7c8f8ec672522cc13730b',1,'mlx::core::scheduler']]], - ['seed_18',['seed',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a9f19c5da2031cba50d0ff996924347d8',1,'mlx::core::random::KeySequence::seed()'],['../namespacemlx_1_1core_1_1random.html#ac4ad325b613257306df74595d3d0e23b',1,'mlx::core::random::seed()']]], - ['seek_19',['seek',['../classmlx_1_1core_1_1io_1_1_reader.html#acea55078bd39ccaa27a9a36f17a39cd1',1,'mlx::core::io::Reader::seek()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a9c1716dda53aa36faea9c8fb1a3e34d4',1,'mlx::core::io::Writer::seek()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a673c16b669f3cee13f387b7b0a1f39f7',1,'mlx::core::io::ParallelFileReader::seek()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9646f4ea048ae58719daeb588e2de433',1,'mlx::core::io::FileWriter::seek()']]], - ['select_20',['Select',['../classmlx_1_1core_1_1_select.html#a6f833fe55dd68ad3726bbf9a8f75eec9',1,'mlx::core::Select']]], - ['send_21',['Send',['../classmlx_1_1core_1_1distributed_1_1_send.html#a2481dd876b14d4a13ac466cbca9c4eac',1,'mlx::core::distributed::Send']]], - ['send_22',['send',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#abf33511660ac71df5fc92f2aad6c6e08',1,'mlx::core::distributed::detail::send()'],['../namespacemlx_1_1core_1_1distributed.html#a5a8360edaa3a528a3927fce4d2cf1777',1,'mlx::core::distributed::send()']]], - ['set_23',['Set',['../structpocketfft_1_1detail_1_1cmplx.html#a647fece372b64b13c4a7e5877d09a807',1,'pocketfft::detail::cmplx::Set(T r_, T i_)'],['../structpocketfft_1_1detail_1_1cmplx.html#a447d26b2e07f6e45f29d865e906c0a98',1,'pocketfft::detail::cmplx::Set(T r_)']]], - ['set_5fcache_5flimit_24',['set_cache_limit',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#af392bced29d9e4e3f1a7cc4725d83764',1,'mlx::core::metal::MetalAllocator::set_cache_limit()'],['../namespacemlx_1_1core_1_1metal.html#ab09c9b60f1e886ab859e6a066c9a5b9d',1,'mlx::core::metal::set_cache_limit()']]], - ['set_5fcompile_5fmode_25',['set_compile_mode',['../namespacemlx_1_1core.html#a49445a55f976c4397f25ea18e1e92bef',1,'mlx::core']]], - ['set_5fdata_26',['set_data',['../classmlx_1_1core_1_1array.html#a631acd8e318189640b8338f9ae1a554d',1,'mlx::core::array::set_data(allocator::Buffer buffer, deleter_t d=allocator::free)'],['../classmlx_1_1core_1_1array.html#a2112af5fba37b3135cd2e6ac9e851606',1,'mlx::core::array::set_data(allocator::Buffer buffer, size_t data_size, std::vector< size_t > strides, Flags flags, deleter_t d=allocator::free)']]], - ['set_5fdefault_5fdevice_27',['set_default_device',['../namespacemlx_1_1core.html#a312a2de41367fe52caeaf8c0f596a120',1,'mlx::core']]], - ['set_5fdefault_5fstream_28',['set_default_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a6d15314ac9cf25efc9bd1278de9a66bb',1,'mlx::core::scheduler::Scheduler::set_default_stream()'],['../namespacemlx_1_1core.html#af35a2b06517d8bb7dbb469692b4f841c',1,'mlx::core::set_default_stream()']]], - ['set_5finput_5farray_29',['set_input_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#ab69ff0d7f14b9b59db4df0608193dce4',1,'mlx::core::metal::CommandEncoder']]], - ['set_5fmemory_5flimit_30',['set_memory_limit',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a179e3127ef9377ce54295f771c34ba1b',1,'mlx::core::metal::MetalAllocator::set_memory_limit()'],['../namespacemlx_1_1core_1_1metal.html#a3fb2c4a237fa4bfdff798156146c4937',1,'mlx::core::metal::set_memory_limit()']]], - ['set_5foutput_5farray_31',['set_output_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a6a2e28e542eaa2886041bddd51ff6522',1,'mlx::core::metal::CommandEncoder']]], - ['set_5fsiblings_32',['set_siblings',['../classmlx_1_1core_1_1array.html#a8fccbe7a4edfd8cca168161124e263b1',1,'mlx::core::array']]], - ['set_5fstatus_33',['set_status',['../classmlx_1_1core_1_1array.html#a63598018999b49f1340b183cb303f05c',1,'mlx::core::array']]], - ['set_5ftracer_34',['set_tracer',['../classmlx_1_1core_1_1array.html#af26e6be1a9e6239471a4c24310c0c7c8',1,'mlx::core::array']]], - ['set_5fvalue_35',['set_value',['../classmlx_1_1core_1_1_event.html#a0d077b11f4b28f882b42440b7ac6d40d',1,'mlx::core::Event']]], - ['set_5fvector_5fbytes_36',['set_vector_bytes',['../namespacemlx_1_1core.html#a62340bbaa8b216539688a60adcb568bf',1,'mlx::core::set_vector_bytes(CommandEncoder &enc, const std::vector< T > &vec, size_t nelems, int idx)'],['../namespacemlx_1_1core.html#ae309cb543dfb0239cfccc53a8ad0408e',1,'mlx::core::set_vector_bytes(CommandEncoder &enc, const std::vector< T > &vec, int idx)']]], - ['shape_37',['shape',['../classpocketfft_1_1detail_1_1arr__info.html#accada8146cb8d3ab7facb4c1e3413ec0',1,'pocketfft::detail::arr_info::shape() const'],['../classpocketfft_1_1detail_1_1arr__info.html#ac601c660c64a4c252aa8be4ae7dfa7a8',1,'pocketfft::detail::arr_info::shape(size_t i) const'],['../classmlx_1_1core_1_1array.html#a4a2a2c8a4a5beafd723fc13f2055d55d',1,'mlx::core::array::shape() const'],['../classmlx_1_1core_1_1array.html#a51ed0c45666264dc172d06fba159eb8f',1,'mlx::core::array::shape(int dim) const']]], - ['shapes_5fwithout_5freduction_5faxes_38',['shapes_without_reduction_axes',['../namespacemlx_1_1core.html#a44c3ea6db6553c3f6552b9ba64a69494',1,'mlx::core']]], - ['shared_5fbuffer_5fslice_39',['shared_buffer_slice',['../namespacemlx_1_1core.html#aea2a6a4eddfd4cfac89d20786059de2a',1,'mlx::core']]], - ['shutdown_40',['shutdown',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a0c7c29290fde806031c497f24c4ad411',1,'pocketfft::detail::threading::thread_pool']]], - ['siblings_41',['siblings',['../classmlx_1_1core_1_1array.html#acf80fde8f743f65ad5b4be69fcb7a74d',1,'mlx::core::array::siblings() const'],['../classmlx_1_1core_1_1array.html#a7263f23e70a580a9bc2129fbcde36e6c',1,'mlx::core::array::siblings()']]], - ['sigmoid_42',['Sigmoid',['../classmlx_1_1core_1_1_sigmoid.html#a47eca99113ec19f0eb60b6a0472c592b',1,'mlx::core::Sigmoid']]], - ['sigmoid_43',['sigmoid',['../group__ops.html#ga708abf8f79609cd6831db7c38cafac0e',1,'mlx::core']]], - ['sign_44',['Sign',['../classmlx_1_1core_1_1_sign.html#afe951e50907bc23a601ec5fa9eae5763',1,'mlx::core::Sign']]], - ['sign_45',['sign',['../group__ops.html#ga20f1a1a8c0cd6206485f9363f3915faa',1,'mlx::core']]], - ['signal_46',['signal',['../classmlx_1_1core_1_1_event.html#a65a858445506a61be5889ae0e3651b89',1,'mlx::core::Event']]], - ['signaling_5fnan_47',['signaling_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ad1f76a43c7d51a3765174aa6e0dd9f80',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['simd_5fbroadcast_48',['simd_broadcast',['../namespacemetal.html#a498f1e85107eb5f01ba4435977f8efe0',1,'metal']]], - ['simd_5fexclusive_5fscan_49',['simd_exclusive_scan',['../struct_cum_sum.html#a64d1933942de4df2d44dd90e9e5e4460',1,'CumSum::simd_exclusive_scan()'],['../struct_cum_prod.html#a5b0577295853a48856b84fd4f935dff8',1,'CumProd::simd_exclusive_scan()'],['../struct_cum_prod_3_01bool_01_4.html#a1a86e9398bae24182b7be0a6577bf223',1,'CumProd< bool >::simd_exclusive_scan()'],['../struct_cum_max.html#ae11b67aa6c998e9a01615b2a79af4403',1,'CumMax::simd_exclusive_scan()'],['../struct_cum_min.html#a83e65017ff33018b585c043fb803773b',1,'CumMin::simd_exclusive_scan()']]], - ['simd_5fmax_50',['simd_max',['../namespacemetal.html#a048cad0aca52cb737ebf103e76bd1c49',1,'metal']]], - ['simd_5fmin_51',['simd_min',['../namespacemetal.html#ae9e2a23e00724ba2d7868bc4112b386b',1,'metal']]], - ['simd_5fprefix_5fexclusive_5fproduct_52',['simd_prefix_exclusive_product',['../namespacemetal.html#a5ca40242390b632f737e29636829b2e4',1,'metal']]], - ['simd_5fprefix_5fexclusive_5fsum_53',['simd_prefix_exclusive_sum',['../namespacemetal.html#abfbb70c7471f28bf7ff36a612ad014b2',1,'metal']]], - ['simd_5fprefix_5finclusive_5fproduct_54',['simd_prefix_inclusive_product',['../namespacemetal.html#a6ca6a7e1996228fa536e969e9e45c446',1,'metal']]], - ['simd_5fprefix_5finclusive_5fsum_55',['simd_prefix_inclusive_sum',['../namespacemetal.html#a567acb18199ac0107712eb8cb8aeb8e9',1,'metal']]], - ['simd_5fproduct_56',['simd_product',['../namespacemetal.html#ac6e883a04e2265a9790d7db76059e1b4',1,'metal']]], - ['simd_5fscan_57',['simd_scan',['../struct_cum_sum.html#a83342af06f6a700067e3b451636852d6',1,'CumSum::simd_scan()'],['../struct_cum_prod.html#a860dbf6146de088d07175bd165b74004',1,'CumProd::simd_scan()'],['../struct_cum_prod_3_01bool_01_4.html#abeb5ec4237b330e7219f4e881cf10d7a',1,'CumProd< bool >::simd_scan()'],['../struct_cum_max.html#adc9ec8bb09b4433d4c2f03022c43d781',1,'CumMax::simd_scan()'],['../struct_cum_min.html#a0a1005d91b1c90e90e2c6dbd6c296649',1,'CumMin::simd_scan()']]], - ['simd_5fshuffle_58',['simd_shuffle',['../namespacemetal.html#a259ed115bc3c58f88eb35830916b26d4',1,'metal']]], - ['simd_5fshuffle_5fand_5ffill_5fdown_59',['simd_shuffle_and_fill_down',['../namespacemetal.html#ae29a06f0eac636ad7af21dea5b04938b',1,'metal::simd_shuffle_and_fill_down(bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)'],['../namespacemetal.html#a0ee6239fa29a5f9ee0201e0dc5ddc8e0',1,'metal::simd_shuffle_and_fill_down(bfloat16_t data, bfloat16_t filling_data, ushort delta)']]], - ['simd_5fshuffle_5fand_5ffill_5fup_60',['simd_shuffle_and_fill_up',['../namespacemetal.html#a1ca14116bf50639b214d8414b5bbaaa6',1,'metal::simd_shuffle_and_fill_up(bfloat16_t data, bfloat16_t filling_data, ushort delta, ushort modulo)'],['../namespacemetal.html#a5138d5cdc18139e135707916a243cd8e',1,'metal::simd_shuffle_and_fill_up(bfloat16_t data, bfloat16_t filling_data, ushort delta)']]], - ['simd_5fshuffle_5fdown_61',['simd_shuffle_down',['../namespacemetal.html#af6e2dd7ae087aba6abac4f0350b7611c',1,'metal::simd_shuffle_down()'],['../backend_2metal_2kernels_2utils_8h.html#aba6279624b1d30c525efee856a222b5c',1,'simd_shuffle_down(uint64_t data, uint16_t delta): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a0c1e4d782fcc56e1ab5565cef12430dd',1,'simd_shuffle_down(int64_t data, uint16_t delta): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a48ae83a8caf5c74810df60b6c6cdb062',1,'simd_shuffle_down(bool data, uint16_t delta): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#ad9a671a5f9aaa729ae7a77026f16bcb0',1,'simd_shuffle_down(complex64_t data, uint16_t delta): utils.h']]], - ['simd_5fshuffle_5frotate_5fdown_62',['simd_shuffle_rotate_down',['../namespacemetal.html#a4bb203647a421032db47e73cd649841b',1,'metal']]], - ['simd_5fshuffle_5frotate_5fup_63',['simd_shuffle_rotate_up',['../namespacemetal.html#a729b22077d6c944491a6027c18ea80c9',1,'metal']]], - ['simd_5fshuffle_5fup_64',['simd_shuffle_up',['../namespacemetal.html#afe81c5fbde3f4890458b081909242c55',1,'metal']]], - ['simd_5fshuffle_5fxor_65',['simd_shuffle_xor',['../namespacemetal.html#a5017efc9605e069cfb507137cd1a1852',1,'metal']]], - ['simd_5fsum_66',['simd_sum',['../namespacemetal.html#a85181e37a00cb4a4217f1bb25389bce5',1,'metal']]], - ['simd_5fxor_67',['simd_xor',['../namespacemetal.html#a1308decbf2d5c33d34d6be523ea1c30f',1,'metal']]], - ['simple_5fiter_68',['simple_iter',['../classpocketfft_1_1detail_1_1simple__iter.html#a1e455c615825bebd5f1f62665027b398',1,'pocketfft::detail::simple_iter']]], - ['sin_69',['Sin',['../classmlx_1_1core_1_1_sin.html#a10d1ecc0ca96e79cdf55b57073d126ea',1,'mlx::core::Sin']]], - ['sin_70',['sin',['../namespacepocketfft_1_1detail.html#a07745f4a069f811859308281b2982258',1,'pocketfft::detail::sin()'],['../namespacemetal.html#a619a159ca5f2ddfe3647d3a6bb6e804c',1,'metal::sin()'],['../namespacemetal_1_1fast.html#a3af771cfe7a135104f9d063147dba270',1,'metal::fast::sin()'],['../namespacemetal_1_1precise.html#a71acf77ffd29c56f56afae0195c98a1c',1,'metal::precise::sin()'],['../group__ops.html#gaebf0a73ad3732fba39df37826c235692',1,'mlx::core::sin()']]], - ['sincos_5f2pibyn_71',['sincos_2pibyn',['../classpocketfft_1_1detail_1_1sincos__2pibyn.html#a88518f2182d854c557edacd4ab8cbc40',1,'pocketfft::detail::sincos_2pibyn']]], - ['sinh_72',['Sinh',['../classmlx_1_1core_1_1_sinh.html#a4a4f6814d403c2ce5d6c574b0dca3c96',1,'mlx::core::Sinh']]], - ['sinh_73',['sinh',['../namespacemetal.html#a83ba4235ae350ab8880a9df09158620b',1,'metal::sinh()'],['../namespacemetal_1_1fast.html#a990d90b3440e38d1fb4ff5065c6c189b',1,'metal::fast::sinh()'],['../namespacemetal_1_1precise.html#abc8f4f59dd6e7204ab5d84f0af96331c',1,'metal::precise::sinh()'],['../group__ops.html#gaf532375c6563dbd6e329bdedf0224dd7',1,'mlx::core::sinh()']]], - ['sinpi_74',['sinpi',['../namespacemetal.html#ae9655f7fa2ba6c0625ca25fbb278e269',1,'metal::sinpi()'],['../namespacemetal_1_1fast.html#ab07a32fe544aa304577d29e0251e87b2',1,'metal::fast::sinpi()'],['../namespacemetal_1_1precise.html#a78b17dab93519d9c82c2575dafec49c9',1,'metal::precise::sinpi()']]], - ['size_75',['size',['../classpocketfft_1_1detail_1_1arr.html#a95bca00060957f540ff25b69632c6952',1,'pocketfft::detail::arr::size()'],['../classpocketfft_1_1detail_1_1arr__info.html#a003a7106f7fa59a3c55ac1f0116313a5',1,'pocketfft::detail::arr_info::size()'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a2adf9a9c968f113dde830cc0dc27dcc6',1,'mlx::core::allocator::Allocator::size()'],['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#aafa92e8310db089b1ac72b840777e26b',1,'mlx::core::allocator::CommonAllocator::size()'],['../classmlx_1_1core_1_1array.html#a598f87161926d9e0b516860f0ea2c8f6',1,'mlx::core::array::size()'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a51f6587e8065be16f0418ca42a796e05',1,'mlx::core::metal::MetalAllocator::size()'],['../structmlx_1_1core_1_1distributed_1_1_group.html#abd96a09217e3d1bcc522888257d22cef',1,'mlx::core::distributed::Group::size()']]], - ['size_5fof_76',['size_of',['../namespacemlx_1_1core.html#add4794cc0ffe5d717fc146084a235d95',1,'mlx::core']]], - ['slice_77',['Slice',['../classmlx_1_1core_1_1_slice.html#a8a38feb7bb6b72bdeebb83f053e2fd7f',1,'mlx::core::Slice']]], - ['slice_78',['slice',['../group__ops.html#gad66135407dbb41b3c5d2cdfd51226c21',1,'mlx::core::slice(const array &a, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})'],['../group__ops.html#ga90b243e25b5fbbd7a9732f7ac48f6403',1,'mlx::core::slice(const array &a, const std::vector< int > &start, const std::vector< int > &stop, StreamOrDevice s={})']]], - ['slice_5fgpu_79',['slice_gpu',['../namespacemlx_1_1core.html#a59048c5ff114c101a496bf33f62e3de9',1,'mlx::core']]], - ['slice_5fupdate_80',['slice_update',['../group__ops.html#ga3875660e4ce2c8add8bfcf8144078708',1,'mlx::core::slice_update(const array &src, const array &update, std::vector< int > start, std::vector< int > stop, std::vector< int > strides, StreamOrDevice s={})'],['../group__ops.html#ga03ffbbb4d989a463ef43f41ebf7eabef',1,'mlx::core::slice_update(const array &src, const array &update, std::vector< int > start, std::vector< int > stop, StreamOrDevice s={})']]], - ['sliceupdate_81',['SliceUpdate',['../classmlx_1_1core_1_1_slice_update.html#aa30a7f22f557c56e1a2b5fcf44488990',1,'mlx::core::SliceUpdate']]], - ['softmax_82',['Softmax',['../classmlx_1_1core_1_1_softmax.html#a4ec686aac4e06f0dfe2cbd6801af40eb',1,'mlx::core::Softmax']]], - ['softmax_83',['softmax',['../namespacemlx_1_1core_1_1metal.html#a4fe937c2c584fd646926057f31d54ca6',1,'mlx::core::metal::softmax()'],['../group__ops.html#ga7e9bb08b43c8fd0444b7d3c9e09dc1c6',1,'mlx::core::softmax(const array &a, const std::vector< int > &axes, bool precise=false, StreamOrDevice s={})'],['../group__ops.html#ga1ae3614d07d873892a530d14c3857d0b',1,'mlx::core::softmax(const array &a, bool precise=false, StreamOrDevice s={})'],['../group__ops.html#ga06f570d73716a24303e6de3aaba4457b',1,'mlx::core::softmax(const array &a, int axis, bool precise=false, StreamOrDevice s={})']]], - ['softmax_5fexp_84',['softmax_exp',['../kernels_2softmax_8h.html#a440d4031ee5e86159a4dd715e44a438b',1,'softmax.h']]], - ['softmax_5flooped_85',['softmax_looped',['../kernels_2softmax_8h.html#a8c47b0924ebfeebcca25f3dd17373276',1,'softmax.h']]], - ['softmax_5fsingle_5frow_86',['softmax_single_row',['../kernels_2softmax_8h.html#a815fe70f879f318e5d6e99acf043f52b',1,'softmax.h']]], - ['sort_87',['Sort',['../classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44',1,'mlx::core::Sort']]], - ['sort_88',['sort',['../struct_thread_sort.html#ad9ab3e6b47f7e9b91c0f3b773596986d',1,'ThreadSort::sort()'],['../struct_block_merge_sort.html#acc970f5eb963f7f2010f5ae5ea8b8bc0',1,'BlockMergeSort::sort()'],['../namespacemlx_1_1core_1_1metal.html#ab77c9a9ecaeeab8c66b712862777c24b',1,'mlx::core::metal::sort()'],['../group__ops.html#ga7fb616054665b3c2d61fa234f501f079',1,'mlx::core::sort(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaae1bc47aa737f705d0e5884270063fea',1,'mlx::core::sort(const array &a, int axis, StreamOrDevice s={})']]], - ['special_5fmul_89',['special_mul',['../structpocketfft_1_1detail_1_1cmplx.html#a2e79f5c73c1d926361ad126cf57c8874',1,'pocketfft::detail::cmplx::special_mul()'],['../namespacepocketfft_1_1detail.html#a8da1f3d4a0b712a0285529f24187fe76',1,'pocketfft::detail::special_mul()']]], - ['split_90',['split',['../structmlx_1_1core_1_1distributed_1_1_group.html#abbf40f8979488806bc5bca9ecc4130e9',1,'mlx::core::distributed::Group']]], - ['split_91',['Split',['../classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385',1,'mlx::core::Split']]], - ['split_92',['split',['../group__ops.html#ga7534290bceab5fb3831a05d67bebce7d',1,'mlx::core::split(const array &a, int num_splits, int axis, StreamOrDevice s={})'],['../group__ops.html#ga56882d24e5fde59c266774624c892d41',1,'mlx::core::split(const array &a, int num_splits, StreamOrDevice s={})'],['../group__ops.html#ga2cfcb1a53924882e30476c9016c5de74',1,'mlx::core::split(const array &a, const std::vector< int > &indices, int axis, StreamOrDevice s={})'],['../group__ops.html#gac324dfa3e26d3a14a35ab7962e36f0e1',1,'mlx::core::split(const array &a, const std::vector< int > &indices, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a42847b435d037a977592e355eed072af',1,'mlx::core::random::split(const array &key, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a7ec057064c7326c41b536f08178861e5',1,'mlx::core::random::split(const array &key, int num, StreamOrDevice s={})']]], - ['sqrt_93',['Sqrt',['../classmlx_1_1core_1_1_sqrt.html#a6682a7c31ca427c9d2c5ddb6a479bf29',1,'mlx::core::Sqrt']]], - ['sqrt_94',['sqrt',['../namespacepocketfft_1_1detail.html#a774f8b73f28259d4276bd188b540a3e3',1,'pocketfft::detail::sqrt()'],['../namespacemetal.html#ab3f4d4852ca0e591104fbd8e5b50d31b',1,'metal::sqrt()'],['../namespacemetal_1_1fast.html#a4218a85c7d8a74cb8055b4755205627e',1,'metal::fast::sqrt()'],['../namespacemetal_1_1precise.html#acb213467361cd2cab93a8d5ea1aa5bfd',1,'metal::precise::sqrt()'],['../group__ops.html#ga297f853b3d90ec8ae81263977ba2ddb1',1,'mlx::core::sqrt()']]], - ['square_95',['Square',['../classmlx_1_1core_1_1_square.html#ab94e28d5c92e6febc1c74e525f730dc4',1,'mlx::core::Square']]], - ['square_96',['square',['../group__ops.html#ga1234e4c39cfa79f19d4bdb5b8ea4d45e',1,'mlx::core']]], - ['squeeze_97',['squeeze',['../group__ops.html#ga710daa7ec721bd4d3f326082cb195576',1,'mlx::core::squeeze(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga700dd51b77379a3d2260a55783e8ebf3',1,'mlx::core::squeeze(const array &a, int axis, StreamOrDevice s={})'],['../group__ops.html#ga58bad3c61fd85b95927a987ba1cf5dad',1,'mlx::core::squeeze(const array &a, StreamOrDevice s={})']]], - ['stack_98',['stack',['../group__ops.html#gaf8f2ec2b98a4b59eca73d7471df6e032',1,'mlx::core::stack(const std::vector< array > &arrays, int axis, StreamOrDevice s={})'],['../group__ops.html#ga82216209dce901296fc737fe8efa5c94',1,'mlx::core::stack(const std::vector< array > &arrays, StreamOrDevice s={})']]], - ['start_5fcapture_99',['start_capture',['../namespacemlx_1_1core_1_1metal.html#aa47cb5651bf3b65c46ab216b7e504d77',1,'mlx::core::metal']]], - ['start_5fconcurrent_100',['start_concurrent',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a48b548a0b15f9d1279c938a1c6167034',1,'mlx::core::metal::CommandEncoder']]], - ['status_101',['status',['../classmlx_1_1core_1_1array.html#a7102659be87e9ef62966696ab9b07dad',1,'mlx::core::array']]], - ['std_102',['std',['../group__ops.html#ga2a466024f8061febc0a64be557644cb0',1,'mlx::core::std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#gafdcb04d77c64405a3990078a77dd984c',1,'mlx::core::std(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga7f649970bf38b987b6ef847054f3c2f8',1,'mlx::core::std(const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#ga62721a206df671ef5797449eea97af9f',1,'mlx::core::std(const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})']]], - ['steel_5fconv_103',['steel_conv',['../namespacemlx_1_1core_1_1metal.html#a92f1e559b1121d545746f81ff86eaca1',1,'mlx::core::metal']]], - ['steel_5fconv_5fgeneral_104',['steel_conv_general',['../namespacemlx_1_1core_1_1metal.html#a02edb6a90bdf30f4c9f0d6c25b0267b5',1,'mlx::core::metal']]], - ['steel_5fgemm_5ffused_105',['steel_gemm_fused',['../namespacemlx_1_1core_1_1metal.html#a17764366deed71c160fb26091400a803',1,'mlx::core::metal']]], - ['steel_5fgemm_5fmasked_106',['steel_gemm_masked',['../namespacemlx_1_1core_1_1metal.html#a962272ca73d26c08f76f706a128fd71f',1,'mlx::core::metal']]], - ['steel_5fgemm_5fsplitk_107',['steel_gemm_splitk',['../namespacemlx_1_1core_1_1metal.html#ad0dfd40ba7c09755711ceb731e57a5ac',1,'mlx::core::metal']]], - ['steel_5fmatmul_108',['steel_matmul',['../namespacemlx_1_1core.html#ab43a7633794498e1c6775cca829eb886',1,'mlx::core']]], - ['steel_5fmatmul_5fconv_5fgroups_109',['steel_matmul_conv_groups',['../namespacemlx_1_1core.html#afe8386cea0c7b846dc78649927fd0c75',1,'mlx::core']]], - ['stop_5fcapture_110',['stop_capture',['../namespacemlx_1_1core_1_1metal.html#ac90714424e36fb01e04550de69b8314f',1,'mlx::core::metal']]], - ['stop_5fgradient_111',['stop_gradient',['../group__ops.html#ga36bc28f1deb2fe668ca9ae1e447b6b1f',1,'mlx::core']]], - ['stopgradient_112',['StopGradient',['../classmlx_1_1core_1_1_stop_gradient.html#ac70d1ab819d04e00f76bc25aeebaf84f',1,'mlx::core::StopGradient']]], - ['store_5fresult_113',['store_result',['../structmlx_1_1steel_1_1_block_m_m_a.html#a85c57ad4092079f068683cb525fb08ee',1,'mlx::steel::BlockMMA::store_result(device U *D, const int ldd) const'],['../structmlx_1_1steel_1_1_block_m_m_a.html#a7cf757e9785e23997b1417e024559ed3',1,'mlx::steel::BlockMMA::store_result(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, thread const Epilogue &epilogue_op) const']]], - ['store_5fresult_5fsafe_114',['store_result_safe',['../structmlx_1_1steel_1_1_block_m_m_a.html#af94bafeb285c240051e86418fccb89fe',1,'mlx::steel::BlockMMA::store_result_safe(device U *D, const int ldd, short2 dst_tile_dims) const'],['../structmlx_1_1steel_1_1_block_m_m_a.html#a7b324c992750ed3aaa4c485f15b2f391',1,'mlx::steel::BlockMMA::store_result_safe(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const Epilogue &epilogue_op) const']]], - ['stream_115',['Stream',['../structmlx_1_1core_1_1_stream.html#a7f0815ff4886da74cbbff5f93d82dd3e',1,'mlx::core::Stream']]], - ['stream_116',['stream',['../classmlx_1_1core_1_1_event.html#a193143bad31b68c699fa27f135b45614',1,'mlx::core::Event::stream()'],['../classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a',1,'mlx::core::Primitive::stream()']]], - ['streamcontext_117',['StreamContext',['../structmlx_1_1core_1_1_stream_context.html#a89d803151e9d7dce29382aa83d5c6ef1',1,'mlx::core::StreamContext']]], - ['streamthread_118',['StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#ac528109a11abcb82e6e221c5efa4493c',1,'mlx::core::scheduler::StreamThread']]], - ['stride_119',['stride',['../classpocketfft_1_1detail_1_1arr__info.html#a9d10aa83a1117e75d36f7396b8c2a093',1,'pocketfft::detail::arr_info::stride() const'],['../classpocketfft_1_1detail_1_1arr__info.html#ac1f6a9bd6703eceef6003f5f6315d39b',1,'pocketfft::detail::arr_info::stride(size_t i) const']]], - ['stride_5fin_120',['stride_in',['../classpocketfft_1_1detail_1_1multi__iter.html#ac947f03b1cfcb63436a7e61ff020a88c',1,'pocketfft::detail::multi_iter']]], - ['stride_5fout_121',['stride_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a81d71a13bf0b85e556fbb9834167ecc7',1,'pocketfft::detail::multi_iter']]], - ['strided_5freduce_5fgeneral_5fdispatch_122',['strided_reduce_general_dispatch',['../namespacemlx_1_1core.html#aa0332c64ee9965f05026c30a0b778000',1,'mlx::core']]], - ['strided_5fscan_123',['strided_scan',['../kernels_2scan_8h.html#aef54ac73154fb9024eda760a9dfde607',1,'scan.h']]], - ['strides_124',['strides',['../classmlx_1_1core_1_1array.html#a186cf2648da92584d5c1c8b24e69629b',1,'mlx::core::array::strides() const'],['../classmlx_1_1core_1_1array.html#a919f850ca087d1c40aa68f854cb30be2',1,'mlx::core::array::strides(int dim) const']]], - ['submit_125',['submit',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a8698d49e8f406cdb88006aac6a91f9a4',1,'pocketfft::detail::threading::thread_pool']]], - ['subtract_126',['Subtract',['../classmlx_1_1core_1_1_subtract.html#a834854757394f8de7082af65bf86ed9c',1,'mlx::core::Subtract']]], - ['subtract_127',['subtract',['../group__ops.html#ga196c240d3d0fcbb4713802c485e15133',1,'mlx::core']]], - ['sum_128',['sum',['../group__ops.html#gade905ee92eb6ab7edfc312aeddfbaeb6',1,'mlx::core::sum(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga3627754d7868487bdab1bd83f05d9c81',1,'mlx::core::sum(const array &a, StreamOrDevice s={})'],['../group__ops.html#gaccd0a6be2c5b5128fdc2d87b5c8e67f4',1,'mlx::core::sum(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gafcd39b0bf39a56c26a967981c7ab8a8d',1,'mlx::core::sum(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['svd_129',['SVD',['../classmlx_1_1core_1_1_s_v_d.html#ae89ff583e34fa894cccb8e7a475ee6d1',1,'mlx::core::SVD']]], - ['svd_130',['svd',['../namespacemlx_1_1core_1_1linalg.html#a64364b880e99914cf47bf756fa8dbaf0',1,'mlx::core::linalg']]], - ['swapaxes_131',['swapaxes',['../group__ops.html#gabc46eed81ab6c6247903e4ec0c4ec1fb',1,'mlx::core']]], - ['swizzle_132',['swizzle',['../structmlx_1_1steel_1_1_block_swizzle.html#a98e558d63826d2aaa06d3e65a06d2760',1,'mlx::steel::BlockSwizzle']]], - ['synchronize_133',['synchronize',['../namespacemlx_1_1core.html#a14287949d82ffefad0306cef5eb5f9e4',1,'mlx::core::synchronize()'],['../namespacemlx_1_1core.html#a6648a71937b055e5ff513d98056c2fb5',1,'mlx::core::synchronize(Stream)']]] -]; diff --git a/docs/build/html/search/functions_14.js b/docs/build/html/search/functions_14.js deleted file mode 100644 index 78b8898f..00000000 --- a/docs/build/html/search/functions_14.js +++ /dev/null @@ -1,54 +0,0 @@ -var searchData= -[ - ['t_5fdcst23_0',['T_dcst23',['../classpocketfft_1_1detail_1_1_t__dcst23.html#a7cbe3fd1b64383d8b466bcdc2f594900',1,'pocketfft::detail::T_dcst23']]], - ['t_5fdcst4_1',['T_dcst4',['../classpocketfft_1_1detail_1_1_t__dcst4.html#a4a623ebc5dfe8c3cad153c642663099b',1,'pocketfft::detail::T_dcst4']]], - ['t_5fdct1_2',['T_dct1',['../classpocketfft_1_1detail_1_1_t__dct1.html#ac153e82c8bf0943638a88486e35c16d6',1,'pocketfft::detail::T_dct1']]], - ['t_5fdst1_3',['T_dst1',['../classpocketfft_1_1detail_1_1_t__dst1.html#ad0b6647266ef0e87d34730774b92da84',1,'pocketfft::detail::T_dst1']]], - ['take_4',['take',['../group__ops.html#gac2fc270882fcfa81eb8bd068cc0d86d7',1,'mlx::core::take(const array &a, const array &indices, int axis, StreamOrDevice s={})'],['../group__ops.html#ga45d0f423a5e030440ef753f36c5aabf1',1,'mlx::core::take(const array &a, const array &indices, StreamOrDevice s={})']]], - ['take_5falong_5faxis_5',['take_along_axis',['../group__ops.html#gae0a81d4f983e296a87302e36d65bfc76',1,'mlx::core']]], - ['tan_6',['Tan',['../classmlx_1_1core_1_1_tan.html#a8dcc9ff660210ccf05134dd95f47de08',1,'mlx::core::Tan']]], - ['tan_7',['tan',['../namespacemetal.html#a862215a8ddacb086296ba02567c9b158',1,'metal::tan()'],['../namespacemetal_1_1fast.html#ae34754afa152a6170ac2ae3294174506',1,'metal::fast::tan()'],['../namespacemetal_1_1precise.html#a8261ed22f03122ef15b89512358acb1f',1,'metal::precise::tan()'],['../group__ops.html#ga3f10e89a4bcb1a8fa44fb33b8d1176a5',1,'mlx::core::tan()']]], - ['tanh_8',['Tanh',['../classmlx_1_1core_1_1_tanh.html#ae551297bf573e1802fb831440276dee4',1,'mlx::core::Tanh']]], - ['tanh_9',['tanh',['../namespacemetal.html#aa97fc50bd6addfc6de0aae8570fe963d',1,'metal::tanh()'],['../namespacemetal_1_1fast.html#a13e6e6ae087b7c558e9a94ddbc864d43',1,'metal::fast::tanh()'],['../namespacemetal_1_1precise.html#a741c27a10cc968dd1e63473d9fcd8f99',1,'metal::precise::tanh()'],['../group__ops.html#ga5efb19aa0dfa42d8a3d5e1dfd569cd6d',1,'mlx::core::tanh()']]], - ['tanpi_10',['tanpi',['../namespacemetal.html#ae2046d163a525fc1822a9ec8a0aeaeb3',1,'metal::tanpi()'],['../namespacemetal_1_1fast.html#a39b2952d4adf1400016c63243798aaf8',1,'metal::fast::tanpi()'],['../namespacemetal_1_1precise.html#a8fae8c20deff43a8e855bba6f3ba20a5',1,'metal::precise::tanpi()']]], - ['tell_11',['tell',['../classmlx_1_1core_1_1io_1_1_reader.html#a27697ccc1ce45da0233db3bd4f298aed',1,'mlx::core::io::Reader::tell()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a11ad80749894993232fbb5c70fd7b282',1,'mlx::core::io::Writer::tell()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a2e92131428f0ffa98fff781b8c35d9e5',1,'mlx::core::io::ParallelFileReader::tell()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#aa883a722789c962164fd0ddcc5f6ffc5',1,'mlx::core::io::FileWriter::tell()']]], - ['tensordot_12',['tensordot',['../group__ops.html#gaf5c9735f4690327e1500e04e728fae70',1,'mlx::core::tensordot(const array &a, const array &b, const int axis=2, StreamOrDevice s={})'],['../group__ops.html#gad7fe00b566f89d607639c1a497cabbc6',1,'mlx::core::tensordot(const array &a, const array &b, const std::vector< int > &axes_a, const std::vector< int > &axes_b, StreamOrDevice s={})']]], - ['ternary_13',['ternary',['../namespacemlx_1_1core_1_1metal.html#a2d1c92ba6897c0a7a428fed63279b61f',1,'mlx::core::metal']]], - ['ternary_5fg_14',['ternary_g',['../metal_2kernels_2ternary_8h.html#ab55f2a7fbbdae6798217f8253e4bacb3',1,'ternary.h']]], - ['ternary_5fg_5fnd_15',['ternary_g_nd',['../metal_2kernels_2ternary_8h.html#a94f4695f471837525e5ca995285bc6aa',1,'ternary.h']]], - ['ternary_5fg_5fnd1_16',['ternary_g_nd1',['../metal_2kernels_2ternary_8h.html#a1bd5918559850f3f80e3adee2391fe6a',1,'ternary.h']]], - ['ternary_5fg_5fnd2_17',['ternary_g_nd2',['../metal_2kernels_2ternary_8h.html#afdf0d9d0cb21fcb3f176500785076af8',1,'ternary.h']]], - ['ternary_5fg_5fnd3_18',['ternary_g_nd3',['../metal_2kernels_2ternary_8h.html#a113df0c8a841b0e986900d580644e047',1,'ternary.h']]], - ['ternary_5fop_5fgpu_19',['ternary_op_gpu',['../namespacemlx_1_1core.html#aa63e62b6d3906e4cac871d498515a1cd',1,'mlx::core']]], - ['ternary_5fop_5fgpu_5finplace_20',['ternary_op_gpu_inplace',['../namespacemlx_1_1core.html#a37645c0adccb3eb46844115def1a68d7',1,'mlx::core']]], - ['ternary_5fops_21',['ternary_ops',['../namespacemlx_1_1core_1_1metal.html#a11b593b07e9a33e5f78fe4695fb99ec9',1,'mlx::core::metal']]], - ['ternary_5fv_22',['ternary_v',['../metal_2kernels_2ternary_8h.html#a83f93644d21ee774e06e8190d0725ccb',1,'ternary.h']]], - ['ternary_5fv2_23',['ternary_v2',['../metal_2kernels_2ternary_8h.html#a3e610f3b01966bdbf23fdfebe5d2c508',1,'ternary.h']]], - ['thread_5fcount_24',['thread_count',['../structpocketfft_1_1detail_1_1util.html#a3b012d5a19215bcd32cf6e228556fa87',1,'pocketfft::detail::util']]], - ['thread_5ffn_25',['thread_fn',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a06a62c21c1174e4eb4d242e50aad7adf',1,'mlx::core::scheduler::StreamThread']]], - ['thread_5fid_26',['thread_id',['../namespacepocketfft_1_1detail_1_1threading.html#aebe85d6273d92c7d3728e2c621ccc82b',1,'pocketfft::detail::threading']]], - ['thread_5fmap_27',['thread_map',['../namespacepocketfft_1_1detail_1_1threading.html#a4fcf674db39f0e2c1c59d48491daed6e',1,'pocketfft::detail::threading']]], - ['thread_5fpool_28',['thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a37a8121a99dd06a9d44b3e80ba0ea560',1,'pocketfft::detail::threading::thread_pool::thread_pool(size_t nthreads)'],['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#aefaadaa60c0183b862ad96338177a5e0',1,'pocketfft::detail::threading::thread_pool::thread_pool()'],['../namespacemlx_1_1core_1_1io.html#a05f27b765443a178a972abae772e863d',1,'mlx::core::io::thread_pool()']]], - ['thread_5freduce_29',['thread_reduce',['../reduce__row_8h.html#afd80a25fa84e6cc884dcc8698859ade1',1,'reduce_row.h']]], - ['thread_5fswap_30',['thread_swap',['../sort_8h.html#a6e8c2da4975a8001fd5ddf211a3058b7',1,'sort.h']]], - ['threadgroup_5freduce_31',['threadgroup_reduce',['../reduce__row_8h.html#aa146bb611069fd2892f03714fd1cc3cf',1,'reduce_row.h']]], - ['threadpool_32',['ThreadPool',['../class_thread_pool.html#ac291710e33dbbed96ee20711080d506d',1,'ThreadPool']]], - ['threefry2x32_5fhash_33',['threefry2x32_hash',['../namespacemlx_1_1core_1_1random.html#ac7e92c89a2bac1b0bed922a3d4c3c66b',1,'mlx::core::random']]], - ['tile_34',['tile',['../group__ops.html#gab105a57b9a4d84496fe1e4d60e13d361',1,'mlx::core']]], - ['to_5fbnns_5fdtype_35',['to_bnns_dtype',['../namespacemlx_1_1core.html#a7a4193f37b1de9c33c31d1da09c77edb',1,'mlx::core']]], - ['to_5fstream_36',['to_stream',['../namespacemlx_1_1core.html#a4734a596e57434492ddfe79f2cb9dbf9',1,'mlx::core']]], - ['topk_37',['topk',['../group__ops.html#ga5487dd887c43e5341f3e68ffe47f0f5a',1,'mlx::core::topk(const array &a, int k, StreamOrDevice s={})'],['../group__ops.html#ga35b8436c79ff953f6c809598b646f498',1,'mlx::core::topk(const array &a, int k, int axis, StreamOrDevice s={})']]], - ['trace_38',['trace',['../group__ops.html#gabf786129c7660ed8d5acb5499bc6fefd',1,'mlx::core::trace(const array &a, int offset, int axis1, int axis2, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga5ed43c2dbf7d6cbddbaa2fd682deaafd',1,'mlx::core::trace(const array &a, int offset, int axis1, int axis2, StreamOrDevice s={})'],['../group__ops.html#gaf25c00108feaafaa6350a4434cb0062e',1,'mlx::core::trace(const array &a, StreamOrDevice s={})']]], - ['transformadd_39',['TransformAdd',['../structmlx_1_1steel_1_1_transform_add.html#a7c1b7292910b74281e5296b3dac157ae',1,'mlx::steel::TransformAdd']]], - ['transformaxpby_40',['TransformAxpby',['../structmlx_1_1steel_1_1_transform_axpby.html#ad7d11c53de13646b725921391d15bbe9',1,'mlx::steel::TransformAxpby']]], - ['transpose_41',['Transpose',['../classmlx_1_1core_1_1_transpose.html#a1a9ba023584c61c7ac93d6dce536760a',1,'mlx::core::Transpose']]], - ['transpose_42',['transpose',['../group__ops.html#gac1869f3b7094869b44fe7ac4ce58638b',1,'mlx::core::transpose(const array &a, std::vector< int > axes, StreamOrDevice s={})'],['../group__ops.html#ga260ac332956f3a6bf1dfdb9095c84dc5',1,'mlx::core::transpose(const array &a, std::initializer_list< int > axes, StreamOrDevice s={})'],['../group__ops.html#ga68da0176fefbe0c0096783c6fd926c6a',1,'mlx::core::transpose(const array &a, StreamOrDevice s={})']]], - ['tri_43',['tri',['../group__ops.html#ga4f3389e5b89e70e862e7d2b40d6c7f78',1,'mlx::core::tri(int n, int m, int k, Dtype type, StreamOrDevice s={})'],['../group__ops.html#gac19a1bd6ed6d5c7bc9d258820189dbb5',1,'mlx::core::tri(int n, Dtype type, StreamOrDevice s={})']]], - ['tri_5finv_44',['tri_inv',['../namespacemlx_1_1core_1_1linalg.html#aba1994571326326717b5b5e38c2e0661',1,'mlx::core::linalg']]], - ['tril_45',['tril',['../group__ops.html#ga83e0bb45dc770cf014531d873b78c5a2',1,'mlx::core']]], - ['triu_46',['triu',['../group__ops.html#gaa9df5917876eeb0cb28b7fa81f880412',1,'mlx::core']]], - ['trunc_47',['trunc',['../namespacemetal.html#a93cb75a11a362bfc8310ea19c554c887',1,'metal::trunc()'],['../namespacemetal_1_1fast.html#aa62e1075e86c626d97038f16e9433415',1,'metal::fast::trunc()'],['../namespacemetal_1_1precise.html#a334183e7a2dd49b983d072d1e8ee2b27',1,'metal::precise::trunc()']]], - ['truncated_5fnormal_48',['truncated_normal',['../namespacemlx_1_1core_1_1random.html#a00aa5746bac6d729d2ba9465153bb279',1,'mlx::core::random::truncated_normal(const array &lower, const array &upper, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a39663eda0fd7b274d01499a7b1c9035f',1,'mlx::core::random::truncated_normal(const array &lower, const array &upper, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['try_5fpop_49',['try_pop',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#aa3807d46a126d229f9054c779105ea43',1,'pocketfft::detail::threading::concurrent_queue']]], - ['type_5fto_5fname_50',['type_to_name',['../namespacemlx_1_1core.html#af1fdfdaa5644394362e6baba30701bae',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/functions_15.js b/docs/build/html/search/functions_15.js deleted file mode 100644 index 8f9b9c8e..00000000 --- a/docs/build/html/search/functions_15.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['unary_0',['unary',['../namespacemlx_1_1core_1_1metal.html#afac64fd56ac492d6baf6de7e8a00b039',1,'mlx::core::metal']]], - ['unary_5fg_1',['unary_g',['../metal_2kernels_2unary_8h.html#a0d73f9febd23148b2f9787dcaac12049',1,'unary.h']]], - ['unary_5fop_5fgpu_2',['unary_op_gpu',['../namespacemlx_1_1core.html#aba2b4accc059f30d4dca88db9f7a6e13',1,'mlx::core']]], - ['unary_5fop_5fgpu_5finplace_3',['unary_op_gpu_inplace',['../namespacemlx_1_1core.html#a668fde2bd280a88f63a68b68a343d375',1,'mlx::core']]], - ['unary_5fops_4',['unary_ops',['../namespacemlx_1_1core_1_1metal.html#a17b471fa52ea5f24ee63e081f46528f5',1,'mlx::core::metal']]], - ['unary_5fv_5',['unary_v',['../metal_2kernels_2unary_8h.html#ada52df4976078091cd7b47c152f326fb',1,'unary.h']]], - ['unary_5fv2_6',['unary_v2',['../metal_2kernels_2unary_8h.html#a95f7b9c0112cdc84ae10465fb74d29dd',1,'unary.h']]], - ['unaryprimitive_7',['UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html#a189f6d4ed369f82a4b724a29eb056d4e',1,'mlx::core::UnaryPrimitive::UnaryPrimitive(Stream stream)'],['../classmlx_1_1core_1_1_unary_primitive.html#a9935cffc4f246d3d883bc3d26c5163f2',1,'mlx::core::UnaryPrimitive::UnaryPrimitive(const UnaryPrimitive &other)=delete'],['../classmlx_1_1core_1_1_unary_primitive.html#a780281fb04e2daf1be630c124bd605e3',1,'mlx::core::UnaryPrimitive::UnaryPrimitive(UnaryPrimitive &&other)=delete']]], - ['uniform_8',['Uniform',['../classmlx_1_1core_1_1_uniform.html#a626aa1091aa77b4a32c02290106b85e1',1,'mlx::core::Uniform']]], - ['uniform_9',['uniform',['../namespacemlx_1_1core_1_1random.html#adaa626cf75ab891978954bd1eb79a38b',1,'mlx::core::random::uniform(const array &low, const array &high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#ac0dd00f7e37377d621f9f5bfb5a3f8e4',1,'mlx::core::random::uniform(T low, U high, const std::vector< int > &shape, Dtype dtype=float32, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a2922e133d9f82dcf925bae0a784cc4a7',1,'mlx::core::random::uniform(const std::vector< int > &shape, Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a133d2855ff4d8daf41029cffdf43cdf9',1,'mlx::core::random::uniform(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['utils_10',['utils',['../namespacemlx_1_1core_1_1metal.html#a529dc6c2d4a37ba544b66b2c3cd792cc',1,'mlx::core::metal']]] -]; diff --git a/docs/build/html/search/functions_16.js b/docs/build/html/search/functions_16.js deleted file mode 100644 index 8634569e..00000000 --- a/docs/build/html/search/functions_16.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['valid_0',['valid',['../classmlx_1_1core_1_1_event.html#aa77afd9669e2ef9d5e9ae1c2c6fd24fa',1,'mlx::core::Event']]], - ['value_1',['value',['../classmlx_1_1core_1_1_event.html#ab71c7baee3d1d02ad6a2001bbf90b970',1,'mlx::core::Event']]], - ['value_5fand_5fgrad_2',['value_and_grad',['../namespacemlx_1_1core.html#abf49b337a00997231c0f7fd389efa8f3',1,'mlx::core::value_and_grad(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &argnums)'],['../namespacemlx_1_1core.html#a7b987f404b8699de00f9e0099ab6b1b0',1,'mlx::core::value_and_grad(const std::function< std::vector< array >(const std::vector< array > &)> &fun, int argnum=0)'],['../namespacemlx_1_1core.html#a7620f1ae298127cb6181db9162f012a7',1,'mlx::core::value_and_grad(const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)'],['../namespacemlx_1_1core.html#a2f69ffc30d66b1fca8f24b65be161a51',1,'mlx::core::value_and_grad(const std::function< array(const std::vector< array > &)> &fun, int argnum=0)']]], - ['var_3',['var',['../group__ops.html#ga7e133df686439588a8cd1fb10ce0c6e9',1,'mlx::core::var(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#ga7d7b38d118fa2613214078ef0f7d5a42',1,'mlx::core::var(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga78ddeb966cbe7a5b0aa17e1de43025f2',1,'mlx::core::var(const array &a, const std::vector< int > &axes, bool keepdims=false, int ddof=0, StreamOrDevice s={})'],['../group__ops.html#ga4fbf3e3f98f2e4956faf87af320aa9d0',1,'mlx::core::var(const array &a, int axis, bool keepdims=false, int ddof=0, StreamOrDevice s={})']]], - ['view_4',['View',['../classmlx_1_1core_1_1_view.html#ad7eed156c308e9a29a8b41f965ec941e',1,'mlx::core::View']]], - ['view_5',['view',['../group__ops.html#ga3602aa91b7b124a0b41ec1b2137a1b02',1,'mlx::core']]], - ['vjp_6',['vjp',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#abbf6d1d63dcda207ad7d9eeb4fc36225',1,'mlx::core::distributed::AllReduce::vjp()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#aa5eff6fc128b71220899aab8ab9116fb',1,'mlx::core::distributed::AllGather::vjp()'],['../classmlx_1_1core_1_1fast_1_1_custom.html#a74be4bcd0382f7f6400bf73fd5569c91',1,'mlx::core::fast::Custom::vjp()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#aacfbbbc15fcee0a5ce4f519ca3cca5eb',1,'mlx::core::fast::RMSNorm::vjp()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#ae5e1b5df0705a6b1d141691a4396b0b6',1,'mlx::core::fast::LayerNorm::vjp()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#ad999105414badd66c8fd9e069454a533',1,'mlx::core::fast::RoPE::vjp()'],['../classmlx_1_1core_1_1_primitive.html#a1dcb6807326eeab62474c6a0e3836d42',1,'mlx::core::Primitive::vjp()'],['../classmlx_1_1core_1_1_abs.html#aa2dd8ec0989e716b77394ac349b34592',1,'mlx::core::Abs::vjp()'],['../classmlx_1_1core_1_1_add.html#ac28e581862880e24ed2b99bb6a916607',1,'mlx::core::Add::vjp()'],['../classmlx_1_1core_1_1_add_m_m.html#ac1562a37cec6928e01281926ebeb47c6',1,'mlx::core::AddMM::vjp()'],['../classmlx_1_1core_1_1_arc_cos.html#a78e73e5e639d1249c7fe9614bf157c92',1,'mlx::core::ArcCos::vjp()'],['../classmlx_1_1core_1_1_arc_cosh.html#a856c677f16e2b3f2edd2491e35db2d26',1,'mlx::core::ArcCosh::vjp()'],['../classmlx_1_1core_1_1_arc_sin.html#ab4057cd5ef1a8359f97493018e10d3a1',1,'mlx::core::ArcSin::vjp()'],['../classmlx_1_1core_1_1_arc_sinh.html#a7988ee5b9e1e7e498dcab73d61ba147e',1,'mlx::core::ArcSinh::vjp()'],['../classmlx_1_1core_1_1_arc_tan.html#a5fefc3634b96a67ff8ae011a8ee180c2',1,'mlx::core::ArcTan::vjp()'],['../classmlx_1_1core_1_1_arc_tan2.html#a99840c282e37b2b2a9c312e6e8ade1d2',1,'mlx::core::ArcTan2::vjp()'],['../classmlx_1_1core_1_1_arc_tanh.html#a07da5797f7aaf3dfe43bf24e8562ac72',1,'mlx::core::ArcTanh::vjp()'],['../classmlx_1_1core_1_1_as_type.html#ac38a4f889311a3b5e5be9a67dcb93e18',1,'mlx::core::AsType::vjp()'],['../classmlx_1_1core_1_1_as_strided.html#a34783284c9b2f5b4a62c3c3ee5dd4062',1,'mlx::core::AsStrided::vjp()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a6131ed1c317ff8700a3e9b13fdaa9d61',1,'mlx::core::BitwiseBinary::vjp()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#a1adf20087ee2f685bf39c2724b8e7120',1,'mlx::core::BlockMaskedMM::vjp()'],['../classmlx_1_1core_1_1_gather_m_m.html#a76c9f27c57354f6230b43944882e1bda',1,'mlx::core::GatherMM::vjp()'],['../classmlx_1_1core_1_1_broadcast.html#a0318847c9be40f00b23907ad56037d18',1,'mlx::core::Broadcast::vjp()'],['../classmlx_1_1core_1_1_ceil.html#ac2f5a2bd84b8f013e5ce688419a88acb',1,'mlx::core::Ceil::vjp()'],['../classmlx_1_1core_1_1_compiled.html#a32462e65c52f84b708188130cc508133',1,'mlx::core::Compiled::vjp()'],['../classmlx_1_1core_1_1_concatenate.html#a8155db9100ec3b8bd0bc94baeaeee3b0',1,'mlx::core::Concatenate::vjp()'],['../classmlx_1_1core_1_1_convolution.html#af8eb9c0c055ad20aa74b547016917690',1,'mlx::core::Convolution::vjp()'],['../classmlx_1_1core_1_1_copy.html#a6c4dee582001e9983e9517485ee37efd',1,'mlx::core::Copy::vjp()'],['../classmlx_1_1core_1_1_cos.html#a51d84113728e651ef9d4a1fe671c4d00',1,'mlx::core::Cos::vjp()'],['../classmlx_1_1core_1_1_cosh.html#a0791abd4305a333fb3b181a5357ce0f4',1,'mlx::core::Cosh::vjp()'],['../classmlx_1_1core_1_1_custom_transforms.html#aa1da36cef632df767cd9809d6cf06209',1,'mlx::core::CustomTransforms::vjp()'],['../classmlx_1_1core_1_1_depends.html#a02996fa45f01f7cb9f37074d5f8ccab0',1,'mlx::core::Depends::vjp()'],['../classmlx_1_1core_1_1_divide.html#ad3af7c70cad22c1a1a75b4a78ef793b6',1,'mlx::core::Divide::vjp()'],['../classmlx_1_1core_1_1_div_mod.html#a8c914a07f666a1d9377a27ed5d55e7c1',1,'mlx::core::DivMod::vjp()'],['../classmlx_1_1core_1_1_select.html#a9b522487b78fceeca7f827cd1c29a9a3',1,'mlx::core::Select::vjp()'],['../classmlx_1_1core_1_1_remainder.html#ab18f7bca1027ae71847a50da0933cec6',1,'mlx::core::Remainder::vjp()'],['../classmlx_1_1core_1_1_equal.html#af3c1bfcd1bf50922fc00e302bb193736',1,'mlx::core::Equal::vjp()'],['../classmlx_1_1core_1_1_erf.html#a1f529e95a42a2d69a8b18979d3ee2909',1,'mlx::core::Erf::vjp()'],['../classmlx_1_1core_1_1_erf_inv.html#a48afff12a58ddefae7ae0245c3580189',1,'mlx::core::ErfInv::vjp()'],['../classmlx_1_1core_1_1_exp.html#a94b9b7d137c3640d290b96c5e8b7e1a8',1,'mlx::core::Exp::vjp()'],['../classmlx_1_1core_1_1_expm1.html#af6ce416169190479c9792bb9cdbe2f43',1,'mlx::core::Expm1::vjp()'],['../classmlx_1_1core_1_1_f_f_t.html#aafc895614a6e368c0e6d64af20d01090',1,'mlx::core::FFT::vjp()'],['../classmlx_1_1core_1_1_floor.html#a589e2cf99b6fd1a5ba85534a2a31338e',1,'mlx::core::Floor::vjp()'],['../classmlx_1_1core_1_1_full.html#a49e76e7a8641f990701abc1b3bd49969',1,'mlx::core::Full::vjp()'],['../classmlx_1_1core_1_1_gather.html#aacf612a8f5f1cdbbfd19707d8d33c426',1,'mlx::core::Gather::vjp()'],['../classmlx_1_1core_1_1_greater.html#a341766a8a7e41d2a1160d35d4e781679',1,'mlx::core::Greater::vjp()'],['../classmlx_1_1core_1_1_greater_equal.html#a62f07a4ac54c708307c82aac0e5693ee',1,'mlx::core::GreaterEqual::vjp()'],['../classmlx_1_1core_1_1_hadamard.html#af4134775427b8998d66f489468b98656',1,'mlx::core::Hadamard::vjp()'],['../classmlx_1_1core_1_1_less.html#aaf205d389b5e602e0814b68f66de8f50',1,'mlx::core::Less::vjp()'],['../classmlx_1_1core_1_1_less_equal.html#aab2aab7590c299885e815c18eedd1028',1,'mlx::core::LessEqual::vjp()'],['../classmlx_1_1core_1_1_log.html#a40885dccfbf928c4d035881be1d49280',1,'mlx::core::Log::vjp()'],['../classmlx_1_1core_1_1_log1p.html#a3113c1d2b4c5e73d0b470f42dc48a880',1,'mlx::core::Log1p::vjp()'],['../classmlx_1_1core_1_1_logical_not.html#af2c3c241cf3910fbaba013c69d052a50',1,'mlx::core::LogicalNot::vjp()'],['../classmlx_1_1core_1_1_logical_and.html#ae42f8fc454577b0fd6410cae9d5f3b54',1,'mlx::core::LogicalAnd::vjp()'],['../classmlx_1_1core_1_1_logical_or.html#a51aed488f52d5031998689af9cb17847',1,'mlx::core::LogicalOr::vjp()'],['../classmlx_1_1core_1_1_log_add_exp.html#ae231af0ed24a93eb647ee58c2d2b20b4',1,'mlx::core::LogAddExp::vjp()'],['../classmlx_1_1core_1_1_matmul.html#a524136cca481598ea20894d85ca66bb0',1,'mlx::core::Matmul::vjp()'],['../classmlx_1_1core_1_1_maximum.html#a7de15d7b28784e24bbfc7e85ddcbcff3',1,'mlx::core::Maximum::vjp()'],['../classmlx_1_1core_1_1_minimum.html#a48a0cbe3a6c4f7473c00e343f63b5204',1,'mlx::core::Minimum::vjp()'],['../classmlx_1_1core_1_1_multiply.html#a74b7556ec03e2c3d3f971666d06f5db1',1,'mlx::core::Multiply::vjp()'],['../classmlx_1_1core_1_1_negative.html#a889585f056d33bda30c30311257af52a',1,'mlx::core::Negative::vjp()'],['../classmlx_1_1core_1_1_not_equal.html#a0361f29f4ae1235bdf3f3304527e2d4b',1,'mlx::core::NotEqual::vjp()'],['../classmlx_1_1core_1_1_pad.html#ad8a7e547644f2717a24322968e971038',1,'mlx::core::Pad::vjp()'],['../classmlx_1_1core_1_1_partition.html#a7110772b6cd2d430a2b825cf5c952ca9',1,'mlx::core::Partition::vjp()'],['../classmlx_1_1core_1_1_power.html#a1453bb8307d6ff33134f1e00263bf082',1,'mlx::core::Power::vjp()'],['../classmlx_1_1core_1_1_quantized_matmul.html#acb975e272b4a88ab232ef7f7c3a2bf26',1,'mlx::core::QuantizedMatmul::vjp()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#ae08a4b7d28902d46f39e66beeb0e23ab',1,'mlx::core::GatherQMM::vjp()'],['../classmlx_1_1core_1_1_reshape.html#ab17294ecc6b5d4e89626fb48c7516365',1,'mlx::core::Reshape::vjp()'],['../classmlx_1_1core_1_1_reduce.html#a684883d2a96315f548ca769510e28e4e',1,'mlx::core::Reduce::vjp()'],['../classmlx_1_1core_1_1_round.html#af8f085e08b7fa8840c52a20b12ca35ce',1,'mlx::core::Round::vjp()'],['../classmlx_1_1core_1_1_scan.html#aaf13f72620b4b5d6a20e1228930e848e',1,'mlx::core::Scan::vjp()'],['../classmlx_1_1core_1_1_scatter.html#a0b51287fba789bb139ed61d40a0c636a',1,'mlx::core::Scatter::vjp()'],['../classmlx_1_1core_1_1_sigmoid.html#aac2f56a4c8362e36a28e232758ca52cf',1,'mlx::core::Sigmoid::vjp()'],['../classmlx_1_1core_1_1_sign.html#aa60ac52edd739fbdf388a997acd01bce',1,'mlx::core::Sign::vjp()'],['../classmlx_1_1core_1_1_sin.html#aedefe550ab4b0687858981bc0bcfbfa0',1,'mlx::core::Sin::vjp()'],['../classmlx_1_1core_1_1_sinh.html#a6b39fdd429bbb4de389e7c904fd561f0',1,'mlx::core::Sinh::vjp()'],['../classmlx_1_1core_1_1_slice.html#a291746a527ff991b66249fb2b54b685f',1,'mlx::core::Slice::vjp()'],['../classmlx_1_1core_1_1_slice_update.html#aedcdc60a0477997a96306c02b66d3f77',1,'mlx::core::SliceUpdate::vjp()'],['../classmlx_1_1core_1_1_softmax.html#abb68c311c45ee422a7c966accde9041b',1,'mlx::core::Softmax::vjp()'],['../classmlx_1_1core_1_1_sort.html#a3a8900dce53ee4eb7a1b83806e629358',1,'mlx::core::Sort::vjp()'],['../classmlx_1_1core_1_1_split.html#a7e8730f9cffa9872fff6f8d577031674',1,'mlx::core::Split::vjp()'],['../classmlx_1_1core_1_1_square.html#abcd9516da7f02dc906368c23b0bca263',1,'mlx::core::Square::vjp()'],['../classmlx_1_1core_1_1_sqrt.html#a08a21bd2c3a016f042d95aca294e68f3',1,'mlx::core::Sqrt::vjp()'],['../classmlx_1_1core_1_1_subtract.html#a3a3322be7c3bcaa0397cf099091df16b',1,'mlx::core::Subtract::vjp()'],['../classmlx_1_1core_1_1_tan.html#a4639836cff03d73c769387d6943e92d7',1,'mlx::core::Tan::vjp()'],['../classmlx_1_1core_1_1_tanh.html#afe7b05e2b36b99c3a1b66f0cd3544e95',1,'mlx::core::Tanh::vjp()'],['../classmlx_1_1core_1_1_transpose.html#ac7805aa29b34afdf8852554f1e759f80',1,'mlx::core::Transpose::vjp()'],['../namespacemlx_1_1core.html#a1b33e2c2e3471420490cf0be2de6de18',1,'mlx::core::vjp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)'],['../namespacemlx_1_1core.html#a2065a11249c3f4356ffd69b7a8c487ff',1,'mlx::core::vjp(const std::function< array(const array &)> &fun, const array &primal, const array &cotangent)']]], - ['vmap_7',['vmap',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a3f2dc71859847ca675ec4bfbe125035a',1,'mlx::core::distributed::AllReduce::vmap()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#ad532d1d51f089dec3c84799b724ea031',1,'mlx::core::distributed::AllGather::vmap()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a5cfb66191b9e8b86649da77af55b0f93',1,'mlx::core::distributed::Send::vmap()'],['../classmlx_1_1core_1_1fast_1_1_custom.html#a7f4c3a4c48c6807faa36fb31e39dad8d',1,'mlx::core::fast::Custom::vmap()'],['../classmlx_1_1core_1_1_primitive.html#ac632b9619dd7a6a0f177bd36202e8103',1,'mlx::core::Primitive::vmap()'],['../classmlx_1_1core_1_1_abs.html#a4c9c98f1d71432fd3752ad9a6a8e7f2f',1,'mlx::core::Abs::vmap()'],['../classmlx_1_1core_1_1_add.html#a0e557d4d896153f84a25532562e4c646',1,'mlx::core::Add::vmap()'],['../classmlx_1_1core_1_1_add_m_m.html#a73ce80b3a37ec2523943028d50ebce81',1,'mlx::core::AddMM::vmap()'],['../classmlx_1_1core_1_1_arc_cos.html#a7548e23ace6827674aa6d284d44ccf83',1,'mlx::core::ArcCos::vmap()'],['../classmlx_1_1core_1_1_arc_cosh.html#af8ff78e910a9e485a203e1d3347bd461',1,'mlx::core::ArcCosh::vmap()'],['../classmlx_1_1core_1_1_arc_sin.html#a7cabb1e5a2bda44944378822c671ec82',1,'mlx::core::ArcSin::vmap()'],['../classmlx_1_1core_1_1_arc_sinh.html#a9e72b9751939387c333b5d4e19a37f6d',1,'mlx::core::ArcSinh::vmap()'],['../classmlx_1_1core_1_1_arc_tan.html#a1fb921554544a56498bc54f82e4a0556',1,'mlx::core::ArcTan::vmap()'],['../classmlx_1_1core_1_1_arc_tan2.html#ae02cb9fbf25e93dc1d7fbc9e3fb28634',1,'mlx::core::ArcTan2::vmap()'],['../classmlx_1_1core_1_1_arc_tanh.html#a6ddcae68873559211cb91e7740dfc040',1,'mlx::core::ArcTanh::vmap()'],['../classmlx_1_1core_1_1_arg_partition.html#a441093795bcc31495ab5fbc9957b740a',1,'mlx::core::ArgPartition::vmap()'],['../classmlx_1_1core_1_1_arg_reduce.html#abfec42fa06ea15edaf393593751fb1ba',1,'mlx::core::ArgReduce::vmap()'],['../classmlx_1_1core_1_1_arg_sort.html#a3522bbbe4626a467394c1a8a9d7ac34e',1,'mlx::core::ArgSort::vmap()'],['../classmlx_1_1core_1_1_as_type.html#a7ebaf86fd6cad4a1ecfd7cde1ee0b0cc',1,'mlx::core::AsType::vmap()'],['../classmlx_1_1core_1_1_bitwise_binary.html#aa10be55f05bc1868bf4b375dc475f965',1,'mlx::core::BitwiseBinary::vmap()'],['../classmlx_1_1core_1_1_broadcast.html#aee4c71c2588ad01eb57e10f346cd666f',1,'mlx::core::Broadcast::vmap()'],['../classmlx_1_1core_1_1_ceil.html#ae86819990b43bdb0c2b3a25719b3a7a4',1,'mlx::core::Ceil::vmap()'],['../classmlx_1_1core_1_1_compiled.html#a732e7548f53977b4513bb7f30a04c30d',1,'mlx::core::Compiled::vmap()'],['../classmlx_1_1core_1_1_concatenate.html#a58c54dcf8e4b045d25edd3afc2caffc1',1,'mlx::core::Concatenate::vmap()'],['../classmlx_1_1core_1_1_conjugate.html#a2c7632c8ae0ca07777e23a0a79344e60',1,'mlx::core::Conjugate::vmap()'],['../classmlx_1_1core_1_1_copy.html#a669b10253c15b769d90058d1ad7d0e61',1,'mlx::core::Copy::vmap()'],['../classmlx_1_1core_1_1_cos.html#aec9460daf0131156734013d03b230cd6',1,'mlx::core::Cos::vmap()'],['../classmlx_1_1core_1_1_cosh.html#a1ab2386e7d96219b6e4a525f7dac0406',1,'mlx::core::Cosh::vmap()'],['../classmlx_1_1core_1_1_custom_transforms.html#a906a2ff30d9c5281fbf1fa927e4c021b',1,'mlx::core::CustomTransforms::vmap()'],['../classmlx_1_1core_1_1_divide.html#a83e7da52831165b3a026e97b63770242',1,'mlx::core::Divide::vmap()'],['../classmlx_1_1core_1_1_div_mod.html#ae709e0fdd83994bd1d156e0d0e6a7942',1,'mlx::core::DivMod::vmap()'],['../classmlx_1_1core_1_1_select.html#a84e80361c8cf02536b4b98098793550f',1,'mlx::core::Select::vmap()'],['../classmlx_1_1core_1_1_remainder.html#a79867e1099a2e3c2d3e87407b2ab6e3d',1,'mlx::core::Remainder::vmap()'],['../classmlx_1_1core_1_1_equal.html#aea9cc3c88924ac824d72c39c2e83b0ca',1,'mlx::core::Equal::vmap()'],['../classmlx_1_1core_1_1_erf.html#abe554f553356654a3e800ba368108aaa',1,'mlx::core::Erf::vmap()'],['../classmlx_1_1core_1_1_erf_inv.html#ad5d7634e8568af8cc4a54a558a48d0e9',1,'mlx::core::ErfInv::vmap()'],['../classmlx_1_1core_1_1_exp.html#a0fcd579fe148b4c3dbc72e514b81bb37',1,'mlx::core::Exp::vmap()'],['../classmlx_1_1core_1_1_expm1.html#aa4caa848b2ea97e71ee3dd33de039296',1,'mlx::core::Expm1::vmap()'],['../classmlx_1_1core_1_1_f_f_t.html#ac32d6cc9b67289124f855ea68a61ede1',1,'mlx::core::FFT::vmap()'],['../classmlx_1_1core_1_1_floor.html#aea4dc79a65774990e775ad49519a5d10',1,'mlx::core::Floor::vmap()'],['../classmlx_1_1core_1_1_full.html#afc57ab6bd9ebdbbf042af54a59785d95',1,'mlx::core::Full::vmap()'],['../classmlx_1_1core_1_1_gather.html#abab0c4c204e66489825ce80d2194a275',1,'mlx::core::Gather::vmap()'],['../classmlx_1_1core_1_1_greater.html#a6d8267411fc4951de781f9e8e6c53aa0',1,'mlx::core::Greater::vmap()'],['../classmlx_1_1core_1_1_greater_equal.html#ab0e1be93eb01b0ce7fa83e953f5e3e1d',1,'mlx::core::GreaterEqual::vmap()'],['../classmlx_1_1core_1_1_hadamard.html#a9f1a172e6246859e813002abe9b8f99c',1,'mlx::core::Hadamard::vmap()'],['../classmlx_1_1core_1_1_less.html#a5fee5956cf087d8405359121aa62ba7e',1,'mlx::core::Less::vmap()'],['../classmlx_1_1core_1_1_less_equal.html#a3d5df21db184f2b7620cda9da1684480',1,'mlx::core::LessEqual::vmap()'],['../classmlx_1_1core_1_1_log.html#a007ddbcf911093231f607a8b9ed5cd49',1,'mlx::core::Log::vmap()'],['../classmlx_1_1core_1_1_log1p.html#a7122576f95ce479926bbbbc690891f71',1,'mlx::core::Log1p::vmap()'],['../classmlx_1_1core_1_1_logical_not.html#a5308a271619ee74df561b0aaf525915d',1,'mlx::core::LogicalNot::vmap()'],['../classmlx_1_1core_1_1_logical_and.html#aacc5f6f53ffc327b7771485e3da2a4e5',1,'mlx::core::LogicalAnd::vmap()'],['../classmlx_1_1core_1_1_logical_or.html#a6e2e77e6aaf47872b2e96b151c32daf3',1,'mlx::core::LogicalOr::vmap()'],['../classmlx_1_1core_1_1_log_add_exp.html#a82190aa1421a9734b6e9480debffac78',1,'mlx::core::LogAddExp::vmap()'],['../classmlx_1_1core_1_1_matmul.html#a3a1c6e70bac300240760fe41a58340c2',1,'mlx::core::Matmul::vmap()'],['../classmlx_1_1core_1_1_maximum.html#ab664918e0d71cfec1318a9879e78c5d3',1,'mlx::core::Maximum::vmap()'],['../classmlx_1_1core_1_1_minimum.html#adab0f31acf68075a0be908d8eb882980',1,'mlx::core::Minimum::vmap()'],['../classmlx_1_1core_1_1_multiply.html#ae7e82c8fc8cbaf4e00c27eb54fac7dbf',1,'mlx::core::Multiply::vmap()'],['../classmlx_1_1core_1_1_negative.html#a1f8a6079e272f1a0599f88a1a8419cf0',1,'mlx::core::Negative::vmap()'],['../classmlx_1_1core_1_1_not_equal.html#ab8b57932f03c8eee664bf89adeaa43b5',1,'mlx::core::NotEqual::vmap()'],['../classmlx_1_1core_1_1_number_of_elements.html#a977d83eae845b8bd8c0b98b48cb1c6c2',1,'mlx::core::NumberOfElements::vmap()'],['../classmlx_1_1core_1_1_pad.html#a85658812a0f3275ba3eb74b7c75686cf',1,'mlx::core::Pad::vmap()'],['../classmlx_1_1core_1_1_partition.html#aa0cc55e4d4d2cb5d129d32832321df2c',1,'mlx::core::Partition::vmap()'],['../classmlx_1_1core_1_1_power.html#a5e22749592413a9adbdc877b03b87c8f',1,'mlx::core::Power::vmap()'],['../classmlx_1_1core_1_1_quantized_matmul.html#a3434394140177b285f971c9ffe7e8763',1,'mlx::core::QuantizedMatmul::vmap()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a13ce5e138ebddb8780a034452f68892f',1,'mlx::core::GatherQMM::vmap()'],['../classmlx_1_1core_1_1_random_bits.html#a0dc12f053c6492f934bc18031412c415',1,'mlx::core::RandomBits::vmap()'],['../classmlx_1_1core_1_1_reshape.html#ae239dd3c6cab147e4af572dc58204f9d',1,'mlx::core::Reshape::vmap()'],['../classmlx_1_1core_1_1_reduce.html#abab1b5aa01ccad44f213f510c3596b38',1,'mlx::core::Reduce::vmap()'],['../classmlx_1_1core_1_1_round.html#a6fad8799a7982e1ccbe05be7cc38a7fd',1,'mlx::core::Round::vmap()'],['../classmlx_1_1core_1_1_scan.html#a297c7cc89c9bf9d186ebdebb634c7804',1,'mlx::core::Scan::vmap()'],['../classmlx_1_1core_1_1_scatter.html#a696c38b373a7a7c71bc112bd1117e322',1,'mlx::core::Scatter::vmap()'],['../classmlx_1_1core_1_1_sigmoid.html#a12712c23037e38192cbccd2d4b14cc85',1,'mlx::core::Sigmoid::vmap()'],['../classmlx_1_1core_1_1_sign.html#aa7296045907015b4e0ae8a93e5e6e295',1,'mlx::core::Sign::vmap()'],['../classmlx_1_1core_1_1_sin.html#a45533996f3d72d9dd97d4c61cd684fba',1,'mlx::core::Sin::vmap()'],['../classmlx_1_1core_1_1_sinh.html#ae171df22bc34c32e31b8135dc4caa788',1,'mlx::core::Sinh::vmap()'],['../classmlx_1_1core_1_1_slice.html#ae33583b0db22fcfeae34dfe1c0e3eaa2',1,'mlx::core::Slice::vmap()'],['../classmlx_1_1core_1_1_slice_update.html#adbf1c76de6ab2f986758530d351d6fa3',1,'mlx::core::SliceUpdate::vmap()'],['../classmlx_1_1core_1_1_softmax.html#ad22d3dcc71054d3dba529cf2dc981e19',1,'mlx::core::Softmax::vmap()'],['../classmlx_1_1core_1_1_sort.html#abfabb9e625cc0cb9335c7454ed27505c',1,'mlx::core::Sort::vmap()'],['../classmlx_1_1core_1_1_split.html#ab7c40e02a842e83bdb4698608472c7a6',1,'mlx::core::Split::vmap()'],['../classmlx_1_1core_1_1_square.html#a55bf43f878d4741c57a08d5fef472ea5',1,'mlx::core::Square::vmap()'],['../classmlx_1_1core_1_1_sqrt.html#a9d30e306ce08980c27d98c898577017e',1,'mlx::core::Sqrt::vmap()'],['../classmlx_1_1core_1_1_stop_gradient.html#aca680c8befef81da414c4375b11b16b0',1,'mlx::core::StopGradient::vmap()'],['../classmlx_1_1core_1_1_subtract.html#aa98f960e621a767c8a03624fd292f098',1,'mlx::core::Subtract::vmap()'],['../classmlx_1_1core_1_1_tan.html#ae2f67ca2adc83b10009cf28498bf58b7',1,'mlx::core::Tan::vmap()'],['../classmlx_1_1core_1_1_tanh.html#a32df3564c1ecb858c1ba9f855376762f',1,'mlx::core::Tanh::vmap()'],['../classmlx_1_1core_1_1_uniform.html#ad795037d5b1820e98f4268f166609926',1,'mlx::core::Uniform::vmap()'],['../classmlx_1_1core_1_1_view.html#a2230d3e5f434fb2b888de50b529ac121',1,'mlx::core::View::vmap()'],['../classmlx_1_1core_1_1_transpose.html#a5ef848b69def9a246665b67e6e3ffdfe',1,'mlx::core::Transpose::vmap()'],['../classmlx_1_1core_1_1_s_v_d.html#a0366c958f6cdac8d1d9e1a4eda53fae8',1,'mlx::core::SVD::vmap()'],['../classmlx_1_1core_1_1_inverse.html#a98419b9f0b8a6c9185fe012d523552c2',1,'mlx::core::Inverse::vmap()'],['../classmlx_1_1core_1_1_cholesky.html#ab5c3f6199ec3b399c91243a05d116aa5',1,'mlx::core::Cholesky::vmap()'],['../namespacemlx_1_1core.html#a8481a3bb4c12c2b7dc6ba576c2be3d0d',1,'mlx::core::vmap(const std::function< array(const array &, const array &)> &fun, int in_axis_a=0, int in_axis_b=0, int out_axis=0)'],['../namespacemlx_1_1core.html#a95a7757e8d18fced38acfc6a3e8d686a',1,'mlx::core::vmap(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &in_axes={}, const std::vector< int > &out_axes={})']]], - ['vmap_5freplace_8',['vmap_replace',['../namespacemlx_1_1core_1_1detail.html#a31a5582530faea230eb8acafc0f7e154',1,'mlx::core::detail']]], - ['vmap_5ftrace_9',['vmap_trace',['../namespacemlx_1_1core_1_1detail.html#a5ba794afe1a557e0505887cfb481c515',1,'mlx::core::detail']]] -]; diff --git a/docs/build/html/search/functions_17.js b/docs/build/html/search/functions_17.js deleted file mode 100644 index 5f2c249d..00000000 --- a/docs/build/html/search/functions_17.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['wait_0',['wait',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#af503189cc9247047fbdfc3ebf1daacc1',1,'pocketfft::detail::threading::latch::wait()'],['../classmlx_1_1core_1_1_event.html#a634afd918e6ed847f354531ba9f48252',1,'mlx::core::Event::wait()']]], - ['wait_5ffor_5fone_1',['wait_for_one',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a01c574bb388f10d67aaaaa541894d807',1,'mlx::core::scheduler::Scheduler::wait_for_one()'],['../namespacemlx_1_1core_1_1scheduler.html#a8cc4d5fd1f5ce722b377ead1863a2291',1,'mlx::core::scheduler::wait_for_one()']]], - ['where_2',['where',['../group__ops.html#ga8a2056f8c9bb30914c40bcf509386491',1,'mlx::core']]], - ['write_3',['write',['../struct_read_writer.html#ac2ea71e41740ddc863890e3e8e6f09d0',1,'ReadWriter::write()'],['../classmlx_1_1core_1_1io_1_1_writer.html#ad9515b7f007338674de1e124cf77e125',1,'mlx::core::io::Writer::write()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#abca32838c9886f734d93430c34c07d7f',1,'mlx::core::io::FileWriter::write()'],['../struct_read_writer.html#a7a3d1396b0f83aa7506207bd6e7336bf',1,'ReadWriter::write() const'],['../struct_read_writer.html#ae1f0d3555b74998cc2d2288bce72a1f4',1,'ReadWriter::write() const']]], - ['write_5fpadded_4',['write_padded',['../struct_read_writer.html#a95367307acace2aa88226cf8956d2d88',1,'ReadWriter::write_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#abaf2a6ad4c88bd9f65fe1db1f73a8d87',1,'ReadWriter::write_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#a420453a56e77d6b3891ed4b5f178af9c',1,'ReadWriter::write_padded(int length, const device float2 *w_k) const']]], - ['write_5fsafe_5',['write_safe',['../kernels_2scan_8h.html#ae86aef08e5ebc8790031eb51eefa754c',1,'scan.h']]], - ['write_5fstrided_6',['write_strided',['../struct_read_writer.html#a77a4d7eac217305e22a3c25b3756ef67',1,'ReadWriter::write_strided(int stride, int overall_n)'],['../struct_read_writer.html#a12e7f43cd9de2d9990054184c0a32839',1,'ReadWriter::write_strided(int stride, int overall_n)'],['../struct_read_writer.html#a959ccaa08f2999c50cea063b01e492e4',1,'ReadWriter::write_strided(int stride, int overall_n)'],['../struct_read_writer.html#a5592b24dad5ad030a1e4769b0a278f35',1,'ReadWriter::write_strided(int stride, int overall_n)']]], - ['write_5funsafe_7',['write_unsafe',['../kernels_2scan_8h.html#a8010e7bdf7a72cbd35ce7cd7ecb08e32',1,'scan.h']]] -]; diff --git a/docs/build/html/search/functions_18.js b/docs/build/html/search/functions_18.js deleted file mode 100644 index 285c51f9..00000000 --- a/docs/build/html/search/functions_18.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['zeros_0',['zeros',['../group__ops.html#ga34573eb2ead179839579142f3aedb3b8',1,'mlx::core::zeros(const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga7c1487f8a830c9df75a961b3a24527ee',1,'mlx::core::zeros(const std::vector< int > &shape, StreamOrDevice s={})']]], - ['zeros_5flike_1',['zeros_like',['../group__ops.html#gafbb857094d784b38c78683a091ffdbde',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/functions_19.js b/docs/build/html/search/functions_19.js deleted file mode 100644 index 2a0ab51b..00000000 --- a/docs/build/html/search/functions_19.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['_7eallocator_0',['~Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a90ad02c2e2a6ed89bb8bbf7b871efdf1',1,'mlx::core::allocator::Allocator']]], - ['_7earr_1',['~arr',['../classpocketfft_1_1detail_1_1arr.html#a8519487ee7fa95d3937a8352dd289b56',1,'pocketfft::detail::arr']]], - ['_7earray_2',['~array',['../classmlx_1_1core_1_1array.html#a2f16c1ef8ee248d2fba95520c86dfad2',1,'mlx::core::array']]], - ['_7ecommandencoder_3',['~CommandEncoder',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a9b6dd221ccd2d939d544004cb6279198',1,'mlx::core::metal::CommandEncoder']]], - ['_7econcurrentcontext_4',['~ConcurrentContext',['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html#a28bafec56edec3091e8716d8ccfb6ee1',1,'mlx::core::metal::CommandEncoder::ConcurrentContext']]], - ['_7edata_5',['~Data',['../structmlx_1_1core_1_1array_1_1_data.html#a1cf69d9709206578c4e87e9c1daad5e1',1,'mlx::core::array::Data']]], - ['_7edevice_6',['~Device',['../classmlx_1_1core_1_1metal_1_1_device.html#a4f39c28c6cdd1d2da1918f5871bcba6e',1,'mlx::core::metal::Device']]], - ['_7efilewriter_7',['~FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html#ac325f51cd22050b6359056290e8ef42c',1,'mlx::core::io::FileWriter']]], - ['_7eintracing_8',['~InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#a83d57d7fa63bcb0ff72080191d0f177a',1,'mlx::core::detail::InTracing']]], - ['_7eparallelfilereader_9',['~ParallelFileReader',['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#ae9e3fc1cc3e827dae4d3d107f6780817',1,'mlx::core::io::ParallelFileReader']]], - ['_7eprimitive_10',['~Primitive',['../classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777',1,'mlx::core::Primitive']]], - ['_7ereader_11',['~Reader',['../classmlx_1_1core_1_1io_1_1_reader.html#a81cd4747d81311c87dc6753f2d0d8b16',1,'mlx::core::io::Reader']]], - ['_7eretaingraph_12',['~RetainGraph',['../structmlx_1_1core_1_1detail_1_1_retain_graph.html#a6bd6dc2e1caf2f764f39856a72ff6cbc',1,'mlx::core::detail::RetainGraph']]], - ['_7escheduler_13',['~Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a6626c4a743a2b3004fc14042bc8b0edf',1,'mlx::core::scheduler::Scheduler']]], - ['_7estreamcontext_14',['~StreamContext',['../structmlx_1_1core_1_1_stream_context.html#ac5be1c576d22b3d0b0a6fcc7e6abe659',1,'mlx::core::StreamContext']]], - ['_7estreamthread_15',['~StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a71de50591388b6e2cc6c57827e1a1ad4',1,'mlx::core::scheduler::StreamThread']]], - ['_7ethread_5fpool_16',['~thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a68f71e79fa93379fcc5819e533b45472',1,'pocketfft::detail::threading::thread_pool']]], - ['_7ethreadpool_17',['~ThreadPool',['../class_thread_pool.html#a44d3d2ab618970605e684efc216655eb',1,'ThreadPool']]], - ['_7eunaryprimitive_18',['~UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de',1,'mlx::core::UnaryPrimitive']]], - ['_7ewriter_19',['~Writer',['../classmlx_1_1core_1_1io_1_1_writer.html#a0e42f93a64118e9f5ede54ffe1bda045',1,'mlx::core::io::Writer']]] -]; diff --git a/docs/build/html/search/functions_2.js b/docs/build/html/search/functions_2.js deleted file mode 100644 index 1bdd2632..00000000 --- a/docs/build/html/search/functions_2.js +++ /dev/null @@ -1,50 +0,0 @@ -var searchData= -[ - ['begin_0',['begin',['../classmlx_1_1core_1_1array.html#a76b258b169d7d73419ebbf85340fb914',1,'mlx::core::array']]], - ['bernoulli_1',['bernoulli',['../namespacemlx_1_1core_1_1random.html#acb3f278fea2c4f06dea947d3bac2e9b7',1,'mlx::core::random::bernoulli(const array &p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aaa49f6c2af5496822fa09435e54275cb',1,'mlx::core::random::bernoulli(const array &p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa9e360f9cb7bd23221352ed9e31d83c2',1,'mlx::core::random::bernoulli(T p, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a37fcba120a1d246176db5256d3201cd4',1,'mlx::core::random::bernoulli(T p, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#ad7eb4467e2f9d5f74a5607b29a935b6e',1,'mlx::core::random::bernoulli(const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['bfloat_5fbits_5fto_5ffloat_2',['bfloat_bits_to_float',['../backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1',1,'bf16.h']]], - ['binary_3',['binary',['../namespacemlx_1_1core_1_1metal.html#a269d591ec02e2f7c0f7a718fbfa37f73',1,'mlx::core::metal']]], - ['binary_5fg_4',['binary_g',['../metal_2kernels_2binary_8h.html#a701e3cbc842992aa74f01b91a733774e',1,'binary_g(device const T *a, device const T *b, device U *c, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#acd870cc9ebe074eb313937e02ea1ed69',1,'binary_g(device const T *a, device const T *b, device U *c, device U *d, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const int &ndim, uint3 index, uint3 grid_dim): binary_two.h']]], - ['binary_5fg_5fnd_5',['binary_g_nd',['../metal_2kernels_2binary_8h.html#a4f273fb6aad88b74bfc63f0f29499c03',1,'binary_g_nd(device const T *a, device const T *b, device U *c, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#aaec603b0d083afaf9e4710fd1dbdf1dc',1,'binary_g_nd(device const T *a, device const T *b, device U *c, device U *d, constant const int shape[DIM], constant const size_t a_strides[DIM], constant const size_t b_strides[DIM], uint3 index, uint3 grid_dim): binary_two.h']]], - ['binary_5fg_5fnd1_6',['binary_g_nd1',['../metal_2kernels_2binary_8h.html#a6808bfb006cb5473da087a2758d0d867',1,'binary_g_nd1(device const T *a, device const T *b, device U *c, constant const size_t &a_stride, constant const size_t &b_stride, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#ad1fad37c168192b212a4294f4cf78133',1,'binary_g_nd1(device const T *a, device const T *b, device U *c, device U *d, constant const size_t &a_stride, constant const size_t &b_stride, uint index): binary_two.h']]], - ['binary_5fg_5fnd2_7',['binary_g_nd2',['../metal_2kernels_2binary_8h.html#a8cd5989852ec704c6fd132ae28f4fc14',1,'binary_g_nd2(device const T *a, device const T *b, device U *c, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a03f7c15a1607576755abb65c542ae347',1,'binary_g_nd2(device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[2], constant const size_t b_strides[2], uint2 index, uint2 grid_dim): binary_two.h']]], - ['binary_5fg_5fnd3_8',['binary_g_nd3',['../metal_2kernels_2binary_8h.html#ac4979e60b993f7ffb602bcb91cd68bc9',1,'binary_g_nd3(device const T *a, device const T *b, device U *c, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a43e5943460996c43060d1f3aa1309ba6',1,'binary_g_nd3(device const T *a, device const T *b, device U *c, device U *d, constant const size_t a_strides[3], constant const size_t b_strides[3], uint3 index, uint3 grid_dim): binary_two.h']]], - ['binary_5fop_5fgpu_9',['binary_op_gpu',['../namespacemlx_1_1core.html#ad884f4a36308b5b4f8a5d990d2e086df',1,'mlx::core::binary_op_gpu(const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)'],['../namespacemlx_1_1core.html#a094876ea5a2a2445ab64efc8222da202',1,'mlx::core::binary_op_gpu(const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)']]], - ['binary_5fop_5fgpu_5finplace_10',['binary_op_gpu_inplace',['../namespacemlx_1_1core.html#a8616c0b7b0fc118a75400bc86404c367',1,'mlx::core::binary_op_gpu_inplace(const std::vector< array > &inputs, std::vector< array > &outputs, const std::string &op, const Stream &s)'],['../namespacemlx_1_1core.html#a7e6af6624e322e7ad60a3873a66e18a3',1,'mlx::core::binary_op_gpu_inplace(const std::vector< array > &inputs, array &out, const std::string &op, const Stream &s)']]], - ['binary_5fops_11',['binary_ops',['../namespacemlx_1_1core_1_1metal.html#a8db7f9cc781d4bfb08423a401665f322',1,'mlx::core::metal']]], - ['binary_5fss_12',['binary_ss',['../metal_2kernels_2binary_8h.html#a242b8b29a852c255467e50628c6dccf5',1,'binary_ss(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#af8a791ac7ca88d32cd8f4e9ac0f9ab4f',1,'binary_ss(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fsv_13',['binary_sv',['../metal_2kernels_2binary_8h.html#a4116c35f2e4632366d1611d5a95ba141',1,'binary_sv(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#ab18c6ecf5065275c93701efd095c916c',1,'binary_sv(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fsv2_14',['binary_sv2',['../metal_2kernels_2binary_8h.html#aa8c48b1b21d8f5a181f5443de2346589',1,'binary_sv2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a08822ff98ea6f61a98b49a9e9a38b891',1,'binary_sv2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim): binary_two.h']]], - ['binary_5ftwo_15',['binary_two',['../namespacemlx_1_1core_1_1metal.html#aed047eec38b030ec5f29b9da54abf8cb',1,'mlx::core::metal']]], - ['binary_5fvs_16',['binary_vs',['../metal_2kernels_2binary_8h.html#a649851d133358dd5832a73b1061b3313',1,'binary_vs(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#a12dbda74fa460812177ccb9aeee6e1ca',1,'binary_vs(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fvs2_17',['binary_vs2',['../metal_2kernels_2binary_8h.html#a48bd82eb10f9c623ce7d28daec4fa512',1,'binary_vs2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a273d2f31691f2c64623c2a97eab344be',1,'binary_vs2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim): binary_two.h']]], - ['binary_5fvv_18',['binary_vv',['../metal_2kernels_2binary_8h.html#add6a9aeee3cb0ba909574f27fa9ecd5b',1,'binary_vv(device const T *a, device const T *b, device U *c, uint index): binary.h'],['../metal_2kernels_2binary__two_8h.html#ab4324f594c007a6895540b77ad5d89d9',1,'binary_vv(device const T *a, device const T *b, device U *c, device U *d, uint index): binary_two.h']]], - ['binary_5fvv2_19',['binary_vv2',['../metal_2kernels_2binary_8h.html#a19dbbf8fea68b64bdd25dc8d36865171',1,'binary_vv2(device const T *a, device const T *b, device U *c, uint2 index, uint2 grid_dim): binary.h'],['../metal_2kernels_2binary__two_8h.html#a12e80730e43dfaa4c79ce8d5f99edc50',1,'binary_vv2(device const T *a, device const T *b, device U *c, device U *d, uint2 index, uint2 grid_dim): binary_two.h']]], - ['bits_20',['bits',['../namespacemlx_1_1core_1_1random.html#abb895baa477f5a06b5f88e69245f1825',1,'mlx::core::random::bits(const std::vector< int > &shape, int width, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a548ffed4ba3107b89885ff850ffce5f4',1,'mlx::core::random::bits(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['bits_5fto_5fbfloat_21',['bits_to_bfloat',['../struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca',1,'_MLX_BFloat16']]], - ['bitwise_5fand_22',['bitwise_and',['../group__ops.html#ga752fd2707dabb05d0308ba3d55346ada',1,'mlx::core']]], - ['bitwise_5for_23',['bitwise_or',['../group__ops.html#ga8af4f22c08c11c4ffab7e3d45e0f3cd6',1,'mlx::core']]], - ['bitwise_5fxor_24',['bitwise_xor',['../group__ops.html#ga3188638fba3a60e264baf69956a1e08b',1,'mlx::core']]], - ['bitwisebinary_25',['BitwiseBinary',['../classmlx_1_1core_1_1_bitwise_binary.html#a0d8b3a94951621ffcdebc6fda748a172',1,'mlx::core::BitwiseBinary']]], - ['block_5fmasked_5fgemm_26',['block_masked_gemm',['../steel__gemm__masked_8h.html#af805e998b2046ee30c2b4be813e3af97',1,'block_masked_gemm(const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device out_mask_t *out_mask, const device op_mask_t *lhs_mask, const device op_mask_t *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid): steel_gemm_masked.h'],['../steel__gemm__masked_8h.html#a477932e2ae9d49366f7ede6db63f9cac',1,'block_masked_gemm(const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device bool *out_mask, const device bool *lhs_mask, const device bool *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid): steel_gemm_masked.h']]], - ['block_5fmasked_5fmm_27',['block_masked_mm',['../group__ops.html#ga6b76c8ea46b19e6866af155fa5910be6',1,'mlx::core']]], - ['block_5fsort_28',['block_sort',['../struct_kernel_merge_sort.html#a56b644ec66f7fb5c01b280f124304be9',1,'KernelMergeSort::block_sort()'],['../struct_kernel_multi_block_merge_sort.html#a322ed2eac315a561e0fd90af2fd577eb',1,'KernelMultiBlockMergeSort::block_sort()'],['../sort_8h.html#a93f14092416169c4449141043ac45ffd',1,'block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, uint3 tid, uint3 lid): sort.h']]], - ['block_5fsort_5fnc_29',['block_sort_nc',['../sort_8h.html#a29229399f51e5c440ffe5c9b99b27598',1,'sort.h']]], - ['blockloader_30',['BlockLoader',['../structmlx_1_1steel_1_1_block_loader.html#a37aca066e63dff238865b5923a2d4335',1,'mlx::steel::BlockLoader']]], - ['blockmaskedmm_31',['BlockMaskedMM',['../classmlx_1_1core_1_1_block_masked_m_m.html#ad26509deb5306d0c5eb72477e9a57477',1,'mlx::core::BlockMaskedMM']]], - ['blockmma_32',['BlockMMA',['../structmlx_1_1steel_1_1_block_m_m_a.html#aa14406b7298456ac45d23dd3c4642dd8',1,'mlx::steel::BlockMMA']]], - ['bluestein_5ffft_33',['bluestein_fft',['../backend_2metal_2kernels_2fft_8h.html#a0abc609e9756475800e996775a96a87e',1,'fft.h']]], - ['broadcast_34',['Broadcast',['../classmlx_1_1core_1_1_broadcast.html#accbab8433c93e281608a268d11afaefb',1,'mlx::core::Broadcast']]], - ['broadcast_5farrays_35',['broadcast_arrays',['../group__ops.html#gab783890428b596f715dc7dd2057eae99',1,'mlx::core']]], - ['broadcast_5fshapes_36',['broadcast_shapes',['../namespacemlx_1_1core.html#a075e07def338cd9d815182d0e6a656c0',1,'mlx::core']]], - ['broadcast_5fto_37',['broadcast_to',['../group__ops.html#gad256e86cc1a6e6b3832e392baa90318d',1,'mlx::core']]], - ['bs_5fqmm_5fn_38',['bs_qmm_n',['../quantized_8h.html#acfc43edcf0c742ddc090d22cb7229284',1,'quantized.h']]], - ['bs_5fqmm_5ft_39',['bs_qmm_t',['../quantized_8h.html#a3acc2ace766cb855f13da2d1834e7dc7',1,'quantized.h']]], - ['bs_5fqmv_40',['bs_qmv',['../quantized_8h.html#a03ba4a4a5fe9955319b0aa477d2d7d98',1,'quantized.h']]], - ['bs_5fqmv_5ffast_41',['bs_qmv_fast',['../quantized_8h.html#a6f92bb9f3d29d707bfc680bebe1c80f7',1,'quantized.h']]], - ['bs_5fqvm_42',['bs_qvm',['../quantized_8h.html#a3af1c89416632c9275b8218a33cb8a04',1,'quantized.h']]], - ['buffer_43',['Buffer',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#ac4fc2cc6aa1368cfb74aff329d9a1300',1,'mlx::core::allocator::Buffer']]], - ['buffer_44',['buffer',['../classmlx_1_1core_1_1array.html#ab3daf04c27c4593d9d73c397b8484a08',1,'mlx::core::array::buffer()'],['../classmlx_1_1core_1_1array.html#a634466ce661485394f2fdc3bd6796bcd',1,'mlx::core::array::buffer() const']]], - ['buffer_5fsize_45',['buffer_size',['../classmlx_1_1core_1_1array.html#a914577c63755b2e862d2da68bbf8e3dd',1,'mlx::core::array']]], - ['build_5flib_5fname_46',['build_lib_name',['../namespacemlx_1_1core.html#a3ef23f334cb9f68a2c50524bc67c913b',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/functions_3.js b/docs/build/html/search/functions_3.js deleted file mode 100644 index 77a1395f..00000000 --- a/docs/build/html/search/functions_3.js +++ /dev/null @@ -1,97 +0,0 @@ -var searchData= -[ - ['c2c_0',['c2c',['../namespacepocketfft_1_1detail.html#ab585ac594ae1253d4659e7b9e1623c8a',1,'pocketfft::detail']]], - ['c2r_1',['c2r',['../namespacepocketfft_1_1detail.html#ab26cbfed16f487b987f50bf63bfc1ab9',1,'pocketfft::detail::c2r(const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, size_t axis, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)'],['../namespacepocketfft_1_1detail.html#a788506fff59f8e13056247076cac51c1',1,'pocketfft::detail::c2r(const shape_t &shape_out, const stride_t &stride_in, const stride_t &stride_out, const shape_t &axes, bool forward, const std::complex< T > *data_in, T *data_out, T fct, size_t nthreads=1)']]], - ['categorical_2',['categorical',['../namespacemlx_1_1core_1_1random.html#a3dd7910cedd2b88c2c6f4ca0daf98967',1,'mlx::core::random::categorical(const array &logits, int axis, const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa7104c436b3972a2480cfeb54554855f',1,'mlx::core::random::categorical(const array &logits_, int axis, int num_samples, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa336e774783543705dffe2ad5b2c49c1',1,'mlx::core::random::categorical(const array &logits, int axis=-1, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['ceil_3',['Ceil',['../classmlx_1_1core_1_1_ceil.html#aede38610ca25429f229301546bc9b682',1,'mlx::core::Ceil']]], - ['ceil_4',['ceil',['../namespacemetal.html#ad63204d38bc01df6ffc64583f7886b3c',1,'metal::ceil()'],['../namespacemetal_1_1fast.html#a97b0bbd79f1f45d9d3104d712914e6b8',1,'metal::fast::ceil()'],['../namespacemetal_1_1precise.html#a8577549a1afeea206dd9a2004af2868d',1,'metal::precise::ceil()'],['../group__ops.html#ga1404ecceff83fd9b9139b7520f55e096',1,'mlx::core::ceil()']]], - ['ceildiv_5',['ceildiv',['../backend_2metal_2kernels_2utils_8h.html#a8e5a4b0fb5d018d7b078d147efe4f1e3',1,'utils.h']]], - ['cfftp_6',['cfftp',['../classpocketfft_1_1detail_1_1cfftp.html#a121dcd8d4db180061d09fc1c5eb7da27',1,'pocketfft::detail::cfftp']]], - ['check_5fcontiguity_7',['check_contiguity',['../namespacemlx_1_1core.html#a847b0a276663d9ddb5cac905ee977f03',1,'mlx::core']]], - ['check_5fshape_5fdim_8',['check_shape_dim',['../namespacemlx_1_1core.html#a8b5f1435b7628a094a38b62e403e1540',1,'mlx::core']]], - ['cholesky_9',['Cholesky',['../classmlx_1_1core_1_1_cholesky.html#a6ae2e30b85f99f4f0d7f14c7949818ab',1,'mlx::core::Cholesky']]], - ['cholesky_10',['cholesky',['../namespacemlx_1_1core_1_1linalg.html#a46c8a4f806f0a97a4323e91189aa512b',1,'mlx::core::linalg']]], - ['cholesky_5finv_11',['cholesky_inv',['../namespacemlx_1_1core_1_1linalg.html#aef0fe4894c5cf98792d59859c6d20511',1,'mlx::core::linalg']]], - ['clear_5fcache_12',['clear_cache',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a447c1eb38c00d2e8e521675297f4a9b1',1,'mlx::core::metal::MetalAllocator::clear_cache()'],['../namespacemlx_1_1core_1_1metal.html#a22b3384ebd17f2fca198f81b9f1b6dc3',1,'mlx::core::metal::clear_cache()']]], - ['clip_13',['clip',['../group__ops.html#ga157cd7c23f9b306fee2e1eb2b9bf1dd8',1,'mlx::core']]], - ['cmplx_14',['cmplx',['../structpocketfft_1_1detail_1_1cmplx.html#a5b1ce506f1023f5254025ac81b831a2c',1,'pocketfft::detail::cmplx::cmplx()'],['../structpocketfft_1_1detail_1_1cmplx.html#a05491b4f1f22ca0bc49012f6a1c1710a',1,'pocketfft::detail::cmplx::cmplx(T r_, T i_)']]], - ['cndarr_15',['cndarr',['../classpocketfft_1_1detail_1_1cndarr.html#abf73f1b4ddcfb27d7f85cfa441607129',1,'pocketfft::detail::cndarr']]], - ['col_5freduce_5flooped_16',['col_reduce_looped',['../reduce__col_8h.html#a11bfc6112ae2386ac03f5ea7b7d93385',1,'reduce_col.h']]], - ['col_5freduce_5fsmall_17',['col_reduce_small',['../reduce__col_8h.html#adf7aeb18cd1d5042cf6d9b46b582d8ce',1,'reduce_col.h']]], - ['collapse_5fcontiguous_5fdims_18',['collapse_contiguous_dims',['../namespacemlx_1_1core.html#a9d151ba3e138be1954d2f51f85806b0c',1,'mlx::core::collapse_contiguous_dims(const std::vector< int > &shape, const std::vector< std::vector< stride_t > > strides)'],['../namespacemlx_1_1core.html#a8430e0baac3f6d8a2ab22428f9c0b7e2',1,'mlx::core::collapse_contiguous_dims(const std::vector< array > &xs)'],['../namespacemlx_1_1core.html#ac813412cce77fc1340dcfefc6e099276',1,'mlx::core::collapse_contiguous_dims(Arrays &&... xs)'],['../namespacemlx_1_1core.html#ad2f039e04bf902c9d98f631a67cc63ed',1,'mlx::core::collapse_contiguous_dims(const std::vector< int > &shape, const std::vector< size_t > &strides)']]], - ['commandencoder_19',['CommandEncoder',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a2334774486f447213ee997e55c2e52a3',1,'mlx::core::metal::CommandEncoder::CommandEncoder(MTL::CommandBuffer *cbuf)'],['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#ac68ca977b5bde5434284ce7979647f14',1,'mlx::core::metal::CommandEncoder::CommandEncoder(const CommandEncoder &)=delete']]], - ['commit_5fcommand_5fbuffer_20',['commit_command_buffer',['../classmlx_1_1core_1_1metal_1_1_device.html#a95248f1387824067fd4fed23ace5ac0c',1,'mlx::core::metal::Device']]], - ['communication_5fstream_21',['communication_stream',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#ac3612edf0e0e18c1e4ba0ce7c6e35cd6',1,'mlx::core::distributed::detail']]], - ['compile_5favailable_5ffor_5fdevice_22',['compile_available_for_device',['../namespacemlx_1_1core_1_1detail.html#aeeff2ba6ec3d9d4ed090de6d2681dbc2',1,'mlx::core::detail']]], - ['compile_5fclear_5fcache_23',['compile_clear_cache',['../namespacemlx_1_1core_1_1detail.html#a3fb927c209b946aefebb195993fbe4cf',1,'mlx::core::detail']]], - ['compile_5ferase_24',['compile_erase',['../namespacemlx_1_1core_1_1detail.html#a69eb76a14f845ca000f1ccb2edda0175',1,'mlx::core::detail']]], - ['compiled_25',['Compiled',['../classmlx_1_1core_1_1_compiled.html#a2d8cefff835c419a48a077d306b8e051',1,'mlx::core::Compiled']]], - ['compiled_5fallocate_5foutputs_26',['compiled_allocate_outputs',['../namespacemlx_1_1core.html#ab8c3c4fc05745f586de922c8266f4fce',1,'mlx::core']]], - ['compiled_5fcheck_5fcontiguity_27',['compiled_check_contiguity',['../namespacemlx_1_1core.html#a3b900ab319948c5a01a3ecd30a709027',1,'mlx::core']]], - ['complex128_5ft_28',['complex128_t',['../structmlx_1_1core_1_1complex128__t.html#aa15d0b805f8790f7c7b76fc7b9d677e0',1,'mlx::core::complex128_t::complex128_t(double v, double u)'],['../structmlx_1_1core_1_1complex128__t.html#abf2842253b874f9f13f39ea68a89e5b6',1,'mlx::core::complex128_t::complex128_t(std::complex< double > v)'],['../structmlx_1_1core_1_1complex128__t.html#a526fba96d7e815360cb4226af085a1bf',1,'mlx::core::complex128_t::complex128_t(T x)']]], - ['complex64_5ft_29',['complex64_t',['../structcomplex64__t.html#adbd392a5e92d31997380ad0a38be4be8',1,'complex64_t::complex64_t(float real, float imag)'],['../structcomplex64__t.html#a29782289bb90d6294099667b86509cd3',1,'complex64_t::complex64_t()'],['../structcomplex64__t.html#a905b048d70eb8d748a62454268242291',1,'complex64_t::complex64_t() threadgroup'],['../structcomplex64__t.html#a33a2452eb33b5ed53655773539c357a5',1,'complex64_t::complex64_t(T x) thread'],['../structcomplex64__t.html#a89b65ace8588b7bf215355f705eb23d9',1,'complex64_t::complex64_t(T x) threadgroup'],['../structcomplex64__t.html#ac81b486f642fb3b26c5d659917bdbcd0',1,'complex64_t::complex64_t(T x) device'],['../structcomplex64__t.html#a0a27a41206400f1e62b60ceb56960c93',1,'complex64_t::complex64_t(T x) const ant'],['../structmlx_1_1core_1_1complex64__t.html#a697cc973ae27d63c8e00d830e780bd8c',1,'mlx::core::complex64_t::complex64_t(float v, float u)'],['../structmlx_1_1core_1_1complex64__t.html#ae065e39938f9c4374b4116f4c67d4d09',1,'mlx::core::complex64_t::complex64_t(std::complex< float > v)'],['../structmlx_1_1core_1_1complex64__t.html#a2232cbbe591a9d2bc228cb23fac38b50',1,'mlx::core::complex64_t::complex64_t(T x)']]], - ['complex_5fmul_30',['complex_mul',['../radix_8h.html#a5bfc53b531214c9ce277bebc18aa67d6',1,'radix.h']]], - ['complex_5fmul_5fconj_31',['complex_mul_conj',['../radix_8h.html#a0e2dfd3d1dda09f47ccc64eec35629f3',1,'radix.h']]], - ['compute_5fstrided_5findices_32',['compute_strided_indices',['../struct_read_writer.html#a7c903fbb8b85a856ba5564d7df537cdf',1,'ReadWriter']]], - ['concatenate_33',['Concatenate',['../classmlx_1_1core_1_1_concatenate.html#acff07853de2d31faeec7c4ca40ce0888',1,'mlx::core::Concatenate']]], - ['concatenate_34',['concatenate',['../group__ops.html#gabdc36fa65697d0361c8d67495de77129',1,'mlx::core::concatenate(const std::vector< array > &arrays, int axis, StreamOrDevice s={})'],['../group__ops.html#gaa95c34ca3a8877f2c50cb60e7fa312b8',1,'mlx::core::concatenate(const std::vector< array > &arrays, StreamOrDevice s={})']]], - ['concatenate_5fgpu_35',['concatenate_gpu',['../namespacemlx_1_1core.html#a050299d0d366ca5c9d09d1004dcc3e7d',1,'mlx::core']]], - ['concurrentcontext_36',['ConcurrentContext',['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html#aee044d7729739c96e845823f9ecc5174',1,'mlx::core::metal::CommandEncoder::ConcurrentContext']]], - ['conj_37',['conj',['../namespacepocketfft_1_1detail.html#a66d79051d502046a9b9f103e744dbad3',1,'pocketfft::detail']]], - ['conjugate_38',['Conjugate',['../classmlx_1_1core_1_1_conjugate.html#a627f9e6a8729fb3ffb3ca3228d007c87',1,'mlx::core::Conjugate']]], - ['conjugate_39',['conjugate',['../group__ops.html#ga5b596906bf8cdc8d97ed6ddc9aeb4c23',1,'mlx::core']]], - ['contiguous_5fscan_40',['contiguous_scan',['../kernels_2scan_8h.html#a1f9c197dc09641f3fbb2e886c85b0675',1,'scan.h']]], - ['conv_41',['conv',['../namespacemlx_1_1core_1_1metal.html#ab1704e853394c725668c06752ebb5c24',1,'mlx::core::metal']]], - ['conv1d_42',['conv1d',['../group__ops.html#ga30d47e08093c03a3676f235f9f559411',1,'mlx::core']]], - ['conv2d_43',['conv2d',['../group__ops.html#ga73b02833229678786e7f302d458d5a83',1,'mlx::core']]], - ['conv2dinputblockloadergeneral_44',['Conv2DInputBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a1d83af561a483432bf8dcb42e734b23b',1,'mlx::steel::Conv2DInputBlockLoaderGeneral']]], - ['conv2dinputblockloaderlargefilter_45',['Conv2DInputBlockLoaderLargeFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a8755116a535539744e4947bc69f9c50f',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter']]], - ['conv2dinputblockloadersmallchannels_46',['Conv2DInputBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#ab9fd3fdeab94470dde3326f1dd5c455a',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels']]], - ['conv2dinputblockloadersmallfilter_47',['Conv2DInputBlockLoaderSmallFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a0a2cbf57c51cd928722e3f06aafcf933',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], - ['conv2dweightblockloader_48',['Conv2DWeightBlockLoader',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a9a7dca3512b64cffb6eac305d795831c',1,'mlx::steel::Conv2DWeightBlockLoader']]], - ['conv2dweightblockloadergeneral_49',['Conv2DWeightBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#ad0550fabbdc9297559381a5b488e9af1',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral']]], - ['conv2dweightblockloadersmallchannels_50',['Conv2DWeightBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#ae1806ea1c19713819dee83a38ab35fa6',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels']]], - ['conv3d_51',['conv3d',['../group__ops.html#ga6e9907d2f14dc4803e4306b3dbc4b3ca',1,'mlx::core']]], - ['conv_5fgeneral_52',['conv_general',['../group__ops.html#ga2236e5dfc7e52e28abf6c21675d0a51e',1,'mlx::core::conv_general(array input, array weight, std::vector< int > stride={}, std::vector< int > padding_lo={}, std::vector< int > padding_hi={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})'],['../group__ops.html#gab59f89942cd1efaadffe9e8762e3c99d',1,'mlx::core::conv_general(const array &input, const array &weight, std::vector< int > stride={}, std::vector< int > padding={}, std::vector< int > kernel_dilation={}, std::vector< int > input_dilation={}, int groups=1, bool flip=false, StreamOrDevice s={})']]], - ['conv_5ftranspose1d_53',['conv_transpose1d',['../group__ops.html#gaa30bf1adcd78d1c2595d07b215731714',1,'mlx::core']]], - ['conv_5ftranspose2d_54',['conv_transpose2d',['../group__ops.html#gaebb59971cb9bc45005dc1d398e4f0a3d',1,'mlx::core']]], - ['conv_5ftranspose3d_55',['conv_transpose3d',['../group__ops.html#ga8db814da631d9cd32a8d6563bf4ac530',1,'mlx::core']]], - ['convolution_56',['Convolution',['../classmlx_1_1core_1_1_convolution.html#a6f1de77b719bb13217b0d8c64cabb8ef',1,'mlx::core::Convolution']]], - ['copy_57',['Copy',['../classmlx_1_1core_1_1_copy.html#a6243e044af119105ffaaed7d405cd584',1,'mlx::core::Copy']]], - ['copy_58',['copy',['../namespacemlx_1_1core.html#a479648542a2bea151b947b18f0e79dd2',1,'mlx::core::copy()'],['../namespacemlx_1_1core_1_1metal.html#aa215e631e2680f04a591b88d91571719',1,'mlx::core::metal::copy()'],['../group__ops.html#gae306e93af12f774bd80bad6c231b09d6',1,'mlx::core::copy()']]], - ['copy_5fg_59',['copy_g',['../metal_2kernels_2copy_8h.html#a1ea80f8edb842dd0ed8ffe553a2238b2',1,'copy.h']]], - ['copy_5fg_5fnd_60',['copy_g_nd',['../metal_2kernels_2copy_8h.html#a07336a7a024125b4f6d3e8556d04058f',1,'copy.h']]], - ['copy_5fg_5fnd1_61',['copy_g_nd1',['../metal_2kernels_2copy_8h.html#aba4530a7db6a61ca36f50e4f5e58fb77',1,'copy.h']]], - ['copy_5fg_5fnd2_62',['copy_g_nd2',['../metal_2kernels_2copy_8h.html#aee678c7c31119f3e609685589f37490c',1,'copy.h']]], - ['copy_5fg_5fnd3_63',['copy_g_nd3',['../metal_2kernels_2copy_8h.html#a821f8f3f3891159a295c66fc25aed1ff',1,'copy.h']]], - ['copy_5fgg_64',['copy_gg',['../metal_2kernels_2copy_8h.html#a9fd1d98f0dcf976089754cd47f55784d',1,'copy.h']]], - ['copy_5fgg_5fnd_65',['copy_gg_nd',['../metal_2kernels_2copy_8h.html#a3197d34e9c68e7059419ae0635667059',1,'copy.h']]], - ['copy_5fgg_5fnd1_66',['copy_gg_nd1',['../metal_2kernels_2copy_8h.html#a3278d9c999718bee3ccbe2922f501bf1',1,'copy.h']]], - ['copy_5fgg_5fnd2_67',['copy_gg_nd2',['../metal_2kernels_2copy_8h.html#a3e2d3cc7f34f56170409b6735f51a950',1,'copy.h']]], - ['copy_5fgg_5fnd3_68',['copy_gg_nd3',['../metal_2kernels_2copy_8h.html#a59f43b5bffed936d7559ceb06a10aabd',1,'copy.h']]], - ['copy_5fgpu_69',['copy_gpu',['../namespacemlx_1_1core.html#addaa46a13ac2deb1d9ce621338320e0e',1,'mlx::core::copy_gpu(const array &src, array &out, CopyType ctype, const Stream &s)'],['../namespacemlx_1_1core.html#a6a6f4e46c8fc44fdc74c50ace02bcf38',1,'mlx::core::copy_gpu(const array &src, array &out, CopyType ctype)']]], - ['copy_5fgpu_5finplace_70',['copy_gpu_inplace',['../namespacemlx_1_1core.html#a69e30f5d30a6d72ac0ffe4886f24b7ba',1,'mlx::core::copy_gpu_inplace(const array &in, array &out, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype, const Stream &s)'],['../namespacemlx_1_1core.html#a8e1ccb0ed9387b0a789311d9f8964803',1,'mlx::core::copy_gpu_inplace(const array &src, array &out, CopyType ctype, const Stream &s)'],['../namespacemlx_1_1core.html#ae55b801b09ccf55cba96278163a9b1ef',1,'mlx::core::copy_gpu_inplace(const array &in, array &out, const std::vector< int64_t > &istride, int64_t ioffset, CopyType ctype, const Stream &s)']]], - ['copy_5fhartley_71',['copy_hartley',['../namespacepocketfft_1_1detail.html#abac3fcc8ce83800d228774f64c28d4c3',1,'pocketfft::detail::copy_hartley(const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)'],['../namespacepocketfft_1_1detail.html#ae7b44d2773d9d06a9787aff01d66b3ed',1,'pocketfft::detail::copy_hartley(const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)']]], - ['copy_5finplace_72',['copy_inplace',['../namespacemlx_1_1core.html#a98495894a796b2cc6d022e7a03432c64',1,'mlx::core::copy_inplace(const array &src, array &dst, CopyType ctype)'],['../namespacemlx_1_1core.html#aad636e2d0b2f882cadd1b438f4daa9ed',1,'mlx::core::copy_inplace(const array &src, array &dst, const std::vector< int > &data_shape, const std::vector< stride_t > &i_strides, const std::vector< stride_t > &o_strides, int64_t i_offset, int64_t o_offset, CopyType ctype)']]], - ['copy_5finput_73',['copy_input',['../namespacepocketfft_1_1detail.html#aff05be3064743c1143b19318ab12ad4a',1,'pocketfft::detail::copy_input(const multi_iter< vlen > &it, const cndarr< cmplx< T > > &src, cmplx< vtype_t< T > > *dst)'],['../namespacepocketfft_1_1detail.html#a30fc708f9d8f9cfa74194925c7863c0a',1,'pocketfft::detail::copy_input(const multi_iter< vlen > &it, const cndarr< T > &src, vtype_t< T > *dst)'],['../namespacepocketfft_1_1detail.html#a3387bd35f237870e42b8461769e6aec4',1,'pocketfft::detail::copy_input(const multi_iter< vlen > &it, const cndarr< T > &src, T *dst)']]], - ['copy_5foutput_74',['copy_output',['../namespacepocketfft_1_1detail.html#a1523a037300a8da05db210b802d9cb0e',1,'pocketfft::detail::copy_output(const multi_iter< vlen > &it, const cmplx< vtype_t< T > > *src, ndarr< cmplx< T > > &dst)'],['../namespacepocketfft_1_1detail.html#a21980853aca4d92ed06e3dcffe7ef660',1,'pocketfft::detail::copy_output(const multi_iter< vlen > &it, const vtype_t< T > *src, ndarr< T > &dst)'],['../namespacepocketfft_1_1detail.html#a310481c334e46674710ba794ad7403c0',1,'pocketfft::detail::copy_output(const multi_iter< vlen > &it, const T *src, ndarr< T > &dst)']]], - ['copy_5fs_75',['copy_s',['../metal_2kernels_2copy_8h.html#aef09f9b9475345b1bba121d037d222ea',1,'copy.h']]], - ['copy_5fs2_76',['copy_s2',['../metal_2kernels_2copy_8h.html#a8023e9335cc5334847a8d315042be3a3',1,'copy.h']]], - ['copy_5fshared_5fbuffer_77',['copy_shared_buffer',['../classmlx_1_1core_1_1array.html#a28df7a333d90a311c49bc4bce7a1ad6d',1,'mlx::core::array::copy_shared_buffer(const array &other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)'],['../classmlx_1_1core_1_1array.html#a92974c656c35a972ad241f80584bbd29',1,'mlx::core::array::copy_shared_buffer(const array &other)']]], - ['copy_5fv_78',['copy_v',['../metal_2kernels_2copy_8h.html#ae26a13e0c8e6c15f7b10078e65970659',1,'copy.h']]], - ['copy_5fv2_79',['copy_v2',['../metal_2kernels_2copy_8h.html#aee14a5326f53d9b30b0b38e27d180ef3',1,'copy.h']]], - ['cos_80',['Cos',['../classmlx_1_1core_1_1_cos.html#a2acb9fcf0901462189c476756fd99995',1,'mlx::core::Cos']]], - ['cos_81',['cos',['../namespacepocketfft_1_1detail.html#a499c1e8b7d79a5272af024f46c63ff9d',1,'pocketfft::detail::cos()'],['../namespacemetal.html#a2fa4778a6fe2fa43253ea724e5a608a3',1,'metal::cos()'],['../namespacemetal_1_1fast.html#a75b6bb32fa3870eda46a7bfc9f481f88',1,'metal::fast::cos()'],['../namespacemetal_1_1precise.html#ac4941f62e7d8ab9d7cabbd967aa9f220',1,'metal::precise::cos()'],['../group__ops.html#ga39dfdf72b556012aa35ff27a94116e74',1,'mlx::core::cos()']]], - ['cosh_82',['Cosh',['../classmlx_1_1core_1_1_cosh.html#a44e8ac2e09a55ec32e9dc6641eedc8f1',1,'mlx::core::Cosh']]], - ['cosh_83',['cosh',['../namespacemetal.html#a8a68a88cc110830d057dbd71431b93c0',1,'metal::cosh()'],['../namespacemetal_1_1fast.html#a31544ad9de28012a4ddda86e3966a77e',1,'metal::fast::cosh()'],['../namespacemetal_1_1precise.html#a72d86d508300a9b58f4ccbbe70da4fbc',1,'metal::precise::cosh()'],['../group__ops.html#ga2181b71cda88007a3092be4795ff0715',1,'mlx::core::cosh()']]], - ['cospi_84',['cospi',['../namespacemetal.html#a5c2f37939ad705ddea4409d3bedb8ce1',1,'metal::cospi()'],['../namespacemetal_1_1fast.html#a9906b41f75319b384ffb570cc94d67ce',1,'metal::fast::cospi()'],['../namespacemetal_1_1precise.html#a2392b78bd196efdbbac65901c4ab20e7',1,'metal::precise::cospi()']]], - ['cost_5fguess_85',['cost_guess',['../structpocketfft_1_1detail_1_1util.html#ad3d874bc3fb0048df2270779a15d4bd0',1,'pocketfft::detail::util']]], - ['count_5fdown_86',['count_down',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a81d6597189b40410e35f3cd653fd1342',1,'pocketfft::detail::threading::latch']]], - ['cummax_87',['cummax',['../group__ops.html#gaee37cac8476e8f8d666bcded5bc59143',1,'mlx::core']]], - ['cummin_88',['cummin',['../group__ops.html#ga19c1bf6929fe8d66b9cd408946aea6a8',1,'mlx::core']]], - ['cumprod_89',['cumprod',['../group__ops.html#ga0d71dfbc14ef3ed564b0c5ee26af680f',1,'mlx::core']]], - ['cumsum_90',['cumsum',['../group__ops.html#gaddc825a5c173e195ab0fda83ad630420',1,'mlx::core']]], - ['custom_91',['Custom',['../classmlx_1_1core_1_1fast_1_1_custom.html#a4186fea23f7156c38960426821fca313',1,'mlx::core::fast::Custom']]], - ['customkernel_92',['CustomKernel',['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a954893e07f0d36715b4e1e414b6f2153',1,'mlx::core::fast::CustomKernel']]], - ['customtransforms_93',['CustomTransforms',['../classmlx_1_1core_1_1_custom_transforms.html#ab52abadb9c6f6db83d087c7b751be488',1,'mlx::core::CustomTransforms']]] -]; diff --git a/docs/build/html/search/functions_4.js b/docs/build/html/search/functions_4.js deleted file mode 100644 index fc21e48f..00000000 --- a/docs/build/html/search/functions_4.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['data_0',['Data',['../structmlx_1_1core_1_1array_1_1_data.html#a77e2ea35fac1d54e4062468a432e1482',1,'mlx::core::array::Data::Data(allocator::Buffer buffer, deleter_t d=allocator::free)'],['../structmlx_1_1core_1_1array_1_1_data.html#a50f242040b123052e48e18c244ff70fc',1,'mlx::core::array::Data::Data(const Data &d)=delete']]], - ['data_1',['data',['../classpocketfft_1_1detail_1_1arr.html#aec0f2191b4663b4187aab92454c34de8',1,'pocketfft::detail::arr::data()'],['../classpocketfft_1_1detail_1_1arr.html#ac82daa17e9f991072b012343f9d7c182',1,'pocketfft::detail::arr::data() const'],['../classmlx_1_1core_1_1array.html#a72e3ce6c03fefe272cadf214bd127b95',1,'mlx::core::array::data()'],['../classmlx_1_1core_1_1array.html#a99fb28eeab39b9f429373f8bd7557676',1,'mlx::core::array::data() const']]], - ['data_5fshared_5fptr_2',['data_shared_ptr',['../classmlx_1_1core_1_1array.html#ab84c792117e29cdf90ef3433303f6141',1,'mlx::core::array']]], - ['data_5fsize_3',['data_size',['../classmlx_1_1core_1_1array.html#afaf2a370fa35d96af1b27a4b814e3bfd',1,'mlx::core::array']]], - ['dct_4',['dct',['../namespacepocketfft_1_1detail.html#a60615f5b685314c658346c309d5ef2ba',1,'pocketfft::detail']]], - ['deallocate_5',['deallocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a2a99b8e296d26b255e9937ba5f30e76f',1,'pocketfft::detail::threading::aligned_allocator']]], - ['debug_5fset_5fprimitive_5fbuffer_5flabel_6',['debug_set_primitive_buffer_label',['../namespacemlx_1_1core.html#a489e45b3a5cd8b46e8ea56b9132eb230',1,'mlx::core']]], - ['debug_5fset_5fstream_5fqueue_5flabel_7',['debug_set_stream_queue_label',['../namespacemlx_1_1core.html#a79817d2432e782e596c9c49a08b93be2',1,'mlx::core']]], - ['decompose_5fhadamard_8',['decompose_hadamard',['../namespacemlx_1_1core.html#a3a8fe7ba84714dbb5fdc81e93a07abc8',1,'mlx::core']]], - ['default_5f_9',['default_',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#ab5993daeed822c6b970caddab7e3fd90',1,'mlx::core::random::KeySequence']]], - ['default_5fdevice_10',['default_device',['../namespacemlx_1_1core.html#a0196171cfe6ee2953113abce597dc815',1,'mlx::core']]], - ['default_5fstream_11',['default_stream',['../namespacemlx_1_1core.html#ac198b7e282957c724c84a435e8f1215e',1,'mlx::core']]], - ['defaultcontiguousreduce_12',['DefaultContiguousReduce',['../structmlx_1_1core_1_1_default_contiguous_reduce.html#aeb4fb7fa1a4c8e7d1da1f450ce95c57f',1,'mlx::core::DefaultContiguousReduce']]], - ['defaultstridedreduce_13',['DefaultStridedReduce',['../structmlx_1_1core_1_1_default_strided_reduce.html#a477e5dd0dd33071e48769d11d19a13fb',1,'mlx::core::DefaultStridedReduce']]], - ['define_5fprint_14',['DEFINE_PRINT',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a8af1e90d4aa56f31ec40ad152ebd2421',1,'mlx::core::distributed::AllGather::DEFINE_PRINT()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a31bf76e24cf3836cf1fd26da30712e31',1,'mlx::core::distributed::Send::DEFINE_PRINT()'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a7a0cad13da7cf8e565934318a2bc34f1',1,'mlx::core::distributed::Recv::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#ae6eea81b5e3789c2f6f376cc07f0a47c',1,'mlx::core::fast::RMSNorm::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#a9895733eab845e11484d86cf6ecedced',1,'mlx::core::fast::RMSNormVJP::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a467fcf02b3ddf1d8b6d476b244ae3568',1,'mlx::core::fast::LayerNorm::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a5ab3eb5402c7e8060916056eb2b7887f',1,'mlx::core::fast::LayerNormVJP::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a2b06fe64fa8feca65140632087065e16',1,'mlx::core::fast::RoPE::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#a6cc2092fa5b8e7585921b8e0f3ec3db7',1,'mlx::core::fast::ScaledDotProductAttention::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a4b8f1b1f633002c8ca6fa8f0ef4dd587',1,'mlx::core::fast::AffineQuantize::DEFINE_PRINT()'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a116ecf31c8672c94e5ea06c1d43e9534',1,'mlx::core::fast::CustomKernel::DEFINE_PRINT()']]], - ['degrees_15',['degrees',['../group__ops.html#ga3a70569b50e1083c5ded199d73fb960c',1,'mlx::core']]], - ['denorm_5fmin_16',['denorm_min',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['depends_17',['Depends',['../classmlx_1_1core_1_1_depends.html#a4ccb792c99f5d8d133d3fac29f7d3f62',1,'mlx::core::Depends']]], - ['depends_18',['depends',['../group__ops.html#gac4a51a68fbe1725436b026d2fbb95759',1,'mlx::core']]], - ['dequantize_19',['dequantize',['../quantized_8h.html#aecff265b63566d0d5689cfc4e5b037d2',1,'dequantize(): quantized.h'],['../group__ops.html#gabff758a5c1ce32ad7e8b78aba0164077',1,'mlx::core::dequantize()']]], - ['detach_20',['detach',['../classmlx_1_1core_1_1array.html#a84948c29df8c957904919c8602692bd2',1,'mlx::core::array']]], - ['device_21',['device',['../classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261',1,'mlx::core::Primitive']]], - ['device_22',['Device',['../classmlx_1_1core_1_1metal_1_1_device.html#ae0db74570eb4b19d8cf19774db91bfd6',1,'mlx::core::metal::Device::Device()'],['../classmlx_1_1core_1_1metal_1_1_device.html#abf59a4addb5473f9e814e3651ba85f06',1,'mlx::core::metal::Device::Device(const Device &)=delete'],['../structmlx_1_1core_1_1_device.html#a481ccfb94d689994396bd353e966b489',1,'mlx::core::Device::Device()']]], - ['device_23',['device',['../namespacemlx_1_1core_1_1metal.html#a910797b74824e6ee576fbb533dee8b57',1,'mlx::core::metal']]], - ['device_5finfo_24',['device_info',['../namespacemlx_1_1core_1_1metal.html#a6ad19c44efabb7423f973407926ead61',1,'mlx::core::metal']]], - ['diag_25',['diag',['../group__ops.html#ga11af511875640e1fa88e0ca87e199344',1,'mlx::core']]], - ['diagonal_26',['diagonal',['../group__ops.html#ga9236b085a88ead3128ed8079d009cac6',1,'mlx::core']]], - ['disable_5fcompile_27',['disable_compile',['../namespacemlx_1_1core.html#a5f5fea955057bb3842b271b037909e66',1,'mlx::core']]], - ['dispatchthreadgroups_28',['dispatchThreadgroups',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a74bcd8e35f80f5a62db48c4a2bb0173e',1,'mlx::core::metal::CommandEncoder']]], - ['dispatchthreads_29',['dispatchThreads',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a1e41477f2f489e38499f7830a91c9810',1,'mlx::core::metal::CommandEncoder']]], - ['distprimitive_30',['DistPrimitive',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a8c54166951522c2a52ef39fce8c87f8f',1,'mlx::core::distributed::DistPrimitive']]], - ['divide_31',['Divide',['../classmlx_1_1core_1_1_divide.html#a62fc71e8998be65ff18285dbbd21eedb',1,'mlx::core::Divide']]], - ['divide_32',['divide',['../namespacemetal.html#a2aea493fc1a874970b77ed0031e965df',1,'metal::divide()'],['../namespacemetal_1_1fast.html#ae70bc2185e4649369cf7b15f5e1d48be',1,'metal::fast::divide()'],['../namespacemetal_1_1precise.html#aec0982cdb96a08b61f51129150d82e9d',1,'metal::precise::divide()'],['../group__ops.html#ga77472dd06cfa7a30a42e4fd927bd859f',1,'mlx::core::divide()']]], - ['divmod_33',['DivMod',['../classmlx_1_1core_1_1_div_mod.html#a859e3b6149cdceab1c7ccfd2246fb826',1,'mlx::core::DivMod']]], - ['divmod_34',['divmod',['../group__ops.html#gaa30ebc0a8376dbc3f7e46a47052b5894',1,'mlx::core']]], - ['dst_35',['dst',['../namespacepocketfft_1_1detail.html#add0f231fc8a1ce01b90a90faeebcb4eb',1,'pocketfft::detail']]], - ['dtype_36',['Dtype',['../structmlx_1_1core_1_1_dtype.html#aec17f0a4a51729e5ac40b62f0aa765d1',1,'mlx::core::Dtype']]], - ['dtype_37',['dtype',['../classmlx_1_1core_1_1array.html#ae29e7d6fbfbea1e5e321a8d1ea3cfacd',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/functions_5.js b/docs/build/html/search/functions_5.js deleted file mode 100644 index b37fb027..00000000 --- a/docs/build/html/search/functions_5.js +++ /dev/null @@ -1,43 +0,0 @@ -var searchData= -[ - ['einsum_0',['einsum',['../namespacemlx_1_1core.html#a2a9b98c65578dd3720b3b375c1471e58',1,'mlx::core']]], - ['einsum_5fpath_1',['einsum_path',['../namespacemlx_1_1core.html#ab14ec41f17675691c1fdebb8990b6695',1,'mlx::core']]], - ['elem_5fto_5floc_2',['elem_to_loc',['../namespacemlx_1_1core.html#a4950c3248e70280b406a4f1430a85880',1,'mlx::core::elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)'],['../namespacemlx_1_1core.html#ad7e4f40eb351b554bbfabb6d7d600d06',1,'mlx::core::elem_to_loc(int elem, const array &a)'],['../backend_2metal_2kernels_2utils_8h.html#a2e49fa7ab8f6348543455c6c45d7e2a9',1,'elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a8fd0c8fc6058e650fc99bca8b6acd7d1',1,'elem_to_loc(uint elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a458c064858186818561aaf72a3647c32',1,'elem_to_loc(stride_t elem, device const int *shape, device const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#aa6b041005351293e68e19b5abf1286cd',1,'elem_to_loc(stride_t elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a37e00d94751710e81c9632bca2f91e51',1,'elem_to_loc(uint3 elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h']]], - ['elem_5fto_5floc_5f1_3',['elem_to_loc_1',['../backend_2metal_2kernels_2utils_8h.html#a196a07022b812b241d4c06192c0fa83d',1,'utils.h']]], - ['elem_5fto_5floc_5f2_4',['elem_to_loc_2',['../backend_2metal_2kernels_2utils_8h.html#ad6c45cacca97899cd362df49c06fea79',1,'utils.h']]], - ['elem_5fto_5floc_5f2_5fnd_5',['elem_to_loc_2_nd',['../backend_2metal_2kernels_2utils_8h.html#a4069a6398757e8158c14551539083181',1,'elem_to_loc_2_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a2eae434d62466c9a072a8339162113ca',1,'elem_to_loc_2_nd(uint3 elem, constant const int shape[NDIM], constant const size_t a_strides[NDIM], constant const size_t b_strides[NDIM]): utils.h']]], - ['elem_5fto_5floc_5f3_6',['elem_to_loc_3',['../backend_2metal_2kernels_2utils_8h.html#a2c34ed54714c69e6e1b44344f9e6e330',1,'utils.h']]], - ['elem_5fto_5floc_5f3_5fnd_7',['elem_to_loc_3_nd',['../backend_2metal_2kernels_2utils_8h.html#a59d3221f4fbcc7e340af0a743fae054b',1,'elem_to_loc_3_nd(uint3 elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a418562e11bdfc92130e445ac01e53924',1,'elem_to_loc_3_nd(uint3 elem, constant const int shape[NDIM], constant const size_t a_strides[NDIM], constant const size_t b_strides[NDIM], constant const size_t c_strides[NDIM]): utils.h']]], - ['elem_5fto_5floc_5fbroadcast_8',['elem_to_loc_broadcast',['../backend_2metal_2kernels_2steel_2utils_8h.html#aaf4974425147d6f26d031691e321637f',1,'elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim): utils.h'],['../backend_2metal_2kernels_2steel_2utils_8h.html#a42bd57d203a40d3d7d429f2333590a3c',1,'elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, constant const size_t *c_strides, int ndim): utils.h']]], - ['elem_5fto_5floc_5fnd_9',['elem_to_loc_nd',['../backend_2metal_2kernels_2utils_8h.html#aa25c926e32ba8f05de765c662326d955',1,'elem_to_loc_nd(uint elem, device const int *shape, device const size_t *strides): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a0d04f0d0718d0a5796ce5ca1a289d942',1,'elem_to_loc_nd(uint3 elem, constant const int shape[NDIM], constant const size_t strides[NDIM]): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#ac7d74fb6d5fed31513b6b7defcf45921',1,'elem_to_loc_nd(uint elem, constant const int shape[NDIM], constant const int64_t strides[NDIM]): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a4fec636fff34a288ccd56ce202703232',1,'elem_to_loc_nd(uint3 elem, constant const int shape[NDIM], constant const int64_t strides[NDIM]): utils.h']]], - ['empty_10',['empty',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#a1269e5da40c3f5145c895cee3641879a',1,'pocketfft::detail::threading::concurrent_queue']]], - ['enable_5fcompile_11',['enable_compile',['../namespacemlx_1_1core.html#a1983a2466bff3bae4d23cf34bd0946c9',1,'mlx::core']]], - ['end_12',['end',['../classmlx_1_1core_1_1array.html#a5daf64552fb450825c9b382f3a5fa2d4',1,'mlx::core::array']]], - ['end_5fencoding_13',['end_encoding',['../classmlx_1_1core_1_1metal_1_1_device.html#a60689f97347811b27e8c5ca23e0372bf',1,'mlx::core::metal::Device']]], - ['enqueue_14',['enqueue',['../class_thread_pool.html#a375fa2d63197282277be640b54e8a196',1,'ThreadPool::enqueue()'],['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a4918720319cf224a1b4208568964c286',1,'mlx::core::scheduler::StreamThread::enqueue()'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a03809c783bd1866362dc7cb9118abbcc',1,'mlx::core::scheduler::Scheduler::enqueue()'],['../namespacemlx_1_1core_1_1scheduler.html#aa2d4eacf5d5cbc778a51aafd4fd8e4d7',1,'mlx::core::scheduler::enqueue()']]], - ['epsilon_15',['epsilon',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['equal_16',['Equal',['../classmlx_1_1core_1_1_equal.html#a4af81cf2dd071db5bbf8ce1df95fdf36',1,'mlx::core::Equal']]], - ['equal_17',['equal',['../group__ops.html#ga33638dc3a9972dd02be12d0eb85f9bde',1,'mlx::core']]], - ['erf_18',['Erf',['../classmlx_1_1core_1_1_erf.html#a702f76f848928d8d7d3d0881ac6e4c82',1,'mlx::core::Erf']]], - ['erf_19',['erf',['../erf_8h.html#a6ce199ee56105c67adbf8c48c019a8b2',1,'erf(): erf.h'],['../group__ops.html#ga292a335240fd5d6d625fb7a340ff5eb0',1,'mlx::core::erf()']]], - ['erfinv_20',['ErfInv',['../classmlx_1_1core_1_1_erf_inv.html#a5d0279247b67da4592311559f04e1478',1,'mlx::core::ErfInv']]], - ['erfinv_21',['erfinv',['../erf_8h.html#a1846e0d683c7aff826bb32addcc3b885',1,'erfinv(): erf.h'],['../group__ops.html#ga76fb9062c64264e34d2e07013390557c',1,'mlx::core::erfinv()']]], - ['eval_22',['eval',['../classmlx_1_1core_1_1array.html#a2820c45188071a22175e9fa42e10a49a',1,'mlx::core::array::eval()'],['../namespacemlx_1_1core.html#a7d6e097d8effed52f4713672e471f299',1,'mlx::core::eval(std::vector< array > outputs)'],['../namespacemlx_1_1core.html#adb14f689c9f75f7901edb196c2bfb971',1,'mlx::core::eval(Arrays &&... outputs)']]], - ['eval_5fcpu_23',['eval_cpu',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#acdc1965ad64ee9ee6328fe150a97902e',1,'mlx::core::distributed::AllReduce::eval_cpu()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#ab721fe0072fffbddbc3c4334dd033ba5',1,'mlx::core::distributed::AllGather::eval_cpu()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#af2620837bfc1b97217d006ed6e374051',1,'mlx::core::distributed::Send::eval_cpu()'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a3be84b08122a939edd6062d26261358a',1,'mlx::core::distributed::Recv::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#a7da6e0cfd630958d9633b2e2bd97a54f',1,'mlx::core::fast::RMSNorm::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#adfc1d52bc266466ab29ee45fd8fab439',1,'mlx::core::fast::RMSNormVJP::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a5d7a4c1c9ee84e327d1c371733108c05',1,'mlx::core::fast::LayerNorm::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a0d8c4c6e7462befc38f7e08244fa1c2b',1,'mlx::core::fast::LayerNormVJP::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a05a7d595c6b9dadf7ddfd6e3fd402f0e',1,'mlx::core::fast::RoPE::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#ae20851e002f7fcb6d4f97817596f6328',1,'mlx::core::fast::ScaledDotProductAttention::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a3b5d628628d245b38911118d4a0ff9fd',1,'mlx::core::fast::AffineQuantize::eval_cpu()'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a4ad1b7a9919753c759093f3e21a15bad',1,'mlx::core::fast::CustomKernel::eval_cpu()'],['../classmlx_1_1core_1_1_primitive.html#a1596dc50b910538eae14878e98f07575',1,'mlx::core::Primitive::eval_cpu()'],['../classmlx_1_1core_1_1_unary_primitive.html#a7e8f6f5d6ae0a33f6abc0f5a46e0b132',1,'mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, array &output)=0'],['../classmlx_1_1core_1_1_unary_primitive.html#aa0ed6e32c36200a3ff9bc592c9b300db',1,'mlx::core::UnaryPrimitive::eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) override'],['../classmlx_1_1core_1_1_abs.html#a0d3e697496ef8e842d21195cb3c14e60',1,'mlx::core::Abs::eval_cpu()'],['../classmlx_1_1core_1_1_add.html#a5bacfc51dfa2a5a931bad2dd7bdc7a5f',1,'mlx::core::Add::eval_cpu()'],['../classmlx_1_1core_1_1_add_m_m.html#a15694e3bf2ed5c193237b2b9ca00867c',1,'mlx::core::AddMM::eval_cpu()'],['../classmlx_1_1core_1_1_arange.html#aba44432491cbd599bf72712f5f4267a1',1,'mlx::core::Arange::eval_cpu()'],['../classmlx_1_1core_1_1_arc_cos.html#a58dcba9e706cb12bab062bb7fa5fa006',1,'mlx::core::ArcCos::eval_cpu()'],['../classmlx_1_1core_1_1_arc_cosh.html#a0f6d989bcbbc38f15ef17a136879a9c9',1,'mlx::core::ArcCosh::eval_cpu()'],['../classmlx_1_1core_1_1_arc_sin.html#ab3542492c14021329788de8f2a9be1e4',1,'mlx::core::ArcSin::eval_cpu()'],['../classmlx_1_1core_1_1_arc_sinh.html#a52574b24d8d16839c58673f51f8ac066',1,'mlx::core::ArcSinh::eval_cpu()'],['../classmlx_1_1core_1_1_arc_tan.html#a1211bc31241227528f04435239ddb9a3',1,'mlx::core::ArcTan::eval_cpu()'],['../classmlx_1_1core_1_1_arc_tan2.html#a13094e6b702769928ca0da468f5ce45c',1,'mlx::core::ArcTan2::eval_cpu()'],['../classmlx_1_1core_1_1_arc_tanh.html#a5af9224e1f1ffec412b0baa0af7e1ecd',1,'mlx::core::ArcTanh::eval_cpu()'],['../classmlx_1_1core_1_1_arg_partition.html#a896f75c5325798ac3f9093f6a4581828',1,'mlx::core::ArgPartition::eval_cpu()'],['../classmlx_1_1core_1_1_arg_reduce.html#ad8d48725623ede1ff654fa13eccf2287',1,'mlx::core::ArgReduce::eval_cpu()'],['../classmlx_1_1core_1_1_arg_sort.html#a022079683774bfeb531b3a002cff16fa',1,'mlx::core::ArgSort::eval_cpu()'],['../classmlx_1_1core_1_1_as_type.html#aa89dbf4d73b00c6a44cffd04d5bb228d',1,'mlx::core::AsType::eval_cpu()'],['../classmlx_1_1core_1_1_as_strided.html#acdd4705e4503ff0b124215c4676b4193',1,'mlx::core::AsStrided::eval_cpu()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a2194bf585213bda1b2966aa02d2fe283',1,'mlx::core::BitwiseBinary::eval_cpu()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#aa85da478cdc6d4a97be06e5d4abee1f2',1,'mlx::core::BlockMaskedMM::eval_cpu()'],['../classmlx_1_1core_1_1_gather_m_m.html#a62352074a480df0e1f879b0bae425730',1,'mlx::core::GatherMM::eval_cpu()'],['../classmlx_1_1core_1_1_broadcast.html#a53d48d9778e2d4c24a124cd767900780',1,'mlx::core::Broadcast::eval_cpu()'],['../classmlx_1_1core_1_1_ceil.html#a9791801fff3f8b79944e15ac2a45a035',1,'mlx::core::Ceil::eval_cpu()'],['../classmlx_1_1core_1_1_compiled.html#ac45b1d0fedd85feefbff7ce7e168b151',1,'mlx::core::Compiled::eval_cpu()'],['../classmlx_1_1core_1_1_concatenate.html#a609e76bede7fc5581ec84ddcb727a258',1,'mlx::core::Concatenate::eval_cpu()'],['../classmlx_1_1core_1_1_conjugate.html#ae39643e2178f442ffba05139f8609d61',1,'mlx::core::Conjugate::eval_cpu()'],['../classmlx_1_1core_1_1_convolution.html#ac74256068da01730629109fa4fa8432b',1,'mlx::core::Convolution::eval_cpu()'],['../classmlx_1_1core_1_1_copy.html#af4a0ebec423e84ffe8083a5e9ed0d70c',1,'mlx::core::Copy::eval_cpu()'],['../classmlx_1_1core_1_1_cos.html#a061fc446268fe56237ae6b20ccf78152',1,'mlx::core::Cos::eval_cpu()'],['../classmlx_1_1core_1_1_cosh.html#ae8702df7e8f0e20cbeccb2a548961d3d',1,'mlx::core::Cosh::eval_cpu()'],['../classmlx_1_1core_1_1_custom_transforms.html#adba1c40c77a2138df6b5f75483f62184',1,'mlx::core::CustomTransforms::eval_cpu()'],['../classmlx_1_1core_1_1_depends.html#a0c7ea6db97337591fa53c6e6bde41e5e',1,'mlx::core::Depends::eval_cpu()'],['../classmlx_1_1core_1_1_divide.html#a823443c2a8e8b81bbcaeee6ddbcdbf49',1,'mlx::core::Divide::eval_cpu()'],['../classmlx_1_1core_1_1_div_mod.html#ae350b7b93ad128e3133ee14f247193b3',1,'mlx::core::DivMod::eval_cpu()'],['../classmlx_1_1core_1_1_select.html#aa51aa36e0adbd69e0d23d7c7adf88de2',1,'mlx::core::Select::eval_cpu()'],['../classmlx_1_1core_1_1_remainder.html#ac6c6c86a0bf02e6e529eb87f6e617ccc',1,'mlx::core::Remainder::eval_cpu()'],['../classmlx_1_1core_1_1_equal.html#aabb8aa61fa581defddcdca1274b1b454',1,'mlx::core::Equal::eval_cpu()'],['../classmlx_1_1core_1_1_erf.html#a84ea16e43d5b7f83bbc2d5ece78a3fb6',1,'mlx::core::Erf::eval_cpu()'],['../classmlx_1_1core_1_1_erf_inv.html#af579627402af3249565134884701d39e',1,'mlx::core::ErfInv::eval_cpu()'],['../classmlx_1_1core_1_1_exp.html#a47934c5a5023bc7ae7ae89bff45ebb2c',1,'mlx::core::Exp::eval_cpu()'],['../classmlx_1_1core_1_1_expm1.html#ab9c8b7aa50fe4592d55f8957baac647a',1,'mlx::core::Expm1::eval_cpu()'],['../classmlx_1_1core_1_1_f_f_t.html#a6bc262a0c2b5d4fe655e3e2e0ff28635',1,'mlx::core::FFT::eval_cpu()'],['../classmlx_1_1core_1_1_floor.html#a1a7dc5f571b7b73e7ef3cbdc1dd1fcf7',1,'mlx::core::Floor::eval_cpu()'],['../classmlx_1_1core_1_1_full.html#a3dccd3756599d7fd018b2af0093b082c',1,'mlx::core::Full::eval_cpu()'],['../classmlx_1_1core_1_1_gather.html#a9ed5587f0d04b59a2b9186c0aac21290',1,'mlx::core::Gather::eval_cpu()'],['../classmlx_1_1core_1_1_greater.html#abe1c03f311d0e0b610f3392a6566f2ae',1,'mlx::core::Greater::eval_cpu()'],['../classmlx_1_1core_1_1_greater_equal.html#a15469125b9bea89b64bfeac01590c075',1,'mlx::core::GreaterEqual::eval_cpu()'],['../classmlx_1_1core_1_1_hadamard.html#ab27d6a9df42b3aab41ace3073a4c880d',1,'mlx::core::Hadamard::eval_cpu()'],['../classmlx_1_1core_1_1_less.html#a32624124ffece066f496b3299056bcef',1,'mlx::core::Less::eval_cpu()'],['../classmlx_1_1core_1_1_less_equal.html#a55d1352b0e97841a92503bc57c19ed16',1,'mlx::core::LessEqual::eval_cpu()'],['../classmlx_1_1core_1_1_load.html#ada026ac30566f3109d8182e35d307c0a',1,'mlx::core::Load::eval_cpu()'],['../classmlx_1_1core_1_1_log.html#aadc7bb4cb24f3ecbbb9ed54a699ab74f',1,'mlx::core::Log::eval_cpu()'],['../classmlx_1_1core_1_1_log1p.html#a8192e5438de99c4cda056987935cba23',1,'mlx::core::Log1p::eval_cpu()'],['../classmlx_1_1core_1_1_logical_not.html#acf3f7b3b20ca69533536e0e0a05725b3',1,'mlx::core::LogicalNot::eval_cpu()'],['../classmlx_1_1core_1_1_logical_and.html#adbe1c1785af1a8b827289d22b0d170b3',1,'mlx::core::LogicalAnd::eval_cpu()'],['../classmlx_1_1core_1_1_logical_or.html#a13cd4cbf26589287e85aeaaca42d7f62',1,'mlx::core::LogicalOr::eval_cpu()'],['../classmlx_1_1core_1_1_log_add_exp.html#abef17fb590b1a8d356f2a580e45d41f0',1,'mlx::core::LogAddExp::eval_cpu()'],['../classmlx_1_1core_1_1_matmul.html#a357a7f57a2a220a91977f810a69413fc',1,'mlx::core::Matmul::eval_cpu()'],['../classmlx_1_1core_1_1_maximum.html#a62b38fbe5f96db58c2b60165ac4eadcf',1,'mlx::core::Maximum::eval_cpu()'],['../classmlx_1_1core_1_1_minimum.html#a6b93f493ee87089943a8085fe59dfc6e',1,'mlx::core::Minimum::eval_cpu()'],['../classmlx_1_1core_1_1_multiply.html#a624fce06c047cdc4dfdbdcaaddb25f34',1,'mlx::core::Multiply::eval_cpu()'],['../classmlx_1_1core_1_1_negative.html#af43553dc418c8ebe75fa9cdcba103c3b',1,'mlx::core::Negative::eval_cpu()'],['../classmlx_1_1core_1_1_not_equal.html#a8f95f8b5873850b875b1641df8196047',1,'mlx::core::NotEqual::eval_cpu()'],['../classmlx_1_1core_1_1_number_of_elements.html#acc328321cf5300874ee884367cbede3f',1,'mlx::core::NumberOfElements::eval_cpu()'],['../classmlx_1_1core_1_1_pad.html#aaf82dd163cd536fbf97304f8b29080cb',1,'mlx::core::Pad::eval_cpu()'],['../classmlx_1_1core_1_1_partition.html#a784596ab567f9f3cb4fe1a69466523d8',1,'mlx::core::Partition::eval_cpu()'],['../classmlx_1_1core_1_1_power.html#a6783da16fb6ff393aaa57737f1973206',1,'mlx::core::Power::eval_cpu()'],['../classmlx_1_1core_1_1_quantized_matmul.html#ab3dfa73b74d8f4f2e9ab4f0eb016b0e3',1,'mlx::core::QuantizedMatmul::eval_cpu()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a89aae98bfbdd6563df44ef7d70f0bf8c',1,'mlx::core::GatherQMM::eval_cpu()'],['../classmlx_1_1core_1_1_random_bits.html#a5752d051cd16cf5f8d4754c0a656f0d2',1,'mlx::core::RandomBits::eval_cpu()'],['../classmlx_1_1core_1_1_reshape.html#a658de2c5f710991b48e14b2bd19b229f',1,'mlx::core::Reshape::eval_cpu()'],['../classmlx_1_1core_1_1_reduce.html#aeb8a58b560c0a09ae3a695df7829acfa',1,'mlx::core::Reduce::eval_cpu()'],['../classmlx_1_1core_1_1_round.html#ad066b0944b437f64ab546025efa00007',1,'mlx::core::Round::eval_cpu()'],['../classmlx_1_1core_1_1_scan.html#a15676d9fd066e935782a923fba3e940b',1,'mlx::core::Scan::eval_cpu()'],['../classmlx_1_1core_1_1_scatter.html#a7623f590f8b77167b5ebb4f14bc9dc97',1,'mlx::core::Scatter::eval_cpu()'],['../classmlx_1_1core_1_1_sigmoid.html#aa930ce05734cca529ebcb8d0ca8e1255',1,'mlx::core::Sigmoid::eval_cpu()'],['../classmlx_1_1core_1_1_sign.html#a7498ec993b66879be30c5d9762c45a97',1,'mlx::core::Sign::eval_cpu()'],['../classmlx_1_1core_1_1_sin.html#ab34f9cebc2aed55a0b6ab4c991f02eb5',1,'mlx::core::Sin::eval_cpu()'],['../classmlx_1_1core_1_1_sinh.html#ab6d5f6f40d177f6435f6a51c71b939dd',1,'mlx::core::Sinh::eval_cpu()'],['../classmlx_1_1core_1_1_slice.html#a4b13503f5b2f5c6a90d394b020f9b3f2',1,'mlx::core::Slice::eval_cpu()'],['../classmlx_1_1core_1_1_slice_update.html#ad82ca0e3ab88a0e086431050deea831b',1,'mlx::core::SliceUpdate::eval_cpu()'],['../classmlx_1_1core_1_1_softmax.html#ac9ebc2eab1683b682e689ed8f4622b79',1,'mlx::core::Softmax::eval_cpu()'],['../classmlx_1_1core_1_1_sort.html#a459769a0241b2620e55bedaba19827cd',1,'mlx::core::Sort::eval_cpu()'],['../classmlx_1_1core_1_1_split.html#aff2889cb9074f0fda53edf8fa40b1fd4',1,'mlx::core::Split::eval_cpu()'],['../classmlx_1_1core_1_1_square.html#a1f4d327a705950616da63b83c2829e59',1,'mlx::core::Square::eval_cpu()'],['../classmlx_1_1core_1_1_sqrt.html#a5a64ecc4eef1e30a2963435dca7cefd5',1,'mlx::core::Sqrt::eval_cpu()'],['../classmlx_1_1core_1_1_stop_gradient.html#a56207714d374b08f60e4d9cdbc7340b2',1,'mlx::core::StopGradient::eval_cpu()'],['../classmlx_1_1core_1_1_subtract.html#a47574258b6c95f8ad260c114d6d36a12',1,'mlx::core::Subtract::eval_cpu()'],['../classmlx_1_1core_1_1_tan.html#a9c9a731158fa60eef30067fe0da9f3e9',1,'mlx::core::Tan::eval_cpu()'],['../classmlx_1_1core_1_1_tanh.html#af7ed4345f622da069e5b0284067923f5',1,'mlx::core::Tanh::eval_cpu()'],['../classmlx_1_1core_1_1_uniform.html#a037a2c96b79b70a64f2b637c9f1a432f',1,'mlx::core::Uniform::eval_cpu()'],['../classmlx_1_1core_1_1_view.html#a0ad6deb11914a242f10e8039fcb02497',1,'mlx::core::View::eval_cpu()'],['../classmlx_1_1core_1_1_transpose.html#a1fbcfcca43f9ec06c63a3c14708c30f8',1,'mlx::core::Transpose::eval_cpu()'],['../classmlx_1_1core_1_1_q_r_f.html#a48493887395d65a27f04de1804d277d2',1,'mlx::core::QRF::eval_cpu()'],['../classmlx_1_1core_1_1_s_v_d.html#a637f5c39fa8b10722c04a066f6c1ada6',1,'mlx::core::SVD::eval_cpu()'],['../classmlx_1_1core_1_1_inverse.html#aeb1d8dc9bc4052a616023f65b3c7bb81',1,'mlx::core::Inverse::eval_cpu()'],['../classmlx_1_1core_1_1_cholesky.html#a4bdec36c1cc99aadf9a4a39d4c57bea5',1,'mlx::core::Cholesky::eval_cpu()']]], - ['eval_5fgpu_24',['eval_gpu',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a52df7155f56b8450581b2fd2747cad20',1,'mlx::core::distributed::AllReduce::eval_gpu()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a4251ce0f2db2045226b66210b828af7a',1,'mlx::core::distributed::AllGather::eval_gpu()'],['../classmlx_1_1core_1_1distributed_1_1_send.html#a0c8dbd2a912be91be04ec701e29fba3d',1,'mlx::core::distributed::Send::eval_gpu()'],['../classmlx_1_1core_1_1distributed_1_1_recv.html#a932e39624bc3d234a7489c3decc4749e',1,'mlx::core::distributed::Recv::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#ae7955e8d43c097eecae264e804b4d8ca',1,'mlx::core::fast::RMSNorm::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#a48efb8fa84c4ba6cc9fb560ebbe01560',1,'mlx::core::fast::RMSNormVJP::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a77abda7f47bffa2c037a5d60cccc1528',1,'mlx::core::fast::LayerNorm::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a954a003a4a27c8c4c60a5a14142a9cc3',1,'mlx::core::fast::LayerNormVJP::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a913b6b00fc518b25ac3947e4e15790f2',1,'mlx::core::fast::RoPE::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#a505f38ba93a3499895f5312e0112e73d',1,'mlx::core::fast::ScaledDotProductAttention::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override'],['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#ad51666e69f670e286293aff96eb435a9',1,'mlx::core::fast::ScaledDotProductAttention::eval_gpu(const std::vector< array > &inputs, array &out)'],['../classmlx_1_1core_1_1fast_1_1_affine_quantize.html#a63812b2abaf26ad7e7fa4c9e82db1628',1,'mlx::core::fast::AffineQuantize::eval_gpu()'],['../classmlx_1_1core_1_1fast_1_1_custom_kernel.html#a2ed2a16b23053f8195068386a99fd6db',1,'mlx::core::fast::CustomKernel::eval_gpu()'],['../classmlx_1_1core_1_1_primitive.html#ad217376dcf5eff691d731566faec2ba2',1,'mlx::core::Primitive::eval_gpu()'],['../classmlx_1_1core_1_1_unary_primitive.html#a6b7f80abaf038d53ec6ffbb0dfac6adb',1,'mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, array &output)=0'],['../classmlx_1_1core_1_1_unary_primitive.html#a971fe9ad47f6569118879ce1d0f41447',1,'mlx::core::UnaryPrimitive::eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override'],['../classmlx_1_1core_1_1_abs.html#a0a976e636dd8505b473fbdddf949f514',1,'mlx::core::Abs::eval_gpu()'],['../classmlx_1_1core_1_1_add.html#aa0aacbc1e26b95a2f040f62aa4f69c3d',1,'mlx::core::Add::eval_gpu()'],['../classmlx_1_1core_1_1_add_m_m.html#a5f933be14baebc32a0be0f9a69148aa9',1,'mlx::core::AddMM::eval_gpu()'],['../classmlx_1_1core_1_1_arange.html#a7a2e9787c6c3a78b4a6df91206974031',1,'mlx::core::Arange::eval_gpu()'],['../classmlx_1_1core_1_1_arc_cos.html#a46f72d4af89b0a0f5f203783fb44589c',1,'mlx::core::ArcCos::eval_gpu()'],['../classmlx_1_1core_1_1_arc_cosh.html#aa6a2587485a0e015ac2d5211d7d045fc',1,'mlx::core::ArcCosh::eval_gpu()'],['../classmlx_1_1core_1_1_arc_sin.html#a7fa4ae7a85bc8bed97ea258ae30762f3',1,'mlx::core::ArcSin::eval_gpu()'],['../classmlx_1_1core_1_1_arc_sinh.html#a79f648a86de4c10386a1ce3b5e38e8ac',1,'mlx::core::ArcSinh::eval_gpu()'],['../classmlx_1_1core_1_1_arc_tan.html#a77866feb27028865d844070447c9a254',1,'mlx::core::ArcTan::eval_gpu()'],['../classmlx_1_1core_1_1_arc_tan2.html#a76d3f0c29e0ff4642b8d39dac90d3f50',1,'mlx::core::ArcTan2::eval_gpu()'],['../classmlx_1_1core_1_1_arc_tanh.html#a10566b9d3b2c7d090895b46d9040bc1d',1,'mlx::core::ArcTanh::eval_gpu()'],['../classmlx_1_1core_1_1_arg_partition.html#a9a60995eaf85f63c877e86b23cbc15fc',1,'mlx::core::ArgPartition::eval_gpu()'],['../classmlx_1_1core_1_1_arg_reduce.html#aafa982ce2abc0cd9e81e43aa2c823d29',1,'mlx::core::ArgReduce::eval_gpu()'],['../classmlx_1_1core_1_1_arg_sort.html#abc2d730850ec4ee8d7968b7417911709',1,'mlx::core::ArgSort::eval_gpu()'],['../classmlx_1_1core_1_1_as_type.html#a5b111b9d74c60d27b4a7ebaa49f96e0b',1,'mlx::core::AsType::eval_gpu()'],['../classmlx_1_1core_1_1_as_strided.html#ab6771a208323994927ca162ba7bb10ed',1,'mlx::core::AsStrided::eval_gpu()'],['../classmlx_1_1core_1_1_bitwise_binary.html#ac831a29fc46701b00bbe63ee33832afd',1,'mlx::core::BitwiseBinary::eval_gpu()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#ab372b6df4de00a33795a052a23bb1df9',1,'mlx::core::BlockMaskedMM::eval_gpu()'],['../classmlx_1_1core_1_1_gather_m_m.html#ad754c35f460a055cc383ad93a5f72da1',1,'mlx::core::GatherMM::eval_gpu()'],['../classmlx_1_1core_1_1_broadcast.html#ab9bd9dbcedcefc9b29c84911b5ce69fe',1,'mlx::core::Broadcast::eval_gpu()'],['../classmlx_1_1core_1_1_ceil.html#abe178e0058e44b6618be414215e96887',1,'mlx::core::Ceil::eval_gpu()'],['../classmlx_1_1core_1_1_compiled.html#aa3d5ff0f2b3554ad48fbbf2a0f3336d5',1,'mlx::core::Compiled::eval_gpu()'],['../classmlx_1_1core_1_1_concatenate.html#a309a1c50e97f9925866433ee2841c474',1,'mlx::core::Concatenate::eval_gpu()'],['../classmlx_1_1core_1_1_conjugate.html#aff0a802166e3724db88ab5d3feb2d3de',1,'mlx::core::Conjugate::eval_gpu()'],['../classmlx_1_1core_1_1_convolution.html#a30b64109eeb1778f002b99447dff9dd2',1,'mlx::core::Convolution::eval_gpu()'],['../classmlx_1_1core_1_1_copy.html#a1eda7b2ea771a168f67421f0d384b3a1',1,'mlx::core::Copy::eval_gpu()'],['../classmlx_1_1core_1_1_cos.html#a5ef41aafad595f6cdd8c535e36e12060',1,'mlx::core::Cos::eval_gpu()'],['../classmlx_1_1core_1_1_cosh.html#a23f71b43792934c3ec0ebe9b74f32559',1,'mlx::core::Cosh::eval_gpu()'],['../classmlx_1_1core_1_1_custom_transforms.html#a7b3538681acbb20af3ed37b0877f6667',1,'mlx::core::CustomTransforms::eval_gpu()'],['../classmlx_1_1core_1_1_depends.html#ae5057f65e69490ad0add8eeda2b75e28',1,'mlx::core::Depends::eval_gpu()'],['../classmlx_1_1core_1_1_divide.html#abffda0ce37221ddc28dc9eea794f6bc7',1,'mlx::core::Divide::eval_gpu()'],['../classmlx_1_1core_1_1_div_mod.html#a003117c9ecf3c06a27248f72a76348dc',1,'mlx::core::DivMod::eval_gpu()'],['../classmlx_1_1core_1_1_select.html#a2a82b6cba4c386b2b87f225a4b08ea9b',1,'mlx::core::Select::eval_gpu()'],['../classmlx_1_1core_1_1_remainder.html#a7919ea9b84e42522d51bf0d5a396e161',1,'mlx::core::Remainder::eval_gpu()'],['../classmlx_1_1core_1_1_equal.html#ac3757001fec42ceb5ece2954df42161c',1,'mlx::core::Equal::eval_gpu()'],['../classmlx_1_1core_1_1_erf.html#ad8551be664d767dccc3c0d8cc1eca008',1,'mlx::core::Erf::eval_gpu()'],['../classmlx_1_1core_1_1_erf_inv.html#a4a2413d0634db1f3dae1806ddfa632db',1,'mlx::core::ErfInv::eval_gpu()'],['../classmlx_1_1core_1_1_exp.html#a7d63695a97a14760fd33b5d4e6590822',1,'mlx::core::Exp::eval_gpu()'],['../classmlx_1_1core_1_1_expm1.html#a82930071f4b77d883b300f77966aff5f',1,'mlx::core::Expm1::eval_gpu()'],['../classmlx_1_1core_1_1_f_f_t.html#a1c21b26d1e9ad7c4da78ae845721b2dd',1,'mlx::core::FFT::eval_gpu()'],['../classmlx_1_1core_1_1_floor.html#aaa29c83538099eb8f951c95a41f2eb65',1,'mlx::core::Floor::eval_gpu()'],['../classmlx_1_1core_1_1_full.html#aa54f99bb4cba12a551392dea56003872',1,'mlx::core::Full::eval_gpu()'],['../classmlx_1_1core_1_1_gather.html#aec48ee529cb2449915a7b27a3c4361e8',1,'mlx::core::Gather::eval_gpu()'],['../classmlx_1_1core_1_1_greater.html#ae8957cccf4c924d941f57a1bb751c878',1,'mlx::core::Greater::eval_gpu()'],['../classmlx_1_1core_1_1_greater_equal.html#ac246263b4548126c3d4ab7e392575d24',1,'mlx::core::GreaterEqual::eval_gpu()'],['../classmlx_1_1core_1_1_hadamard.html#a2470feb690f5463138490763c38b5733',1,'mlx::core::Hadamard::eval_gpu()'],['../classmlx_1_1core_1_1_less.html#a353335ce06ddbe8498d86d129c835917',1,'mlx::core::Less::eval_gpu()'],['../classmlx_1_1core_1_1_less_equal.html#acf035a82b11e6f63742143ea540fedac',1,'mlx::core::LessEqual::eval_gpu()'],['../classmlx_1_1core_1_1_load.html#a06933e887ea94a4d01d81195c5e07a3d',1,'mlx::core::Load::eval_gpu()'],['../classmlx_1_1core_1_1_log.html#aaaa49e9455f3a197bc319646b5ca6390',1,'mlx::core::Log::eval_gpu()'],['../classmlx_1_1core_1_1_log1p.html#a1b97decae7338d46874e736c95fa7431',1,'mlx::core::Log1p::eval_gpu()'],['../classmlx_1_1core_1_1_logical_not.html#a1d0d2bc93f935eca6c85ef7bf67f2d6a',1,'mlx::core::LogicalNot::eval_gpu()'],['../classmlx_1_1core_1_1_logical_and.html#a132b2eedaa3978de5a5350da3c2ca40f',1,'mlx::core::LogicalAnd::eval_gpu()'],['../classmlx_1_1core_1_1_logical_or.html#a3be1da328f0f8620de2e4fc1d22a077a',1,'mlx::core::LogicalOr::eval_gpu()'],['../classmlx_1_1core_1_1_log_add_exp.html#acace355b62ec00df649f9f99e8f2eb7a',1,'mlx::core::LogAddExp::eval_gpu()'],['../classmlx_1_1core_1_1_matmul.html#a8707a4e9b75c769e8f1dbca15c6a1ae7',1,'mlx::core::Matmul::eval_gpu()'],['../classmlx_1_1core_1_1_maximum.html#ade0f721b10a6b3a12bdadd34c48f72a7',1,'mlx::core::Maximum::eval_gpu()'],['../classmlx_1_1core_1_1_minimum.html#aadc68afa0afbe2103f19d161f5e0a2ba',1,'mlx::core::Minimum::eval_gpu()'],['../classmlx_1_1core_1_1_multiply.html#a634fcb4e981d8d3f4d94252caf25bee0',1,'mlx::core::Multiply::eval_gpu()'],['../classmlx_1_1core_1_1_negative.html#a97f1b316eace0c6d9e576d766940c75b',1,'mlx::core::Negative::eval_gpu()'],['../classmlx_1_1core_1_1_not_equal.html#a61179747e34e203150e9c660dfddb5f2',1,'mlx::core::NotEqual::eval_gpu()'],['../classmlx_1_1core_1_1_number_of_elements.html#a2c98c42915fb2bfe12f5c99ea553eff5',1,'mlx::core::NumberOfElements::eval_gpu()'],['../classmlx_1_1core_1_1_pad.html#aefd4d3a5bd8b6b35b266c9e558ada153',1,'mlx::core::Pad::eval_gpu()'],['../classmlx_1_1core_1_1_partition.html#a8eca1be21ae9ccfda46e6f3e85f506ef',1,'mlx::core::Partition::eval_gpu()'],['../classmlx_1_1core_1_1_power.html#a80577d4c0853c24027777c90a1ec7e11',1,'mlx::core::Power::eval_gpu()'],['../classmlx_1_1core_1_1_quantized_matmul.html#a2812ad007d695ed1aaf9cf706fb9c4b3',1,'mlx::core::QuantizedMatmul::eval_gpu()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a86eb048afc95646b2e96ec5493e3d887',1,'mlx::core::GatherQMM::eval_gpu()'],['../classmlx_1_1core_1_1_random_bits.html#a578756866665358577418e4cdd94aa3a',1,'mlx::core::RandomBits::eval_gpu()'],['../classmlx_1_1core_1_1_reshape.html#aa1e85f28471875750c47351520b56059',1,'mlx::core::Reshape::eval_gpu()'],['../classmlx_1_1core_1_1_reduce.html#ae9caaf42edadfe73ea208d98f526890f',1,'mlx::core::Reduce::eval_gpu()'],['../classmlx_1_1core_1_1_round.html#af7fe5ff8f3db166c203b4be4b07f13ec',1,'mlx::core::Round::eval_gpu()'],['../classmlx_1_1core_1_1_scan.html#aef22c6fc2b2cb2a907cd8965c7413dde',1,'mlx::core::Scan::eval_gpu()'],['../classmlx_1_1core_1_1_scatter.html#ab304345db3d8cfeea15e27461ae2e678',1,'mlx::core::Scatter::eval_gpu()'],['../classmlx_1_1core_1_1_sigmoid.html#a7a6bd0222d51d7f25f2719a91ccdfeca',1,'mlx::core::Sigmoid::eval_gpu()'],['../classmlx_1_1core_1_1_sign.html#afa2b48b99a194106006b44af69ffda8b',1,'mlx::core::Sign::eval_gpu()'],['../classmlx_1_1core_1_1_sin.html#a6b59f1156cf8bdad8d45acd1d825cb5e',1,'mlx::core::Sin::eval_gpu()'],['../classmlx_1_1core_1_1_sinh.html#a5a1af2399f166d5b228b5e83a1837c75',1,'mlx::core::Sinh::eval_gpu()'],['../classmlx_1_1core_1_1_slice.html#aa53c21ff06a7c659e889af6b97d10a4a',1,'mlx::core::Slice::eval_gpu()'],['../classmlx_1_1core_1_1_slice_update.html#aac1a1d122e5697be057d63552141032b',1,'mlx::core::SliceUpdate::eval_gpu()'],['../classmlx_1_1core_1_1_softmax.html#a35dac69ddcc7e2ec0e1a76fe93db85af',1,'mlx::core::Softmax::eval_gpu()'],['../classmlx_1_1core_1_1_sort.html#a4141c48f0e8670c728663f3722675382',1,'mlx::core::Sort::eval_gpu()'],['../classmlx_1_1core_1_1_split.html#a78ddda89c4daee73c74cfbc1e44656df',1,'mlx::core::Split::eval_gpu()'],['../classmlx_1_1core_1_1_square.html#a0ea2a78a5bb52daa4103263bf2f98045',1,'mlx::core::Square::eval_gpu()'],['../classmlx_1_1core_1_1_sqrt.html#a6d205e679a593d1ba20206c5c47ba501',1,'mlx::core::Sqrt::eval_gpu()'],['../classmlx_1_1core_1_1_stop_gradient.html#a907b96f0a1ce608e211d87ccf2b9ca89',1,'mlx::core::StopGradient::eval_gpu()'],['../classmlx_1_1core_1_1_subtract.html#a69021b23daf061764d97fabbc0f4f06c',1,'mlx::core::Subtract::eval_gpu()'],['../classmlx_1_1core_1_1_tan.html#aca7dbb4836507005a2032ac957a04d3f',1,'mlx::core::Tan::eval_gpu()'],['../classmlx_1_1core_1_1_tanh.html#a48df896599ae93dbce84a5c0f50cf761',1,'mlx::core::Tanh::eval_gpu()'],['../classmlx_1_1core_1_1_uniform.html#a5f88cbf2495f24f87cefd99aaaebe4d0',1,'mlx::core::Uniform::eval_gpu()'],['../classmlx_1_1core_1_1_view.html#add6e12ff1e476fe1db7718b14f21b075',1,'mlx::core::View::eval_gpu()'],['../classmlx_1_1core_1_1_transpose.html#a38d25739c08aa594a6775015a1d7d92e',1,'mlx::core::Transpose::eval_gpu()'],['../classmlx_1_1core_1_1_q_r_f.html#ae5fa3482192f4713605cd07e7fc1c6c9',1,'mlx::core::QRF::eval_gpu()'],['../classmlx_1_1core_1_1_s_v_d.html#a7067b2207f826a25549d571856b94e83',1,'mlx::core::SVD::eval_gpu()'],['../classmlx_1_1core_1_1_inverse.html#a086fbbc947ad232e01686ad063a78ed2',1,'mlx::core::Inverse::eval_gpu()'],['../classmlx_1_1core_1_1_cholesky.html#a8c918594bf129888044ef37fcae56795',1,'mlx::core::Cholesky::eval_gpu()']]], - ['event_25',['Event',['../classmlx_1_1core_1_1_event.html#a833506419b2110ad1abd89b2dd238b4d',1,'mlx::core::Event::Event()=default'],['../classmlx_1_1core_1_1_event.html#a13e4835f2ffb2cc22e29148a448ea184',1,'mlx::core::Event::Event(const Stream &steam)']]], - ['event_26',['event',['../classmlx_1_1core_1_1array.html#a0a8e4d6e67e739a712876bb36f88f9bf',1,'mlx::core::array']]], - ['exec_27',['exec',['../classpocketfft_1_1detail_1_1cfftp.html#a95211024bf007d27e700835db556fbd2',1,'pocketfft::detail::cfftp::exec()'],['../classpocketfft_1_1detail_1_1rfftp.html#a073972f42bdd3617693be7be2cb5e0ac',1,'pocketfft::detail::rfftp::exec()'],['../classpocketfft_1_1detail_1_1fftblue.html#a5fb03413a3d1a653842875adcf87ae8c',1,'pocketfft::detail::fftblue::exec()'],['../classpocketfft_1_1detail_1_1pocketfft__c.html#a436afd63e8e130f97aff103ae964a45d',1,'pocketfft::detail::pocketfft_c::exec()'],['../classpocketfft_1_1detail_1_1pocketfft__r.html#a2815bc8aa04fa986834b02e502f98b33',1,'pocketfft::detail::pocketfft_r::exec()'],['../classpocketfft_1_1detail_1_1_t__dct1.html#a7736111ff9d220f983e41a6fecd5f058',1,'pocketfft::detail::T_dct1::exec()'],['../classpocketfft_1_1detail_1_1_t__dst1.html#a598a9511004263eb3610053d7efc9e26',1,'pocketfft::detail::T_dst1::exec()'],['../classpocketfft_1_1detail_1_1_t__dcst23.html#a2a45b7b4612904c2be69c01f6d5029ac',1,'pocketfft::detail::T_dcst23::exec()'],['../classpocketfft_1_1detail_1_1_t__dcst4.html#af794ebf21009d5f918681188081df708',1,'pocketfft::detail::T_dcst4::exec()']]], - ['exec_5fr_28',['exec_r',['../classpocketfft_1_1detail_1_1fftblue.html#a642b4aff0485c7d9c8794161a1464f00',1,'pocketfft::detail::fftblue']]], - ['exp_29',['Exp',['../classmlx_1_1core_1_1_exp.html#a1d0a618cbb91ab29ef53b57ff6ed6e06',1,'mlx::core::Exp']]], - ['exp_30',['exp',['../namespacemetal.html#ac2a0b3618d922ac014baac8189d44650',1,'metal::exp()'],['../namespacemetal_1_1fast.html#ad3dbd387b63373c29e3449609f763ede',1,'metal::fast::exp()'],['../namespacemetal_1_1precise.html#a8d8d2d5700ce432b33cf47cf22528e8f',1,'metal::precise::exp()'],['../group__ops.html#ga8a3b04e23e347d99ecf411fd6f4e5125',1,'mlx::core::exp()']]], - ['exp10_31',['exp10',['../namespacemetal.html#a4c63707d13c89364496a48906631c204',1,'metal::exp10()'],['../namespacemetal_1_1fast.html#a453122f982485cbb4e471b3ac282ee5e',1,'metal::fast::exp10()'],['../namespacemetal_1_1precise.html#af9addb343c967da3a83e9e123a8521fd',1,'metal::precise::exp10()']]], - ['exp2_32',['exp2',['../namespacemetal.html#a228201c20777848804a4d0589c1d33e7',1,'metal::exp2()'],['../namespacemetal_1_1fast.html#ac092b65a46720adaf22f6266671d2d71',1,'metal::fast::exp2()'],['../namespacemetal_1_1precise.html#a92a880bd2197efc0da0f8f0f7ec1e4c9',1,'metal::precise::exp2()']]], - ['expand_5fdims_33',['expand_dims',['../group__ops.html#ga717f11149a8c7b4cc3e33bbcc0a97133',1,'mlx::core::expand_dims(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../group__ops.html#ga7a80adb4a5a36d18b5f234d4b034950a',1,'mlx::core::expand_dims(const array &a, int axis, StreamOrDevice s={})']]], - ['expm1_34',['Expm1',['../classmlx_1_1core_1_1_expm1.html#a47c2a1b2a4ef6bb07ba77c55ddddaec2',1,'mlx::core::Expm1']]], - ['expm1_35',['expm1',['../group__ops.html#ga54ca54f06bfb2be15b163a5209e2a0f0',1,'mlx::core']]], - ['expm1f_36',['expm1f',['../expm1f_8h.html#a87f66d30e185950f42ce3641783cdc40',1,'expm1f.h']]], - ['expm1f_5fscaled_5funchecked_37',['expm1f_scaled_unchecked',['../expm1f_8h.html#adf20e03405fba634ca8d01acac24592e',1,'expm1f.h']]], - ['export_5fto_5fdot_38',['export_to_dot',['../namespacemlx_1_1core.html#a57395bdf43d9c5c134e610c169222cca',1,'mlx::core::export_to_dot(std::ostream &os, const std::vector< array > &outputs)'],['../namespacemlx_1_1core.html#a839f94dbad44f0d37333006fc876b42e',1,'mlx::core::export_to_dot(std::ostream &os, Arrays &&... outputs)']]], - ['eye_39',['eye',['../group__ops.html#ga45e9e68246b0d1cf03c3cc9c9e7e6ae3',1,'mlx::core::eye(int n, int m, int k, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga2c9011310a1fa7c82f942f54102c36dd',1,'mlx::core::eye(int n, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga61657db78ef35d41112d362c869c25d2',1,'mlx::core::eye(int n, int m, StreamOrDevice s={})'],['../group__ops.html#ga908a15b42834be498a46856c99dfc779',1,'mlx::core::eye(int n, int m, int k, StreamOrDevice s={})'],['../group__ops.html#gab777fcf6d4a89172c69ec3492548dc0f',1,'mlx::core::eye(int n, StreamOrDevice s={})']]] -]; diff --git a/docs/build/html/search/functions_6.js b/docs/build/html/search/functions_6.js deleted file mode 100644 index 5ecae2da..00000000 --- a/docs/build/html/search/functions_6.js +++ /dev/null @@ -1,34 +0,0 @@ -var searchData= -[ - ['fabs_0',['fabs',['../namespacemetal.html#a487eba718144be1325abcf66e109bb21',1,'metal::fabs()'],['../namespacemetal_1_1fast.html#a129fbd68c9df1a437e8959a25187f554',1,'metal::fast::fabs()'],['../namespacemetal_1_1precise.html#ae4c71d8bc8ef291036a7aaa05f8be3d1',1,'metal::precise::fabs()']]], - ['fast_5ferf_1',['fast_erf',['../namespacemlx_1_1core_1_1detail.html#a90c9f6149af5adf4e2a95608d5f7b790',1,'mlx::core::detail']]], - ['fast_5ferfinv_2',['fast_erfinv',['../namespacemlx_1_1core_1_1detail.html#ad0ff3975e4c96317df1a2de0f7a30c1d',1,'mlx::core::detail']]], - ['fast_5fexp_3',['fast_exp',['../namespacemlx_1_1core_1_1detail.html#a2726436fc72d4a3f0030c89579b4d374',1,'mlx::core::detail']]], - ['fdim_4',['fdim',['../namespacemetal.html#a85a560794be56d8116889c1ee2d78761',1,'metal::fdim()'],['../namespacemetal_1_1fast.html#a667df76100d5ea0ce5860ddae3e5a00b',1,'metal::fast::fdim()'],['../namespacemetal_1_1precise.html#af693e7c93de446e80dd1377f5e9e7260',1,'metal::precise::fdim()']]], - ['fft_5',['FFT',['../classmlx_1_1core_1_1_f_f_t.html#a0cdce626ed2c8eeeecc6949418437839',1,'mlx::core::FFT']]], - ['fft_6',['fft',['../namespacemlx_1_1core_1_1metal.html#a39f43360d9e916fcf7e86c919b419554',1,'mlx::core::metal::fft()'],['../backend_2metal_2kernels_2fft_8h.html#a4010b0e151e5f01e610e9c32234458c7',1,'fft(): fft.h'],['../namespacemlx_1_1core_1_1fft.html#ad672de5ca029a6925b05f03bbebe5ad3',1,'mlx::core::fft::fft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a3fe55b7b6eba32c4c8b2d206036216e0',1,'mlx::core::fft::fft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['fft2_7',['fft2',['../namespacemlx_1_1core_1_1fft.html#a02a7286e4b7a8ee149ec5d5b193b72d1',1,'mlx::core::fft::fft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a6eb0c5f8b33694ddb56748a97d17e8b7',1,'mlx::core::fft::fft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['fftblue_8',['fftblue',['../classpocketfft_1_1detail_1_1fftblue.html#a8613b2131e7843bbca9e1cd4cc15bc01',1,'pocketfft::detail::fftblue']]], - ['fftn_9',['fftn',['../namespacemlx_1_1core_1_1fft.html#a26e310c739176796965e47a88c7a998f',1,'mlx::core::fft::fftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#aaa116429c2cb5bab20b464be890252c8',1,'mlx::core::fft::fftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a039a44197ad299a15a5847639292800c',1,'mlx::core::fft::fftn(const array &a, StreamOrDevice s={})']]], - ['filewriter_10',['FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html#a40b241ad540ee4aadc3a19a6b1ccfb4d',1,'mlx::core::io::FileWriter']]], - ['fill_5fgpu_11',['fill_gpu',['../namespacemlx_1_1core.html#ae789dbda2a0f4e21aa0984f6a5dc986c',1,'mlx::core']]], - ['flags_12',['flags',['../classmlx_1_1core_1_1array.html#a0a20a6065ae71b64c1e3aa22a45fd8a1',1,'mlx::core::array']]], - ['flatten_13',['flatten',['../group__ops.html#ga50aa98754b412bb57c083f6e3e95061f',1,'mlx::core::flatten(const array &a, int start_axis, int end_axis=-1, StreamOrDevice s={})'],['../group__ops.html#gaa6adbc9c86f0ab27d8810a02e9e719fd',1,'mlx::core::flatten(const array &a, StreamOrDevice s={})']]], - ['float_5fto_5fbfloat_5fbits_14',['float_to_bfloat_bits',['../backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1',1,'bf16.h']]], - ['floor_15',['Floor',['../classmlx_1_1core_1_1_floor.html#ada4e979b784b732696313d7094e91340',1,'mlx::core::Floor']]], - ['floor_16',['floor',['../namespacemetal.html#a020790f30c28a9982c4a83deaa258277',1,'metal::floor()'],['../namespacemetal_1_1fast.html#ac012ce1701c2339914f15cce9f2c632f',1,'metal::fast::floor()'],['../namespacemetal_1_1precise.html#a66e02b028e3cecfe7c80773460dc7925',1,'metal::precise::floor()'],['../group__ops.html#ga8d656904aa2690b60955ae745aecfc30',1,'mlx::core::floor(const array &a, StreamOrDevice s={})']]], - ['floor_5fdivide_17',['floor_divide',['../group__ops.html#ga05b4c6054d028107869511f927da01cd',1,'mlx::core']]], - ['fma_18',['fma',['../namespacemetal.html#a6301a78d69ff14a06194ca85a0c7d326',1,'metal::fma()'],['../namespacemetal_1_1fast.html#aebcd6e951da6f7157ec219eb7a8f1ddd',1,'metal::fast::fma()'],['../namespacemetal_1_1precise.html#a49391a64d6b66fe3a212516b316a2144',1,'metal::precise::fma()']]], - ['fmax_19',['fmax',['../namespacemetal.html#a0558e56fdb94b456deea6a4eb53964ed',1,'metal::fmax()'],['../namespacemetal_1_1fast.html#a26e3257cf877154f8a0d434be0bdb034',1,'metal::fast::fmax()'],['../namespacemetal_1_1precise.html#ac7d49f921c2883caf9eec66efc4de1cd',1,'metal::precise::fmax()']]], - ['fmax3_20',['fmax3',['../namespacemetal.html#ae0c1a7ba1a7449adc64d00b2a29e67f6',1,'metal::fmax3()'],['../namespacemetal_1_1fast.html#a5c6a3a389f348e1f92e8392b765a32c7',1,'metal::fast::fmax3()'],['../namespacemetal_1_1precise.html#adf750e51bd83d569994d0967029e3bdc',1,'metal::precise::fmax3()']]], - ['fmedian3_21',['fmedian3',['../namespacemetal.html#aa35227450d943fb88cf43162aa9d8c49',1,'metal::fmedian3()'],['../namespacemetal_1_1fast.html#a923869181c3f576f2d86fba5bfa85633',1,'metal::fast::fmedian3()'],['../namespacemetal_1_1precise.html#a48d1d0be889de4043b775bb6b030a989',1,'metal::precise::fmedian3()']]], - ['fmin_22',['fmin',['../namespacemetal.html#a66ac19825ea79b8294e243ae6d0b3d3c',1,'metal::fmin()'],['../namespacemetal_1_1fast.html#a7e202ec52bf12bfabdf2265b300acbfa',1,'metal::fast::fmin()'],['../namespacemetal_1_1precise.html#a18df8eb481dfa56c92ad31b5bab8e069',1,'metal::precise::fmin()']]], - ['fmin3_23',['fmin3',['../namespacemetal.html#ae2acd25f2241f00aaf89ff48f132a879',1,'metal::fmin3()'],['../namespacemetal_1_1fast.html#a9531c6a4a520927523961e6eb6b94c1a',1,'metal::fast::fmin3()'],['../namespacemetal_1_1precise.html#a5bb710e6742996d32225a8f54a0f116c',1,'metal::precise::fmin3()']]], - ['fmod_24',['fmod',['../namespacemetal.html#a2ff952d4d596a7969b2a3035fc2fda58',1,'metal::fmod()'],['../namespacemetal_1_1fast.html#adbec09f18a89f773d7e368ef04a69526',1,'metal::fast::fmod()'],['../namespacemetal_1_1precise.html#aa99937178a1fc8158054e328eeeae648',1,'metal::precise::fmod()']]], - ['four_5fstep_5ffft_25',['four_step_fft',['../backend_2metal_2kernels_2fft_8h.html#a6558a8205ee4c3e4767bafa93f7606de',1,'fft.h']]], - ['fract_26',['fract',['../namespacemetal.html#a6b1c15d251aeaacb1f4338a5e152ae78',1,'metal::fract()'],['../namespacemetal_1_1fast.html#aa8bb448827503e485eb649eb3edb2d4c',1,'metal::fast::fract()'],['../namespacemetal_1_1precise.html#a0f21c19332a90df1a8ff507a813b5757',1,'metal::precise::fract()']]], - ['free_27',['free',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#ae963d551be646ae0e13df2c16f2beefb',1,'mlx::core::allocator::Allocator::free()'],['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#a84b50d1a3cbffa12c1a6cf0ed8c71079',1,'mlx::core::allocator::CommonAllocator::free()'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a109a0a37fb0b3be381a62dc3b1a54bf0',1,'mlx::core::metal::MetalAllocator::free()'],['../namespacemlx_1_1core_1_1allocator.html#a77f0a1215be242db6485612bcb273af5',1,'mlx::core::allocator::free()']]], - ['frexp_28',['frexp',['../namespacemetal.html#ac89d4ef524d21a301da6c37dbd95ff9f',1,'metal::frexp()'],['../namespacemetal_1_1fast.html#a23902df22aeaa859ef673a36381387c2',1,'metal::fast::frexp()'],['../namespacemetal_1_1precise.html#a0fbb1624c308b97380f894f92fd858b4',1,'metal::precise::frexp()']]], - ['full_29',['Full',['../classmlx_1_1core_1_1_full.html#aafcb86a2e41353853ec48c717e0c54d6',1,'mlx::core::Full']]], - ['full_30',['full',['../group__ops.html#ga7e85a476530c96ab73b894d1bddacf84',1,'mlx::core::full(std::vector< int > shape, array vals, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga9e3b15c3ec6b7922296777c5e1878d52',1,'mlx::core::full(std::vector< int > shape, array vals, StreamOrDevice s={})'],['../group__ops.html#gac34ff7f1e217b93e878053aaa5a51e58',1,'mlx::core::full(std::vector< int > shape, T val, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga5e33cf83db1a65c35e688142bd41d35c',1,'mlx::core::full(std::vector< int > shape, T val, StreamOrDevice s={})']]] -]; diff --git a/docs/build/html/search/functions_7.js b/docs/build/html/search/functions_7.js deleted file mode 100644 index bd6b61e5..00000000 --- a/docs/build/html/search/functions_7.js +++ /dev/null @@ -1,76 +0,0 @@ -var searchData= -[ - ['gather_0',['Gather',['../classmlx_1_1core_1_1_gather.html#a5b5f47ceff1d43477c87be5116f261d0',1,'mlx::core::Gather']]], - ['gather_1',['gather',['../namespacemlx_1_1core_1_1metal.html#a545de371fefba1feec2e70b7e9f4187c',1,'mlx::core::metal::gather()'],['../group__ops.html#gab6e7f655a9ff15350ca5379692f9d444',1,'mlx::core::gather(const array &a, const std::vector< array > &indices, const std::vector< int > &axes, const std::vector< int > &slice_sizes, StreamOrDevice s={})'],['../group__ops.html#gadb4337ca5d4f88fe9e7c083bc478158b',1,'mlx::core::gather(const array &a, const array &indices, int axis, const std::vector< int > &slice_sizes, StreamOrDevice s={})']]], - ['gather_5fimpl_2',['gather_impl',['../gather_8h.html#abdec470e1af0109563ddae3e85e6526c',1,'gather.h']]], - ['gather_5fmm_3',['gather_mm',['../group__ops.html#ga8d50480266d258cac40ff51bcb0fc6a7',1,'mlx::core']]], - ['gather_5fqmm_4',['gather_qmm',['../group__ops.html#ga368a0dc0e5dfb76922e7aa55a95f12f0',1,'mlx::core']]], - ['gathermm_5',['GatherMM',['../classmlx_1_1core_1_1_gather_m_m.html#afd9bbc08138181b80e2fb86536ff3f2a',1,'mlx::core::GatherMM']]], - ['gatherqmm_6',['GatherQMM',['../classmlx_1_1core_1_1_gather_q_m_m.html#a60ed2ade7f10dd9c9314913a810f9360',1,'mlx::core::GatherQMM']]], - ['gemm_7',['gemm',['../namespacemlx_1_1core_1_1metal.html#ac46fd23516a61fc56d997910e4144281',1,'mlx::core::metal::gemm()'],['../steel__gemm__fused_8h.html#aa40dd40b9a0bbf20c8911032ed0c3e6d',1,'gemm(): steel_gemm_fused.h']]], - ['gemm_5floop_8',['gemm_loop',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a756d7bbcc96e2919cd65eec4bc135780',1,'mlx::steel::GEMMKernel']]], - ['gemm_5fsplitk_9',['gemm_splitk',['../steel__gemm__splitk_8h.html#a3be6e095a0a026d3ecf57a3e67f76188',1,'steel_gemm_splitk.h']]], - ['gemm_5fsplitk_5faccum_10',['gemm_splitk_accum',['../steel__gemm__splitk_8h.html#abeb921bf1dc7941125188ddd390b0907',1,'steel_gemm_splitk.h']]], - ['gemm_5fsplitk_5faccum_5faxpby_11',['gemm_splitk_accum_axpby',['../steel__gemm__splitk_8h.html#acc33fdfaaf3eb3a0629b3d52c7043dc1',1,'steel_gemm_splitk.h']]], - ['gemv_5fmasked_12',['gemv_masked',['../namespacemlx_1_1core_1_1metal.html#abc055b75e6a059618f279c35f8de36e7',1,'mlx::core::metal::gemv_masked()'],['../kernels_2gemv__masked_8h.html#ab3070d14cdecb1dd7dc220a551da6b7b',1,'gemv_masked(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const constant int &batch_ndim, const constant int *batch_shape, const constant size_t *vector_batch_stride, const constant size_t *matrix_batch_stride, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, const constant size_t *mask_batch_strides, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid): gemv_masked.h']]], - ['gemv_5ft_5fmasked_13',['gemv_t_masked',['../kernels_2gemv__masked_8h.html#a0c8d353fc453e448b2d0ed9a19431b63',1,'gemv_masked.h']]], - ['general_5fc2r_14',['general_c2r',['../namespacepocketfft_1_1detail.html#ac8ee38e8d8bcda875c99eeaf567550fc',1,'pocketfft::detail']]], - ['general_5fnd_15',['general_nd',['../namespacepocketfft_1_1detail.html#ab47f52551920af5eb9f57fbbded0f4f0',1,'pocketfft::detail']]], - ['general_5fr2c_16',['general_r2c',['../namespacepocketfft_1_1detail.html#a055a39b0a337ca12217717196eb92fed',1,'pocketfft::detail']]], - ['get_5f2d_5fgrid_5fdims_17',['get_2d_grid_dims',['../namespacemlx_1_1core.html#a8dc169474a51a1f4f761d5752819bd7c',1,'mlx::core']]], - ['get_5factive_5fmemory_18',['get_active_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a7a3ad4e33d57a47474c98e2f88e775d7',1,'mlx::core::metal::MetalAllocator::get_active_memory()'],['../namespacemlx_1_1core_1_1metal.html#a7b75c2639016ac4d350fa6c9da386667',1,'mlx::core::metal::get_active_memory()']]], - ['get_5farange_5fkernel_19',['get_arange_kernel',['../namespacemlx_1_1core.html#a76f614e9956a6ca05a9be4db5a483446',1,'mlx::core']]], - ['get_5fbinary_5fkernel_20',['get_binary_kernel',['../namespacemlx_1_1core.html#a4decd4a07d91487e6903f6e3c8b7513a',1,'mlx::core']]], - ['get_5fbinary_5ftwo_5fkernel_21',['get_binary_two_kernel',['../namespacemlx_1_1core.html#a4e809746f48e5dcf7fa63215d3f5e33e',1,'mlx::core']]], - ['get_5fblock_5fdims_22',['get_block_dims',['../namespacemlx_1_1core.html#a7b3f872f6046bdd4d429ee1f1c31cd40',1,'mlx::core']]], - ['get_5fcache_5fmemory_23',['get_cache_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#ad3cabbe638917ca4114eb74dcabe381f',1,'mlx::core::metal::MetalAllocator::get_cache_memory()'],['../namespacemlx_1_1core_1_1metal.html#a43307654f62ed7c58e014be7fb03909c',1,'mlx::core::metal::get_cache_memory()']]], - ['get_5fcolocated_5fmtllib_5fpath_24',['get_colocated_mtllib_path',['../namespacemlx_1_1core_1_1metal.html#a5fd6ba2040e53a254b9d71ae7ebd315f',1,'mlx::core::metal']]], - ['get_5fcommand_5fbuffer_25',['get_command_buffer',['../classmlx_1_1core_1_1metal_1_1_device.html#a5fe3970fbe92ccc55fce4241ffbe5210',1,'mlx::core::metal::Device']]], - ['get_5fcommand_5fbuffer_5fops_26',['get_command_buffer_ops',['../classmlx_1_1core_1_1metal_1_1_device.html#a064e1cb6a16de7a0619f6447622350f8',1,'mlx::core::metal::Device']]], - ['get_5fcommand_5fencoder_27',['get_command_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#affa682ef612def4890f5152f81ffb7e6',1,'mlx::core::metal::Device']]], - ['get_5fcopy_5fkernel_28',['get_copy_kernel',['../namespacemlx_1_1core.html#a05a220cff45f12439fde775983c6df78',1,'mlx::core']]], - ['get_5fdefault_5fstream_29',['get_default_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a2366c7b888e433608e203752edc92282',1,'mlx::core::scheduler::Scheduler']]], - ['get_5ffft_5fkernel_30',['get_fft_kernel',['../namespacemlx_1_1core.html#a1d4cffc3c78067b3d9a62d64f3fb686f',1,'mlx::core']]], - ['get_5ffunction_31',['get_function',['../classmlx_1_1core_1_1metal_1_1_device.html#abf4ecf035e8be2ff00d2a7e95475d7ac',1,'mlx::core::metal::Device::get_function(const std::string &base_name, MTL::Library *mtl_lib, const std::string &specialized_name="", const MTLFCList &func_consts={})'],['../classmlx_1_1core_1_1metal_1_1_device.html#ac083535ead07161cb27ad31f8f64fb84',1,'mlx::core::metal::Device::get_function(const std::string &base_name, const std::string &lib_name="mlx", const std::string &specialized_name="", const MTLFCList &func_consts={})']]], - ['get_5fgemv_5fmasked_5fkernel_32',['get_gemv_masked_kernel',['../namespacemlx_1_1core.html#a90c24e0d0b99b68fad9deefcf4d3e818',1,'mlx::core']]], - ['get_5fkernel_33',['get_kernel',['../classmlx_1_1core_1_1metal_1_1_device.html#a6810c4dcbcfbf93fc51d42aa5ff0fc3a',1,'mlx::core::metal::Device::get_kernel(const std::string &base_name, MTL::Library *mtl_lib, const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})'],['../classmlx_1_1core_1_1metal_1_1_device.html#afa0cac9d800c21a8a7f6cb224256abaf',1,'mlx::core::metal::Device::get_kernel(const std::string &base_name, const std::string &lib_name="mlx", const std::string &hash_name="", const MTLFCList &func_consts={}, const std::vector< MTL::Function * > &linked_functions={})']]], - ['get_5fkernel_5fpreamble_34',['get_kernel_preamble',['../compiled__preamble_8h.html#a1dfa17a0369fb90ff615c7461f5013f3',1,'compiled_preamble.h']]], - ['get_5flibrary_35',['get_library',['../classmlx_1_1core_1_1metal_1_1_device.html#a86297d66de43ee77d0697f69c6bd0b87',1,'mlx::core::metal::Device::get_library(const std::string &name)'],['../classmlx_1_1core_1_1metal_1_1_device.html#a961d3cdb4bfb14c1a0b0aeb05609f56e',1,'mlx::core::metal::Device::get_library(const std::string &name, const std::string &source_string, bool cache=true)'],['../classmlx_1_1core_1_1metal_1_1_device.html#a8d8d9e28ffeea10d687b91ea480fb4bd',1,'mlx::core::metal::Device::get_library(const std::string &name, const MTL::StitchedLibraryDescriptor *desc, bool cache=true)']]], - ['get_5fmb_5fsort_5fkernel_36',['get_mb_sort_kernel',['../namespacemlx_1_1core.html#afb57825bb763050cc9a9d194aa41ac36',1,'mlx::core']]], - ['get_5fname_37',['get_name',['../structmlx_1_1core_1_1_node_namer.html#a1690dd38de288c0aee2bb53156eb770e',1,'mlx::core::NodeNamer']]], - ['get_5fpeak_5fmemory_38',['get_peak_memory',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#ac7972a3fe58e69489de775a0f152da17',1,'mlx::core::metal::MetalAllocator::get_peak_memory()'],['../namespacemlx_1_1core_1_1metal.html#a4b67d680cefa95f0ed5801f0e14e48ce',1,'mlx::core::metal::get_peak_memory()']]], - ['get_5fplan_39',['get_plan',['../namespacepocketfft_1_1detail.html#ab24cdb6118901f4d3c8df06ef0f8390b',1,'pocketfft::detail']]], - ['get_5fpool_40',['get_pool',['../namespacepocketfft_1_1detail_1_1threading.html#a7ec2b3f99232bd0f15f7b022c59d139a',1,'pocketfft::detail::threading']]], - ['get_5fprimitive_5fstring_41',['get_primitive_string',['../namespacemlx_1_1core.html#ad4be35b310a252edd80d9cf04f094a60',1,'mlx::core']]], - ['get_5fquantized_5fkernel_42',['get_quantized_kernel',['../namespacemlx_1_1core.html#aa3faeae5378bfaafe3ce3432a051e43e',1,'mlx::core']]], - ['get_5freduce_5finit_5fkernel_43',['get_reduce_init_kernel',['../namespacemlx_1_1core.html#a51c4bb09230348bd0252e22bfdc9bc89',1,'mlx::core']]], - ['get_5freduce_5fkernel_44',['get_reduce_kernel',['../namespacemlx_1_1core.html#a7aa91fcfe8b9caa42d60a957f11bfe6b',1,'mlx::core']]], - ['get_5freduction_5fplan_45',['get_reduction_plan',['../namespacemlx_1_1core.html#ac97b5a6f009ca3d99854ce9512c20dba',1,'mlx::core']]], - ['get_5fscan_5fkernel_46',['get_scan_kernel',['../namespacemlx_1_1core.html#aeefaff208444d3fa61ecc0946fe1de5f',1,'mlx::core']]], - ['get_5fshape_47',['get_shape',['../namespacemlx_1_1core.html#aab0d8a256957984acc1e3615c65c898e',1,'mlx::core']]], - ['get_5fsoftmax_5fkernel_48',['get_softmax_kernel',['../namespacemlx_1_1core.html#a35a412f688d79eb47e42d20a7c8650ee',1,'mlx::core']]], - ['get_5fsort_5fkernel_49',['get_sort_kernel',['../namespacemlx_1_1core.html#a84ebe6275218070f0ea320f126f64e22',1,'mlx::core']]], - ['get_5fsteel_5fconv_5fgeneral_5fkernel_50',['get_steel_conv_general_kernel',['../namespacemlx_1_1core.html#abce2b67044ee06a7bbe7a91ec7c8c48d',1,'mlx::core']]], - ['get_5fsteel_5fconv_5fkernel_51',['get_steel_conv_kernel',['../namespacemlx_1_1core.html#adce79d220672f5f3c65cc31d145ca9c4',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5ffused_5fkernel_52',['get_steel_gemm_fused_kernel',['../namespacemlx_1_1core.html#a84fa8e0aee321a9d614433a0b933103b',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5fmasked_5fkernel_53',['get_steel_gemm_masked_kernel',['../namespacemlx_1_1core.html#ab5f60614e965144b451930fdf935e08d',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5fsplitk_5faccum_5fkernel_54',['get_steel_gemm_splitk_accum_kernel',['../namespacemlx_1_1core.html#a195b86cad5bb99aa1bcd23952305af6b',1,'mlx::core']]], - ['get_5fsteel_5fgemm_5fsplitk_5fkernel_55',['get_steel_gemm_splitk_kernel',['../namespacemlx_1_1core.html#af48c6f2f72b61dbd6766e4f5fea85df5',1,'mlx::core']]], - ['get_5ftemplate_5fdefinition_56',['get_template_definition',['../namespacemlx_1_1core.html#aae0d19f0acdef2accd2428fb84c8a032',1,'mlx::core']]], - ['get_5fternary_5fkernel_57',['get_ternary_kernel',['../namespacemlx_1_1core.html#a54eb3b65375022428aab5f810e40624b',1,'mlx::core']]], - ['get_5ftwiddle_58',['get_twiddle',['../radix_8h.html#ac5cf950316b9445296ee9ecfc56a56bd',1,'radix.h']]], - ['get_5ftype_5fstring_59',['get_type_string',['../namespacemlx_1_1core.html#af776fd91dd60594dcfebbafd17f19068',1,'mlx::core']]], - ['get_5funary_5fkernel_60',['get_unary_kernel',['../namespacemlx_1_1core.html#a15175e8e2b1e26726c63393e4d68b628',1,'mlx::core']]], - ['gguf_5fload_5fquantized_61',['gguf_load_quantized',['../namespacemlx_1_1core.html#a65dd68163bdaef3631e3724327782498',1,'mlx::core']]], - ['good_62',['good',['../classmlx_1_1core_1_1io_1_1_reader.html#a005d0b52c1f34866f7412b7f41dabec3',1,'mlx::core::io::Reader::good()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a0b050c2c27487007e250e2e19560ffe4',1,'mlx::core::io::Writer::good()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#ac54a2c693acc3d9e6e942412148ffcc9',1,'mlx::core::io::ParallelFileReader::good()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9ec4934b26fb358d699ddce1482b2d54',1,'mlx::core::io::FileWriter::good()']]], - ['good_5fsize_5fcmplx_63',['good_size_cmplx',['../structpocketfft_1_1detail_1_1util.html#a758e00d242a1b7eda8f9f0c21f35c624',1,'pocketfft::detail::util']]], - ['good_5fsize_5freal_64',['good_size_real',['../structpocketfft_1_1detail_1_1util.html#a173da7d5929ded86fffcebcfdc5086aa',1,'pocketfft::detail::util']]], - ['grad_65',['grad',['../namespacemlx_1_1core.html#af482f6c64acd77c57ef5bb4b7be9726c',1,'mlx::core::grad(const std::function< array(const std::vector< array > &)> &fun, int argnum=0)'],['../namespacemlx_1_1core.html#a64bc619876b0f8cc81a2637ca81c99f7',1,'mlx::core::grad(const std::function< array(const array &)> &fun)']]], - ['greater_66',['Greater',['../classmlx_1_1core_1_1_greater.html#a1d5992a66c020cd97a70e8e3d8cd1a1b',1,'mlx::core::Greater']]], - ['greater_67',['greater',['../group__ops.html#gaf4ec7bfc1ad13b891f1f3ef1772ef04d',1,'mlx::core']]], - ['greater_5fequal_68',['greater_equal',['../group__ops.html#ga7153071bcfff6faad21332163fb9a430',1,'mlx::core']]], - ['greaterequal_69',['GreaterEqual',['../classmlx_1_1core_1_1_greater_equal.html#a19a3c49d5a9b40e17da0e56ef6908527',1,'mlx::core::GreaterEqual']]], - ['group_70',['Group',['../structmlx_1_1core_1_1distributed_1_1_group.html#a6f84accc8d6734989b2757bf6cdd0152',1,'mlx::core::distributed::Group']]], - ['group_71',['group',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a8831cb61ac633431b78b5fb99c0ea9ff',1,'mlx::core::distributed::DistPrimitive']]], - ['gumbel_72',['gumbel',['../namespacemlx_1_1core_1_1random.html#aa849b765cd794306997bcbb9936d3d84',1,'mlx::core::random']]] -]; diff --git a/docs/build/html/search/functions_8.js b/docs/build/html/search/functions_8.js deleted file mode 100644 index 11756f6b..00000000 --- a/docs/build/html/search/functions_8.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['hadamard_0',['Hadamard',['../classmlx_1_1core_1_1_hadamard.html#abe4a0ed820b126940beec519d4239923',1,'mlx::core::Hadamard']]], - ['hadamard_1',['hadamard',['../namespacemlx_1_1core_1_1metal.html#a8bd0072616087cd568c2c804e7114aa9',1,'mlx::core::metal']]], - ['hadamard_5fm_2',['hadamard_m',['../metal_2kernels_2hadamard_8h.html#ab0bd478f2051af35aed1869005e3370a',1,'hadamard.h']]], - ['hadamard_5fmatrices_3',['hadamard_matrices',['../namespacemlx_1_1core.html#a50214cf406957fab27c8bef32046f030',1,'mlx::core']]], - ['hadamard_5fn_4',['hadamard_n',['../metal_2kernels_2hadamard_8h.html#a63c0e8510e555cd065e1f0ddfb33ce18',1,'hadamard.h']]], - ['hadamard_5ftransform_5',['hadamard_transform',['../group__ops.html#ga872d2c1806e67ce2596b24d056681074',1,'mlx::core']]], - ['has_5fprimitive_6',['has_primitive',['../classmlx_1_1core_1_1array.html#aa5aceab15241e7826cbaf8b8a41440c1',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/functions_9.js b/docs/build/html/search/functions_9.js deleted file mode 100644 index 991f7e20..00000000 --- a/docs/build/html/search/functions_9.js +++ /dev/null @@ -1,43 +0,0 @@ -var searchData= -[ - ['id_0',['id',['../classmlx_1_1core_1_1array.html#adfa53f3f26bb0f942fb1c67ec8cd5380',1,'mlx::core::array']]], - ['identity_1',['identity',['../group__ops.html#ga484eaa10d5e19a4ca46d3a9cd9fab600',1,'mlx::core::identity(int n, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#gad994d65ac6019c26b5ad6c41179d3424',1,'mlx::core::identity(int n, StreamOrDevice s={})']]], - ['ifft_2',['ifft',['../namespacemlx_1_1core_1_1fft.html#a893a667b85d6bef9b27fb40b591352b3',1,'mlx::core::fft::ifft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a700e1659e101bc0f806de712079d9273',1,'mlx::core::fft::ifft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['ifft2_3',['ifft2',['../namespacemlx_1_1core_1_1fft.html#a5b5dbc2fd0f4ed32255ae800455855d6',1,'mlx::core::fft::ifft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a865adcb7d7fe35541ad8c21f963905e0',1,'mlx::core::fft::ifft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['ifftn_4',['ifftn',['../namespacemlx_1_1core_1_1fft.html#acf85f2754160886b08d3759982251e28',1,'mlx::core::fft::ifftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a3794c67262e4ab28d35fa89abfdfd063',1,'mlx::core::fft::ifftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a8adeca9b76277676390ec7d04dc0620b',1,'mlx::core::fft::ifftn(const array &a, StreamOrDevice s={})']]], - ['implicit_5fgemm_5fconv_5f2d_5',['implicit_gemm_conv_2d',['../kernels_2steel_2conv_2kernels_2steel__conv_8h.html#a5728711d1c2ee4038457babb7ac12888',1,'steel_conv.h']]], - ['implicit_5fgemm_5fconv_5f2d_5fgeneral_6',['implicit_gemm_conv_2d_general',['../steel__conv__general_8h.html#ad620c0656ae92e36dcb4a285d9e790ee',1,'steel_conv_general.h']]], - ['in_5ftracing_7',['in_tracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#ac52b8e2c3f808d3076c4e1ebaf9dc63d',1,'mlx::core::detail::InTracing']]], - ['increment_5fcommand_5fbuffer_5fops_8',['increment_command_buffer_ops',['../classmlx_1_1core_1_1metal_1_1_device.html#a7a33d4d601423a3d3c23d5ad7072abb6',1,'mlx::core::metal::Device']]], - ['infinity_9',['infinity',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61eb741e7af49046beb863abf023b206',1,'metal::_numeric_limits_impl< bfloat16_t >']]], - ['init_10',['init',['../namespacemlx_1_1core_1_1distributed.html#a33633c058c7ec82cca4f237243c6810d',1,'mlx::core::distributed']]], - ['init_5freduce_11',['init_reduce',['../reduce__init_8h.html#a0088604ac2eaa6940689ff12c4ba5fc2',1,'reduce_init.h']]], - ['inner_12',['inner',['../group__ops.html#ga654fec16a9746b390916697a2ab2546e',1,'mlx::core']]], - ['inputs_13',['inputs',['../classmlx_1_1core_1_1array.html#a2913abcdf71826827c8457f529825fff',1,'mlx::core::array::inputs() const'],['../classmlx_1_1core_1_1array.html#acffb082177f9b78f0c52e406adff972f',1,'mlx::core::array::inputs()']]], - ['intracing_14',['InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#a7a77f19391498afa5dcea3509d241a70',1,'mlx::core::detail::InTracing']]], - ['inv_15',['inv',['../namespacemlx_1_1core_1_1linalg.html#ad966a0b6bff176c9f933534ed62389a2',1,'mlx::core::linalg']]], - ['inverse_16',['Inverse',['../classmlx_1_1core_1_1_inverse.html#a71467681e523abb725724490bfeb76ad',1,'mlx::core::Inverse']]], - ['iofs_17',['iofs',['../classpocketfft_1_1detail_1_1multi__iter.html#ad33360d4a8ab8e6d72efadc6f9cb5bfa',1,'pocketfft::detail::multi_iter::iofs(size_t i) const'],['../classpocketfft_1_1detail_1_1multi__iter.html#a97462d97bdca6419d8d2f37c2031fe83',1,'pocketfft::detail::multi_iter::iofs(size_t j, size_t i) const']]], - ['irfft_18',['irfft',['../namespacemlx_1_1core_1_1fft.html#aafa721d0492e9f74913a6e86b4896ad8',1,'mlx::core::fft::irfft(const array &a, int n, int axis, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#afbd0035a3cf91f428838de1fcf01a3a3',1,'mlx::core::fft::irfft(const array &a, int axis=-1, StreamOrDevice s={})']]], - ['irfft2_19',['irfft2',['../namespacemlx_1_1core_1_1fft.html#a35754b00e98d7ef37ce8230c8887a933',1,'mlx::core::fft::irfft2(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#af7c7bbbbce26c2775a77473502a8de02',1,'mlx::core::fft::irfft2(const array &a, const std::vector< int > &axes={-2, -1}, StreamOrDevice s={})']]], - ['irfftn_20',['irfftn',['../namespacemlx_1_1core_1_1fft.html#a33f2973ea1b621e67064e46136d2960f',1,'mlx::core::fft::irfftn(const array &a, const std::vector< int > &n, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#a1c9ad11121c5879d5c04bbde2ee238c3',1,'mlx::core::fft::irfftn(const array &a, const std::vector< int > &axes, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1fft.html#aaf5a7ef93b3426b94c2363a23a5a5b36',1,'mlx::core::fft::irfftn(const array &a, StreamOrDevice s={})']]], - ['is_5favailable_21',['is_available',['../classmlx_1_1core_1_1array.html#aebed1f37c19197be76105161102a8a40',1,'mlx::core::array::is_available()'],['../namespacemlx_1_1core_1_1metal.html#a0cdf2c08c7bc0927a86070adc206987f',1,'mlx::core::metal::is_available()'],['../namespacemlx_1_1core_1_1distributed.html#a95655473cd0032c06e5fe3fca85aeef3',1,'mlx::core::distributed::is_available()']]], - ['is_5fdonatable_22',['is_donatable',['../classmlx_1_1core_1_1array.html#a4677a404b5d191af20b52649225de087',1,'mlx::core::array::is_donatable()'],['../namespacemlx_1_1core.html#af650e831ce21759da1ac103037d08d84',1,'mlx::core::is_donatable()']]], - ['is_5fequivalent_23',['is_equivalent',['../classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html#af08b1294f3f93505a96fdfa85b1edd62',1,'mlx::core::fast::ScaledDotProductAttention::is_equivalent()'],['../classmlx_1_1core_1_1_primitive.html#a6140a502af4c2bbbc776ab26e9afebcd',1,'mlx::core::Primitive::is_equivalent()'],['../classmlx_1_1core_1_1_abs.html#ab6f0ec56bc7c048382297e12dabadc67',1,'mlx::core::Abs::is_equivalent()'],['../classmlx_1_1core_1_1_add.html#aba0a35410c3aac53d0f7a0c283d9ee3f',1,'mlx::core::Add::is_equivalent()'],['../classmlx_1_1core_1_1_add_m_m.html#a6e37c6882dba995a63fb6d8dfb01754f',1,'mlx::core::AddMM::is_equivalent()'],['../classmlx_1_1core_1_1_arange.html#a7b6a45cf9c4b109d4e0373f3fe576c35',1,'mlx::core::Arange::is_equivalent()'],['../classmlx_1_1core_1_1_arc_cos.html#a39557461e3235801886675a9b7d25bf5',1,'mlx::core::ArcCos::is_equivalent()'],['../classmlx_1_1core_1_1_arc_cosh.html#a6928e827b9ac2e86e7d5b02b78150eee',1,'mlx::core::ArcCosh::is_equivalent()'],['../classmlx_1_1core_1_1_arc_sin.html#a13b5e39eeccaf32d94b8eb85b3b753ab',1,'mlx::core::ArcSin::is_equivalent()'],['../classmlx_1_1core_1_1_arc_sinh.html#a63c7a765c7906242dc3371deec094f0f',1,'mlx::core::ArcSinh::is_equivalent()'],['../classmlx_1_1core_1_1_arc_tan.html#a0e5b5fc7218143ecd0a8666d9137c34c',1,'mlx::core::ArcTan::is_equivalent()'],['../classmlx_1_1core_1_1_arc_tan2.html#aeaee58cd803d3ebf0b76574a409682cc',1,'mlx::core::ArcTan2::is_equivalent()'],['../classmlx_1_1core_1_1_arc_tanh.html#ac8ecdd640043dab0461d49d7650679a2',1,'mlx::core::ArcTanh::is_equivalent()'],['../classmlx_1_1core_1_1_arg_partition.html#ad87509ce70b51fb75dfb9c3a05a5b31a',1,'mlx::core::ArgPartition::is_equivalent()'],['../classmlx_1_1core_1_1_arg_reduce.html#a03b81a670dcb1e39bf7279e4d4583b97',1,'mlx::core::ArgReduce::is_equivalent()'],['../classmlx_1_1core_1_1_arg_sort.html#a048cd09c557d29d1111726f97010a845',1,'mlx::core::ArgSort::is_equivalent()'],['../classmlx_1_1core_1_1_as_type.html#a8e6c8b2428ab15c4fb43f2e3a8fb38af',1,'mlx::core::AsType::is_equivalent()'],['../classmlx_1_1core_1_1_as_strided.html#a1738c6aa0a3a3eb68530f0d5b436e094',1,'mlx::core::AsStrided::is_equivalent()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a8cd6b916b4838a6c329cf4df8530c3b8',1,'mlx::core::BitwiseBinary::is_equivalent()'],['../classmlx_1_1core_1_1_block_masked_m_m.html#aef1c303955f9b8f445296372cf181160',1,'mlx::core::BlockMaskedMM::is_equivalent()'],['../classmlx_1_1core_1_1_gather_m_m.html#a163f17f6ce2c002f22e81b302777342b',1,'mlx::core::GatherMM::is_equivalent()'],['../classmlx_1_1core_1_1_broadcast.html#a0e27692b0090ec451954649a36042616',1,'mlx::core::Broadcast::is_equivalent()'],['../classmlx_1_1core_1_1_ceil.html#aacd90acb56eb0649c1cef807aa21df52',1,'mlx::core::Ceil::is_equivalent()'],['../classmlx_1_1core_1_1_compiled.html#a63e5016458887813b4a59dee5a0a3f10',1,'mlx::core::Compiled::is_equivalent()'],['../classmlx_1_1core_1_1_concatenate.html#aaf8a72a0c30114460caf519580cc35d2',1,'mlx::core::Concatenate::is_equivalent()'],['../classmlx_1_1core_1_1_conjugate.html#af42f00a790c6bc5572bd8fe9e5b36c5e',1,'mlx::core::Conjugate::is_equivalent()'],['../classmlx_1_1core_1_1_convolution.html#afb87708a5e3aab2e9e663daa9d8863de',1,'mlx::core::Convolution::is_equivalent()'],['../classmlx_1_1core_1_1_copy.html#afcfa39465015f638e294aa954ea0f3da',1,'mlx::core::Copy::is_equivalent()'],['../classmlx_1_1core_1_1_cos.html#ab611ca38c987915659f7ffcce0370417',1,'mlx::core::Cos::is_equivalent()'],['../classmlx_1_1core_1_1_cosh.html#ae0bacccaf501f5349db0c13cca776ff9',1,'mlx::core::Cosh::is_equivalent()'],['../classmlx_1_1core_1_1_divide.html#a3dda091f05c4164c29bb8129e9712650',1,'mlx::core::Divide::is_equivalent()'],['../classmlx_1_1core_1_1_div_mod.html#af5fcf8ec8515d46844cbeeab6dafb38a',1,'mlx::core::DivMod::is_equivalent()'],['../classmlx_1_1core_1_1_select.html#afc3c333fac7f902c98839921ef2874c8',1,'mlx::core::Select::is_equivalent()'],['../classmlx_1_1core_1_1_remainder.html#a802039faaa2ed7b763ec3d7debcce814',1,'mlx::core::Remainder::is_equivalent()'],['../classmlx_1_1core_1_1_equal.html#a58c1c5003e43f47dc0788c1851deaa02',1,'mlx::core::Equal::is_equivalent()'],['../classmlx_1_1core_1_1_erf.html#abe99dfbc2954c3a7d5dec56ab165ee82',1,'mlx::core::Erf::is_equivalent()'],['../classmlx_1_1core_1_1_erf_inv.html#aaac9e3b454ba564f9c6e804ab6562832',1,'mlx::core::ErfInv::is_equivalent()'],['../classmlx_1_1core_1_1_exp.html#ac6e44bffe7a643ab4ca51e74c7328357',1,'mlx::core::Exp::is_equivalent()'],['../classmlx_1_1core_1_1_f_f_t.html#a0ede3bc8b6d77d560c0a750b68fddc06',1,'mlx::core::FFT::is_equivalent()'],['../classmlx_1_1core_1_1_floor.html#a24b64feb026c4fcd02fc481cffdb1c94',1,'mlx::core::Floor::is_equivalent()'],['../classmlx_1_1core_1_1_full.html#afafcbcae1e28597fe8f7fde289105792',1,'mlx::core::Full::is_equivalent()'],['../classmlx_1_1core_1_1_gather.html#a23ff1406dbf0c770e75ad47440b467aa',1,'mlx::core::Gather::is_equivalent()'],['../classmlx_1_1core_1_1_greater.html#a6877a6888614a618dc64296763ccabb1',1,'mlx::core::Greater::is_equivalent()'],['../classmlx_1_1core_1_1_greater_equal.html#a3daef8596b963026b602019bc56fc5fc',1,'mlx::core::GreaterEqual::is_equivalent()'],['../classmlx_1_1core_1_1_hadamard.html#a8a528d8d69a7343bdfd704a3e74230b8',1,'mlx::core::Hadamard::is_equivalent()'],['../classmlx_1_1core_1_1_less.html#a7d6ed6353a0dcefebd008026dbd3cd63',1,'mlx::core::Less::is_equivalent()'],['../classmlx_1_1core_1_1_less_equal.html#a76ee1438cf4bd109eae4e0b3472b26af',1,'mlx::core::LessEqual::is_equivalent()'],['../classmlx_1_1core_1_1_log.html#a2fc58ea4ca744db493b947d1136d05f8',1,'mlx::core::Log::is_equivalent()'],['../classmlx_1_1core_1_1_logical_not.html#aba53675da351cd9b71a73d475b4bbe99',1,'mlx::core::LogicalNot::is_equivalent()'],['../classmlx_1_1core_1_1_logical_and.html#a9572c35f72e0db2f7f86bbf42438a6be',1,'mlx::core::LogicalAnd::is_equivalent()'],['../classmlx_1_1core_1_1_logical_or.html#a9c8b10a5cf5c69fdc2362390197e4e71',1,'mlx::core::LogicalOr::is_equivalent()'],['../classmlx_1_1core_1_1_log_add_exp.html#a3cf9a202c05aff39919d713d6e2b32e4',1,'mlx::core::LogAddExp::is_equivalent()'],['../classmlx_1_1core_1_1_matmul.html#aab372b59eae0840fc4f75ef5719a2630',1,'mlx::core::Matmul::is_equivalent()'],['../classmlx_1_1core_1_1_maximum.html#a21fe93fbd7799682f481260aee8bdb46',1,'mlx::core::Maximum::is_equivalent()'],['../classmlx_1_1core_1_1_minimum.html#a56c54ee3293cc2cd84462b9ec7ac36b4',1,'mlx::core::Minimum::is_equivalent()'],['../classmlx_1_1core_1_1_multiply.html#ae288159fa2d6d35087a85aca8eafa9b2',1,'mlx::core::Multiply::is_equivalent()'],['../classmlx_1_1core_1_1_negative.html#ac2a4d8159c548639d6289980c8975823',1,'mlx::core::Negative::is_equivalent()'],['../classmlx_1_1core_1_1_not_equal.html#ac12fd6b3e2f2e7e4e622b59badf2c73d',1,'mlx::core::NotEqual::is_equivalent()'],['../classmlx_1_1core_1_1_number_of_elements.html#ad6a32565ccc64499e368e15bba0b438f',1,'mlx::core::NumberOfElements::is_equivalent()'],['../classmlx_1_1core_1_1_pad.html#aad7c3bfecafe435d6a8e807de4c7ea9b',1,'mlx::core::Pad::is_equivalent()'],['../classmlx_1_1core_1_1_partition.html#aabdf6ef4f2159b2bfe93e0e87d4772f8',1,'mlx::core::Partition::is_equivalent()'],['../classmlx_1_1core_1_1_power.html#a76b4ec9d1ff07f06189e414480453d68',1,'mlx::core::Power::is_equivalent()'],['../classmlx_1_1core_1_1_quantized_matmul.html#af28b36e3f40ea41785387800326cc8e1',1,'mlx::core::QuantizedMatmul::is_equivalent()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#a6a7da6bcf657fcdb157c45bf35fdec11',1,'mlx::core::GatherQMM::is_equivalent()'],['../classmlx_1_1core_1_1_random_bits.html#a72ec915debf5823e7c0463045b2894e6',1,'mlx::core::RandomBits::is_equivalent()'],['../classmlx_1_1core_1_1_reshape.html#abd07c53af476777a04307e0423784cf3',1,'mlx::core::Reshape::is_equivalent()'],['../classmlx_1_1core_1_1_reduce.html#abe8f3327d617d0dd7438f066497ae08e',1,'mlx::core::Reduce::is_equivalent()'],['../classmlx_1_1core_1_1_round.html#aeb3d8607bbba7345a3142d4cbd4e6927',1,'mlx::core::Round::is_equivalent()'],['../classmlx_1_1core_1_1_scan.html#a54445a4d677ca4fe2a58d08eb5223ac6',1,'mlx::core::Scan::is_equivalent()'],['../classmlx_1_1core_1_1_scatter.html#a0208172562abdc90472e6eb5f84c987f',1,'mlx::core::Scatter::is_equivalent()'],['../classmlx_1_1core_1_1_sigmoid.html#a04814ba1b0edf8299d5ca1bcb8749d8e',1,'mlx::core::Sigmoid::is_equivalent()'],['../classmlx_1_1core_1_1_sign.html#a8c0934acbcc4b146e5aacd35a8c445bb',1,'mlx::core::Sign::is_equivalent()'],['../classmlx_1_1core_1_1_sin.html#af00b0e5516f884996ce7a97e6c1e3e6a',1,'mlx::core::Sin::is_equivalent()'],['../classmlx_1_1core_1_1_sinh.html#adcb1878996fd4902cd550042dd6ad70d',1,'mlx::core::Sinh::is_equivalent()'],['../classmlx_1_1core_1_1_slice.html#a43202c3b8966ae1db9ab82072e4918b0',1,'mlx::core::Slice::is_equivalent()'],['../classmlx_1_1core_1_1_slice_update.html#a60f588acced42391e6e5615ae8d16119',1,'mlx::core::SliceUpdate::is_equivalent()'],['../classmlx_1_1core_1_1_softmax.html#a9215ed7bd36bc11276c58dfb9808d728',1,'mlx::core::Softmax::is_equivalent()'],['../classmlx_1_1core_1_1_sort.html#ae48f07cf641d54234fc4fb6529a33511',1,'mlx::core::Sort::is_equivalent()'],['../classmlx_1_1core_1_1_split.html#af25a0cc259573b9dce60d285eee18345',1,'mlx::core::Split::is_equivalent()'],['../classmlx_1_1core_1_1_square.html#a6abc881d44071019aa15481e5ea75ab2',1,'mlx::core::Square::is_equivalent()'],['../classmlx_1_1core_1_1_sqrt.html#ab871c2b8ab4a27a3f782a005d0e87c46',1,'mlx::core::Sqrt::is_equivalent()'],['../classmlx_1_1core_1_1_stop_gradient.html#a327539298b21d800d26482b94fce41b3',1,'mlx::core::StopGradient::is_equivalent()'],['../classmlx_1_1core_1_1_subtract.html#af1c05e1e3f703ba916d54f8ccbbd102b',1,'mlx::core::Subtract::is_equivalent()'],['../classmlx_1_1core_1_1_tan.html#afdf46288e7f60ea7f878688347dff7e4',1,'mlx::core::Tan::is_equivalent()'],['../classmlx_1_1core_1_1_tanh.html#a0692a1de2373b86eb394252ed4fecfda',1,'mlx::core::Tanh::is_equivalent()'],['../classmlx_1_1core_1_1_uniform.html#abb6048807a7c5b2e35a77e06a17f801b',1,'mlx::core::Uniform::is_equivalent()'],['../classmlx_1_1core_1_1_view.html#a7cb8403a96a47cb258caac4e3b850f64',1,'mlx::core::View::is_equivalent()'],['../classmlx_1_1core_1_1_transpose.html#a799ec3c3fa9f1b9e6177c755252a3eab',1,'mlx::core::Transpose::is_equivalent()']]], - ['is_5fopen_24',['is_open',['../classmlx_1_1core_1_1io_1_1_reader.html#a780f504058bd9c80cb3d105046a9f985',1,'mlx::core::io::Reader::is_open()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a85aa36bdb0dbfb8c5b6cfd955b03417a',1,'mlx::core::io::Writer::is_open()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a653009adbcbce8248bc666df502fdbde',1,'mlx::core::io::ParallelFileReader::is_open()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#ad5d2ee671a81700cb1658c41309d6676',1,'mlx::core::io::FileWriter::is_open()']]], - ['is_5fpower_5fof_5f2_25',['is_power_of_2',['../namespacemlx_1_1core.html#adacbc4526e8964b267a8ec3eb1bc1a32',1,'mlx::core']]], - ['is_5fready_26',['is_ready',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#ab41ecc5adb6187aa2682ca190fd920f3',1,'pocketfft::detail::threading::latch']]], - ['is_5fsame_5fshape_27',['is_same_shape',['../namespacemlx_1_1core.html#ad4b664de4a4abd305827b30879b9da33',1,'mlx::core']]], - ['is_5fscalar_28',['is_scalar',['../namespacemlx_1_1core.html#a985c60929757190e0b4ec51f57c767d0',1,'mlx::core']]], - ['is_5fstatic_5fcast_29',['is_static_cast',['../namespacemlx_1_1core.html#afd9e740e567f9d7c28e00113caf46d5f',1,'mlx::core']]], - ['is_5ftracer_30',['is_tracer',['../classmlx_1_1core_1_1array.html#af9acb115019b995354d366c4ac6b968c',1,'mlx::core::array']]], - ['isclose_31',['isclose',['../group__ops.html#ga51eac95c04400921c54716de14b52491',1,'mlx::core']]], - ['isfinite_32',['isfinite',['../group__ops.html#ga725ff0789f934b1fdd54ee29e47022ff',1,'mlx::core']]], - ['isinf_33',['isinf',['../group__ops.html#ga8fc238d5e5d1153e69da8b36015d9844',1,'mlx::core']]], - ['isnan_34',['isnan',['../namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb',1,'metal::isnan()'],['../group__ops.html#ga175592792471b0ffb45196dca4711ba6',1,'mlx::core::isnan(const array &a, StreamOrDevice s={})']]], - ['isneginf_35',['isneginf',['../group__ops.html#ga1940523da381ed7be50656a3bc465ff3',1,'mlx::core']]], - ['isposinf_36',['isposinf',['../group__ops.html#gad80f7c4a58c12b6cb30a8b9a73008993',1,'mlx::core']]], - ['issubdtype_37',['issubdtype',['../namespacemlx_1_1core.html#aca9e69b06f4212eba44bf0ce6711d5f7',1,'mlx::core::issubdtype(const Dtype &a, const Dtype &b)'],['../namespacemlx_1_1core.html#aca39f224c1d17bde35dfcb9088430704',1,'mlx::core::issubdtype(const Dtype::Category &a, const Dtype &b)'],['../namespacemlx_1_1core.html#ae9ee4a7c205df061c1caa7e62b7504e8',1,'mlx::core::issubdtype(const Dtype &a, const Dtype::Category &b)'],['../namespacemlx_1_1core.html#ab5b1a5a3d545a5de00c3117f76d71a1d',1,'mlx::core::issubdtype(const Dtype::Category &a, const Dtype::Category &b)']]], - ['item_38',['item',['../classmlx_1_1core_1_1array.html#a90c5afddc2fa3028c0f8099bd64c8a99',1,'mlx::core::array::item()'],['../classmlx_1_1core_1_1array.html#a8650a99a6b7549bc823b03ad92590ff7',1,'mlx::core::array::item() const']]], - ['itemsize_39',['itemsize',['../classmlx_1_1core_1_1array.html#af329d9432c92de87cbaa2de8454eefc0',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/functions_a.js b/docs/build/html/search/functions_a.js deleted file mode 100644 index fbde60fb..00000000 --- a/docs/build/html/search/functions_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jvp_0',['jvp',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#aeaf6f2b5955e7417cd1e36db42c45a80',1,'mlx::core::distributed::AllReduce::jvp()'],['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a96f08a4ea8453d0b4b737c7b07972913',1,'mlx::core::distributed::AllGather::jvp()'],['../classmlx_1_1core_1_1fast_1_1_custom.html#ac77b28702654df8e7d882a49357a9584',1,'mlx::core::fast::Custom::jvp()'],['../classmlx_1_1core_1_1_primitive.html#a9fecf38f53da08ba1947543c2b3158c2',1,'mlx::core::Primitive::jvp()'],['../classmlx_1_1core_1_1_abs.html#a6c1e6eeaf4f5e63898c3487106e88e11',1,'mlx::core::Abs::jvp()'],['../classmlx_1_1core_1_1_add.html#a77230069f76fe60a2fe1007822a277b7',1,'mlx::core::Add::jvp()'],['../classmlx_1_1core_1_1_arc_cos.html#a240079c616f1a1f127aa783308096fe9',1,'mlx::core::ArcCos::jvp()'],['../classmlx_1_1core_1_1_arc_cosh.html#a80fcb790649219c30260af903b76a1d7',1,'mlx::core::ArcCosh::jvp()'],['../classmlx_1_1core_1_1_arc_sin.html#a37affc8c5e84e5c54e73a71fc0821ea4',1,'mlx::core::ArcSin::jvp()'],['../classmlx_1_1core_1_1_arc_sinh.html#a79ebf2f6dfecbfbb93170fdd1ca87bf4',1,'mlx::core::ArcSinh::jvp()'],['../classmlx_1_1core_1_1_arc_tan.html#a0f5590a2297fc133b4b0a15f9dd0c760',1,'mlx::core::ArcTan::jvp()'],['../classmlx_1_1core_1_1_arc_tan2.html#a01675433f2a4fa466b2f48272dbca738',1,'mlx::core::ArcTan2::jvp()'],['../classmlx_1_1core_1_1_arc_tanh.html#a534ebdbfe77241884630d25021274c4a',1,'mlx::core::ArcTanh::jvp()'],['../classmlx_1_1core_1_1_as_type.html#a213400967150c57da35795e1c9f65ca0',1,'mlx::core::AsType::jvp()'],['../classmlx_1_1core_1_1_as_strided.html#a8ff0a398c47b42e08bc1122e07a02b53',1,'mlx::core::AsStrided::jvp()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a1dae6ce5dc0498d20530403fe5c5531d',1,'mlx::core::BitwiseBinary::jvp()'],['../classmlx_1_1core_1_1_broadcast.html#ae2fc3851a117079244708864be770ece',1,'mlx::core::Broadcast::jvp()'],['../classmlx_1_1core_1_1_ceil.html#a7ad74b27d9f26c886c2af516b845f066',1,'mlx::core::Ceil::jvp()'],['../classmlx_1_1core_1_1_compiled.html#aa385fe28626856ca5f57161b47a3c205',1,'mlx::core::Compiled::jvp()'],['../classmlx_1_1core_1_1_concatenate.html#a9f9e7a9dc3a00e02b84c94e1868baff1',1,'mlx::core::Concatenate::jvp()'],['../classmlx_1_1core_1_1_copy.html#a5acf02aa360cbefd86749fe9877b29cc',1,'mlx::core::Copy::jvp()'],['../classmlx_1_1core_1_1_cos.html#a99dd0b7e4aa2c838b77736f1fd539ee1',1,'mlx::core::Cos::jvp()'],['../classmlx_1_1core_1_1_cosh.html#a79facb0882443533f36a0a18407f5863',1,'mlx::core::Cosh::jvp()'],['../classmlx_1_1core_1_1_custom_transforms.html#aa9f695100170d5cae999b3da138ce720',1,'mlx::core::CustomTransforms::jvp()'],['../classmlx_1_1core_1_1_divide.html#ae1f408c447b17b3c84fe7f951d95559c',1,'mlx::core::Divide::jvp()'],['../classmlx_1_1core_1_1_div_mod.html#a1267401f25f25847888dd0a00b3fe3b9',1,'mlx::core::DivMod::jvp()'],['../classmlx_1_1core_1_1_select.html#a172df6812c2ea3e9d3c3fc5d527548d6',1,'mlx::core::Select::jvp()'],['../classmlx_1_1core_1_1_remainder.html#a972002173fc00ee86029d12bf1a9ba79',1,'mlx::core::Remainder::jvp()'],['../classmlx_1_1core_1_1_equal.html#a659d484589d7cd96d038922a1a98730f',1,'mlx::core::Equal::jvp()'],['../classmlx_1_1core_1_1_erf.html#ac733d605d80277d613954794eb8c46fe',1,'mlx::core::Erf::jvp()'],['../classmlx_1_1core_1_1_erf_inv.html#aa52710297ab6f7cd6826418c303e64be',1,'mlx::core::ErfInv::jvp()'],['../classmlx_1_1core_1_1_exp.html#aef6721832fcc283b082e35a7d436fa59',1,'mlx::core::Exp::jvp()'],['../classmlx_1_1core_1_1_expm1.html#ad463730632a00945d3a8addfdaec67b1',1,'mlx::core::Expm1::jvp()'],['../classmlx_1_1core_1_1_f_f_t.html#a34578814b6576f7b7b447541984ecba6',1,'mlx::core::FFT::jvp()'],['../classmlx_1_1core_1_1_floor.html#aa47bc360ec563b6e7d93e8b50626d8af',1,'mlx::core::Floor::jvp()'],['../classmlx_1_1core_1_1_full.html#a281a865d0664596ac8d05ea8e7f26407',1,'mlx::core::Full::jvp()'],['../classmlx_1_1core_1_1_gather.html#ac54ef8fac92ab190f1793f3dd95b9e8d',1,'mlx::core::Gather::jvp()'],['../classmlx_1_1core_1_1_greater.html#aa47a9f80f45daf6a405e34f6dc7c99c1',1,'mlx::core::Greater::jvp()'],['../classmlx_1_1core_1_1_greater_equal.html#ac7346080aaaa01d52896127f383f9d20',1,'mlx::core::GreaterEqual::jvp()'],['../classmlx_1_1core_1_1_hadamard.html#a22b9d55ae3ba5eef63505124696e712a',1,'mlx::core::Hadamard::jvp()'],['../classmlx_1_1core_1_1_less.html#af1493d566f6d940b8f674aac17f5dfce',1,'mlx::core::Less::jvp()'],['../classmlx_1_1core_1_1_less_equal.html#addfe62d3557d216f8307bdf1cbff6a8f',1,'mlx::core::LessEqual::jvp()'],['../classmlx_1_1core_1_1_log.html#ac646d4155322c34f58183d97301e3832',1,'mlx::core::Log::jvp()'],['../classmlx_1_1core_1_1_log1p.html#a537e44c7c993daf48698082e75e71ba2',1,'mlx::core::Log1p::jvp()'],['../classmlx_1_1core_1_1_logical_not.html#a4838c483ced707cfda3d6cd24bf4667c',1,'mlx::core::LogicalNot::jvp()'],['../classmlx_1_1core_1_1_logical_and.html#a78d3be71da224ea19158cf9e8c4cf434',1,'mlx::core::LogicalAnd::jvp()'],['../classmlx_1_1core_1_1_logical_or.html#a292de6001c551214c8152a7a5b0e6bd4',1,'mlx::core::LogicalOr::jvp()'],['../classmlx_1_1core_1_1_log_add_exp.html#aea2d1d58794e86f3488219ed3fa14329',1,'mlx::core::LogAddExp::jvp()'],['../classmlx_1_1core_1_1_maximum.html#a25ac5d5b453e571bf7240aa8de103c39',1,'mlx::core::Maximum::jvp()'],['../classmlx_1_1core_1_1_minimum.html#a10acf4fef35eed7ca55d131b5ae2d038',1,'mlx::core::Minimum::jvp()'],['../classmlx_1_1core_1_1_multiply.html#a79f7f0bb70de2e3e41a66c96285325b4',1,'mlx::core::Multiply::jvp()'],['../classmlx_1_1core_1_1_negative.html#a7d918f9b26b8fb7b047a27d85ebab979',1,'mlx::core::Negative::jvp()'],['../classmlx_1_1core_1_1_not_equal.html#ae2d3e5776efaefed7f4c73f679b02f17',1,'mlx::core::NotEqual::jvp()'],['../classmlx_1_1core_1_1_pad.html#a6e43a42032ef11497e8d91290574ec72',1,'mlx::core::Pad::jvp()'],['../classmlx_1_1core_1_1_partition.html#a310f569a163958940ed02cf52079746a',1,'mlx::core::Partition::jvp()'],['../classmlx_1_1core_1_1_power.html#a3e78b06453faa4fd149fd19c0e7a300a',1,'mlx::core::Power::jvp()'],['../classmlx_1_1core_1_1_quantized_matmul.html#ae51fdd0b81dd26c6687577567c126e23',1,'mlx::core::QuantizedMatmul::jvp()'],['../classmlx_1_1core_1_1_gather_q_m_m.html#adc579058752b927c71b45a962d4869e0',1,'mlx::core::GatherQMM::jvp()'],['../classmlx_1_1core_1_1_reshape.html#ab8fc28748991017cc3e29f93c91087a5',1,'mlx::core::Reshape::jvp()'],['../classmlx_1_1core_1_1_round.html#a032075a7d0dde2dba6189636d216c5e7',1,'mlx::core::Round::jvp()'],['../classmlx_1_1core_1_1_scan.html#a6f9c862f4fbc7eaf430a361cdd8933ee',1,'mlx::core::Scan::jvp()'],['../classmlx_1_1core_1_1_scatter.html#a270fa8ccf36ce4bbbc23875139223934',1,'mlx::core::Scatter::jvp()'],['../classmlx_1_1core_1_1_sigmoid.html#a62ca1c440896e32958c77af3340847db',1,'mlx::core::Sigmoid::jvp()'],['../classmlx_1_1core_1_1_sign.html#a957992c7aa0e86cf06f861a94372086b',1,'mlx::core::Sign::jvp()'],['../classmlx_1_1core_1_1_sin.html#af662d10180967399820496477ff050de',1,'mlx::core::Sin::jvp()'],['../classmlx_1_1core_1_1_sinh.html#a86e2b37823daf20a4c74c9f273215f9c',1,'mlx::core::Sinh::jvp()'],['../classmlx_1_1core_1_1_slice.html#a8288324045ab21d6c97b1695ce86ef36',1,'mlx::core::Slice::jvp()'],['../classmlx_1_1core_1_1_slice_update.html#a0ce3248cc61dae2b51d7aa8ee4197611',1,'mlx::core::SliceUpdate::jvp()'],['../classmlx_1_1core_1_1_softmax.html#af96172634a24332b0fc8d7ca7e73f19f',1,'mlx::core::Softmax::jvp()'],['../classmlx_1_1core_1_1_sort.html#af113ac983473433eec851c8fddfcba62',1,'mlx::core::Sort::jvp()'],['../classmlx_1_1core_1_1_split.html#ab8a8d30fd1ebf0891f41f3c32eabe282',1,'mlx::core::Split::jvp()'],['../classmlx_1_1core_1_1_square.html#a822629b93b91e2bef29959431d95e22d',1,'mlx::core::Square::jvp()'],['../classmlx_1_1core_1_1_sqrt.html#a78544b1fb5da0c14bce3051ffd177818',1,'mlx::core::Sqrt::jvp()'],['../classmlx_1_1core_1_1_subtract.html#a8100081a99df5166f02efc76d6641220',1,'mlx::core::Subtract::jvp()'],['../classmlx_1_1core_1_1_tan.html#a5d7c76122d63619df17b0e45450bc8f2',1,'mlx::core::Tan::jvp()'],['../classmlx_1_1core_1_1_tanh.html#ae0fbb5370dc1c3a4fb0dd02ca28a832a',1,'mlx::core::Tanh::jvp()'],['../classmlx_1_1core_1_1_transpose.html#ac1a523e25ab7fd9df4da363a922afbe1',1,'mlx::core::Transpose::jvp()'],['../namespacemlx_1_1core.html#a179a632200366c223d6ab56d3e032592',1,'mlx::core::jvp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)'],['../namespacemlx_1_1core.html#af38e7582db29519bb39326f6fa531d20',1,'mlx::core::jvp(const std::function< array(const array &)> &fun, const array &primal, const array &tangent)']]] -]; diff --git a/docs/build/html/search/functions_b.js b/docs/build/html/search/functions_b.js deleted file mode 100644 index 293c5584..00000000 --- a/docs/build/html/search/functions_b.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['key_0',['key',['../namespacemlx_1_1core_1_1random.html#acf04b6f42de11383e86dcc7f98c67bd8',1,'mlx::core::random']]], - ['keysequence_1',['KeySequence',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a196eb6ce5ba1eb37cc8c67d6d1332bfe',1,'mlx::core::random::KeySequence']]], - ['kindof_2',['kindof',['../namespacemlx_1_1core.html#ad527b86818823db040195785efd7d724',1,'mlx::core']]] -]; diff --git a/docs/build/html/search/functions_c.js b/docs/build/html/search/functions_c.js deleted file mode 100644 index 654fccfc..00000000 --- a/docs/build/html/search/functions_c.js +++ /dev/null @@ -1,48 +0,0 @@ -var searchData= -[ - ['label_0',['label',['../classmlx_1_1core_1_1io_1_1_reader.html#a8c244daf52fd5ebb9a2c7e5f4ae793cd',1,'mlx::core::io::Reader::label()'],['../classmlx_1_1core_1_1io_1_1_writer.html#a828125a9adcb7e90c8bcaba0fe47f854',1,'mlx::core::io::Writer::label()'],['../classmlx_1_1core_1_1io_1_1_parallel_file_reader.html#a361d3b34bc493825c893cce256da46c8',1,'mlx::core::io::ParallelFileReader::label()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a5093dce80ff0c51ea036a87e3e5fb456',1,'mlx::core::io::FileWriter::label()']]], - ['laplace_1',['laplace',['../namespacemlx_1_1core_1_1random.html#ad52c7cb7709542c5a464df12bfc6b0b7',1,'mlx::core::random::laplace(const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a0d0c393dd53d6fdd02e46844b3cf45d1',1,'mlx::core::random::laplace(const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a0f73eb7d337529708937eef0080c0998',1,'mlx::core::random::laplace(const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a96b6f40efbee7045a35218296ba12a37',1,'mlx::core::random::laplace(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['largest_5fprime_5ffactor_2',['largest_prime_factor',['../structpocketfft_1_1detail_1_1util.html#a0e9b92280f25063d1ebef942dd0d233c',1,'pocketfft::detail::util']]], - ['latch_3',['latch',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a9260c871bb927525f7f53caa23a19c15',1,'pocketfft::detail::threading::latch']]], - ['layer_5fnorm_4',['layer_norm',['../namespacemlx_1_1core_1_1fast.html#a01bd533ebd0e2415c4ee30032d51d7bf',1,'mlx::core::fast']]], - ['layernorm_5',['LayerNorm',['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a5ac38d50e62850589bf51ee313303153',1,'mlx::core::fast::LayerNorm']]], - ['layernormvjp_6',['LayerNormVJP',['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a41bc1391dbc0cf63b2c85b67956c08d9',1,'mlx::core::fast::LayerNormVJP']]], - ['ldexp_7',['ldexp',['../namespacemetal.html#a3deed001738b6f03accd3c2195586c2b',1,'metal::ldexp()'],['../namespacemetal_1_1fast.html#adb045765987e76c7ad4b511fab0c867e',1,'metal::fast::ldexp()'],['../namespacemetal_1_1precise.html#aa0462827a08a9f475fdaeb104c98b6ab',1,'metal::precise::ldexp()']]], - ['left_5fshift_8',['left_shift',['../group__ops.html#ga89682bf78491761e062d4ee7bef0c829',1,'mlx::core']]], - ['length_9',['length',['../classpocketfft_1_1detail_1_1pocketfft__c.html#a1fd1a2f9b3ae5ee9f00b9ca6946eb16d',1,'pocketfft::detail::pocketfft_c::length()'],['../classpocketfft_1_1detail_1_1pocketfft__r.html#a83222fdbf81a7c6d560e0841cdfca8c6',1,'pocketfft::detail::pocketfft_r::length()'],['../classpocketfft_1_1detail_1_1_t__dct1.html#ac7a04c91d507bd8f173d2266bb5bb168',1,'pocketfft::detail::T_dct1::length()'],['../classpocketfft_1_1detail_1_1_t__dst1.html#ab205d901650e38b592ff860b7978fa3e',1,'pocketfft::detail::T_dst1::length()'],['../classpocketfft_1_1detail_1_1_t__dcst23.html#a6dab012b487ff98d11b8a9418653a478',1,'pocketfft::detail::T_dcst23::length()'],['../classpocketfft_1_1detail_1_1_t__dcst4.html#af25bf28a7ccd4690ca9934e3aa79c12f',1,'pocketfft::detail::T_dcst4::length()']]], - ['length_5fin_10',['length_in',['../classpocketfft_1_1detail_1_1multi__iter.html#a5318b79d934cddf109dff7bf96a330c8',1,'pocketfft::detail::multi_iter']]], - ['length_5fout_11',['length_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a93cd515d07cd479138a35da9df66bd41',1,'pocketfft::detail::multi_iter']]], - ['less_12',['Less',['../classmlx_1_1core_1_1_less.html#aa55c5cfbab0ac30e1b72c080fe9525d7',1,'mlx::core::Less']]], - ['less_13',['less',['../group__ops.html#ga9142b8d717699a8abfa2a7398891ff8a',1,'mlx::core']]], - ['less_5fequal_14',['less_equal',['../group__ops.html#ga0d49e0c7011d0573c369c13c8f045a09',1,'mlx::core']]], - ['lessequal_15',['LessEqual',['../classmlx_1_1core_1_1_less_equal.html#a52492a43224d47e7851beec646c27bbc',1,'mlx::core::LessEqual']]], - ['lib_5fname_16',['lib_name',['../classmlx_1_1core_1_1_compiled.html#ae5c16cb91ac31b97e7652cc526c07439',1,'mlx::core::Compiled']]], - ['linspace_17',['linspace',['../group__ops.html#ga968bcabed902311dcfbd903b0fb886ec',1,'mlx::core']]], - ['load_18',['Load',['../classmlx_1_1core_1_1_load.html#a3aa8a537cd90bab048df47dca1ed526a',1,'mlx::core::Load']]], - ['load_19',['load',['../struct_read_writer.html#a120eaf4b5f32e80972a18d14e82a2d75',1,'ReadWriter::load() const'],['../struct_read_writer.html#a8a97ba42db5692898ef7391db08d8fd0',1,'ReadWriter::load() const'],['../struct_read_writer.html#a2506ee61be67826ac9494efb12a81900',1,'ReadWriter::load() const'],['../namespacemlx_1_1core.html#a954de19249da7c1fa39b89bdc47368aa',1,'mlx::core::load(array &out, size_t offset, const std::shared_ptr< io::Reader > &reader, bool swap_endianess)'],['../namespacemlx_1_1core.html#abada9bfa834d7423959362386720f3db',1,'mlx::core::load(std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})'],['../namespacemlx_1_1core.html#ac71a08bf4c052ae3c77e9e89cbea071d',1,'mlx::core::load(std::string file, StreamOrDevice s={})']]], - ['load_5fgguf_20',['load_gguf',['../namespacemlx_1_1core.html#a2aa12b351ce559deb14cda0a5292c2ce',1,'mlx::core']]], - ['load_5fpadded_21',['load_padded',['../struct_read_writer.html#add5bd3f647793a5a19d63197a19df73c',1,'ReadWriter::load_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#af3ce6bbb1a8dfb3bab1ae18d3eb45bc0',1,'ReadWriter::load_padded(int length, const device float2 *w_k) const'],['../struct_read_writer.html#ab116f4569bb9dc6eaef0d8d08472e239',1,'ReadWriter::load_padded(int length, const device float2 *w_k) const']]], - ['load_5fsafe_22',['load_safe',['../struct_g_e_m_v_kernel.html#a04bb72da9a93d6d1eba468fa311bbba7',1,'GEMVKernel::load_safe()'],['../struct_quantized_block_loader.html#a699dc9aa284b8fbf870310bbb224465b',1,'QuantizedBlockLoader::load_safe()'],['../structmlx_1_1steel_1_1_block_loader.html#abb0f4f66ec8b123627beb8eb4fbb609d',1,'mlx::steel::BlockLoader::load_safe()'],['../kernels_2scan_8h.html#ae8eb101e538b85f8a4bcf451489ae0ac',1,'load_safe(): scan.h']]], - ['load_5fsafetensors_23',['load_safetensors',['../namespacemlx_1_1core.html#a96cc40e1af8c4626c813ce4859f70a5c',1,'mlx::core::load_safetensors(std::shared_ptr< io::Reader > in_stream, StreamOrDevice s={})'],['../namespacemlx_1_1core.html#af7eea1682a38d363c56a066321e6d526',1,'mlx::core::load_safetensors(const std::string &file, StreamOrDevice s={})']]], - ['load_5fstrided_24',['load_strided',['../struct_read_writer.html#a998ef484bade81f726b9edfc6b878197',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a3d9c8cbc582cad6b5218339d0f721559',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a795a71a8e1f154a5af415ebe1b3f0713',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a0935b946b8bf2e769427fcbf2da2f7be',1,'ReadWriter::load_strided(int stride, int overall_n)'],['../struct_read_writer.html#a7d45368c74a8b7c632659504b3273a13',1,'ReadWriter::load_strided(int stride, int overall_n)']]], - ['load_5funsafe_25',['load_unsafe',['../struct_g_e_m_v_kernel.html#a6013e9c5b2f72fa1311dd038172df0ce',1,'GEMVKernel::load_unsafe()'],['../struct_quantized_block_loader.html#a86009527cb4b53e4c21fd6b1f78cfefc',1,'QuantizedBlockLoader::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a961836be363409744e48e595d5e0c2ec',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a8034abc10483487fc94313e3674d1111',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a69e2f7c9814d1cc1c5c267be8618dc55',1,'mlx::steel::Conv2DWeightBlockLoader::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#aa11d1a142bc868df462f48a7102147f3',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a0e262b003ac0e7ee6272585eac921704',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a3859ca11b5991ef6ee9b99afdc3ea30a',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::load_unsafe()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a8f078982186421f5b484c0b53af9c655',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::load_unsafe()'],['../structmlx_1_1steel_1_1_block_loader.html#a6c9e27f11f48b34580ed2c7e9cad9a27',1,'mlx::steel::BlockLoader::load_unsafe()'],['../kernels_2scan_8h.html#a9c415d07921f3961bad0a00a34f4a9a3',1,'load_unsafe(U values[N_READS], const device T *input): scan.h']]], - ['load_5fvector_26',['load_vector',['../quantized_8h.html#a8dbace41de9e1e21dd59d016db11b3e9',1,'quantized.h']]], - ['load_5fvector_5fsafe_27',['load_vector_safe',['../quantized_8h.html#aa69e143d646fad332c1a53e8c9b337b7',1,'quantized.h']]], - ['location_28',['location',['../structlooped__elem__to__loc.html#accc6d4957a8aeb38f5062754793b74d2',1,'looped_elem_to_loc::location()'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#a368d2a2204cee5055386954acd5ccb90',1,'looped_elem_to_loc< 1, offset_t >::location()'],['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html#a8c7aaffda0ca500d9f9566e5e74217a2',1,'looped_elem_to_loc< 0, offset_t >::location()']]], - ['log_29',['Log',['../classmlx_1_1core_1_1_log.html#a663e54790c60b56eb0ff09f4f6635fb9',1,'mlx::core::Log']]], - ['log_30',['log',['../namespacemetal.html#a423a9f4f2fc7ef5ec7eda061277b51b6',1,'metal::log()'],['../namespacemetal_1_1fast.html#aef942e7f9e5c2e58c58644ab1bdd58d1',1,'metal::fast::log()'],['../namespacemetal_1_1precise.html#a341c2b8c27d1bed860f85f8b355023d4',1,'metal::precise::log()'],['../group__ops.html#ga6fb22d4926133573e430fcc92f4eef31',1,'mlx::core::log()']]], - ['log10_31',['log10',['../namespacemetal.html#a042b98827baa910e9d726227cec55a80',1,'metal::log10()'],['../namespacemetal_1_1fast.html#a0d1150cf2deee5100a7ea2988b3bb39e',1,'metal::fast::log10()'],['../namespacemetal_1_1precise.html#a44239067e8e9248b1574353f98e94d72',1,'metal::precise::log10()'],['../group__ops.html#ga1fdcc7fc8819caf2e6f1c327ed4e9b9e',1,'mlx::core::log10()']]], - ['log1p_32',['Log1p',['../classmlx_1_1core_1_1_log1p.html#ab0d6eb90c6f98775fce56f3446ff127a',1,'mlx::core::Log1p']]], - ['log1p_33',['log1p',['../backend_2metal_2kernels_2utils_8h.html#a27c03f2f90ab56db2e4d59559a3d2e9a',1,'log1p(float x): utils.h'],['../backend_2metal_2kernels_2utils_8h.html#a3501b665c8837eabf9789ea27a7d6946',1,'log1p(bfloat16_t x): utils.h'],['../group__ops.html#ga20a1f4270c35b0fa544f5105a87a1604',1,'mlx::core::log1p()']]], - ['log2_34',['log2',['../namespacemetal.html#ae894dd5fc13799f120b55cab6267c89c',1,'metal::log2()'],['../namespacemetal_1_1fast.html#a986ef245dd433ae62af864f5cbb07118',1,'metal::fast::log2()'],['../namespacemetal_1_1precise.html#a632dbbdcc1a465cf4739a14306147573',1,'metal::precise::log2()'],['../group__ops.html#ga144228d7222d15af3a135b8b0f3fa21b',1,'mlx::core::log2()']]], - ['logaddexp_35',['LogAddExp',['../classmlx_1_1core_1_1_log_add_exp.html#ad8938ca90ccf1a3259973fc68902975a',1,'mlx::core::LogAddExp']]], - ['logaddexp_36',['logaddexp',['../group__ops.html#gaf985df6609c6bd75a14a844655d89eaa',1,'mlx::core']]], - ['logical_5fand_37',['logical_and',['../group__ops.html#ga768977cda8d68cf23f464a6af9907876',1,'mlx::core']]], - ['logical_5fnot_38',['logical_not',['../group__ops.html#gabca78d34ce93f0de2814e62225bb2a53',1,'mlx::core']]], - ['logical_5for_39',['logical_or',['../group__ops.html#ga23768728e4dd070c917fbb0ed0d0c2ec',1,'mlx::core']]], - ['logicaland_40',['LogicalAnd',['../classmlx_1_1core_1_1_logical_and.html#aaf2cab8ffcf6606b8babfef60fc06fb3',1,'mlx::core::LogicalAnd']]], - ['logicalnot_41',['LogicalNot',['../classmlx_1_1core_1_1_logical_not.html#a6f5850b4c78b83d5e2c0d37437fc79b7',1,'mlx::core::LogicalNot']]], - ['logicalor_42',['LogicalOr',['../classmlx_1_1core_1_1_logical_or.html#a269c22daca1c15ad010bb860bce93918',1,'mlx::core::LogicalOr']]], - ['logsumexp_43',['logsumexp',['../group__ops.html#gacff4eb57c085d571e722083680267ac5',1,'mlx::core::logsumexp(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga59be50b4e92f1dc20b53460cefa3910d',1,'mlx::core::logsumexp(const array &a, StreamOrDevice s={})'],['../group__ops.html#gae3969c7bd24c4f3ab97831df28239689',1,'mlx::core::logsumexp(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#gafef5cb2159c16a60a95470cc823bdd44',1,'mlx::core::logsumexp(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['lowest_44',['lowest',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ae81c58b8223e504965183c99d19a2116',1,'metal::_numeric_limits_impl< bfloat16_t >']]] -]; diff --git a/docs/build/html/search/functions_d.js b/docs/build/html/search/functions_d.js deleted file mode 100644 index 5aac9fc5..00000000 --- a/docs/build/html/search/functions_d.js +++ /dev/null @@ -1,49 +0,0 @@ -var searchData= -[ - ['make_5farrays_0',['make_arrays',['../classmlx_1_1core_1_1array.html#a1173db4e23f5a8230911cb8fba45d5e6',1,'mlx::core::array']]], - ['make_5fcontiguous_5fstrides_1',['make_contiguous_strides',['../namespacemlx_1_1core.html#ac9fb1286a1a00395e901dbff80560895',1,'mlx::core']]], - ['make_5fstring_2',['make_string',['../namespacemlx_1_1core.html#aed148d95e7b5221f1312473deded0d27',1,'mlx::core']]], - ['make_5fsynchronize_5ftask_3',['make_synchronize_task',['../namespacemlx_1_1core_1_1metal.html#ab31abdda3052162d59f6590a89e38337',1,'mlx::core::metal']]], - ['make_5ftask_4',['make_task',['../namespacemlx_1_1core_1_1metal.html#a4552b7ccdfa7f3cc9895c09799d8048e',1,'mlx::core::metal']]], - ['malloc_5',['malloc',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a9a17d2c7a97772bf4a15e6c74af34ca4',1,'mlx::core::allocator::Allocator::malloc()'],['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#a4f3d5de6b8c0eba22e9403b28a5ef3f0',1,'mlx::core::allocator::CommonAllocator::malloc()'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#a6c0feb9b1ff9977f76c69745393944bc',1,'mlx::core::metal::MetalAllocator::malloc()'],['../namespacemlx_1_1core_1_1allocator.html#a560d10a166e3c294f3757166f9bd6801',1,'mlx::core::allocator::malloc(size_t size)']]], - ['malloc_5for_5fwait_6',['malloc_or_wait',['../namespacemlx_1_1core_1_1allocator.html#a86ac0a11ff78f21e717f641716c34abc',1,'mlx::core::allocator']]], - ['matmul_7',['Matmul',['../classmlx_1_1core_1_1_matmul.html#adef92f30ab35e540ccb316ea6b94e6f7',1,'mlx::core::Matmul']]], - ['matmul_8',['matmul',['../group__ops.html#ga753d59f5a9f5f2362865ee83b4dced2a',1,'mlx::core']]], - ['max_9',['max',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a92320d40a58218e40cc414986ac95c50',1,'metal::_numeric_limits_impl< bfloat16_t >::max()'],['../namespacemetal.html#a853c80479ab2264d9c4587c7bcac767b',1,'metal::max()'],['../namespacemetal_1_1fast.html#a747e2e58092a27fb8b4dd3d16934fb52',1,'metal::fast::max()'],['../namespacemetal_1_1precise.html#a6a954a4e4e3753303d1dc734855a185f',1,'metal::precise::max()'],['../group__ops.html#ga7fed87d96cc7741d8267f4eac83f5fe7',1,'mlx::core::max(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga25be91d70a5f40341db0615a0b8bfedc',1,'mlx::core::max(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga1ca7b6b91fe2459a7d83897bf013827f',1,'mlx::core::max(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga7b638050e03a93f2896c981bc2850a47',1,'mlx::core::max(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['max3_10',['max3',['../namespacemetal.html#a00f9c0ad66d969794614f56912eed9c9',1,'metal::max3()'],['../namespacemetal_1_1fast.html#a6fc2cf18ffa8149561864c86dba0f803',1,'metal::fast::max3()'],['../namespacemetal_1_1precise.html#ac490e8614ebd2c9343af1ae6c0d4e82c',1,'metal::precise::max3()']]], - ['maximum_11',['Maximum',['../classmlx_1_1core_1_1_maximum.html#a28389307e385efe1b2955b86b115e816',1,'mlx::core::Maximum']]], - ['maximum_12',['maximum',['../group__ops.html#ga7ade2ea305e2e4219c3609443fb5db8d',1,'mlx::core']]], - ['mb_5fblock_5fmerge_13',['mb_block_merge',['../sort_8h.html#ab381cd57f344bc7304ab580bfdc78807',1,'sort.h']]], - ['mb_5fblock_5fpartition_14',['mb_block_partition',['../sort_8h.html#a32cbe4163b8b0f5cb2c97b256119a4b2',1,'sort.h']]], - ['mb_5fblock_5fsort_15',['mb_block_sort',['../sort_8h.html#a2a0533103661dd378d6bfe949930650a',1,'sort.h']]], - ['mean_16',['mean',['../group__ops.html#gade46e768fd46b8b640eb16f26abeecef',1,'mlx::core::mean(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga52b59fdd8e8430538e564f5bbcfa31e6',1,'mlx::core::mean(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga066161f3d3e395a1d76c638cb680d444',1,'mlx::core::mean(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga45fba73eab0e3b6e128ed3ce2f43a5da',1,'mlx::core::mean(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['median3_17',['median3',['../namespacemetal.html#aa3ff49457ce3c93fc1c0897fd1525157',1,'metal::median3()'],['../namespacemetal_1_1fast.html#a742b55f1e4369921ee7f60d70185bfbc',1,'metal::fast::median3()'],['../namespacemetal_1_1precise.html#a14555ff99c4388493fec48e070144ae2',1,'metal::precise::median3()']]], - ['merge_5fpartition_18',['merge_partition',['../struct_block_merge_sort.html#ab2300cbecb23f3433bad888924c831ca',1,'BlockMergeSort::merge_partition()'],['../struct_kernel_multi_block_merge_sort.html#ab15895b4233aba0e279cc44a07a201fe',1,'KernelMultiBlockMergeSort::merge_partition()']]], - ['merge_5fstep_19',['merge_step',['../struct_block_merge_sort.html#ab65f190edf1851b37c39ad49ce99a43c',1,'BlockMergeSort']]], - ['meshgrid_20',['meshgrid',['../group__ops.html#ga577c911618575314de63d1060656a26e',1,'mlx::core']]], - ['metal_5fkernel_21',['metal_kernel',['../namespacemlx_1_1core_1_1fast.html#ab16436b465dc10ce472193d541d8426e',1,'mlx::core::fast']]], - ['min_22',['min',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#adaed80031f5ca0ff69d30ec4c5d0c98f',1,'metal::_numeric_limits_impl< bfloat16_t >::min()'],['../namespacemetal.html#a6653b28c9473087141eddce39878d4d3',1,'metal::min()'],['../namespacemetal_1_1fast.html#a3e958e56a4712687c381a0b64d123e61',1,'metal::fast::min()'],['../namespacemetal_1_1precise.html#afed0da2f7df3505b5dffa2389c3cb36e',1,'metal::precise::min()'],['../group__ops.html#gab27599802617a4c8f9964ab5f4ffee12',1,'mlx::core::min(const array &a, bool keepdims, StreamOrDevice s={})'],['../group__ops.html#ga0140b91e9cdfc3fef0da8e332f65a9e8',1,'mlx::core::min(const array &a, StreamOrDevice s={})'],['../group__ops.html#ga6efb83cd46436678c8f8c4af15cc00f5',1,'mlx::core::min(const array &a, const std::vector< int > &axes, bool keepdims=false, StreamOrDevice s={})'],['../group__ops.html#ga36fa315eef677f4143868f552cd26d03',1,'mlx::core::min(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['min3_23',['min3',['../namespacemetal.html#a005510c8c0f964ce2b8aad3ba76a7a3f',1,'metal::min3()'],['../namespacemetal_1_1fast.html#a606a4c1b34ce05ea89ca5af81724036f',1,'metal::fast::min3()'],['../namespacemetal_1_1precise.html#a4d37ce31c3549ca4772a4ee29798e231',1,'metal::precise::min3()']]], - ['minimum_24',['Minimum',['../classmlx_1_1core_1_1_minimum.html#ab0f2ce17108df44b82cff68886b0f6f5',1,'mlx::core::Minimum']]], - ['minimum_25',['minimum',['../group__ops.html#ga49ba00c090f81f331c91b0c97040bce0',1,'mlx::core']]], - ['mlx_5fatomic_5fcompare_5fexchange_5fweak_5fexplicit_26',['mlx_atomic_compare_exchange_weak_explicit',['../atomic_8h.html#ad7f32327ff66354cfa2f0cfdac79316f',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread T *expected, T val, size_t offset): atomic.h'],['../atomic_8h.html#aa8f47b2e9b95d4b00ad51f08b070deb5',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread uint *expected, uint val, size_t offset): atomic.h']]], - ['mlx_5fatomic_5ffetch_5fadd_5fexplicit_27',['mlx_atomic_fetch_add_explicit',['../atomic_8h.html#aad448d9e06e001700b65ca8317216a3b',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fand_5fexplicit_28',['mlx_atomic_fetch_and_explicit',['../atomic_8h.html#a253e3c870c0ddc7c28ab2f6ca2c3eae5',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_29',['mlx_atomic_fetch_max_explicit',['../atomic_8h.html#ac480f2b459a8ad9095cee353e152d00c',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_3c_20float_20_3e_30',['mlx_atomic_fetch_max_explicit< float >',['../atomic_8h.html#a1dce2abfa16417122c4d2bf261129ae4',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_31',['mlx_atomic_fetch_min_explicit',['../atomic_8h.html#a2ec33dca0039bd944d73d1c2b378cc19',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_3c_20float_20_3e_32',['mlx_atomic_fetch_min_explicit< float >',['../atomic_8h.html#ab7d1dc49f319f239b7ee0b7c72976dd0',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5fmul_5fexplicit_33',['mlx_atomic_fetch_mul_explicit',['../atomic_8h.html#adfdbea60436f14f1af9ce36e2a0a77a3',1,'atomic.h']]], - ['mlx_5fatomic_5ffetch_5for_5fexplicit_34',['mlx_atomic_fetch_or_explicit',['../atomic_8h.html#ab7391f197001471e4788312bdb6ab37a',1,'atomic.h']]], - ['mlx_5fatomic_5fload_5fexplicit_35',['mlx_atomic_load_explicit',['../atomic_8h.html#a253a4e8c2c5768a069e2791b627dfc99',1,'atomic.h']]], - ['mlx_5fatomic_5fstore_5fexplicit_36',['mlx_atomic_store_explicit',['../atomic_8h.html#a0ae453140b0819a4c02f265334de98c0',1,'atomic.h']]], - ['mma_37',['mma',['../structmlx_1_1steel_1_1_block_m_m_a.html#a6a2c2a6d5e767d52c41b42a9d36086b0',1,'mlx::steel::BlockMMA']]], - ['move_5fshared_5fbuffer_38',['move_shared_buffer',['../classmlx_1_1core_1_1array.html#acce00db63e0f3d80f797b02397ade836',1,'mlx::core::array::move_shared_buffer(array other, const std::vector< size_t > &strides, Flags flags, size_t data_size, size_t offset=0)'],['../classmlx_1_1core_1_1array.html#a38d7ad605f8282e5e49d0c09e0555c78',1,'mlx::core::array::move_shared_buffer(array other)']]], - ['moveaxis_39',['moveaxis',['../group__ops.html#ga24067d10a842db2c9d509ea48135a2c3',1,'mlx::core']]], - ['mpinplace_40',['MPINPLACE',['../namespacepocketfft_1_1detail.html#af5eedf3cdfc83c0a30807092c39a9ce2',1,'pocketfft::detail']]], - ['mtl_5fdevice_41',['mtl_device',['../classmlx_1_1core_1_1metal_1_1_device.html#a31dba377f2be44a746db10d1b9367653',1,'mlx::core::metal::Device']]], - ['multi_5fiter_42',['multi_iter',['../classpocketfft_1_1detail_1_1multi__iter.html#a9be43bb18840202da6d17988fccc64b9',1,'pocketfft::detail::multi_iter']]], - ['multiply_43',['Multiply',['../classmlx_1_1core_1_1_multiply.html#aca5c50f900321f3eb4d6fbcbc225c00c',1,'mlx::core::Multiply']]], - ['multiply_44',['multiply',['../group__ops.html#gaf57392e641640b5d06e4c99518391c38',1,'mlx::core']]], - ['multivariate_5fnormal_45',['multivariate_normal',['../namespacemlx_1_1core_1_1random.html#a8c37da3c1c0c561cad7499d6d9db81fb',1,'mlx::core::random']]] -]; diff --git a/docs/build/html/search/functions_e.js b/docs/build/html/search/functions_e.js deleted file mode 100644 index 5c5a8009..00000000 --- a/docs/build/html/search/functions_e.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['n_5factive_5ftasks_0',['n_active_tasks',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a3c9fa21442974acba3409d49bb033131',1,'mlx::core::scheduler::Scheduler::n_active_tasks()'],['../namespacemlx_1_1core_1_1scheduler.html#a9bf641981df5fc16b0fb0dbacc0c3afd',1,'mlx::core::scheduler::n_active_tasks()']]], - ['nan_5fto_5fnum_1',['nan_to_num',['../group__ops.html#gab1467c6a9e675152e768afd6dcfb61de',1,'mlx::core']]], - ['nbytes_2',['nbytes',['../classmlx_1_1core_1_1array.html#a387b67cd3ef5cfc1e749c371766c4a05',1,'mlx::core::array']]], - ['nd_5floop_3',['nd_loop',['../namespacemlx_1_1core.html#a9a9254ce9975ec247a2718bc02d6f201',1,'mlx::core']]], - ['ndarr_4',['ndarr',['../classpocketfft_1_1detail_1_1ndarr.html#a8f0037a172d96cb1ad915a5069175fa2',1,'pocketfft::detail::ndarr']]], - ['ndim_5',['ndim',['../classpocketfft_1_1detail_1_1arr__info.html#ac608c8af2a59a28a0012e308be7ee414',1,'pocketfft::detail::arr_info::ndim()'],['../classmlx_1_1core_1_1array.html#a53006e77d13d9d88b525ef577748939f',1,'mlx::core::array::ndim()']]], - ['negative_6',['Negative',['../classmlx_1_1core_1_1_negative.html#aa3b73395d9fa5b7215dca488bc0d3c70',1,'mlx::core::Negative']]], - ['negative_7',['negative',['../group__ops.html#ga95d9a9425533b5ed1707eb00184dffc6',1,'mlx::core']]], - ['new_5fqueue_8',['new_queue',['../classmlx_1_1core_1_1metal_1_1_device.html#a8135ae2a8c1e6f3861e84d4e60c28b67',1,'mlx::core::metal::Device']]], - ['new_5fstream_9',['new_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a157c8da85fa1bddb8eacf8515a3cc879',1,'mlx::core::scheduler::Scheduler::new_stream()'],['../namespacemlx_1_1core_1_1metal.html#a8b4188f9a090a1da42d62b8a369bf106',1,'mlx::core::metal::new_stream()'],['../namespacemlx_1_1core.html#a6f7c63a9be10337b3b96d527e1db3c2f',1,'mlx::core::new_stream()']]], - ['next_10',['next',['../struct_quantized_block_loader.html#a674138ef7c43cc45586ea9f8fd6f6bd9',1,'QuantizedBlockLoader::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a3b71f379ff9baf39830c92f4f1ecde52',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a78d2b0098311a278be8394edbd5fc731',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter::next()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#aae56c19bb562219770fec38e5666c6ce',1,'mlx::steel::Conv2DWeightBlockLoader::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#af9ce1a767266664bea131a5437002c80',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels::next()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#a30b10bebde7f08b89d03bdd9ea0f48da',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels::next()'],['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a3e5ee68ed0ee43f7e979dd4222f76a8c',1,'mlx::steel::Conv2DInputBlockLoaderGeneral::next()'],['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#a11743cb1c108f42ccdc6e59204a5b3e8',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral::next()'],['../structmlx_1_1steel_1_1_block_loader.html#a6af21428f0e7c17b48ddedf4dd20a1e8',1,'mlx::steel::BlockLoader::next()'],['../structlooped__elem__to__loc.html#a05558dabba889ee0d80ed4b567d901ca',1,'looped_elem_to_loc::next(const constant int *shape, const constant size_t *strides)'],['../structlooped__elem__to__loc.html#add610f331ef8d7d2d1917050890f82b2',1,'looped_elem_to_loc::next(int n, const constant int *shape, const constant size_t *strides)'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#a96cf2987c04210c9197e5237e425c4b4',1,'looped_elem_to_loc< 1, offset_t >::next(const constant int *, const constant size_t *strides)'],['../structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html#af2984b35f7d7300d4812e7872b3c8851',1,'looped_elem_to_loc< 1, offset_t >::next(int n, const constant int *, const constant size_t *strides)'],['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html#aa1e9e1009c16befb9a730835836436e0',1,'looped_elem_to_loc< 0, offset_t >::next(const constant int *, const constant size_t *)'],['../structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html#a1064cdfdcef779b5628ce5357a6fe4f0',1,'looped_elem_to_loc< 0, offset_t >::next(int, const constant int *, const constant size_t *)'],['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a4193c5eac3ef093a740d5305b25d3e18',1,'mlx::core::random::KeySequence::next()']]], - ['next_5fpower_5fof_5f2_11',['next_power_of_2',['../namespacemlx_1_1core.html#a685c0530e338aabc622325685846ce93',1,'mlx::core']]], - ['nextafter_12',['nextafter',['../namespacemetal.html#a9547fd7b09164931986f6db4813bd72d',1,'metal::nextafter()'],['../namespacemetal_1_1fast.html#a4583e8be04fc0bd475b97b0934604f23',1,'metal::fast::nextafter()'],['../namespacemetal_1_1precise.html#ad012ceeb55b77f1533749b351331e026',1,'metal::precise::nextafter()']]], - ['norm_13',['norm',['../namespacemlx_1_1core_1_1linalg.html#aba765b8e95e9a1d33d31f727a185919d',1,'mlx::core::linalg::norm(const array &a, const double ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#acaa85b4146821c268abecec2422c02d2',1,'mlx::core::linalg::norm(const array &a, const double ord, int axis, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#af1ebe0c6dcba9a1c49b5e397dddf3264',1,'mlx::core::linalg::norm(const array &a, const std::string &ord, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#ae8da67e4c6e073f93889f1051203cd9e',1,'mlx::core::linalg::norm(const array &a, const std::string &ord, int axis, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#a229018071d5602e38d6248230f334a10',1,'mlx::core::linalg::norm(const array &a, const std::optional< std::vector< int > > &axis=std::nullopt, bool keepdims=false, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1linalg.html#a44250cff34238f01471fd61e76036f03',1,'mlx::core::linalg::norm(const array &a, int axis, bool keepdims=false, StreamOrDevice s={})']]], - ['normal_14',['normal',['../namespacemlx_1_1core_1_1random.html#aa3977269b77f66c6397c7c72f873d17a',1,'mlx::core::random::normal(const std::vector< int > &shape, Dtype dtype, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#aa3516ace3ebc5e80ca73fb8f50df436f',1,'mlx::core::random::normal(const std::vector< int > &shape, const float loc, const float scale, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a75ecf88e36a4013ecda18a91cb60befb',1,'mlx::core::random::normal(const std::vector< int > &shape, const Dtype dtype, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})'],['../namespacemlx_1_1core_1_1random.html#a7723a27a0093a1f51ca31d26c1d061c8',1,'mlx::core::random::normal(const std::vector< int > &shape, const std::optional< array > &key=std::nullopt, StreamOrDevice s={})']]], - ['normalize_5faxis_15',['normalize_axis',['../namespacemlx_1_1core.html#a0181b5d72bf3d34448dabc70f7ff858d',1,'mlx::core']]], - ['not_5fequal_16',['not_equal',['../group__ops.html#ga28f22c5d2c399eee53be7b3facc11103',1,'mlx::core']]], - ['notequal_17',['NotEqual',['../classmlx_1_1core_1_1_not_equal.html#ac568397bd17b5d9f25ad1a0ebadedbb9',1,'mlx::core::NotEqual']]], - ['notify_5fnew_5ftask_18',['notify_new_task',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#ae8aa34a9be8bc73508dd500000421173',1,'mlx::core::scheduler::Scheduler::notify_new_task()'],['../namespacemlx_1_1core_1_1scheduler.html#a6b7289e33cef665178fe614aac75c1b2',1,'mlx::core::scheduler::notify_new_task()']]], - ['notify_5ftask_5fcompletion_19',['notify_task_completion',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#abbb2b1c2f8bae2b9c7cc51db65f18a3b',1,'mlx::core::scheduler::Scheduler::notify_task_completion()'],['../namespacemlx_1_1core_1_1scheduler.html#a1d06ffdbab36790b78deb6e34adc737f',1,'mlx::core::scheduler::notify_task_completion()']]], - ['num_5fthreads_20',['num_threads',['../namespacepocketfft_1_1detail_1_1threading.html#af5432c2e25aed679a73fe7b29534c833',1,'pocketfft::detail::threading']]], - ['number_5fof_5felements_21',['number_of_elements',['../group__ops.html#ga6d5f5f72362488b956cdc4615ef6c636',1,'mlx::core']]], - ['numberofelements_22',['NumberOfElements',['../classmlx_1_1core_1_1_number_of_elements.html#ac64d7c40ae29d687f8b7d2fa33e13b06',1,'mlx::core::NumberOfElements']]] -]; diff --git a/docs/build/html/search/functions_f.js b/docs/build/html/search/functions_f.js deleted file mode 100644 index ed746d41..00000000 --- a/docs/build/html/search/functions_f.js +++ /dev/null @@ -1,48 +0,0 @@ -var searchData= -[ - ['offset_5fneg_5fidx_0',['offset_neg_idx',['../kernels_2indexing_8h.html#ab41167dc537c06fbdb4df100972393df',1,'indexing.h']]], - ['ofs_1',['ofs',['../classpocketfft_1_1detail_1_1simple__iter.html#ab59481ad9c8f04addb907c3ebb89f8fa',1,'pocketfft::detail::simple_iter::ofs()'],['../classpocketfft_1_1detail_1_1rev__iter.html#a78c3b4ad19edf9d20cab40ad109e9dd1',1,'pocketfft::detail::rev_iter::ofs()']]], - ['ones_2',['ones',['../group__ops.html#ga54eeed455321a54c8e72e16552a978f2',1,'mlx::core::ones(const std::vector< int > &shape, Dtype dtype, StreamOrDevice s={})'],['../group__ops.html#ga6cf4b5e8580e4436302c519d05897dab',1,'mlx::core::ones(const std::vector< int > &shape, StreamOrDevice s={})']]], - ['ones_5flike_3',['ones_like',['../group__ops.html#ga94f8d3b1906fee99da9cbe39f7be7d42',1,'mlx::core']]], - ['oofs_4',['oofs',['../classpocketfft_1_1detail_1_1multi__iter.html#aae63e67caac095d474ddd32daa5ffa34',1,'pocketfft::detail::multi_iter::oofs(size_t i) const'],['../classpocketfft_1_1detail_1_1multi__iter.html#a9236047e7419e5d21379cbf95eb3a78e',1,'pocketfft::detail::multi_iter::oofs(size_t j, size_t i) const']]], - ['operator_20bool_5',['operator bool',['../struct___no_mask.html#ad3723c1e70e46beefd283ce6317416cb',1,'_NoMask::operator bool()'],['../struct___no_mask.html#aafbf8a3201e1cc1abf74dd1f1b7272cd',1,'_NoMask::operator bool() const threadgroup'],['../struct___no_mask.html#a73e9612a619885cbc97cbd8f40df71e7',1,'_NoMask::operator bool() const device'],['../struct___no_mask.html#a4bf336d472bc677028250f76b9cdc08c',1,'_NoMask::operator bool() const constant'],['../struct___no_mask.html#ad3723c1e70e46beefd283ce6317416cb',1,'_NoMask::operator bool()'],['../struct___no_mask.html#aafbf8a3201e1cc1abf74dd1f1b7272cd',1,'_NoMask::operator bool() const threadgroup'],['../struct___no_mask.html#a73e9612a619885cbc97cbd8f40df71e7',1,'_NoMask::operator bool() const device'],['../struct___no_mask.html#a4bf336d472bc677028250f76b9cdc08c',1,'_NoMask::operator bool() const constant']]], - ['operator_20dtype_6',['operator Dtype',['../structmlx_1_1core_1_1_type_to_dtype.html#aefdd0fd6a5bbf0197a3996ccd4adea13',1,'mlx::core::TypeToDtype']]], - ['operator_20float_7',['operator float',['../structmlx_1_1core_1_1___m_l_x___b_float16.html#aaae72e5340ce91325f1925be36ba46cb',1,'mlx::core::_MLX_BFloat16::operator float()'],['../structmlx_1_1core_1_1complex128__t.html#a3e2faf180c0b785646a0e4296f709a5e',1,'mlx::core::complex128_t::operator float()'],['../structmlx_1_1core_1_1complex64__t.html#a90d224dd37308345086bb9cc882ef6fc',1,'mlx::core::complex64_t::operator float()'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a363de5054f3673bddc90293fc3c9bb99',1,'mlx::core::_MLX_Float16::operator float()']]], - ['operator_20t_8',['operator T',['../struct___m_l_x___b_float16.html#aa7dfefdf0d15e102d2b8258c9ab01836',1,'_MLX_BFloat16::operator T() const thread'],['../struct___m_l_x___b_float16.html#a2546a8afa77e14ed5b3c5da79a281260',1,'_MLX_BFloat16::operator T() const threadgroup'],['../struct___m_l_x___b_float16.html#a1d523f87740fcb852db6ab57896c245a',1,'_MLX_BFloat16::operator T() const device'],['../struct___m_l_x___b_float16.html#a95acd29283024d7093a0bc58c9468a0a',1,'_MLX_BFloat16::operator T() const constant'],['../structcomplex64__t.html#a70e9b16031eeaff3baa601f400023fcd',1,'complex64_t::operator T() const thread'],['../structcomplex64__t.html#a4f3beea7ab6001189b782a74d1746b67',1,'complex64_t::operator T() const threadgroup'],['../structcomplex64__t.html#a9f4f7eca89ffe6c8d126a4145df6d9f2',1,'complex64_t::operator T() const device'],['../structcomplex64__t.html#ac33e2e5263fec76a4fb4418c6e1d8d14',1,'complex64_t::operator T() const constant']]], - ['operator_20val_9',['operator Val',['../structmlx_1_1core_1_1_dtype.html#a3b3bc059be5836476da3cb88a4f5e9fd',1,'mlx::core::Dtype']]], - ['operator_21_3d_10',['operator!=',['../backend_2metal_2kernels_2bf16_8h.html#afc6e4fc5589bbf30f978f34868dd4e55',1,'operator!=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a6baa722c22d66c7510786bb275cb8cc2',1,'operator!=(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa8d9f01582a0a9f01a666d110c74db2a',1,'operator!=(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa504a474ab6e00ebe2b1b7ed2f7d1ffb',1,'operator!=(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abf5f3040227f021a5b84cf2eda248b2f',1,'operator!=(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a347c9bbf816bad2e9e5e91aa448f8b65',1,'operator!=(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a33ea086b561c652f25833a5e1ded34dd',1,'operator!=(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2bbdcece13148826d3fe33af727bb79b',1,'operator!=(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aeb1efa47c5f22cc0b35d49ccce73c406',1,'operator!=(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa6b99cde403405df1865c989e4ce845a',1,'operator!=(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a204d13a881ae8d337f6efbb98673790c',1,'operator!=(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3602117b4c61d5cd4fd72fb8e5f68bd6',1,'operator!=(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2721c088adfc9d73cde442d6badd2a6c',1,'operator!=(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a94d00a1b7f8a4717ab3f26f45e4da655',1,'mlx::core::operator!=(const Device &lhs, const Device &rhs)'],['../group__ops.html#ga0ac483d85f23252ca8757e9926d5a3c5',1,'mlx::core::operator!=(const array &a, const array &b)'],['../group__ops.html#ga3fecba9f3cb9a19afd8ca492cf509ce0',1,'mlx::core::operator!=(T a, const array &b)'],['../group__ops.html#gaebbf1cfde388c7480159a03c92c9a385',1,'mlx::core::operator!=(const array &a, T b)'],['../namespacemlx_1_1core.html#a164f109bc19c927b2b3bcc47a5021419',1,'mlx::core::operator!=(const Stream &lhs, const Stream &rhs)'],['../namespacemlx_1_1core.html#ad2f9e1c230ec35d5c406dd616e8f4dea',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af5899b4d5644682cb0ac2a488f630d55',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a72ac8edd190601d7a46782582cedecd8',1,'mlx::core::operator!=(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a8084162ba2dd3f9b89195d2bebc3fbb0',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a514263e63f6825b490203ca586864687',1,'mlx::core::operator!=(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a1c482bb3d9f9d4c62dee5865892c1f96',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a0030fe7ad09837c670cdfb7d51279519',1,'mlx::core::operator!=(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ade3791bc723b8f10fbab22eadb0f705a',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ad78c664f242cd36247c13868547e3dd4',1,'mlx::core::operator!=(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab0743a1a1dcb92d40f41ca42d36f242c',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ae7a0f810e546a166c7d05849b5d41f30',1,'mlx::core::operator!=(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a676a40637a563f013c725d24fa33fdc8',1,'mlx::core::operator!=(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a9fcb662b1561e4136bac0106cfb63b6c',1,'mlx::core::operator!=(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abcca7fd43590c4347e0f5df8f134030c',1,'mlx::core::operator!=(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af3ede3688a2e3b3ba8cb2da180ffe151',1,'mlx::core::operator!=(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a54f48469fabd1414bef5097bcded0002',1,'mlx::core::operator!=(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af8c648e892cbc6973de535aa17dc2cfe',1,'mlx::core::operator!=(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#abc855e1c0584b64d7d995e33211361ab',1,'mlx::core::operator!=(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad3684d660d18a54505c759ab286bd936',1,'mlx::core::operator!=(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a8afdda14b14262ab5ce0a00c7745d7e8',1,'mlx::core::operator!=(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7ccc479be236f2bf3f7725729c5ba201',1,'mlx::core::operator!=(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a26a721b8111fce3a1dec9bf724034cd4',1,'mlx::core::operator!=(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad5f8c221a53a89e8095aa39fd1f61867',1,'mlx::core::operator!=(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a017b52ecf30b33da4aa8da35ccc43220',1,'mlx::core::operator!=(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a43c10ca5fb05ee7d0ee63ba56f8a08a3',1,'mlx::core::operator!=(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a81284b6ac737f91a8d1ffbbbbf938fe5',1,'mlx::core::operator!=(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_25_11',['operator%',['../backend_2metal_2kernels_2complex_8h.html#aaf53122a07c8eca858b5a8e38ae280e0',1,'operator%(): complex.h'],['../group__ops.html#gab3bfbf82b1e4de7b00bbcf1a2255fbde',1,'mlx::core::operator%(const array &a, const array &b)'],['../group__ops.html#ga50817666f0b82afcbf4a123486af9908',1,'mlx::core::operator%(T a, const array &b)'],['../group__ops.html#ga46c01daa07433542a477d216e13a8480',1,'mlx::core::operator%(const array &a, T b)'],['../namespacemlx_1_1core.html#a8723d145dd49021bfcb8e6c99e1c91a5',1,'mlx::core::operator%(complex64_t a, complex64_t b)']]], - ['operator_26_12',['operator&',['../group__ops.html#gaf0d232de4cbfffda1e2c838f8afdf6ff',1,'mlx::core::operator&(const array &a, const array &b)'],['../namespacemlx_1_1core.html#a9ee95f97bbd69262d99d7bea3bf77631',1,'mlx::core::operator&(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0fefc3ae4f1350ebe05ec6098fd6bae3',1,'mlx::core::operator&(_MLX_BFloat16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a1e4cb758ccfe5c267baed9aeb0044834',1,'mlx::core::operator&(uint16_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab9d0f9910070231695d61de08cadb930',1,'mlx::core::operator&(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a889d401f425db79d1868aa3beea4829b',1,'mlx::core::operator&(_MLX_Float16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a76dcd1fa3c68b386bc1d1d899a68a120',1,'mlx::core::operator&(uint16_t lhs, _MLX_Float16 rhs)']]], - ['operator_26_26_13',['operator&&',['../group__ops.html#gaee1d774bb0843601d7a0a4257d616ae3',1,'mlx::core']]], - ['operator_26_3d_14',['operator&=',['../namespacemlx_1_1core.html#a60c263ef46e552c3954688869734b513',1,'mlx::core::operator&=(_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af9670fc8088339669c54c68b3a320e25',1,'mlx::core::operator&=(_MLX_BFloat16 &lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#ad1f96f0a02024f347b4c4431629407fc',1,'mlx::core::operator&=(_MLX_Float16 &lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae0540f16c4e7bd55d0e86a88495e4967',1,'mlx::core::operator&=(_MLX_Float16 &lhs, uint16_t rhs)']]], - ['operator_28_29_15',['operator()',['../structpocketfft_1_1detail_1_1_exec_c2_c.html#a4fd637f1a6d335826789af28ac089ecb',1,'pocketfft::detail::ExecC2C::operator()()'],['../structpocketfft_1_1detail_1_1_exec_hartley.html#a67c98b38d12440781053552b9a33bba1',1,'pocketfft::detail::ExecHartley::operator()()'],['../structpocketfft_1_1detail_1_1_exec_dcst.html#a67f4f56e3574c491695f8cb8a1e983d8',1,'pocketfft::detail::ExecDcst::operator()()'],['../structpocketfft_1_1detail_1_1_exec_r2_r.html#acdba1650962714e6afff51e9ca456970',1,'pocketfft::detail::ExecR2R::operator()()'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a0d657bc9a381dca1b5860b9a1b5a5702',1,'mlx::core::detail::Abs::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a564232db7d32811e2ae126c86de104f0',1,'mlx::core::detail::Abs::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a5fac7e6c8277d8706535a52820503c9d',1,'mlx::core::detail::Abs::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#af2c3723e648bd5ed2fe558cc20b7f5eb',1,'mlx::core::detail::Abs::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#a57312cd8530dd0ede3b8037f9c401883',1,'mlx::core::detail::Abs::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_abs.html#ab3b5e3853ed56bfbfa577d965c21112e',1,'mlx::core::detail::Abs::operator()(bool x)'],['../structmlx_1_1core_1_1detail_1_1_arc_cos.html#a04b4c9d1fc0160973aa28b1f809b9d51',1,'mlx::core::detail::ArcCos::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_cosh.html#a767d354bec863942822ee0b9b6742a88',1,'mlx::core::detail::ArcCosh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_sin.html#ac69091929815e5317308b4088f5c2f46',1,'mlx::core::detail::ArcSin::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_sinh.html#ac7bf9bac66fef917f75494b2345e6aaf',1,'mlx::core::detail::ArcSinh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_tan.html#aee87bf10c278a70ca788085d1b499afe',1,'mlx::core::detail::ArcTan::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_tan2.html#a9040b7afcdb4969924aa782fa67f03ac',1,'mlx::core::detail::ArcTan2::operator()()'],['../structmlx_1_1core_1_1detail_1_1_arc_tanh.html#a601e8c52bb938eb3a616756a35419e8b',1,'mlx::core::detail::ArcTanh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a672f65e47d65e4e8d88be252bce0164b',1,'mlx::core::detail::Ceil::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a72a2cab2728fb5e1cc6329a539e5d573',1,'mlx::core::detail::Ceil::operator()(int8_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#aa34590f6a41331be92988558a90dc6fa',1,'mlx::core::detail::Ceil::operator()(int16_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#af14120f3dd98f6198ea257d75be223f7',1,'mlx::core::detail::Ceil::operator()(int32_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#af263ce7743cf7319387baba616c375b5',1,'mlx::core::detail::Ceil::operator()(int64_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a48f00affcd5c2ea1f81d821e019fec29',1,'mlx::core::detail::Ceil::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#ad4d24a44e8a328948393701dacb0ceac',1,'mlx::core::detail::Ceil::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#a70da19b5c9c69f04b9f196bdf266f93c',1,'mlx::core::detail::Ceil::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#af0e7e806b73c664ada837476f9d4d43b',1,'mlx::core::detail::Ceil::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_ceil.html#acc1bfc84a9b91f6e9764234cbe3b9687',1,'mlx::core::detail::Ceil::operator()(bool x)'],['../structmlx_1_1core_1_1detail_1_1_conjugate.html#a7e662d05c6998bd6ced8ad9c187324a5',1,'mlx::core::detail::Conjugate::operator()()'],['../structmlx_1_1core_1_1detail_1_1_cos.html#ad4caef573f9d9071f8945a8efed231ad',1,'mlx::core::detail::Cos::operator()()'],['../structmlx_1_1core_1_1detail_1_1_cosh.html#a63591f49776d9aadc02200036ae38317',1,'mlx::core::detail::Cosh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_erf.html#a168f8ccc6c8053b05dd1a48904ca8fd4',1,'mlx::core::detail::Erf::operator()()'],['../structmlx_1_1core_1_1detail_1_1_erf_inv.html#acc93c0511141404208b35f302f8c1fcb',1,'mlx::core::detail::ErfInv::operator()()'],['../structmlx_1_1core_1_1detail_1_1_exp.html#a0846300cee28315e5b42f74acafbd1a1',1,'mlx::core::detail::Exp::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_exp.html#af247c0d19d59f3310fd0a081eb92cf8b',1,'mlx::core::detail::Exp::operator()(complex64_t x)'],['../structmlx_1_1core_1_1detail_1_1_expm1.html#abf7e61b8387521e9d44334ce88d833a0',1,'mlx::core::detail::Expm1::operator()()'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a16c13cfe736098bffc81d655e172294a',1,'mlx::core::detail::Floor::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a9b6c4c34b6594b8c413abe31f34a73df',1,'mlx::core::detail::Floor::operator()(int8_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#aca4c71204b3ceeca6329f7ea2b041f4c',1,'mlx::core::detail::Floor::operator()(int16_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a3c3ab9e00d1fbd124802517e8c35fe02',1,'mlx::core::detail::Floor::operator()(int32_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a4b5954ffc59c741dd7b86bafda69d5cc',1,'mlx::core::detail::Floor::operator()(int64_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a2e33b10bd5b04551054a87c601440bc7',1,'mlx::core::detail::Floor::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a2500f971100919a694f78669a5e4f438',1,'mlx::core::detail::Floor::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a23df818301d68389e6e12f5a9ec1fbd7',1,'mlx::core::detail::Floor::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#ac988b4f265cf46c68609c9c8787c15fb',1,'mlx::core::detail::Floor::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_floor.html#a7f936e3fd53772bc189d845c73b53202',1,'mlx::core::detail::Floor::operator()(bool x)'],['../structmlx_1_1core_1_1detail_1_1_log.html#a0012a4e1744dbe9a28c3b5652be6e1c6',1,'mlx::core::detail::Log::operator()()'],['../structmlx_1_1core_1_1detail_1_1_log2.html#a467bd4c995674721ff5fff6df33aead8',1,'mlx::core::detail::Log2::operator()()'],['../structmlx_1_1core_1_1detail_1_1_log10.html#a2633c5b772bbc9f8b66cffd4a3e01a3f',1,'mlx::core::detail::Log10::operator()()'],['../structmlx_1_1core_1_1detail_1_1_log1p.html#a3220de8c6090c44aa2070b1fbb2dc340',1,'mlx::core::detail::Log1p::operator()()'],['../structmlx_1_1core_1_1detail_1_1_logical_not.html#a79799668ea5c364b0b4e2bc330e76253',1,'mlx::core::detail::LogicalNot::operator()()'],['../structmlx_1_1core_1_1detail_1_1_negative.html#afc4595c70ef7196df374cf4b2cc5e526',1,'mlx::core::detail::Negative::operator()()'],['../structmlx_1_1core_1_1detail_1_1_round.html#a653f29c059bbfa6192378732a8a23351',1,'mlx::core::detail::Round::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_round.html#a82a984f13568051009e257fe85227da6',1,'mlx::core::detail::Round::operator()(complex64_t x)'],['../structmlx_1_1core_1_1detail_1_1_sigmoid.html#a64b72561bfaf758632167f00648f4c89',1,'mlx::core::detail::Sigmoid::operator()()'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a64ed5013cee7ff18c7fe70bc04737e7b',1,'mlx::core::detail::Sign::operator()(T x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a7106ed1f2f98a365fcb3e6ee39084748',1,'mlx::core::detail::Sign::operator()(uint8_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a7163e8c068dcc460600ed04014dc9945',1,'mlx::core::detail::Sign::operator()(uint16_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#ae8f56c7134721c846240830169424c22',1,'mlx::core::detail::Sign::operator()(uint32_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a10ae519e9a74a327fc72c410e9ab2936',1,'mlx::core::detail::Sign::operator()(uint64_t x)'],['../structmlx_1_1core_1_1detail_1_1_sign.html#a91be4e273f6c7ea5d44cfab380b77603',1,'mlx::core::detail::Sign::operator()(complex64_t x)'],['../structmlx_1_1core_1_1detail_1_1_sin.html#ae95671816529cc2188389af37a2f1a13',1,'mlx::core::detail::Sin::operator()()'],['../structmlx_1_1core_1_1detail_1_1_sinh.html#a9663ddf0fa4c0003576b48f3d5385f00',1,'mlx::core::detail::Sinh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_square.html#a54e9e3c0d0896e142289e8282eab1099',1,'mlx::core::detail::Square::operator()()'],['../structmlx_1_1core_1_1detail_1_1_sqrt.html#aa5a4830b3ef7efab20ea88a110667efd',1,'mlx::core::detail::Sqrt::operator()()'],['../structmlx_1_1core_1_1detail_1_1_rsqrt.html#a9af247be16bab83243038aac54446b79',1,'mlx::core::detail::Rsqrt::operator()()'],['../structmlx_1_1core_1_1detail_1_1_tan.html#aba397cd7ac05bbe06dfa9e3a64bdb05f',1,'mlx::core::detail::Tan::operator()()'],['../structmlx_1_1core_1_1detail_1_1_tanh.html#a1749ba1edfd53095ed7d45c0e53bab61',1,'mlx::core::detail::Tanh::operator()()'],['../structmlx_1_1core_1_1detail_1_1_add.html#a2d6011c35768b5fcd2bb75747b944353',1,'mlx::core::detail::Add::operator()()'],['../structmlx_1_1core_1_1detail_1_1_divide.html#a5e0d22e2084c4ca81bec0d457a46c662',1,'mlx::core::detail::Divide::operator()()'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a3bdaf1095ad883ecc0fecc455f02cbf3',1,'mlx::core::detail::Remainder::operator()(T numerator, T denominator)'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a52c3a2ba86fccb24d37d218ae8328954',1,'mlx::core::detail::Remainder::operator()(T numerator, T denominator)'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a0b0dd6ef5b08585fdf8355770da8d747',1,'mlx::core::detail::Remainder::operator()(T numerator, T denominator)'],['../structmlx_1_1core_1_1detail_1_1_remainder.html#a68fe542084fb94d9a5abd740fe07832b',1,'mlx::core::detail::Remainder::operator()(complex64_t numerator, complex64_t denominator)'],['../structmlx_1_1core_1_1detail_1_1_equal.html#a2994cf1884e7126e76d0a20b215fe3ab',1,'mlx::core::detail::Equal::operator()()'],['../structmlx_1_1core_1_1detail_1_1_na_n_equal.html#a073b20b0d8d41ec8364b7c477421b9bf',1,'mlx::core::detail::NaNEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_greater.html#aa3844c2bae3c7a981739f642aa0dd094',1,'mlx::core::detail::Greater::operator()()'],['../structmlx_1_1core_1_1detail_1_1_greater_equal.html#a3b005f85522ad0e4b57044eed930ac30',1,'mlx::core::detail::GreaterEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_less.html#a0b4032dff1ad2b387745cb000aabdcbb',1,'mlx::core::detail::Less::operator()()'],['../structmlx_1_1core_1_1detail_1_1_less_equal.html#a31e70f8830a07557697541301555a7a7',1,'mlx::core::detail::LessEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_maximum.html#a3eb37abec8426ebc42b8c685075c523a',1,'mlx::core::detail::Maximum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_maximum.html#af99345c7c8bc95ccab1b22c0792ac6fd',1,'mlx::core::detail::Maximum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_minimum.html#afca0861556416a8547dd8574528feb69',1,'mlx::core::detail::Minimum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_minimum.html#a64b2eecfbc56aaef7deb939423bac3f8',1,'mlx::core::detail::Minimum::operator()(T x, T y)'],['../structmlx_1_1core_1_1detail_1_1_log_add_exp.html#ad1663fd809acaa4038f90666436599e5',1,'mlx::core::detail::LogAddExp::operator()()'],['../structmlx_1_1core_1_1detail_1_1_multiply.html#a898b090966b047723513224b8d3b22f1',1,'mlx::core::detail::Multiply::operator()()'],['../structmlx_1_1core_1_1detail_1_1_not_equal.html#a23d662b5fd968dc17d3bee2595b5f99d',1,'mlx::core::detail::NotEqual::operator()()'],['../structmlx_1_1core_1_1detail_1_1_power.html#a2c047e1b488e6525447a224975a75db8',1,'mlx::core::detail::Power::operator()(T base, T exp)'],['../structmlx_1_1core_1_1detail_1_1_power.html#a9967db24b8f67d54b6aa3810e274f28c',1,'mlx::core::detail::Power::operator()(T base, T exp)'],['../structmlx_1_1core_1_1detail_1_1_subtract.html#a72ef05830615a2d5d9662926ed82672a',1,'mlx::core::detail::Subtract::operator()()'],['../structmlx_1_1core_1_1detail_1_1_logical_and.html#a046536c1f2f9367983f052a213d7b7d8',1,'mlx::core::detail::LogicalAnd::operator()()'],['../structmlx_1_1core_1_1detail_1_1_logical_or.html#afb134dbab79307d4ba597843c61d0b1a',1,'mlx::core::detail::LogicalOr::operator()()'],['../structmlx_1_1core_1_1detail_1_1_select.html#a930f9da2e6b3453e04f21382435a2cfb',1,'mlx::core::detail::Select::operator()()'],['../structmlx_1_1core_1_1detail_1_1_bitwise_and.html#ae0bed77f95fe2b2f0b594addddd04700',1,'mlx::core::detail::BitwiseAnd::operator()()'],['../structmlx_1_1core_1_1detail_1_1_bitwise_or.html#a5ab05734c5000b454975de6647a08d20',1,'mlx::core::detail::BitwiseOr::operator()()'],['../structmlx_1_1core_1_1detail_1_1_bitwise_xor.html#a0989e3bcd064ae06c33f660696a869a0',1,'mlx::core::detail::BitwiseXor::operator()()'],['../structmlx_1_1core_1_1detail_1_1_left_shift.html#a9385f580830a6ad163dd9bb8c4905e7a',1,'mlx::core::detail::LeftShift::operator()()'],['../structmlx_1_1core_1_1detail_1_1_right_shift.html#a154528ba50e89a4c532a181f135b1620',1,'mlx::core::detail::RightShift::operator()()'],['../structmlx_1_1core_1_1_default_strided_reduce.html#a024682ab93b84e544a07e3a9c3c51fba',1,'mlx::core::DefaultStridedReduce::operator()()'],['../structmlx_1_1core_1_1_default_contiguous_reduce.html#a08144c7a3cdf10af5e47f4575da3694f',1,'mlx::core::DefaultContiguousReduce::operator()()'],['../struct_add.html#ac5c66b63d63a222d3ae0ab8cc7c90eb5',1,'Add::operator()()'],['../struct_floor_divide.html#a2b328e4d768e718fa439f955c524666a',1,'FloorDivide::operator()(T x, T y)'],['../struct_floor_divide.html#afc16a2b2a745225e0bc95640f3fc0219',1,'FloorDivide::operator()(float x, float y)'],['../struct_floor_divide.html#ae91719a15f7e643d552129f476089c6a',1,'FloorDivide::operator()(half x, half y)'],['../struct_floor_divide.html#a4aa9f858626583e02bd79f747229bbca',1,'FloorDivide::operator()(bfloat16_t x, bfloat16_t y)'],['../struct_divide.html#a0a16b9194abc2ab7c61129f81a9bbb3d',1,'Divide::operator()()'],['../struct_remainder.html#ab7875512ff4341c580c6dc372e64fc58',1,'Remainder::operator()(T x, T y)'],['../struct_remainder.html#a18150b5f4425e30b95ffabc6bb25cede',1,'Remainder::operator()(T x, T y)'],['../struct_remainder.html#ab3b75f54b56fd357c9755daadb2cafc2',1,'Remainder::operator()(T x, T y)'],['../struct_remainder.html#ae918ce0e246937d4fe04e2ea36e4b2c1',1,'Remainder::operator()(complex64_t x, complex64_t y)'],['../struct_equal.html#aa498087080900d4428ba428a6496a769',1,'Equal::operator()()'],['../struct_na_n_equal.html#a00220898e02db656d21dde9e9354a8dc',1,'NaNEqual::operator()(T x, T y)'],['../struct_na_n_equal.html#a6185e4554dce5b4659d21673c576be51',1,'NaNEqual::operator()(complex64_t x, complex64_t y)'],['../struct_greater.html#a98d7d8ee360cd0f469c6eb9a017560f5',1,'Greater::operator()()'],['../struct_greater_equal.html#ae69a3bccc567a46506cf0d296294ce80',1,'GreaterEqual::operator()()'],['../struct_less.html#a5ee0b31b2d9123dc4504f2979a5854d3',1,'Less::operator()()'],['../struct_less_equal.html#ae9f9a1b2eae548977139704f0044acfe',1,'LessEqual::operator()()'],['../struct_log_add_exp.html#ab32417f18e8ff68c15f78aceeb624edf',1,'LogAddExp::operator()()'],['../struct_maximum.html#a3ea0f42bc4cd80b68a98f189f9fa859c',1,'Maximum::operator()(T x, T y)'],['../struct_maximum.html#a0bc8fadc87f2c49fc440d625bfc97ca6',1,'Maximum::operator()(T x, T y)'],['../struct_maximum.html#a907e8793900be5927625377dab199644',1,'Maximum::operator()(complex64_t x, complex64_t y)'],['../struct_minimum.html#aa6113dfac3986c0f571fa53f65c5330e',1,'Minimum::operator()(T x, T y)'],['../struct_minimum.html#a0c939921de87ab9c6959238aac81a059',1,'Minimum::operator()(T x, T y)'],['../struct_minimum.html#a800fba087280f79c2f7e9aff75bed093',1,'Minimum::operator()(complex64_t x, complex64_t y)'],['../struct_multiply.html#a1327fc5a0713931afe997b0d4d2988e0',1,'Multiply::operator()()'],['../struct_not_equal.html#af008d73a5d9cde0b8309b7e8ee7438b2',1,'NotEqual::operator()(T x, T y)'],['../struct_not_equal.html#a14de494cea4e4869351202cad1149f17',1,'NotEqual::operator()(complex64_t x, complex64_t y)'],['../struct_power.html#a2b6df2a9e48155ff9734caca8504a79f',1,'Power::operator()(T base, T exp)'],['../struct_power.html#a36829163d42973034a1f8a7ecc57a1de',1,'Power::operator()(T base, T exp)'],['../struct_power.html#a27cdfb313c4e82b63bdcdaee923cbbef',1,'Power::operator()(complex64_t x, complex64_t y)'],['../struct_subtract.html#ae0856cd8d449074ca287baa7e460f68a',1,'Subtract::operator()()'],['../struct_logical_and.html#a8bc6bdabc0ea0678a46e2cf6217cb3a6',1,'LogicalAnd::operator()()'],['../struct_logical_or.html#ade6a931324a604a3119d2220d6f5460d',1,'LogicalOr::operator()()'],['../struct_bitwise_and.html#afb48af090b01dd0200963bc12d842e36',1,'BitwiseAnd::operator()()'],['../struct_bitwise_or.html#a41f847463daafa99ee56f4035578390f',1,'BitwiseOr::operator()()'],['../struct_bitwise_xor.html#a3a3e8a56caab739d40262d9349c9c485',1,'BitwiseXor::operator()()'],['../struct_left_shift.html#aa729747784c38bfdbba34794fcf5175b',1,'LeftShift::operator()()'],['../struct_right_shift.html#a2cc59b400c68342b0e43050431323c17',1,'RightShift::operator()()'],['../struct_arc_tan2.html#ac9b7729753e13be293ab700231d061ac',1,'ArcTan2::operator()()'],['../struct_div_mod.html#a8b5758f2ea18d4c903b462331b25abfe',1,'DivMod::operator()()'],['../struct_cum_sum.html#aacc713dde086ef04b54abb675131468e',1,'CumSum::operator()()'],['../struct_cum_prod.html#af1ffa2672332ca27e287c3ba59c73e1e',1,'CumProd::operator()()'],['../struct_cum_prod_3_01bool_01_4.html#ad634be0b139d10ce6d21332eef0d936b',1,'CumProd< bool >::operator()()'],['../struct_cum_max.html#a781b9b955c5412466da6af6c70d73c06',1,'CumMax::operator()()'],['../struct_cum_min.html#ae0b8c3761e04fa538d304ca842281a66',1,'CumMin::operator()()'],['../struct_less_than.html#a2798eb377b411c93a4ed30cf35caade2',1,'LessThan::operator()()'],['../struct_select.html#adb51692aae3038de07dd745891bf9848',1,'Select::operator()()'],['../struct_abs.html#a9e7481dfcc162509769852026ff4a344',1,'Abs::operator()(T x)'],['../struct_abs.html#a0ca113fd036151c443df3f83cc667f28',1,'Abs::operator()(uint8_t x)'],['../struct_abs.html#adaeab32a7e377dc990077ab15f3dc4c2',1,'Abs::operator()(uint16_t x)'],['../struct_abs.html#a99d2a2f37a6cddd3168b0224f2a9b963',1,'Abs::operator()(uint32_t x)'],['../struct_abs.html#ac9cbc02422d930479303f240a7ea6c71',1,'Abs::operator()(uint64_t x)'],['../struct_abs.html#ac30835b27784d451bd2e4524c8eb9e11',1,'Abs::operator()(bool x)'],['../struct_abs.html#ab82917d6b30a2c579e7eb879d305c5fc',1,'Abs::operator()(complex64_t x)'],['../struct_arc_cos.html#a5553cecf58511e24e76ac97f2d90b9ac',1,'ArcCos::operator()()'],['../struct_arc_cosh.html#a5c9e7712c14c97298b23ec48e19abc58',1,'ArcCosh::operator()()'],['../struct_arc_sin.html#a0343872f2da93bae2bb0baadf49da022',1,'ArcSin::operator()()'],['../struct_arc_sinh.html#a3066fb7dc7c3180100fb55ff94af6a7a',1,'ArcSinh::operator()()'],['../struct_arc_tan.html#af3a0aec6acec8ae8f5e4c4d5cf8c91ba',1,'ArcTan::operator()()'],['../struct_arc_tanh.html#a37dc3e01ec2830de7e82ed6c6363ac88',1,'ArcTanh::operator()()'],['../struct_ceil.html#a5e2a4ef1b012f5d352064489156e5e44',1,'Ceil::operator()(T x)'],['../struct_ceil.html#a455cd8083ba859993077f2e078ae165b',1,'Ceil::operator()(int8_t x)'],['../struct_ceil.html#a2acb61bc658c7a216795e7f76ebcf98a',1,'Ceil::operator()(int16_t x)'],['../struct_ceil.html#aef8c37f7a8ee3fc80700d605a09891fb',1,'Ceil::operator()(int32_t x)'],['../struct_ceil.html#a93d0110511ad5dd200e12d37a3d7d6e3',1,'Ceil::operator()(int64_t x)'],['../struct_ceil.html#aa335b745fa26e0f443cdb36298105484',1,'Ceil::operator()(uint8_t x)'],['../struct_ceil.html#ade17e13b7f30f5c590fae1581a2013ac',1,'Ceil::operator()(uint16_t x)'],['../struct_ceil.html#a411c75cc35cdc088402e176a1defd22d',1,'Ceil::operator()(uint32_t x)'],['../struct_ceil.html#a9ac660ca29eef7a7429fceb7b917a68a',1,'Ceil::operator()(uint64_t x)'],['../struct_ceil.html#a40de367e62f06ebd7e1330afa93a9ad9',1,'Ceil::operator()(bool x)'],['../struct_cos.html#ae222f8710f6b8254c471ebd475aa5bda',1,'Cos::operator()(T x)'],['../struct_cos.html#a5f26feb1dcc4bec5f59a9ff511c5b163',1,'Cos::operator()(complex64_t x)'],['../struct_cosh.html#a5847ebeebb236fdc926798ddc16475ba',1,'Cosh::operator()(T x)'],['../struct_cosh.html#aefdd91298dac16d528d29ee47e2f7252',1,'Cosh::operator()(complex64_t x)'],['../struct_conjugate.html#acb0a2694285f1f57c7654b371ce8cbd8',1,'Conjugate::operator()()'],['../struct_erf.html#a80719402ad7f7d418859a6677d7b604d',1,'Erf::operator()()'],['../struct_erf_inv.html#afbf3668d1a512e889f093a0bc7673309',1,'ErfInv::operator()()'],['../struct_exp.html#a5ef395868e055348c0802fd5fe45669c',1,'Exp::operator()(T x)'],['../struct_exp.html#a2b341ac400c4d145397950eb60734336',1,'Exp::operator()(complex64_t x)'],['../struct_expm1.html#a4b834d42cf0b84daf03fec62c222091a',1,'Expm1::operator()()'],['../struct_floor.html#ace3551f28429081e9f3a3dab0c84212b',1,'Floor::operator()(T x)'],['../struct_floor.html#a10d7fd05b4c224c9f135451246d13014',1,'Floor::operator()(int8_t x)'],['../struct_floor.html#a2865a04a492e3590302f4bd3215a10d7',1,'Floor::operator()(int16_t x)'],['../struct_floor.html#a41012343ff0463ec44b4d06196f41182',1,'Floor::operator()(int32_t x)'],['../struct_floor.html#aae3181d15856796aa0628cf30c92aa2e',1,'Floor::operator()(int64_t x)'],['../struct_floor.html#ac6cf38d82c8e270911afdca4c69ad51b',1,'Floor::operator()(uint8_t x)'],['../struct_floor.html#a78969b9e2b53ae248e72a67259eea5d8',1,'Floor::operator()(uint16_t x)'],['../struct_floor.html#a959009320ed622ed45b39becab1d5b98',1,'Floor::operator()(uint32_t x)'],['../struct_floor.html#a7d04b83c3345cd867315cae2d7ff68ab',1,'Floor::operator()(uint64_t x)'],['../struct_floor.html#abea845fe5e8e6b93bd4bca8717337e0b',1,'Floor::operator()(bool x)'],['../struct_log.html#a32a383cb6be06e616a75f23bf49089c3',1,'Log::operator()()'],['../struct_log2.html#ac1e067ecdcbdbffb6106e789c2b98b64',1,'Log2::operator()()'],['../struct_log10.html#ac596a74c1642a00f3eced07ee3334122',1,'Log10::operator()()'],['../struct_log1p.html#a4464c6e7bdbe55ffd7d961c695cd13ce',1,'Log1p::operator()()'],['../struct_logical_not.html#a8a620bac957ab8c09ac85adfddd96708',1,'LogicalNot::operator()()'],['../struct_negative.html#af6879b374314a559faa321e8cce3d710',1,'Negative::operator()()'],['../struct_round.html#aa06a0195867e2ceb679c403b6909a1c4',1,'Round::operator()(T x)'],['../struct_round.html#ad3a08f2276ff1033900bc0a7da812655',1,'Round::operator()(complex64_t x)'],['../struct_sigmoid.html#a75a24cd75cb4d4c9a072811b2d70ad55',1,'Sigmoid::operator()()'],['../struct_sign.html#aa3304c6b43bcad53061614b741d8403c',1,'Sign::operator()(T x)'],['../struct_sign.html#ac48992b675b8b28be1e27e1f2ec5d2f7',1,'Sign::operator()(uint32_t x)'],['../struct_sign.html#ae07a4249e1b61419a3b9ca6c337b7bb5',1,'Sign::operator()(complex64_t x)'],['../struct_sin.html#a7caf98c777521fa5d5c6ddaaa3b779fd',1,'Sin::operator()(T x)'],['../struct_sin.html#aa510cf4595b6d49065ab6b602d8fcb14',1,'Sin::operator()(complex64_t x)'],['../struct_sinh.html#a02cf32bcf560657b9ee34fb1affed8e2',1,'Sinh::operator()(T x)'],['../struct_sinh.html#a1f8ba1858d352ee68861cd6ea861af43',1,'Sinh::operator()(complex64_t x)'],['../struct_square.html#afde739fc544e45dd30964c02dca94310',1,'Square::operator()()'],['../struct_sqrt.html#ab9b16d2b9b03a1c54190f4479a56a4ad',1,'Sqrt::operator()()'],['../struct_rsqrt.html#ae16699fd829e40416436247a39233fda',1,'Rsqrt::operator()()'],['../struct_tan.html#a1e6fb8c691621c69cb9bd393de4f6e78',1,'Tan::operator()(T x)'],['../struct_tan.html#a2ef120c9f92b0d2e9cec8389eda05724',1,'Tan::operator()(complex64_t x)'],['../struct_tanh.html#adce11a7ad33226c6ecff34f46f5c45d7',1,'Tanh::operator()(T x)'],['../struct_tanh.html#aa8423b43c725bb4b88965a11e8cf20f6',1,'Tanh::operator()(complex64_t x)']]], - ['operator_2a_16',['operator*',['../structpocketfft_1_1detail_1_1cmplx.html#a26bf3d709a58f06228e502af6db8e5ac',1,'pocketfft::detail::cmplx::operator*(const T2 &other) const -> cmplx< decltype(r *other)>'],['../structpocketfft_1_1detail_1_1cmplx.html#ad9c591ef8ae976293f207937d273e9a1',1,'pocketfft::detail::cmplx::operator*(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>'],['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a153756072fda6d3e53bcca11b46a1238',1,'mlx::core::array::ArrayIterator::operator*()'],['../backend_2metal_2kernels_2bf16_8h.html#a8f06316063fc91747533105f256b55b5',1,'operator*(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7b3bce3f6f17089d87e13e91f580a581',1,'operator*(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a54ae7216b82c5cea362f6b83e1df3a9b',1,'operator*(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a852689073c17596de4fb545bc046b380',1,'operator*(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a168300bbd04d8e97c5e4218cb14ae378',1,'operator*(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a6278bd2e0e2805090b33ef666bf7f6bb',1,'operator*(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aecf703522d9ce32dfeefe1e6e903db06',1,'operator*(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7cd44d27fa9a4f13df39894c34fdb348',1,'operator*(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aee64dc1890abb6d1035361cb8c751f96',1,'operator*(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad1a559ab88dbbb4fd2c7509d2c94e55b',1,'operator*(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a495ae2d9be5d97c4c6448fc4e50a03e1',1,'operator*(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a87ab4b7a502430da664ccb8abd383058',1,'operator*(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5f997839cf49c24ab594a0dff486a7bc',1,'operator*(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a681d4fb076973f58f7dac894ec62a385',1,'operator*(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga26c33f5cdb6fc10d272acd6e208034e0',1,'mlx::core::operator*(const array &a, const array &b)'],['../group__ops.html#gac22a67f7de797b1ae59029843cbdcab6',1,'mlx::core::operator*(T a, const array &b)'],['../group__ops.html#ga6f2369ed5fae8ff9b1528670a004dde2',1,'mlx::core::operator*(const array &a, T b)'],['../namespacemlx_1_1core.html#a0cc824d6318f97f7058918ab64ddfc25',1,'mlx::core::operator*(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a81e1c727c3fc48910b030cb65a9e7afa',1,'mlx::core::operator*(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a861d948220d8f48d46c68d2ddb16a096',1,'mlx::core::operator*(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a13d16561812679b36e68185dc4b2d04d',1,'mlx::core::operator*(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a5287610200ff573730c9c92413f48881',1,'mlx::core::operator*(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a377ccc6b4ef36767abca102dca56dc10',1,'mlx::core::operator*(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a5d696b63635ce6967526d6a410f7f6b1',1,'mlx::core::operator*(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abe90e9527bfa3e1c813d41df4a2372e7',1,'mlx::core::operator*(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a5f14963c77f96bcb5a3bef5661a86ba4',1,'mlx::core::operator*(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#acfb06fe9f5fee01dbb5a2b23bccfd0d3',1,'mlx::core::operator*(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#afc9a87f1fccbac05242b91bfbb35c24d',1,'mlx::core::operator*(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0b9678af9b487900cacf6639a4693de0',1,'mlx::core::operator*(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ad5950619081389e6ed7512f38358d33d',1,'mlx::core::operator*(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a65d25d082374761c05b056e1046d1d4e',1,'mlx::core::operator*(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a759191fb984e7737f0ef529c2053ad73',1,'mlx::core::operator*(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a3a52675c3d4552b319dd9707844abdec',1,'mlx::core::operator*(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a45d67f5d80fba4d42e34c682a8d22beb',1,'mlx::core::operator*(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ad25880c67bbcbfafbe54dc16418bf736',1,'mlx::core::operator*(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a63c836e1141e07ae72cee770bad01200',1,'mlx::core::operator*(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a265a37b8ee4a97390213e9ec49693e66',1,'mlx::core::operator*(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab5a457da04dcb157a0b5172c4b2244b6',1,'mlx::core::operator*(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#aa56a8bda08be9ef3711496e216a75c95',1,'mlx::core::operator*(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af89612098dd355b1eefb841c753b36ab',1,'mlx::core::operator*(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a4552687a0637f710b5d55bb6378fcabe',1,'mlx::core::operator*(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af69db7def588d7da430434a69456e29c',1,'mlx::core::operator*(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a00af6e5095888f00791ee0ab6d993ad6',1,'mlx::core::operator*(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab48feddc1aa304383e5493923506ad7a',1,'mlx::core::operator*(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a0367b582e85162b4180e086f725e49e9',1,'mlx::core::operator*(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a45f0479526fbccdb00bc73ea7f3b7625',1,'mlx::core::operator*(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a394797646010ba9ef2a1f9b9a4b8ddd9',1,'mlx::core::operator*(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#acaaa86b59c7ceb2e092ac07f2a75225c',1,'mlx::core::operator*(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#a067d47823a322b88043cce7ce4a3ec78',1,'mlx::core::operator*(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2a_3d_17',['operator*=',['../structpocketfft_1_1detail_1_1cmplx.html#a683fd490182c9189fa2c05b1823edd93',1,'pocketfft::detail::cmplx::operator*=(T2 other)'],['../structpocketfft_1_1detail_1_1cmplx.html#a06f2c26c6fc4722e61b44da4c242ed87',1,'pocketfft::detail::cmplx::operator*=(const cmplx< T2 > &other)'],['../backend_2metal_2kernels_2bf16_8h.html#a7232b0a0e193b3c6172d6fc2578bf419',1,'operator*=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ade65ebca11e38d56408c512df89b99f4',1,'operator*=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af4348ce3425dd99d069e8fdf06e25a3c',1,'operator*=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2c3c5f793b3d957d7295d7f1faabebee',1,'operator*=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac66657077d55e94197b52b63acb50b7d',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a383165ea838cc3feeee4d9cf54aa77cc',1,'operator*=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab706af260b61f735b28464877d02137c',1,'operator*=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a979374b1dd4e0eaf602326fa901336d1',1,'operator*=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac815eec2c1b15a47b1c6ea6790e77d24',1,'operator*=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8110fae7bcc34a0de5927546b24aa935',1,'operator*=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae4acef3e7ae7dfe359422503f894e885',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adc268cdbc30500f3009f5de2b2f0f67a',1,'operator*=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a81f65b04a87a25c7eb1a751d1be9fa55',1,'operator*=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08c1f916302eb9d48c93f8b7260538fe',1,'operator*=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adc8e82b8f593b12c6d405e2250ab0f62',1,'operator*=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4611728172afea51860a77fdb06cafa0',1,'operator*=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0b8736e2ae24758b6e24ea72668df5b4',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad920df9579603f0b0ee2689eba330617',1,'operator*=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae97ab6c3ddcc2754b24f86319a5398be',1,'operator*=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3ff4ff59f411010ac8502cfabda4bd6f',1,'operator*=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abd3d82e2dec1847e97eb8fc3bab2985a',1,'operator*=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a738078eb7d5ff94ff48156a555d763a5',1,'operator*=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a435f2f4256aadb1b57fd62bb7f733cf7',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0e4377b120d6305335d296e031ee5b30',1,'operator*=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a917354f77eac26189da8a2f610a00074',1,'operator*=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af725f935bfa0405e5ff17ede3ac47283',1,'operator*=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7c56980c234a04260b8b19298085e526',1,'operator*=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab840ff9de0cdd0e9afffb8baa2a850a3',1,'operator*=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a73416a7415f3fe31525e33419e5e8aab',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a16978f4b16d954ef4d4cf0f32f6c0b94',1,'operator*=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a99aa4cc110d1c7aa3b4c8c5cbf9235b7',1,'operator*=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2179abbc91ce8763e96e39e1917bfa6e',1,'operator*=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab070ea4676d10a10ff3e9379a4068a57',1,'operator*=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0197e039d4c65bf49649a6f250c2d436',1,'operator*=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad3565cc6fd1e088d052b1108aa065851',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a711693988c437c2fb4d7da505982fe21',1,'operator*=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aeff4c28986f98c23de1df17043edb0f5',1,'operator*=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7dbf0c75df4817cb4ef8b60c417a89d0',1,'operator*=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a323a80492cd17a49e2c3dd18f8c8b5cc',1,'operator*=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adb465776d3868bda0525d632ffc4d129',1,'operator*=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a12a98d71d670b409b8065e0d61672d55',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5d00eb2ec2b0e15b2753d100694c45ae',1,'operator*=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1a2a683ff40490226eb1371fb905023d',1,'operator*=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4126fb7ed5bbb27a2332c543cf56a337',1,'operator*=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab092d9790ef20fc0386707530aee89db',1,'operator*=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abff1fd2439e31e6e64a3d2fdee3c7821',1,'operator*=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a625dcb133f1f953f263e6200399866c6',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08b6071245513e1726ec68e3b63edc53',1,'operator*=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a13aa79165ec87710e977f33fe0361e91',1,'operator*=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3796dcf819adb1ef8152f57ba63ff6b1',1,'operator*=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aaab79d0b4c9e9bdc059ace6ec58c5b00',1,'operator*=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a0dd3893abc8986901872c8365ab1509d',1,'mlx::core::operator*=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a3cc5c154e4ad9a83ad43da8513146fdc',1,'mlx::core::operator*=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a600e77dbc72e78207b5f5dbf4b298781',1,'mlx::core::operator*=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a54833be1d44bc3adfc9ea218fc3685bd',1,'mlx::core::operator*=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_2b_18',['operator+',['../structpocketfft_1_1detail_1_1cmplx.html#a76447ef141c8732d57421749fc81b236',1,'pocketfft::detail::cmplx::operator+()'],['../structmlx_1_1core_1_1array_1_1_array_iterator.html#ae2adde594b5a4853f6bc78263a957d85',1,'mlx::core::array::ArrayIterator::operator+()'],['../backend_2metal_2kernels_2bf16_8h.html#a09c1a797eb7f43742578680899932f50',1,'operator+(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a551b970f73bb4a3b287653021d000b60',1,'operator+(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a43a225e7e548bb041f3a5d844faaf0da',1,'operator+(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8b6c3fd9d068a2159084359df8b9b449',1,'operator+(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0a5bfe15d95ba540795f4c25ebfa4f07',1,'operator+(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa415ce182fe7582d885fe633fc3527ce',1,'operator+(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a62f891b7dbba0000749cf338f594bedb',1,'operator+(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab43932322f81bf322aa1b0deeee9a987',1,'operator+(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acd15d46ea5827a2a39898ccbb8352eb8',1,'operator+(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a006763fae6e0577fc168ec9446f0f747',1,'operator+(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a12a47e8ac0be788edff57ae0a96d7830',1,'operator+(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af87dfa2122e9c76042dc41fb7f338a87',1,'operator+(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af2737d09c887ee8cd43fdeabceddbe82',1,'operator+(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#ad6af5c6c5ed4898b49758618e5aee189',1,'operator+(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga26e5a043eaaaf066d1400adac9c11d0c',1,'mlx::core::operator+(const array &a, const array &b)'],['../group__ops.html#ga7d0ec8d01e7cefa6a6b25f11876761b5',1,'mlx::core::operator+(T a, const array &b)'],['../group__ops.html#ga7cc080a4f9d4a667f2099aa0dbfefadd',1,'mlx::core::operator+(const array &a, T b)'],['../namespacemlx_1_1core.html#ac14b984970cafd8fbe24d080949515cc',1,'mlx::core::operator+(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab076069c6f0047c548a8dc29d35dd36a',1,'mlx::core::operator+(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#aab9d96b0a168f4d05146000a6212b5d8',1,'mlx::core::operator+(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ac4e6f03d7e4ae701b4eefa784f36185b',1,'mlx::core::operator+(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a4cabd600a5271b0d416c91e8d31dd9c1',1,'mlx::core::operator+(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af26df9dc279d71b7cc10892c72162b58',1,'mlx::core::operator+(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#ac3b97eecec9bd8efb313f8f201560343',1,'mlx::core::operator+(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2e3bb121cbde30c2e6d806df0d41ff59',1,'mlx::core::operator+(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ac87ecce4b44b0826e666a169ddc6f878',1,'mlx::core::operator+(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aed3d9cd32698ef0fe65b1280f103b3f5',1,'mlx::core::operator+(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a6fa13b9359cf3f575fbda5260e6e035d',1,'mlx::core::operator+(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af240a6471ff827819192808bffeb857a',1,'mlx::core::operator+(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ac25a05679f312b724c406d8b282803c9',1,'mlx::core::operator+(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a54863a54f258acf2b5c734950618e4e1',1,'mlx::core::operator+(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a9f81f5ea8909db9660197217612ee446',1,'mlx::core::operator+(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a13e26c38da0a4e332e0ae4eb0aed9cb8',1,'mlx::core::operator+(const std::complex< float > &x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a59bb13a0bb7f748c8de34415b248bc57',1,'mlx::core::operator+(const complex64_t &x, const std::complex< float > &y)'],['../namespacemlx_1_1core.html#a38a44c412c8be4c8b952d3082cc7db74',1,'mlx::core::operator+(const complex64_t &x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a011dbdbd2413e59e744cf82b05431340',1,'mlx::core::operator+(bool x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a230e3b7c479add1b171fa0aaa3a8b13c',1,'mlx::core::operator+(const complex64_t &x, bool y)'],['../namespacemlx_1_1core.html#a3a6f43c2485f0d42293184f1aecbeaee',1,'mlx::core::operator+(uint32_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a766157c5d5d00fdf3da95eb7cb2981b9',1,'mlx::core::operator+(const complex64_t &x, uint32_t y)'],['../namespacemlx_1_1core.html#a64dceec2bb03eee963a2a1bc1ac69284',1,'mlx::core::operator+(uint64_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#ae36badb78a17cd7d13663a69645fc328',1,'mlx::core::operator+(const complex64_t &x, uint64_t y)'],['../namespacemlx_1_1core.html#ac1afa5d4c856e4b58109eff086e70ffd',1,'mlx::core::operator+(int32_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a8978def3c2cfe2a96314d564613b80db',1,'mlx::core::operator+(const complex64_t &x, int32_t y)'],['../namespacemlx_1_1core.html#a5b8af5ca4c0e37aba0b7530542bd64c2',1,'mlx::core::operator+(int64_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a3eaa72850205c18450c3af9a01cda219',1,'mlx::core::operator+(const complex64_t &x, int64_t y)'],['../namespacemlx_1_1core.html#ad38b38a3faf050735d45eed4438ee27a',1,'mlx::core::operator+(float16_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a358e66ff205bda3e8542427b6d2edadc',1,'mlx::core::operator+(const complex64_t &x, float16_t y)'],['../namespacemlx_1_1core.html#af56d4b85e329e39a825c01a50e3a2522',1,'mlx::core::operator+(bfloat16_t x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a806a495a129ebaab69cc57ca7db831d6',1,'mlx::core::operator+(const complex64_t &x, bfloat16_t y)'],['../namespacemlx_1_1core.html#a09fc6ebda917969383783a112a8547e7',1,'mlx::core::operator+(float x, const complex64_t &y)'],['../namespacemlx_1_1core.html#a7ed0e2cdb65612f54e67166762cb6408',1,'mlx::core::operator+(const complex64_t &x, float y)'],['../namespacemlx_1_1core.html#af7577c91b8c43682f0ebc9eb9758aae4',1,'mlx::core::operator+(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#abe36af9951afd8dd3ffe90ceedeb7f2b',1,'mlx::core::operator+(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#afb9f780dd056a4f975518f71a3b021ee',1,'mlx::core::operator+(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a6a8e093b24c4c789b7cd160f7e7f7de9',1,'mlx::core::operator+(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#af3a603690fd3de9e4f7f2035a4d25621',1,'mlx::core::operator+(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#afa2a4bccfeea9688ac922cb638341511',1,'mlx::core::operator+(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a6111e94d51de12391e5d68b765f28fc3',1,'mlx::core::operator+(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7c7dd6d346e0cdf398a896f2c6958258',1,'mlx::core::operator+(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a00872a443f462b0ae0a30c84fb001bc0',1,'mlx::core::operator+(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a4f5d80d03bae6d8d90455d3c47a8c116',1,'mlx::core::operator+(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a78f1f388f9d81ed93f60311f4645d8d0',1,'mlx::core::operator+(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#aa43e1d6958c5d5a6fa9a625a1660e741',1,'mlx::core::operator+(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ae877e1d5e3cf57734da8b49535fe3fb3',1,'mlx::core::operator+(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a9a5ae769f67f886d59c8e292a8218550',1,'mlx::core::operator+(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a058878237ce50baa4c909d8d15448d7e',1,'mlx::core::operator+(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a95fd207028f125eefbafe9e0522407fe',1,'mlx::core::operator+(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#abc6425a3fbb386f5ea5964b42507e989',1,'mlx::core::operator+(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2b_2b_19',['operator++',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a3efe69356a84d0d4438f033992fcbd9d',1,'mlx::core::array::ArrayIterator']]], - ['operator_2b_3d_20',['operator+=',['../structpocketfft_1_1detail_1_1cmplx.html#ad4e69dcd89bdb7764c9c5807168f911e',1,'pocketfft::detail::cmplx::operator+=(const cmplx &other)'],['../structpocketfft_1_1detail_1_1cmplx.html#affa618d8850a7c232793b7c61db6d184',1,'pocketfft::detail::cmplx::operator+=(const cmplx< T2 > &other)'],['../backend_2metal_2kernels_2bf16_8h.html#ab04f480aea9fbba0895068c7558dd400',1,'operator+=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a251780ac4592cc2b1a543e417ff57770',1,'operator+=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a24381d991c2d570aa953694f396a69b5',1,'operator+=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7595740d4cc12924905d6bd1b99ee4da',1,'operator+=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac1498acb8c3623b5f412f70ab6a6528b',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abce5ab327110c164f054b43ed47f79a0',1,'operator+=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae0c70198e236ffe1a98f79987c686419',1,'operator+=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a13b3338935440ae51ecc4a356093efc5',1,'operator+=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5a0cb8544b4ebd2906ba8e7f2868e8de',1,'operator+=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7b134429ea0c8493800ff8b465410f9c',1,'operator+=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4154f90ab7857ca856f9e15fe1bf5acf',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab9ae6a51e2027b02cac9966e05f3ba68',1,'operator+=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab93ce536eb7998bee00de4af868e31a9',1,'operator+=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad0ae9e2b4874f991a2c853e1c1fe735d',1,'operator+=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a194a6670cc25ade35a24b566f31af785',1,'operator+=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3d0d689516c99003659c5d026847bd2e',1,'operator+=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a007f58508b98bb79e5c323ed0dec89b6',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa7198e580e2a83c1fd01a4b6fdf86a80',1,'operator+=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a15573fefd880adefbba079b1c1bd8082',1,'operator+=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a104cf94cb9e359d1b6ef92ced2ce0c27',1,'operator+=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa04cfcb52191fd23205a1a3572b46ae0',1,'operator+=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad684bc2ae1a2a627cd3e4a4c641e2d77',1,'operator+=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad1e28448e35f4934075b397c34ba3d66',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8ad16afd7f1711de83c0cec5af868f76',1,'operator+=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac45e9ca0c7155caebe3d0f7261518077',1,'operator+=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3c62ac679d6aa515144d40ebafe4a188',1,'operator+=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9ff5ab3aef1057fa083b53a65c8aba03',1,'operator+=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae74bb0a3c12cd1a23f3d29ce307d6fb1',1,'operator+=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac188bd19f236b098d603b0d8acd08921',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aef9fa600d107b509f2e3df7d6b080e01',1,'operator+=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af5713afb3a62967a02c3c20661951ee4',1,'operator+=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7f1b84352a3ed6171444a43da1fc7e92',1,'operator+=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af1983edd26245e6e51c6e47354095e32',1,'operator+=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8cd55d1a579540eb450e12a8a8a950be',1,'operator+=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a588ef0f7e03f306758524d378278976f',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a74751abec7086f85f4f26ced44f1ca1f',1,'operator+=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4dd3cf0e5aa116ff330352a50c18cde7',1,'operator+=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afb9a0e18c0e40c77e6143fb7d84ebfba',1,'operator+=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adf0cfd9a608a6fb3d57933e32e7d81d2',1,'operator+=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4bd92db6c8b9b5dc96332c7ae3eff8c7',1,'operator+=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5d628a5bc4fa755610392f47a523a1f1',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7c790442f77f2437b482c4a55e224fc3',1,'operator+=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a77bab4481b41be50297b257e95058706',1,'operator+=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7816a97d16b1d2f8a90227bb1da2f6ac',1,'operator+=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac244d140c6149726ea44174d3e836ca3',1,'operator+=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af802541c4c65ee4442acd495de4d27fe',1,'operator+=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac06eb2fea47a09a8a8abdaa1aa9b4603',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5263b2463fecdc97f9521d00bffea059',1,'operator+=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a24ca436ab299a710263d65302532dd3b',1,'operator+=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aee1bdf0ab2e445293708b476e8cfde3b',1,'operator+=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a190e27077f0fba642a86f5c8f488bcc2',1,'operator+=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a9f2c9d2f21fbf9fbbacd940c6967c9d1',1,'mlx::core::operator+=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a0b1b3c48afc0a785282e43435bba8418',1,'mlx::core::operator+=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a7b763db8194e6fcb1b87eab143dfa47a',1,'mlx::core::operator+=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a827167f6a1ae55428fd218ddd51ec3b6',1,'mlx::core::operator+=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_2d_21',['operator-',['../structpocketfft_1_1detail_1_1cmplx.html#a460da5db36d1c72fb1ed3496fd3abde4',1,'pocketfft::detail::cmplx::operator-()'],['../backend_2metal_2kernels_2bf16_8h.html#a6aedc8d6d0980134ac69b96f22d9a855',1,'operator-(_MLX_BFloat16 x): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a333f67614dbf8027439a7e124052cb85',1,'operator-(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a891aa4bf46c20a26a55061736aba25f1',1,'operator-(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7ad7ff44a3200853711869f7a577d931',1,'operator-(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af69ef8f1d8ecae0e6f755bf1c46cf075',1,'operator-(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5bd875a54b79b2dcedf674807c3e53c5',1,'operator-(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab02f8646b47806e1d2038f248df03f06',1,'operator-(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab27b26182c7c6e08af37e6d511fd9253',1,'operator-(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5868c85c988ec3432cf86d7df40e464d',1,'operator-(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad03ef47e6cc7521bbfb45740dee20f88',1,'operator-(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab789f8a400512ff27e36b3373170f0c5',1,'operator-(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7f601b22ecc480132d82ad782e5363bf',1,'operator-(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a152366ab4e2ccc867e919af6c74ced91',1,'operator-(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a42bead8ef0beb9f3452128d64cd4df9d',1,'operator-(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a226cfd54d49f02e35c5aab3139c7596b',1,'operator-(complex64_t x): complex.h'],['../backend_2metal_2kernels_2complex_8h.html#af5608264cf920688607059b4e8cd3117',1,'operator-(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#gade2eea48989f4caaf36e89f7bd2a8816',1,'mlx::core::operator-(const array &a)'],['../group__ops.html#ga0c7f3cb36d4ca516c7a33142f88b9181',1,'mlx::core::operator-(const array &a, const array &b)'],['../group__ops.html#gae68d3d0691ba951501218e98439f3465',1,'mlx::core::operator-(T a, const array &b)'],['../group__ops.html#gaf5e5d882c51ad0a0ea315c274d5439b2',1,'mlx::core::operator-(const array &a, T b)'],['../namespacemlx_1_1core.html#a622ce842fe44e4b6a95e03242341b459',1,'mlx::core::operator-(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#af32a99d930d49e9b178472d7a65531ab',1,'mlx::core::operator-(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a3555a2b31fc0925850d3240e85e03ec5',1,'mlx::core::operator-(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a46080889fd9e5c3f9916508e97dff5ad',1,'mlx::core::operator-(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a9ca27fd1e512c8ed126342e565da12ae',1,'mlx::core::operator-(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a3803f8d36558d32bb7dd6e580ea683b4',1,'mlx::core::operator-(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#af5d865528989ca66b3d357e5ce4e0300',1,'mlx::core::operator-(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#afb784b960f55aeb4edd7f567fa74d443',1,'mlx::core::operator-(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a29cbacf4b399c24728fb0808fad498f9',1,'mlx::core::operator-(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aececc0e451237aa6c0d1a2c3d828c86e',1,'mlx::core::operator-(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a383a26cc2689c98fd6c4435ade8dc669',1,'mlx::core::operator-(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad6311ef8df59bdfb212b5cf8169246b2',1,'mlx::core::operator-(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a23b7329bc1c93c8ac0a1f576565fefb0',1,'mlx::core::operator-(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad8d650bf63998abd716ee0ca28e1cbb9',1,'mlx::core::operator-(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a7339b33201254e9119d99d3a728ded72',1,'mlx::core::operator-(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a064318b7a16e5cb6d0a6407501b5c7dc',1,'mlx::core::operator-(_MLX_BFloat16 lhs)'],['../namespacemlx_1_1core.html#a7bae3ff296d9a60ff3c7e448f7fbc6bd',1,'mlx::core::operator-(const complex64_t &v)'],['../namespacemlx_1_1core.html#afb5069ecebdfd9d388c26f83df12c93c',1,'mlx::core::operator-(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a8d126e3f3fa9f8c1c1ae1b09f94df487',1,'mlx::core::operator-(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ad04f1ccd2cd7c487a2f2aaa055939f64',1,'mlx::core::operator-(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a15eb2ea76508ff823fa0591e811d0b7d',1,'mlx::core::operator-(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a96d9577db38d6809d022893e32feeda1',1,'mlx::core::operator-(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a5d9c02765c1672930757416411567bf2',1,'mlx::core::operator-(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a6105d3b5266666b7c6bb9469285a9ec3',1,'mlx::core::operator-(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a777aa772dfb205b25d26f3180d98a2f6',1,'mlx::core::operator-(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a085eb092f4ada47f8169de62886cff90',1,'mlx::core::operator-(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab25e5d211e2c8785b45c3a81a6282e2b',1,'mlx::core::operator-(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#abf5d09561a81b0f0b32d59d77e32e16f',1,'mlx::core::operator-(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a4ce6867dbb4d1631d1870dac14022dbb',1,'mlx::core::operator-(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a8a049e646e0442064cfe9e202d7047c5',1,'mlx::core::operator-(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a78e2a1cfc65453185bcca13bd4f523cf',1,'mlx::core::operator-(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#af143cf68673e06390d4bb2ec2892bd22',1,'mlx::core::operator-(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a46d502dfe0b027955950d4e716c2eb26',1,'mlx::core::operator-(_MLX_Float16 lhs)'],['../namespacemlx_1_1core.html#a2631e78c6f0a602f6754ac577ec75f83',1,'mlx::core::operator-(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#a73d79cbd75d543d0837b8a51bf103f9e',1,'mlx::core::operator-(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2d_3d_22',['operator-=',['../structpocketfft_1_1detail_1_1cmplx.html#a12441ff423274bd1b54245933d69ad7e',1,'pocketfft::detail::cmplx::operator-=()'],['../backend_2metal_2kernels_2bf16_8h.html#ab225043bd02bb423930bc98aae9c2bca',1,'operator-=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac2f1e1f2365cfa531b1519aa9ff67695',1,'operator-=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a513501355a5912a1263fd8b10864142b',1,'operator-=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab4f4ecd62c3d8b3363d02019573dc9f1',1,'operator-=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a92d1348f201d78fcd474f75d5b23ef68',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3eefe9a7f5fb226335ea687012f32d5c',1,'operator-=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aef62c7e3e494b6a511a7833c0d942a60',1,'operator-=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad30726cc8b69fd300d33c2a46e123c28',1,'operator-=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8859b5b8dc241e4f58243c85d2630cc8',1,'operator-=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7003e1e5881e3d106257f22b6a3e59fe',1,'operator-=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3165e37d393be50c2cfa9ddcba153684',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a76f5bd895b7214cbc3cea3440992718a',1,'operator-=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7167343d90eb70e5a0d5fa9ec5398e94',1,'operator-=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9b31c363ebc93d592b6fa0e27b00335a',1,'operator-=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a967a1d7b5664f616e5b6f2d257367f0c',1,'operator-=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aff19193e1b2cee29a8737318e95cc74a',1,'operator-=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aede0cc4179507b739849948f1a2fed4b',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7e1a6056f9c96f3c89fe204dbf103be5',1,'operator-=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9d06cceea5c179bcc608452188bd7d6a',1,'operator-=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0aa9ffe056f49fda181bbacbd60556ea',1,'operator-=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ada5685d99c2d6708d1c4ef826d68e879',1,'operator-=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a726cecf778b8584b6f7c37db1b064576',1,'operator-=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3816a35f8468156d59c239256c12dcf3',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa332fae098e7c6dc23b98bc0026f1070',1,'operator-=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afb3cd302e0b78902c62111dce4494fe8',1,'operator-=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abb884888f14086cc674657677cb4b8bc',1,'operator-=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a38bb89f925eca4f9c042f6ee7a2c0193',1,'operator-=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac30c580713f354916088a7dc049ae4cd',1,'operator-=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a715c824ee8c87e0256114a85624d9949',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7bc91aaaf476a37063264d1d53d862cc',1,'operator-=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab155f418f15cabd86ff942c6f9472ddb',1,'operator-=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aaa66dc6d7b2c5efbfaa97ca9c7872bd8',1,'operator-=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a696978d9401e09200045b2d8aad045c2',1,'operator-=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae998d8f423a9fb73405cfbd4b836bc72',1,'operator-=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a279d09ab8542f1c1a8dc8173b65946b6',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a491dadfae957cd7cc0c36188d910f6f6',1,'operator-=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9a837c3b9c4e42f53d7cd1ed0d266e2f',1,'operator-=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acf7af2284269544064b68e807064bba4',1,'operator-=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a28d297705e29009197418546ef435393',1,'operator-=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a948579a4d9ba276523190b03b09578fb',1,'operator-=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5a4b98a0a11db5b77cf9168df37c8bc7',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a31a3d8f2ff8038f7e0d717845c039808',1,'operator-=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1dac193d9f1c8c0eb4473441895f8c58',1,'operator-=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad2817d53fdd4b112babfb6f0b38c8f39',1,'operator-=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa705d87cf4b78e9d7c6b07dd0c66cac6',1,'operator-=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a542affc376726840647a6e93acf2c1a7',1,'operator-=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#add18cfe4c0d38e95c6dff6bab3e7a932',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab1de7e7e7304ff3598925d2e69134764',1,'operator-=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0d3fb52437c677c5d0f1a3642384b15c',1,'operator-=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adda64cae388baac1f138b06dc8595237',1,'operator-=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af20874a61c6c3f4c3fd045a96e806644',1,'operator-=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a8b8a55690df46d97fcfc2a60120783af',1,'mlx::core::operator-=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#ab03949b1f60fa035ce454a894cd73ae9',1,'mlx::core::operator-=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#adaf70bbfb3667df0d08fd3c99896e20a',1,'mlx::core::operator-=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a321c98e5a78621d3c9a3895f707f2f1c',1,'mlx::core::operator-=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_2d_3e_23',['operator->',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#aac45ab0630ea32cf7d15c7ba3e229966',1,'mlx::core::metal::CommandEncoder']]], - ['operator_2f_24',['operator/',['../backend_2metal_2kernels_2bf16_8h.html#a9f16a44e1c9836ca57edc1d7b93b5d7c',1,'operator/(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aacaedf12f862c76457133336dd6fc446',1,'operator/(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a584a513596de20663dad951a5b81695e',1,'operator/(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad8f7b11669736fbd6ed2e28211d877d4',1,'operator/(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a59515695ebc48844345fa5120511aed1',1,'operator/(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a8c8ac6736440fdca366ebdefe2a12b9f',1,'operator/(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad6859b04680d0d26d75fd6c4dd74ee24',1,'operator/(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4720cc79ab2b8e39952ea9ef20e51250',1,'operator/(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a72d10ec0e62949247da129eb3a83fb9b',1,'operator/(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad6399ba2b8708899739b4cdbb44add8d',1,'operator/(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a998b1ba877a606aedf722ab46b290403',1,'operator/(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa3277ae33976c70f7bd937ddff027b72',1,'operator/(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa708a970a200822c99c0489f389469fa',1,'operator/(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#ae6a708f67d6fd9b0962aa8877cec6d35',1,'operator/(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#gaeedf77f722b394429f1a7f6c367883bf',1,'mlx::core::operator/(const array &a, const array &b)'],['../group__ops.html#ga7366ec7f453be2a4dc449f0faa1bf554',1,'mlx::core::operator/(double a, const array &b)'],['../group__ops.html#gadfb324ae9b4feb2c7ea0ac6ade639f38',1,'mlx::core::operator/(const array &a, double b)'],['../namespacemlx_1_1core.html#a7573ac3b93ddecd69e9c88a26fc84ba9',1,'mlx::core::operator/(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a40e868dad70401d9aa9ee9c32235c315',1,'mlx::core::operator/(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a7587c28fbd2023b134e5fc12bb0dde23',1,'mlx::core::operator/(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a92cdd377c408becf4cf83c1ee9b7085d',1,'mlx::core::operator/(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#aef89566301cb133d98c8e7bdd2b7bec6',1,'mlx::core::operator/(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a94e7b51185590492b46916685641276f',1,'mlx::core::operator/(_MLX_BFloat16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a04584788c08180835219d0ea1e2b97b1',1,'mlx::core::operator/(bool lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad5af96e2ff09d207eb1e1980fe3e7c2d',1,'mlx::core::operator/(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ac2217bf760038cd011781158923149ed',1,'mlx::core::operator/(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aea414c04bddc4b9b609262e97398f1b4',1,'mlx::core::operator/(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a27fe23230cd082c0363b9451b731ce6b',1,'mlx::core::operator/(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abdd9bb8fb4411e5924f3eb7ef1bb52f8',1,'mlx::core::operator/(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a50bae338a7353f8b0ed3441071bb0cf6',1,'mlx::core::operator/(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aab26a3284dd3ac7d47c8b5b3a3290ce3',1,'mlx::core::operator/(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a749f48db01de38f259a0c6750a97fa77',1,'mlx::core::operator/(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a32a6a08a2a4652975b0a1bd1fcf3eafd',1,'mlx::core::operator/(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a4b66fb38ddc5cc0c2489583d5c499602',1,'mlx::core::operator/(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a45726f1905b709cf8253e6efa046027b',1,'mlx::core::operator/(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#afd4170c1e364384f30e6bae341146fa6',1,'mlx::core::operator/(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#aef85739d150b9d5609973da8a3f1086a',1,'mlx::core::operator/(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af52a941f8ed9b25eec91402c7b9e281f',1,'mlx::core::operator/(_MLX_Float16 lhs, bool rhs)'],['../namespacemlx_1_1core.html#a477cade78296bc85894170f62db68870',1,'mlx::core::operator/(bool lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a22f5a2257e11423fc2fe18e2dce91590',1,'mlx::core::operator/(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a640d3574dfe6ad934c720ae8bdd78bfa',1,'mlx::core::operator/(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a6f65d8fd0cdddc96fc01f6af95804873',1,'mlx::core::operator/(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a517019d42d4e426b7b98e1c719bb47ce',1,'mlx::core::operator/(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a0beb7a223c542015a4eff4aed814a9dd',1,'mlx::core::operator/(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#abc9b1bd5018d46514bc19d23db2e5063',1,'mlx::core::operator/(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af22937df654ddbd6e398ef12764d18c0',1,'mlx::core::operator/(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a775aed5f49b530c57e71cbac81404d45',1,'mlx::core::operator/(uint64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a97efcd96d6be666e5608034ae77289ef',1,'mlx::core::operator/(float16_t lhs, bfloat16_t rhs)'],['../namespacemlx_1_1core.html#a899851f85dbddd96f9d36319b82542a0',1,'mlx::core::operator/(bfloat16_t lhs, float16_t rhs)']]], - ['operator_2f_3d_25',['operator/=',['../backend_2metal_2kernels_2bf16_8h.html#a5aa3b8c68a2b58d41ea33eaabbf83095',1,'operator/=(device _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a90a1c5130db515db48624d8587edbb91',1,'operator/=(device float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a65f30a2dc199134e35bc7c5d431b2263',1,'operator/=(thread _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7172d84db640e6c49dff0d08dd64b53e',1,'operator/=(thread float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acf7cb9927bf09022088401923f2e1916',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a86b2a001cbec0d3a8d762a3c7ff47b0b',1,'operator/=(threadgroup float &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a744f72ba83522fe3cc2a49a007b42543',1,'operator/=(device _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a77c678665b34df7652dcde053ca73185',1,'operator/=(device half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae0614b6b199d8a65ae95d4621b118b82',1,'operator/=(thread _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa846fde89c7d2d18b18ef180a8a9c8a3',1,'operator/=(thread half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08e778be18e4a291c108fcc528b981d3',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a6b9e49ad9ea256d2d0220c0d81552602',1,'operator/=(threadgroup half &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab933bc3cdf9adfea10ab9dba5292c812',1,'operator/=(device _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a25e7c5d2ecf3375756d59074f333858f',1,'operator/=(device int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4ae4a80fde67eea9a0a37b2803946544',1,'operator/=(thread _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a912393b7208fa45bd1e87f30b218b68b',1,'operator/=(thread int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a18963246f2b640874bef6dca7049f64d',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, int16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0e2c2c2cb50b3a55ff213f18978aca35',1,'operator/=(threadgroup int16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a64f1136b17006f168ef837e17240814f',1,'operator/=(device _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae46d75b8046d557452d74513f1106710',1,'operator/=(device int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08d2460e259b9106d90d889481ad60d5',1,'operator/=(thread _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0f7fd418408806ef498745c6fdb2c062',1,'operator/=(thread int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac703495cb370b52526a5a2d36ae26038',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4ca11d43174baf0a729f93b35eabcbea',1,'operator/=(threadgroup int32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9f835a0a80c411580c97b65fdc5bdfd3',1,'operator/=(device _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a17f47ec9cff60f8e1b3477a2793b7ac0',1,'operator/=(device int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5be23e296bbed3a885586a6424b1666e',1,'operator/=(thread _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afba39221eb54e272aae79910b3cd7ef5',1,'operator/=(thread int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac057d95a2bf087575584aa6f9a2c6bf5',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab986ae2cec780a1f494b7b4468b7ba11',1,'operator/=(threadgroup int64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a44522c2304c6396bbe6b9d32000f4b6f',1,'operator/=(device _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aef8e7e499ea9d432aa743d83c076f945',1,'operator/=(device uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3a0a3edbf1ba2314551454059c3f422b',1,'operator/=(thread _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acb9f0aef9fbdfde8a4f46e33b0d6c52f',1,'operator/=(thread uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a303dfcc81ffd355f866f863d7d9f0fa5',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, uint16_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a359edd4bcb8776861ceb26a3005624c0',1,'operator/=(threadgroup uint16_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#adc9f32cc6f40768df4285fba2e4783c7',1,'operator/=(device _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae71f66d814a03f6377c9d86cf0a2b5d7',1,'operator/=(device uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad0125b6baba3065a87a174ec27aa9a61',1,'operator/=(thread _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5cc74ad3e522d7104e6e2117751151ad',1,'operator/=(thread uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab3b594321fb42b0c2da99954d1e0976c',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4a0023e2fd08875156cd6ef747fbb5cd',1,'operator/=(threadgroup uint32_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a4358ee606e66ba2081fcf94f9c3b5915',1,'operator/=(device _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ad1e7ef6f065695d4b1d017547b60ef62',1,'operator/=(device uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a284dfc702f0f67b9c233b87162eeabdd',1,'operator/=(thread _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab8f211ea896fc5190004f3ad6ad8932f',1,'operator/=(thread uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7e1bcf3bc06cbcbc304c0cdf729802bc',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abbe42648a46092137b303ccd08f7df86',1,'operator/=(threadgroup uint64_t &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af1a12a1efb618a57da6dd41ae18cb53c',1,'operator/=(device _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a94686039356dfa9aa45608a8b0562fdc',1,'operator/=(thread _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa251d6483d3b099d1b5311fbe6f0bce2',1,'operator/=(threadgroup _MLX_BFloat16 &lhs, _MLX_BFloat16 rhs): bf16.h'],['../namespacemlx_1_1core.html#a045ff27257cb6d8ab7a94771ba5a17e6',1,'mlx::core::operator/=(_MLX_BFloat16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#a58112951a56a0f9f8c90b60fe74f9508',1,'mlx::core::operator/=(float &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae736defc89a04fbaf7627ad2695bb838',1,'mlx::core::operator/=(_MLX_Float16 &lhs, const float &rhs)'],['../namespacemlx_1_1core.html#ab1f260710251256ef737dd59be9e143c',1,'mlx::core::operator/=(float &lhs, _MLX_Float16 rhs)']]], - ['operator_3c_26',['operator<',['../backend_2metal_2kernels_2bf16_8h.html#a9ef6a57b7185e9ca49e255fec1a44e25',1,'operator<(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aab02c65bc38ea66335b2192ead4095a8',1,'operator<(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae91686513e284bcc9635833744bbdda1',1,'operator<(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2486f3b5de85b0d57f458d8f21f82b42',1,'operator<(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a435a2aec4c777b4b184ff5d24992e8a1',1,'operator<(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abdd04257e6a73883b5f56f1186d0e906',1,'operator<(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a69984aaa05ae1d4fccccf7f57e8ecb4a',1,'operator<(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a501cc01d5bf15d9f03aa28545f9624ea',1,'operator<(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1b029e4ca72125a5f9471f582c819705',1,'operator<(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0736a76f56578d26ba1422dc8b744a18',1,'operator<(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a24b1fa8998c892f90f8dde7c34fb10a5',1,'operator<(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#af80ff2020ec2c4b406c5fdae3fe55e63',1,'operator<(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac03f6eefb836373d37dc280b0d813d78',1,'operator<(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a67674e32596a9dae2258bb8e0e6a2058',1,'operator<(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#gaee41e2b8f61d563200ff03575ac1d6c3',1,'mlx::core::operator<(const array &a, const array &b)'],['../group__ops.html#ga1ef8ea11cf15ce628c54201fa42748ef',1,'mlx::core::operator<(T a, const array &b)'],['../group__ops.html#ga95e72226dc7a79c40b3d16f990922050',1,'mlx::core::operator<(const array &a, T b)'],['../namespacemlx_1_1core.html#a987d631e1508e8df55d98ddd57e4d086',1,'mlx::core::operator<(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad3fb46370cd8f0992866fad9e2c64a3c',1,'mlx::core::operator<(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a3026691bf7ee5095243a8611bf3411aa',1,'mlx::core::operator<(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0d42d6c1d5f77a96e2f296b8ebd79ee6',1,'mlx::core::operator<(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#ab5ce08a7de0a0ca00d61f7a7f8ea3ab4',1,'mlx::core::operator<(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abce8b7f24b61e5ec0f9a3afe20845caf',1,'mlx::core::operator<(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#aff97612627ae1ed260c43c0a7af0d306',1,'mlx::core::operator<(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a9119e518234df7923cae2b3802d59bf2',1,'mlx::core::operator<(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#aefb9b05ce8864ada99a920ab32017b89',1,'mlx::core::operator<(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abc55f3676c2d112a6e9ab276bd6b1796',1,'mlx::core::operator<(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#afe6581a2c45f24d7fab1e4006c1e3c70',1,'mlx::core::operator<(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aca1d50cdd9506481dcc4cd1ad4a4f734',1,'mlx::core::operator<(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a310720f513b6a2490e9df80c65f1bfb3',1,'mlx::core::operator<(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a29e457a170b6cefb6ba1e394c96c6f7b',1,'mlx::core::operator<(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#afd4519985b6b207ec41ad8530d1036df',1,'mlx::core::operator<(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae1e41ca94022e43a00cdfc5845102daa',1,'mlx::core::operator<(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ac80f4022bffd95b57526685ce8e1cbc1',1,'mlx::core::operator<(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a3a8f6f0af477788c4f0aa98abfc5f1ab',1,'mlx::core::operator<(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a3728ed9b6cbd152bf675251a0501b466',1,'mlx::core::operator<(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a5b9ad811a5e1358100c5423dd70ea387',1,'mlx::core::operator<(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a5c77e1db83995d3e06a8a26265bce5d6',1,'mlx::core::operator<(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab8a0a3f70664049b35ce1887bd8ff5c2',1,'mlx::core::operator<(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a6652d93bfb2d426e261a1712a181a4d2',1,'mlx::core::operator<(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a03758b8d13da2de07cc4f4fc45d2854b',1,'mlx::core::operator<(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a325161b81a9ff179fd37d949780a17ba',1,'mlx::core::operator<(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a92eca79fce8233e4299343eee3996511',1,'mlx::core::operator<(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#adb016662b8f7eb680abfe1a421eabe72',1,'mlx::core::operator<(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3c_3c_27',['operator<<',['../group__ops.html#gad656c30f9fd7d9467e405657b325aa7e',1,'mlx::core::operator<<(const array &a, const array &b)'],['../namespacemlx_1_1core.html#a1e5c30e316afa30c14bc48b92afdb794',1,'mlx::core::operator<<(std::ostream &os, const Device &d)'],['../namespacemlx_1_1core.html#a4ddd07021b36c848d6fb1dd9ac276822',1,'mlx::core::operator<<(std::ostream &os, const Stream &s)'],['../namespacemlx_1_1core.html#a0023c267cf81345fad65e7a797954cd3',1,'mlx::core::operator<<(std::ostream &os, const Dtype &d)'],['../namespacemlx_1_1core.html#a1fd58658474fb842d648dcf8f7d9f078',1,'mlx::core::operator<<(std::ostream &os, const Dtype::Kind &k)'],['../namespacemlx_1_1core.html#a123331f01188bd76e37623b63b6b4340',1,'mlx::core::operator<<(std::ostream &os, array a)'],['../namespacemlx_1_1core.html#a4e733bba89760abed32393e085812b22',1,'mlx::core::operator<<(std::ostream &os, const std::vector< int > &v)'],['../namespacemlx_1_1core.html#a6276bb9bad43ed4a27a1e2c3f5bfd990',1,'mlx::core::operator<<(std::ostream &os, const std::vector< size_t > &v)'],['../namespacemlx_1_1core.html#a5e5bd5c57b1cf19776bdb41e732861d9',1,'mlx::core::operator<<(std::ostream &os, const std::vector< int64_t > &v)'],['../namespacemlx_1_1core.html#a42a19c8442b173606e714364227e7d45',1,'mlx::core::operator<<(std::ostream &os, const complex64_t &v)'],['../namespacemlx_1_1core.html#a57eb97a5eba99a846ac429795e407574',1,'mlx::core::operator<<(std::ostream &os, const float16_t &v)'],['../namespacemlx_1_1core.html#a7db909d54cf07375e89424c32c07a29c',1,'mlx::core::operator<<(std::ostream &os, const bfloat16_t &v)']]], - ['operator_3c_3d_28',['operator<=',['../backend_2metal_2kernels_2bf16_8h.html#af469c58cffeab488c681f4b33f02cd05',1,'operator<=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a5a81eae168dfafd299c2b94e3e8558cf',1,'operator<=(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0f486bf02c6ad5b9b6a96d3450f03e47',1,'operator<=(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#acba9efe192d22b7781b4622103c7a944',1,'operator<=(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aff100489cc40ad276c2d5d67a9df67db',1,'operator<=(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a7eac96f64ca42991caf819c8e8c8d2bc',1,'operator<=(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a88c11cd37600de5480570da3d2ae5732',1,'operator<=(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a08c7d12a0d16565fbf052dba2db8b22d',1,'operator<=(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2b9de9624c0a507b4ead85f898ad9daf',1,'operator<=(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a28f8d21c5eef047c701cf690ce9c2ef0',1,'operator<=(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a14b56c687053ee2432398a25663c068f',1,'operator<=(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0f360806708b95a3be400af0b8871b57',1,'operator<=(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a80d288f22cadfdf5e904410349e616a1',1,'operator<=(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#aee04c9a63c6716a99a027418354debb0',1,'operator<=(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga4c8b8a1632944acaae50f0de6c23ece6',1,'mlx::core::operator<=(const array &a, const array &b)'],['../group__ops.html#ga150a9be467c9f91482a6d6fc13504bc4',1,'mlx::core::operator<=(T a, const array &b)'],['../group__ops.html#ga624eeccef0cc4b130e1325abfea057cb',1,'mlx::core::operator<=(const array &a, T b)'],['../namespacemlx_1_1core.html#a0066a47cb21223ddebc77992ee874fb9',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2593dbace3ce50e7146d9514726a543f',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a88654bcf6c9728517a2933ca2e29a7c1',1,'mlx::core::operator<=(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a5d4f449e9c1699b99fcf894dd15e8af3',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a6b678bea8fdcda1f11c6691b56a15211',1,'mlx::core::operator<=(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae8aacc606ea16f018a90eae758830a35',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a25668dea4ffb51c7c00eeecb9530d1d8',1,'mlx::core::operator<=(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a084558b6a5487549799c49c37c9e9652',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ade2e2a0daa79d5c52f278f85f03dde2e',1,'mlx::core::operator<=(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a750a2d2b4976ad94b08994d081f83445',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ade5a175ff45347689ac4c798d04c8ffc',1,'mlx::core::operator<=(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae25e0c01b46612f039313a4825ba6428',1,'mlx::core::operator<=(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a5c90f16d8f6edf4b75c96b945b9fa591',1,'mlx::core::operator<=(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a8cd6583fa0fc9957f993e00b2ec01d91',1,'mlx::core::operator<=(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#a012130a0458cbc30b88365e0e0eab232',1,'mlx::core::operator<=(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae8c890bdcffadee8c5dab85c907f57eb',1,'mlx::core::operator<=(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a43cb070553c1f2fffb32ef6670e30980',1,'mlx::core::operator<=(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ac759b7798d668a99535e59e26d6ba192',1,'mlx::core::operator<=(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a70e528a789b5660d98e783b045aaa379',1,'mlx::core::operator<=(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a40bd8abb8a4d989ddabbb298518bd7f5',1,'mlx::core::operator<=(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a4155d4b0c76f37ab5e0b54f9cd683f35',1,'mlx::core::operator<=(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad8bb648d0603a206e0392990c911ca0b',1,'mlx::core::operator<=(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ace72a5853f2afd6510dcb97d54fa650d',1,'mlx::core::operator<=(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ab38f7a0d3c0809071ff5d3af859018d6',1,'mlx::core::operator<=(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a7904b886d7b535a6af0a885d00597323',1,'mlx::core::operator<=(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a57952168bd0b54c2677204d4ab1cb6e5',1,'mlx::core::operator<=(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a6235dc5f4db517618bb3449b08c96e8b',1,'mlx::core::operator<=(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3d_29',['operator=',['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a027b84cddc8d476f736ac1f1a9991fe4',1,'mlx::core::allocator::Allocator::operator=(const Allocator &other)=delete'],['../classmlx_1_1core_1_1allocator_1_1_allocator.html#a2e971b47339b1d0849a334a902a9df3c',1,'mlx::core::allocator::Allocator::operator=(Allocator &&other)=delete'],['../classmlx_1_1core_1_1array.html#a8acf2b4c75f9b7f79da6675dbc36cf36',1,'mlx::core::array::operator=(const array &other) &&=delete'],['../classmlx_1_1core_1_1array.html#a5c89c2406a610b32943955f9a5060fbd',1,'mlx::core::array::operator=(array &&other) &&=delete'],['../classmlx_1_1core_1_1array.html#ad3277ff68f1336aa217f9cbe40181479',1,'mlx::core::array::operator=(array &&other) &=default'],['../classmlx_1_1core_1_1array.html#a5da41aabecf4c8055b7515341bf57147',1,'mlx::core::array::operator=(const array &other) &'],['../structmlx_1_1core_1_1array_1_1_data.html#a68e9417954fe811b5e41e6317a526748',1,'mlx::core::array::Data::operator=()'],['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a3f42a1362b4a513fa89e7b3dcc570a8e',1,'mlx::core::metal::CommandEncoder::operator=()'],['../classmlx_1_1core_1_1metal_1_1_device.html#ad1d6382fd18a46b1906e1b43e0bd2e73',1,'mlx::core::metal::Device::operator=()'],['../classmlx_1_1core_1_1_primitive.html#a6b1be7ea92f3a7bb19875c70259dad6b',1,'mlx::core::Primitive::operator=(const Primitive &other)=delete'],['../classmlx_1_1core_1_1_primitive.html#a50bbddd43e1ba0cf5f127cd7aa756a9e',1,'mlx::core::Primitive::operator=(Primitive &&other)=delete'],['../classmlx_1_1core_1_1_unary_primitive.html#a0a859309a4f192f2679e07f2e4ff4d22',1,'mlx::core::UnaryPrimitive::operator=(const UnaryPrimitive &other)=delete'],['../classmlx_1_1core_1_1_unary_primitive.html#ab90b2ea80f1d914be03cf44def5db5a5',1,'mlx::core::UnaryPrimitive::operator=(UnaryPrimitive &&other)=delete'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#ab170dbd2ce34c51e2eeebf5d08e7e2db',1,'mlx::core::scheduler::Scheduler::operator=(const Scheduler &)=delete'],['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a035ea35f4dd8ee985973080f14029379',1,'mlx::core::scheduler::Scheduler::operator=(Scheduler &&)=delete'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#a0f65b0523b8ddd989f338da6cb2860e3',1,'mlx::core::_MLX_BFloat16::operator=(std::vector< bool >::reference x)'],['../structmlx_1_1core_1_1___m_l_x___b_float16.html#abb8cd44ee22b17c55333ff2eb4e13a14',1,'mlx::core::_MLX_BFloat16::operator=(const float &x)'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a608a099bf7116ee608dcfd31ea3ade2c',1,'mlx::core::_MLX_Float16::operator=(std::vector< bool >::reference x)'],['../structmlx_1_1core_1_1___m_l_x___float16.html#a35543c3653d477c46350697fb808373d',1,'mlx::core::_MLX_Float16::operator=(const float &x)']]], - ['operator_3d_3d_30',['operator==',['../backend_2metal_2kernels_2bf16_8h.html#a49a13b06a325ed3cca4004b6a0cde065',1,'operator==(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a0aa3bfcfab53700488e5f386e6de60d5',1,'operator==(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3936148781ab1c4f33f58d12c116f370',1,'operator==(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae753526b669fba27771089dc809abd66',1,'operator==(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a05a4f197a71d0f16879032f44492bb79',1,'operator==(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae86f5917847b1ec9f313996250f2e0be',1,'operator==(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aab74ec4d33a64b92b908717d500f1ecf',1,'operator==(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac30a2c1fa6f172af903fdeb6a8632606',1,'operator==(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab4e9ad547aa23daa351075e0ecc58fa2',1,'operator==(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa5fa1a8f2b39c3508fe38205469756d1',1,'operator==(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aeadc1f36c6bdc219294ce9341d80afa5',1,'operator==(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a3ae2091ada1e39e857fbc53c97bdb79f',1,'operator==(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac7b4d295f3c7b1e09964f24f306422da',1,'operator==(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#abfc19f03616441245dfc7726b278f190',1,'operator==(complex64_t a, complex64_t b): complex.h'],['../namespacemlx_1_1core.html#a937503d72b66c661bf3f5fdcd98ef97c',1,'mlx::core::operator==(const Device &lhs, const Device &rhs)'],['../group__ops.html#gaa30cf69f3d22f65615f5e1696dd5703f',1,'mlx::core::operator==(const array &a, const array &b)'],['../group__ops.html#gaf115782d009ac2a547fcca395c9ec797',1,'mlx::core::operator==(T a, const array &b)'],['../group__ops.html#ga3ad3ed7aece2650943a35082dbe3a0a5',1,'mlx::core::operator==(const array &a, T b)'],['../namespacemlx_1_1core.html#ac470f937a379d6356c8f567c97cd7481',1,'mlx::core::operator==(const Stream &lhs, const Stream &rhs)'],['../namespacemlx_1_1core.html#aec63a0472cb943fe39f31e7678555572',1,'mlx::core::operator==(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad05311ca8e2f19ffe5849e963837cec7',1,'mlx::core::operator==(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#aaaf591cb2188381e6cbd857132d04eb7',1,'mlx::core::operator==(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a7ef33c33509ccccf1ab217500e8b3c1a',1,'mlx::core::operator==(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#abec4200a718b7c5ed80b7abcc4447260',1,'mlx::core::operator==(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ad853981b1c5ba69b07d54c7b77055d22',1,'mlx::core::operator==(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a752d6cb4172a9cb91e5da19582329c6d',1,'mlx::core::operator==(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0175beb3de139faa08479a88215b35ea',1,'mlx::core::operator==(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a61da2851cb3beeef28049228346c28b5',1,'mlx::core::operator==(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#aa24713cb9e39bacb516c992eb03d2b2b',1,'mlx::core::operator==(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a6d565dd93c46259f9486d9fdf0969589',1,'mlx::core::operator==(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a24e79a82557861de64dad66d36e6ff30',1,'mlx::core::operator==(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#af27d515ac390d62bd852b73ea759a947',1,'mlx::core::operator==(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ae3e1e8b7a5410e0edf35f31f74295e2f',1,'mlx::core::operator==(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#aaa22230a66b15c3e774d8ce45783a746',1,'mlx::core::operator==(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ae2a0bcdc171d7e9745d33e1d9aac4f8a',1,'mlx::core::operator==(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a331ec62442a8d3eb8ccba7b4de5168d1',1,'mlx::core::operator==(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#acfcaefe0990eb3533e2b11a6f2657492',1,'mlx::core::operator==(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a8d48dbd49cccff07777affb2a412058c',1,'mlx::core::operator==(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a88eae27edd22fa4418776672023cb276',1,'mlx::core::operator==(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a188b363f633ea360407b3f9cf4e1f1a6',1,'mlx::core::operator==(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ae065fe5c42c1a333d7858d19f6434fa9',1,'mlx::core::operator==(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a2f98db199deb6d7a82551fa4afec655a',1,'mlx::core::operator==(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a85f83add412cb320b5cd1c3da6aadbd5',1,'mlx::core::operator==(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7e2cee66c3ca1b56f4f3d7fd1d6e0be1',1,'mlx::core::operator==(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#ad436557da5c7fea71fc58182a876cfe5',1,'mlx::core::operator==(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3e_31',['operator>',['../backend_2metal_2kernels_2bf16_8h.html#ae394c0a10e47d1d047854a888402eb57',1,'operator>(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ab9cd098786d2f4c855c42e4a6f30ab3e',1,'operator>(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a55600f3b9859e2891e0e0b5690867b72',1,'operator>(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#afd7cdb8ed2a9820efe9cf322c06f188c',1,'operator>(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a31bbdbe0b62b90a4d6ea4bb0a7db586b',1,'operator>(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a68125e66f74eaffe5ea9267638ce870d',1,'operator>(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac89eb6b29edad8cca63727ab97171c29',1,'operator>(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a74e477567c9477c2cf0684f81ef4498f',1,'operator>(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2d37130b6fd79b425f5ba92b65e36bed',1,'operator>(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a41d55d167e9dc63bf29d15e0ff004869',1,'operator>(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aa95f9ebfdab3c5f524775651362ce914',1,'operator>(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2826bd301bb5393473ccd363f2052c0d',1,'operator>(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a62a512d0edd894759c69f724b970fbdb',1,'operator>(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#a032a8d3eec2384c9f03066f7fd945995',1,'operator>(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga74fd2777adef10e6fe628a9cdadb01cb',1,'mlx::core::operator>(const array &a, const array &b)'],['../group__ops.html#ga32e106e794e2c32e4e7decee2df2477f',1,'mlx::core::operator>(T a, const array &b)'],['../group__ops.html#ga96552b90e89923c5d2064cc427775ec5',1,'mlx::core::operator>(const array &a, T b)'],['../namespacemlx_1_1core.html#aedc4e9df4bf71c0ac34fcfae60cdf550',1,'mlx::core::operator>(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a14c188303d09b97867bcfd34519aa4a6',1,'mlx::core::operator>(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#ac97736fadafa7efa201624d0e1128ee8',1,'mlx::core::operator>(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a3c41a304126bc225bdc68062d1eb6e7e',1,'mlx::core::operator>(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#ab594f3ae1ee13227fae940fef0d00cb9',1,'mlx::core::operator>(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a01dabc077a872c115a9a9ccd95f1acec',1,'mlx::core::operator>(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#adabbd8768d216873617768249473a5c7',1,'mlx::core::operator>(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#adae1b14669d27ce1fe0c214771c07b77',1,'mlx::core::operator>(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#ab03a22961d99fa12d3e74b3116e94e8f',1,'mlx::core::operator>(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a42011a27a3d23a60be5be44ee7cac87c',1,'mlx::core::operator>(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a50f6a94bb36d89cf28817aff88ab89c8',1,'mlx::core::operator>(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ac173de50ee57b1b066d49363ba978c53',1,'mlx::core::operator>(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#ab09f1b4879aa3190c2f66c9bd1224021',1,'mlx::core::operator>(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a91eb6ca854217424129a55ae95a123b5',1,'mlx::core::operator>(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#a58d5795d8312599d101ae16f194e4a2a',1,'mlx::core::operator>(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#aafa3bbeda78610c4285f3e57042268f3',1,'mlx::core::operator>(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a8a928d76a6fbf3d336296401e14617a4',1,'mlx::core::operator>(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ade2f9222fd433cd4d673c6182f256235',1,'mlx::core::operator>(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#ae24c337810c841ff23e327efde7045e1',1,'mlx::core::operator>(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#acf401ede354fcc998b13ea6442994d7e',1,'mlx::core::operator>(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#a2bb28a9a0894a73ae1b27e7f4da0841a',1,'mlx::core::operator>(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a09d631e8a85fd7ae72e1a868b8f9b9cb',1,'mlx::core::operator>(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a49421ea65b5a98df080d75b1636b2157',1,'mlx::core::operator>(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a692ce931b660415e17f92d18a8e0d446',1,'mlx::core::operator>(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a579bb87b3ede5663d7cd68c7c0f6fb9e',1,'mlx::core::operator>(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#af810587a17e692f4eec256d3c3cd27de',1,'mlx::core::operator>(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a50f4177d3ca03a95fc2614e100c7391d',1,'mlx::core::operator>(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3e_3d_32',['operator>=',['../backend_2metal_2kernels_2bf16_8h.html#a430dd11fbf4c6f39bc1506ab43b2341f',1,'operator>=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a64f6787a96386246f83a8981d274150e',1,'operator>=(_MLX_BFloat16 lhs, float rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1a788f82212afad30e4c2ee40f1c313c',1,'operator>=(float lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ae88617c4a012c5dc12781a349a28c886',1,'operator>=(_MLX_BFloat16 lhs, half rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a467a88531150a4d9d30fce07c49c126e',1,'operator>=(half lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a9e21c5ea9dd724dc2ca8c54ad908f09c',1,'operator>=(_MLX_BFloat16 lhs, int32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2f6286d222e2176bcbdc824c5d598100',1,'operator>=(int32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#abec53064aa96265385ecc57de5fbc74c',1,'operator>=(_MLX_BFloat16 lhs, uint32_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#ac766839f8f9e4863e8e18418c342c875',1,'operator>=(uint32_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a2807fa6862b0f9689c81199b1e695ed8',1,'operator>=(_MLX_BFloat16 lhs, int64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#aee3ae0d0d1f941463b06eca0bf041b2b',1,'operator>=(int64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a523eda93c809733368e2b45382d2add6',1,'operator>=(_MLX_BFloat16 lhs, uint64_t rhs): bf16.h'],['../backend_2metal_2kernels_2bf16_8h.html#a1f4e90909ac1c7280f4c7d1977c55fb7',1,'operator>=(uint64_t lhs, _MLX_BFloat16 rhs): bf16.h'],['../backend_2metal_2kernels_2complex_8h.html#aafbd686c180398c98b33d7643f893a46',1,'operator>=(complex64_t a, complex64_t b): complex.h'],['../group__ops.html#ga3a41895f25ed083a36994d95fa102546',1,'mlx::core::operator>=(const array &a, const array &b)'],['../group__ops.html#gaf509f2cb3b18963232f20d6c3bd229b2',1,'mlx::core::operator>=(T a, const array &b)'],['../group__ops.html#gafa0eb25d5978674bfc9e59d4145ec590',1,'mlx::core::operator>=(const array &a, T b)'],['../namespacemlx_1_1core.html#a8494764f5c686743ede66dc76d85d955',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a019df48807b506d9995856684bf7797a',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, float rhs)'],['../namespacemlx_1_1core.html#a96ab6405430efb887cdb5c828cb67d6e',1,'mlx::core::operator>=(float lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ac18be72269b1bcfb0249cc00a0600681',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, double rhs)'],['../namespacemlx_1_1core.html#aeb879815228efbd2c8f80986e1c8d41f',1,'mlx::core::operator>=(double lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0051156f6a568f58cd54850f746fb507',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ae93556906e115625ed1b62d36cf21b70',1,'mlx::core::operator>=(int32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#ab81ad16e3be591dfc9e42ac3c19b055f',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a6cfe9b03e7c5f1eb9374208a552c3cc9',1,'mlx::core::operator>=(uint32_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2f5add83812fb137dd9226c6c01e45d5',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#ad1014a836e7ce9301de8588eef1e89ee',1,'mlx::core::operator>=(int64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a17791561434dc995de9f268d145c0ed1',1,'mlx::core::operator>=(_MLX_BFloat16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a3755925b24a903045937464be117de2f',1,'mlx::core::operator>=(uint64_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a6262aeb513d27fc8313293b261e72abb',1,'mlx::core::operator>=(const complex64_t &a, const complex64_t &b)'],['../namespacemlx_1_1core.html#a6feb4b3ea511b0eda4d1ec9725f3fb4c',1,'mlx::core::operator>=(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a03b3f7fcb755ec075985ab26336926f0',1,'mlx::core::operator>=(_MLX_Float16 lhs, float rhs)'],['../namespacemlx_1_1core.html#aecfbf5ef4872ae447eb4a374e4db28e4',1,'mlx::core::operator>=(float lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ae4690f349b2483f5d1a4b75aba67399f',1,'mlx::core::operator>=(_MLX_Float16 lhs, double rhs)'],['../namespacemlx_1_1core.html#a667e95146dd5199e67bcb121b984b1f0',1,'mlx::core::operator>=(double lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a3375f1562f148bdc07451f2b6e54e6df',1,'mlx::core::operator>=(_MLX_Float16 lhs, int32_t rhs)'],['../namespacemlx_1_1core.html#ae83df12368cb07ccb1c10c1117ff3922',1,'mlx::core::operator>=(int32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#ad41251938cf852b5560c1180944ebb49',1,'mlx::core::operator>=(_MLX_Float16 lhs, uint32_t rhs)'],['../namespacemlx_1_1core.html#a4ddb5ef0b88929086f9b09729fda0dde',1,'mlx::core::operator>=(uint32_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a0908a61ab261aff726922b33fa6ed159',1,'mlx::core::operator>=(_MLX_Float16 lhs, int64_t rhs)'],['../namespacemlx_1_1core.html#a0fdadf87edd8a0a57c63953fb0ebe053',1,'mlx::core::operator>=(int64_t lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a47c82778e43032c0bbf5d59407e81dc9',1,'mlx::core::operator>=(_MLX_Float16 lhs, uint64_t rhs)'],['../namespacemlx_1_1core.html#a14e6c43b924eacca1b2dac1d5d00ca2b',1,'mlx::core::operator>=(uint64_t lhs, _MLX_Float16 rhs)']]], - ['operator_3e_3e_33',['operator>>',['../group__ops.html#ga498b61f7e8f056ae00297fa0dc17303a',1,'mlx::core']]], - ['operator_5b_5d_34',['operator[]',['../classpocketfft_1_1detail_1_1arr.html#aea0bd899b19e03f54dfd6c188727061a',1,'pocketfft::detail::arr::operator[](size_t idx)'],['../classpocketfft_1_1detail_1_1arr.html#a99c54f96bc79c7cdd8925c1663462842',1,'pocketfft::detail::arr::operator[](size_t idx) const'],['../classpocketfft_1_1detail_1_1sincos__2pibyn.html#a71b02f67c47b24adb296eafd2c7a3598',1,'pocketfft::detail::sincos_2pibyn::operator[]()'],['../classpocketfft_1_1detail_1_1cndarr.html#ae4852d1fe936a5d61832b507816c7054',1,'pocketfft::detail::cndarr::operator[]()'],['../classpocketfft_1_1detail_1_1ndarr.html#a2b2c4e205e8b5c32c9fe55dfd7b8c8d8',1,'pocketfft::detail::ndarr::operator[]()']]], - ['operator_5e_35',['operator^',['../group__ops.html#gac3a6fe18694e84b3d63458e9553ac181',1,'mlx::core::operator^(const array &a, const array &b)'],['../namespacemlx_1_1core.html#ae36ea40b8477bfa12d41aae8245225c9',1,'mlx::core::operator^(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a03fc96696f5c6d9411841889d05f4670',1,'mlx::core::operator^(_MLX_BFloat16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a55130edf926366db0d6207989e609b7c',1,'mlx::core::operator^(uint16_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a0b75198f364d742a1c25dd13e398f2c2',1,'mlx::core::operator^(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a7f205f1b10b23180a23bf2be4bb726b1',1,'mlx::core::operator^(_MLX_Float16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a9edfe65f3c6da583c7b109290ec94b22',1,'mlx::core::operator^(uint16_t lhs, _MLX_Float16 rhs)']]], - ['operator_5e_3d_36',['operator^=',['../namespacemlx_1_1core.html#a97cb7d3eac404a442e84656cefe7cfb4',1,'mlx::core::operator^=(_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#abcfd2d9615c96561fd44dfb9c341cf8e',1,'mlx::core::operator^=(_MLX_BFloat16 &lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#ae78083d766b9cf6f87cded341bbcd63e',1,'mlx::core::operator^=(_MLX_Float16 &lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#acf36c10779fbf1efbe1e6a7fd41176cd',1,'mlx::core::operator^=(_MLX_Float16 &lhs, uint16_t rhs)']]], - ['operator_7c_37',['operator|',['../group__ops.html#ga52392a2a98f09a80da8d338c4908bd02',1,'mlx::core::operator|(const array &a, const array &b)'],['../namespacemlx_1_1core.html#af84ed854132c1514dca5a524fdb7ed05',1,'mlx::core::operator|(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a7423aac70f9f2e3fb6a5c9a3fc96f703',1,'mlx::core::operator|(_MLX_BFloat16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a19805f505cb7ac72bfab66c339ea7900',1,'mlx::core::operator|(uint16_t lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a2d933573edf4ed305fddd8a0caef1ee8',1,'mlx::core::operator|(_MLX_Float16 lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#afab3d4eb1b36a276922879ce6e44b7f5',1,'mlx::core::operator|(_MLX_Float16 lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#ab132729fa6912d22a8e402057eb4ba12',1,'mlx::core::operator|(uint16_t lhs, _MLX_Float16 rhs)']]], - ['operator_7c_3d_38',['operator|=',['../namespacemlx_1_1core.html#a8e1d21375ae4b89b3cbea3a46d262abd',1,'mlx::core::operator|=(_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)'],['../namespacemlx_1_1core.html#a28d6c2f89e73b7b874dd1f67f853a96f',1,'mlx::core::operator|=(_MLX_BFloat16 &lhs, uint16_t rhs)'],['../namespacemlx_1_1core.html#a2d8470b69cbbeefece08d3ffd46c0082',1,'mlx::core::operator|=(_MLX_Float16 &lhs, _MLX_Float16 rhs)'],['../namespacemlx_1_1core.html#a359c6257097a304c00d41d64296ef4c9',1,'mlx::core::operator|=(_MLX_Float16 &lhs, uint16_t rhs)']]], - ['operator_7c_7c_39',['operator||',['../group__ops.html#ga27af56a98270d4d76d139f0f9171b83a',1,'mlx::core']]], - ['out_5fof_5fbounds_40',['out_of_bounds',['../struct_read_writer.html#a08e10626fbc789b6dff9172fd6c36f7c',1,'ReadWriter::out_of_bounds() const'],['../struct_read_writer.html#a6f946aea5452109dca7fc70ed39c6efe',1,'ReadWriter::out_of_bounds() const'],['../struct_read_writer.html#a8f40d7f343d32134fe27a694abfde6bf',1,'ReadWriter::out_of_bounds() const']]], - ['outer_41',['outer',['../group__ops.html#ga866af24e10db2797e1c5a5986dbf6c0d',1,'mlx::core']]], - ['output_5fshapes_42',['output_shapes',['../classmlx_1_1core_1_1_primitive.html#a8849dc20991398f6f9a24d6785673853',1,'mlx::core::Primitive::output_shapes()'],['../classmlx_1_1core_1_1_abs.html#ab6a2b147f58c83439ecefb9189c2da32',1,'mlx::core::Abs::output_shapes()'],['../classmlx_1_1core_1_1_add.html#a9884fece6ca4061a65241c985fcf1594',1,'mlx::core::Add::output_shapes()'],['../classmlx_1_1core_1_1_arc_cos.html#a8ecd5b9a8cc9cba841768a5b2b497974',1,'mlx::core::ArcCos::output_shapes()'],['../classmlx_1_1core_1_1_arc_cosh.html#ae5d6660121f7f5a55824b95e7fd3dc6b',1,'mlx::core::ArcCosh::output_shapes()'],['../classmlx_1_1core_1_1_arc_sin.html#a1c6e478804eb5d171e4859b872db29f5',1,'mlx::core::ArcSin::output_shapes()'],['../classmlx_1_1core_1_1_arc_sinh.html#a6e0319a3cee5f6b9d43a3ac256b2c2ed',1,'mlx::core::ArcSinh::output_shapes()'],['../classmlx_1_1core_1_1_arc_tan.html#aa5d1e60d50ffa77b1d0e14af8d7e127a',1,'mlx::core::ArcTan::output_shapes()'],['../classmlx_1_1core_1_1_arc_tan2.html#a3f4ad806a0c59c2d1ae1c55c9889bf03',1,'mlx::core::ArcTan2::output_shapes()'],['../classmlx_1_1core_1_1_arc_tanh.html#a30246c56e1d75638c3696f84323861d8',1,'mlx::core::ArcTanh::output_shapes()'],['../classmlx_1_1core_1_1_arg_partition.html#a28608aee76a2db25f6455da561526c64',1,'mlx::core::ArgPartition::output_shapes()'],['../classmlx_1_1core_1_1_arg_reduce.html#a40a047cb3ed8d1445d42100b3fd85179',1,'mlx::core::ArgReduce::output_shapes()'],['../classmlx_1_1core_1_1_arg_sort.html#ac50e0b76c457aae944425b3a57c33859',1,'mlx::core::ArgSort::output_shapes()'],['../classmlx_1_1core_1_1_as_type.html#a18922e68006b5cf005355f5c9ac57ac4',1,'mlx::core::AsType::output_shapes()'],['../classmlx_1_1core_1_1_bitwise_binary.html#a7d2dfa8884832fc1a94ce6400d0ed599',1,'mlx::core::BitwiseBinary::output_shapes()'],['../classmlx_1_1core_1_1_ceil.html#a1eb263c04df810e212855a17af0658ea',1,'mlx::core::Ceil::output_shapes()'],['../classmlx_1_1core_1_1_compiled.html#a453a10c68b7825def5b53207bc04a71c',1,'mlx::core::Compiled::output_shapes()'],['../classmlx_1_1core_1_1_conjugate.html#ada40413e9f210251476a37cc0d0ea37f',1,'mlx::core::Conjugate::output_shapes()'],['../classmlx_1_1core_1_1_copy.html#ac3d13ebc6464403962fa1a9897fe6df3',1,'mlx::core::Copy::output_shapes()'],['../classmlx_1_1core_1_1_cos.html#a05b2d43942aa1d93a40c20ae8b90a25b',1,'mlx::core::Cos::output_shapes()'],['../classmlx_1_1core_1_1_cosh.html#a1bef7feac9a387ea80e7fc774f579962',1,'mlx::core::Cosh::output_shapes()'],['../classmlx_1_1core_1_1_divide.html#ad514bed77ad94742e26c93e446940994',1,'mlx::core::Divide::output_shapes()'],['../classmlx_1_1core_1_1_div_mod.html#a61d835d777c8063089dc708898ff314b',1,'mlx::core::DivMod::output_shapes()'],['../classmlx_1_1core_1_1_select.html#a295cd22e2284f2216bc93fdcf0b54867',1,'mlx::core::Select::output_shapes()'],['../classmlx_1_1core_1_1_remainder.html#a74bf3a9723b59200573ff8bac9a0b666',1,'mlx::core::Remainder::output_shapes()'],['../classmlx_1_1core_1_1_equal.html#a2f91e9603f63ad539837356b1ff3e7a9',1,'mlx::core::Equal::output_shapes()'],['../classmlx_1_1core_1_1_erf.html#afa4abbd7786b474c44c336a95481d187',1,'mlx::core::Erf::output_shapes()'],['../classmlx_1_1core_1_1_erf_inv.html#a22a95594e68b43b50c05355c82779639',1,'mlx::core::ErfInv::output_shapes()'],['../classmlx_1_1core_1_1_exp.html#aee7ba8d5be4a11f4b8f359b0338ab670',1,'mlx::core::Exp::output_shapes()'],['../classmlx_1_1core_1_1_expm1.html#ab9dbf34806eb43b928722ed9e8feed08',1,'mlx::core::Expm1::output_shapes()'],['../classmlx_1_1core_1_1_floor.html#aaf86becc7bfba6ee2af0d1f6d8e25015',1,'mlx::core::Floor::output_shapes()'],['../classmlx_1_1core_1_1_greater.html#ab2167a38c3baff99f527f17eb4c71d46',1,'mlx::core::Greater::output_shapes()'],['../classmlx_1_1core_1_1_greater_equal.html#a636a9cc00b0333e49978f39814af640f',1,'mlx::core::GreaterEqual::output_shapes()'],['../classmlx_1_1core_1_1_hadamard.html#a458614bc7820ae56493eb56d813b2cde',1,'mlx::core::Hadamard::output_shapes()'],['../classmlx_1_1core_1_1_less.html#a5e8b56574ccb91c065548f4bda40e278',1,'mlx::core::Less::output_shapes()'],['../classmlx_1_1core_1_1_less_equal.html#a2e259f3de11f97f3bd38a2e65667d78f',1,'mlx::core::LessEqual::output_shapes()'],['../classmlx_1_1core_1_1_log.html#a113dcc95e2a1a052238b1f5c8935a63d',1,'mlx::core::Log::output_shapes()'],['../classmlx_1_1core_1_1_log1p.html#aebf8f5b6670f55fa24283a934f4b25df',1,'mlx::core::Log1p::output_shapes()'],['../classmlx_1_1core_1_1_logical_not.html#a4a40511a052a6627085be378bbebe69c',1,'mlx::core::LogicalNot::output_shapes()'],['../classmlx_1_1core_1_1_logical_and.html#a191d69d92c01ed5ad82d4688f1de2617',1,'mlx::core::LogicalAnd::output_shapes()'],['../classmlx_1_1core_1_1_logical_or.html#a26259843be2de75d5e07cb7ea94fcfe4',1,'mlx::core::LogicalOr::output_shapes()'],['../classmlx_1_1core_1_1_log_add_exp.html#ac35cf432ecdd141d957b55fc4bff6635',1,'mlx::core::LogAddExp::output_shapes()'],['../classmlx_1_1core_1_1_maximum.html#a7bb80360ba4b74d0b0f3f74a5ff90d1b',1,'mlx::core::Maximum::output_shapes()'],['../classmlx_1_1core_1_1_minimum.html#ab4a85741dffaa64d8ead028f11539d70',1,'mlx::core::Minimum::output_shapes()'],['../classmlx_1_1core_1_1_multiply.html#a072de3911113247c95c28d3b52400061',1,'mlx::core::Multiply::output_shapes()'],['../classmlx_1_1core_1_1_negative.html#a253c08c7461bf2dce05f555c8dbf0014',1,'mlx::core::Negative::output_shapes()'],['../classmlx_1_1core_1_1_not_equal.html#a5b10e99bc564197e7b16dccb0577d89a',1,'mlx::core::NotEqual::output_shapes()'],['../classmlx_1_1core_1_1_number_of_elements.html#aae36bb1e125c0a2d7cd54e78be0f2af8',1,'mlx::core::NumberOfElements::output_shapes()'],['../classmlx_1_1core_1_1_partition.html#ae5b792df683bc14dde89f75ac6bcbeaf',1,'mlx::core::Partition::output_shapes()'],['../classmlx_1_1core_1_1_power.html#a1c17867ea1bad8899adb38185c9423c1',1,'mlx::core::Power::output_shapes()'],['../classmlx_1_1core_1_1_reduce.html#a0f73c2a55dc324145e11020c9b4d9a65',1,'mlx::core::Reduce::output_shapes()'],['../classmlx_1_1core_1_1_round.html#ad9a26817864dfc94b56e66bc6d80b047',1,'mlx::core::Round::output_shapes()'],['../classmlx_1_1core_1_1_sigmoid.html#a34572023c8748971289c2cb109ff9a43',1,'mlx::core::Sigmoid::output_shapes()'],['../classmlx_1_1core_1_1_sign.html#a719709b3c5d6b15a75614bdadd185f67',1,'mlx::core::Sign::output_shapes()'],['../classmlx_1_1core_1_1_sin.html#a46f059f04fd540f175f6031d28dc9f3a',1,'mlx::core::Sin::output_shapes()'],['../classmlx_1_1core_1_1_sinh.html#a4f10e7e6daf500575d97e077901e7d28',1,'mlx::core::Sinh::output_shapes()'],['../classmlx_1_1core_1_1_softmax.html#afea757ba328b9d8f35058793eae73e35',1,'mlx::core::Softmax::output_shapes()'],['../classmlx_1_1core_1_1_sort.html#a271545b66607b22e5f06a0fefe69f22d',1,'mlx::core::Sort::output_shapes()'],['../classmlx_1_1core_1_1_square.html#ac4c4927639cab1c5b91a074e7f68da02',1,'mlx::core::Square::output_shapes()'],['../classmlx_1_1core_1_1_sqrt.html#ae3d4f99729a7e72be7decf5a56d095d5',1,'mlx::core::Sqrt::output_shapes()'],['../classmlx_1_1core_1_1_stop_gradient.html#a12e7f55e087aea58b2a56f239c69bb4e',1,'mlx::core::StopGradient::output_shapes()'],['../classmlx_1_1core_1_1_subtract.html#a0fbf4bc9a0c76edc37ebb4083d98f3fc',1,'mlx::core::Subtract::output_shapes()'],['../classmlx_1_1core_1_1_tan.html#a7be9fd77491a48b07b6e126ab68bdf37',1,'mlx::core::Tan::output_shapes()'],['../classmlx_1_1core_1_1_tanh.html#a0392f51a9e51915d4691615757ba4325',1,'mlx::core::Tanh::output_shapes()']]], - ['outputs_43',['outputs',['../classmlx_1_1core_1_1array.html#a2c186fd527f984f0589d4183b4976289',1,'mlx::core::array']]], - ['overwrite_5fdescriptor_44',['overwrite_descriptor',['../classmlx_1_1core_1_1array.html#a95e6b156c8e05439f076b85c05079387',1,'mlx::core::array']]] -]; diff --git a/docs/build/html/search/groups_0.js b/docs/build/html/search/groups_0.js deleted file mode 100644 index 44168361..00000000 --- a/docs/build/html/search/groups_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['array_20operations_0',['Core array operations',['../group__ops.html',1,'']]] -]; diff --git a/docs/build/html/search/groups_1.js b/docs/build/html/search/groups_1.js deleted file mode 100644 index 00c8f741..00000000 --- a/docs/build/html/search/groups_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['core_20array_20operations_0',['Core array operations',['../group__ops.html',1,'']]] -]; diff --git a/docs/build/html/search/groups_2.js b/docs/build/html/search/groups_2.js deleted file mode 100644 index 0432ab19..00000000 --- a/docs/build/html/search/groups_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['operations_0',['Core array operations',['../group__ops.html',1,'']]] -]; diff --git a/docs/build/html/search/mag.svg b/docs/build/html/search/mag.svg deleted file mode 100644 index ffb6cf0d..00000000 --- a/docs/build/html/search/mag.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/docs/build/html/search/mag_d.svg b/docs/build/html/search/mag_d.svg deleted file mode 100644 index 4122773f..00000000 --- a/docs/build/html/search/mag_d.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/docs/build/html/search/mag_sel.svg b/docs/build/html/search/mag_sel.svg deleted file mode 100644 index 553dba87..00000000 --- a/docs/build/html/search/mag_sel.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/docs/build/html/search/mag_seld.svg b/docs/build/html/search/mag_seld.svg deleted file mode 100644 index c906f84c..00000000 --- a/docs/build/html/search/mag_seld.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - diff --git a/docs/build/html/search/namespaces_0.js b/docs/build/html/search/namespaces_0.js deleted file mode 100644 index b2473685..00000000 --- a/docs/build/html/search/namespaces_0.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['metal_0',['metal',['../namespacemetal.html',1,'']]], - ['metal_3a_3afast_1',['fast',['../namespacemetal_1_1fast.html',1,'metal']]], - ['metal_3a_3aprecise_2',['precise',['../namespacemetal_1_1precise.html',1,'metal']]], - ['mlx_3',['mlx',['../namespacemlx.html',1,'']]], - ['mlx_3a_3acore_4',['core',['../namespacemlx_1_1core.html',1,'mlx']]], - ['mlx_3a_3acore_3a_3aallocator_5',['allocator',['../namespacemlx_1_1core_1_1allocator.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3adetail_6',['detail',['../namespacemlx_1_1core_1_1detail.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3adistributed_7',['distributed',['../namespacemlx_1_1core_1_1distributed.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3adistributed_3a_3adetail_8',['detail',['../namespacemlx_1_1core_1_1distributed_1_1detail.html',1,'mlx::core::distributed']]], - ['mlx_3a_3acore_3a_3afast_9',['fast',['../namespacemlx_1_1core_1_1fast.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3afft_10',['fft',['../namespacemlx_1_1core_1_1fft.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3aio_11',['io',['../namespacemlx_1_1core_1_1io.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3alinalg_12',['linalg',['../namespacemlx_1_1core_1_1linalg.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3ametal_13',['metal',['../namespacemlx_1_1core_1_1metal.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3arandom_14',['random',['../namespacemlx_1_1core_1_1random.html',1,'mlx::core']]], - ['mlx_3a_3acore_3a_3ascheduler_15',['scheduler',['../namespacemlx_1_1core_1_1scheduler.html',1,'mlx::core']]], - ['mlx_3a_3asteel_16',['steel',['../namespacemlx_1_1steel.html',1,'mlx']]] -]; diff --git a/docs/build/html/search/namespaces_1.js b/docs/build/html/search/namespaces_1.js deleted file mode 100644 index 566db62b..00000000 --- a/docs/build/html/search/namespaces_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['pocketfft_0',['pocketfft',['../namespacepocketfft.html',1,'']]], - ['pocketfft_3a_3adetail_1',['detail',['../namespacepocketfft_1_1detail.html',1,'pocketfft']]], - ['pocketfft_3a_3adetail_3a_3athreading_2',['threading',['../namespacepocketfft_1_1detail_1_1threading.html',1,'pocketfft::detail']]] -]; diff --git a/docs/build/html/search/related_0.js b/docs/build/html/search/related_0.js deleted file mode 100644 index d4956fba..00000000 --- a/docs/build/html/search/related_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['allocator_0',['allocator',['../classmlx_1_1core_1_1allocator_1_1_common_allocator.html#abf84c726a37df68345589b897b2e35f0',1,'mlx::core::allocator::CommonAllocator::allocator'],['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html#afa1c5a725309caff163c492b5b84491e',1,'mlx::core::metal::MetalAllocator::allocator']]] -]; diff --git a/docs/build/html/search/related_1.js b/docs/build/html/search/related_1.js deleted file mode 100644 index 48bb1a55..00000000 --- a/docs/build/html/search/related_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['operator_21_3d_0',['operator!=',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a971aa511ab2e7ae1caae09556643a0bd',1,'mlx::core::array::ArrayIterator']]], - ['operator_3d_3d_1',['operator==',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a1afd6d2a19a2b0d712063f221ab4eba7',1,'mlx::core::array::ArrayIterator']]] -]; diff --git a/docs/build/html/search/search.css b/docs/build/html/search/search.css deleted file mode 100644 index 19f76f9d..00000000 --- a/docs/build/html/search/search.css +++ /dev/null @@ -1,291 +0,0 @@ -/*---------------- Search Box positioning */ - -#main-menu > li:last-child { - /* This
    • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} - -/*---------------- Search box styling */ - -.SRPage * { - font-weight: normal; - line-height: normal; -} - -dark-mode-toggle { - margin-left: 5px; - display: flex; - float: right; -} - -#MSearchBox { - display: inline-block; - white-space : nowrap; - background: var(--search-background-color); - border-radius: 0.65em; - box-shadow: var(--search-box-shadow); - z-index: 102; -} - -#MSearchBox .left { - display: inline-block; - vertical-align: middle; - height: 1.4em; -} - -#MSearchSelect { - display: inline-block; - vertical-align: middle; - width: 20px; - height: 19px; - background-image: var(--search-magnification-select-image); - margin: 0 0 0 0.3em; - padding: 0; -} - -#MSearchSelectExt { - display: inline-block; - vertical-align: middle; - width: 10px; - height: 19px; - background-image: var(--search-magnification-image); - margin: 0 0 0 0.5em; - padding: 0; -} - - -#MSearchField { - display: inline-block; - vertical-align: middle; - width: 7.5em; - height: 19px; - margin: 0 0.15em; - padding: 0; - line-height: 1em; - border:none; - color: var(--search-foreground-color); - outline: none; - font-family: var(--font-family-search); - -webkit-border-radius: 0px; - border-radius: 0px; - background: none; -} - -@media(hover: none) { - /* to avoid zooming on iOS */ - #MSearchField { - font-size: 16px; - } -} - -#MSearchBox .right { - display: inline-block; - vertical-align: middle; - width: 1.4em; - height: 1.4em; -} - -#MSearchClose { - display: none; - font-size: inherit; - background : none; - border: none; - margin: 0; - padding: 0; - outline: none; - -} - -#MSearchCloseImg { - padding: 0.3em; - margin: 0; -} - -.MSearchBoxActive #MSearchField { - color: var(--search-active-color); -} - - - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-filter-border-color); - background-color: var(--search-filter-background-color); - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt var(--font-family-search); - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: var(--font-family-monospace); - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: var(--search-filter-foreground-color); - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: var(--search-filter-foreground-color); - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: var(--search-filter-highlight-text-color); - background-color: var(--search-filter-highlight-bg-color); - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - /*width: 60ex;*/ - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid var(--search-results-border-color); - background-color: var(--search-results-background-color); - z-index:10000; - width: 300px; - height: 400px; - overflow: auto; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -div.SRPage { - margin: 5px 2px; - background-color: var(--search-results-background-color); -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: var(--search-results-foreground-color); - font-family: var(--font-family-search); - font-size: 8pt; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; - font-family: var(--font-family-search); -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; - font-family: var(--font-family-search); -} - -.SRResult { - display: none; -} - -div.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: var(--nav-gradient-active-image-parent); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/docs/build/html/search/search.js b/docs/build/html/search/search.js deleted file mode 100644 index 666af01e..00000000 --- a/docs/build/html/search/search.js +++ /dev/null @@ -1,694 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -const SEARCH_COOKIE_NAME = ''+'search_grp'; - -const searchResults = new SearchResults(); - -/* A class handling everything associated with the search panel. - - Parameters: - name - The name of the global variable that will be - storing this instance. Is needed to be able to set timeouts. - resultPath - path to use for external files -*/ -function SearchBox(name, resultsPath, extension) { - if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } - if (!extension || extension == "") { extension = ".html"; } - - function getXPos(item) { - let x = 0; - if (item.offsetWidth) { - while (item && item!=document.body) { - x += item.offsetLeft; - item = item.offsetParent; - } - } - return x; - } - - function getYPos(item) { - let y = 0; - if (item.offsetWidth) { - while (item && item!=document.body) { - y += item.offsetTop; - item = item.offsetParent; - } - } - return y; - } - - // ---------- Instance variables - this.name = name; - this.resultsPath = resultsPath; - this.keyTimeout = 0; - this.keyTimeoutLength = 500; - this.closeSelectionTimeout = 300; - this.lastSearchValue = ""; - this.lastResultsPage = ""; - this.hideTimeout = 0; - this.searchIndex = 0; - this.searchActive = false; - this.extension = extension; - - // ----------- DOM Elements - - this.DOMSearchField = () => document.getElementById("MSearchField"); - this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); - this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); - this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); - this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); - this.DOMSearchClose = () => document.getElementById("MSearchClose"); - this.DOMSearchBox = () => document.getElementById("MSearchBox"); - - // ------------ Event Handlers - - // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) { - this.Activate(isActive); - } - - this.OnSearchSelectShow = function() { - const searchSelectWindow = this.DOMSearchSelectWindow(); - const searchField = this.DOMSearchSelect(); - - const left = getXPos(searchField); - const top = getYPos(searchField) + searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - - // stop selection hide timer - if (this.hideTimeout) { - clearTimeout(this.hideTimeout); - this.hideTimeout=0; - } - return false; // to avoid "image drag" default event - } - - this.OnSearchSelectHide = function() { - this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), - this.closeSelectionTimeout); - } - - // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) { - if (this.keyTimeout) { // kill running timer - clearTimeout(this.keyTimeout); - this.keyTimeout = 0; - } - - const e = evt ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) { - if (e.shiftKey==1) { - this.OnSearchSelectShow(); - const win=this.DOMSearchSelectWindow(); - for (let i=0;i do a search - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) { // Up - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } else if (e.keyCode==13 || e.keyCode==27) { - e.stopPropagation(); - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() { - this.keyTimeout = 0; - - // strip leading whitespace - const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - const code = searchValue.toLowerCase().charCodeAt(0); - let idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair - idxChar = searchValue.substr(0, 2); - } - - let jsFile; - let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) { - const hexCode=idx.toString(16); - jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; - } - - const loadJS = function(url, impl, loc) { - const scriptTag = document.createElement('script'); - scriptTag.src = url; - scriptTag.onload = impl; - scriptTag.onreadystatechange = impl; - loc.appendChild(scriptTag); - } - - const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - const domSearchBox = this.DOMSearchBox(); - const domPopupSearchResults = this.DOMPopupSearchResults(); - const domSearchClose = this.DOMSearchClose(); - const resultsPath = this.resultsPath; - - const handleResults = function() { - document.getElementById("Loading").style.display="none"; - if (typeof searchData !== 'undefined') { - createResults(resultsPath); - document.getElementById("NoMatches").style.display="none"; - } - - if (idx!=-1) { - searchResults.Search(searchValue); - } else { // no file with search results => force empty search results - searchResults.Search('===='); - } - - if (domPopupSearchResultsWindow.style.display!='block') { - domSearchClose.style.display = 'inline-block'; - let left = getXPos(domSearchBox) + 150; - let top = getYPos(domSearchBox) + 20; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - const maxWidth = document.body.clientWidth; - const maxHeight = document.body.clientHeight; - let width = 300; - if (left<10) left=10; - if (width+left+8>maxWidth) width=maxWidth-left-8; - let height = 400; - if (height+top+8>maxHeight) height=maxHeight-top-8; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResultsWindow.style.height = height + 'px'; - } - } - - if (jsFile) { - loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); - } else { - handleResults(); - } - - this.lastSearchValue = searchValue; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) { - this.DOMSearchBox().className = 'MSearchBoxActive'; - this.searchActive = true; - } else if (!isActive) { // directly remove the panel - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - this.DOMSearchField().value = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults() { - - function convertToId(search) { - let result = ''; - for (let i=0;i. - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) { - const parentElement = document.getElementById(id); - let element = parentElement.firstChild; - - while (element && element!=parentElement) { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { - element = element.firstChild; - } else if (element.nextSibling) { - element = element.nextSibling; - } else { - do { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) { - const element = this.FindChildElement(id); - if (element) { - if (element.style.display == 'block') { - element.style.display = 'none'; - } else { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) { - if (!search) { // get search word from URL - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - const resultRows = document.getElementsByTagName("div"); - let matches = 0; - - let i = 0; - while (i < resultRows.length) { - const row = resultRows.item(i); - if (row.className == "SRResult") { - let rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) { - row.style.display = 'block'; - matches++; - } else { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) { // no results - document.getElementById("NoMatches").style.display='block'; - } else { // at least one result - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) { - let focusItem; - for (;;) { - const focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { - break; - } else if (!focusItem) { // last element - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) { - let focusItem; - for (;;) { - const focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { - break; - } else if (!focusItem) { // last element - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) { - if (e.type == "keydown") { - this.repeatOn = false; - this.lastKey = e.keyCode; - } else if (e.type == "keypress") { - if (!this.repeatOn) { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } else if (e.type == "keyup") { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) { // Up - const newIndex = itemIndex-1; - let focusItem = this.NavPrev(newIndex); - if (focusItem) { - let child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') { // children visible - let n=0; - let tmpElem; - for (;;) { // search for last child - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) { - focusItem = tmpElem; - } else { // found it! - break; - } - n++; - } - } - } - if (focusItem) { - focusItem.focus(); - } else { // return focus to search field - document.getElementById("MSearchField").focus(); - } - } else if (this.lastKey==40) { // Down - const newIndex = itemIndex+1; - let focusItem; - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') { // children visible - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } else if (this.lastKey==39) { // Right - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } else if (this.lastKey==37) { // Left - const item = document.getElementById('Item'+itemIndex); - const elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } else if (this.lastKey==27) { // Escape - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } else if (this.lastKey==13) { // Enter - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) { - const e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) { // Up - if (childIndex>0) { - const newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } else { // already at first child, jump to parent - document.getElementById('Item'+itemIndex).focus(); - } - } else if (this.lastKey==40) { // Down - const newIndex = childIndex+1; - let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) { // last child, jump to parent next parent - elem = this.NavNext(itemIndex+1); - } - if (elem) { - elem.focus(); - } - } else if (this.lastKey==27) { // Escape - e.stopPropagation(); - searchBox.CloseResultsWindow(); - document.getElementById("MSearchField").focus(); - } else if (this.lastKey==13) { // Enter - return true; - } - return false; - } -} - -function createResults(resultsPath) { - - function setKeyActions(elem,action) { - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); - } - - function setClassAttr(elem,attr) { - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); - } - - const results = document.getElementById("SRResults"); - results.innerHTML = ''; - searchData.forEach((elem,index) => { - const id = elem[0]; - const srResult = document.createElement('div'); - srResult.setAttribute('id','SR_'+id); - setClassAttr(srResult,'SRResult'); - const srEntry = document.createElement('div'); - setClassAttr(srEntry,'SREntry'); - const srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+index); - setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); - setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = elem[1][0]; - srEntry.appendChild(srLink); - if (elem[1].length==2) { // single result - srLink.setAttribute('href',resultsPath+elem[1][1][0]); - srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); - if (elem[1][1][1]) { - srLink.setAttribute('target','_parent'); - } else { - srLink.setAttribute('target','_blank'); - } - const srScope = document.createElement('span'); - setClassAttr(srScope,'SRScope'); - srScope.innerHTML = elem[1][1][2]; - srEntry.appendChild(srScope); - } else { // multiple results - srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - const srChildren = document.createElement('div'); - setClassAttr(srChildren,'SRChildren'); - for (let c=0; c (c++ function)": [[0, "_CPPv4I0Egt5array1TRK5array"], [0, "_CPPv4I0Egt5arrayRK5array1T"], [0, "_CPPv4gtRK5arrayRK5array"]], "operator>= (c++ function)": [[0, "_CPPv4I0Ege5array1TRK5array"], [0, "_CPPv4I0Ege5arrayRK5array1T"], [0, "_CPPv4geRK5arrayRK5array"]], "operator>> (c++ function)": [[0, "_CPPv4rsRK5arrayRK5array"]], "operator^ (c++ function)": [[0, "_CPPv4eoRK5arrayRK5array"]], "operator| (c++ function)": [[0, "_CPPv4orRK5arrayRK5array"]], "operator|| (c++ function)": [[0, "_CPPv4ooRK5arrayRK5array"]], "outer (c++ function)": [[0, "_CPPv45outerRK5arrayRK5array14StreamOrDevice"]], "pad (c++ function)": [[0, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice"], [0, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice"]], "partition (c++ function)": [[0, "_CPPv49partitionRK5arrayi14StreamOrDevice"], [0, "_CPPv49partitionRK5arrayii14StreamOrDevice"]], "power (c++ function)": [[0, "_CPPv45powerRK5arrayRK5array14StreamOrDevice"]], "prod (c++ function)": [[0, "_CPPv44prodRK5array14StreamOrDevice"], [0, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv44prodRK5arrayb14StreamOrDevice"], [0, "_CPPv44prodRK5arrayib14StreamOrDevice"]], "quantize (c++ function)": [[0, "_CPPv48quantizeRK5arrayii14StreamOrDevice"]], "quantized_matmul (c++ function)": [[0, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice"]], "radians (c++ function)": [[0, "_CPPv47radiansRK5array14StreamOrDevice"]], "reciprocal (c++ function)": [[0, "_CPPv410reciprocalRK5array14StreamOrDevice"]], "remainder (c++ function)": [[0, "_CPPv49remainderRK5arrayRK5array14StreamOrDevice"]], "repeat (c++ function)": [[0, "_CPPv46repeatRK5arrayi14StreamOrDevice"], [0, "_CPPv46repeatRK5arrayii14StreamOrDevice"]], "reshape (c++ function)": [[0, "_CPPv47reshapeRK5arrayNSt6vectorIiEE14StreamOrDevice"]], "right_shift (c++ function)": [[0, "_CPPv411right_shiftRK5arrayRK5array14StreamOrDevice"]], "round (c++ function)": [[0, "_CPPv45roundRK5array14StreamOrDevice"], [0, "_CPPv45roundRK5arrayi14StreamOrDevice"]], "rsqrt (c++ function)": [[0, "_CPPv45rsqrtRK5array14StreamOrDevice"]], "scatter (c++ function)": [[0, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_add (c++ function)": [[0, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_max (c++ function)": [[0, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_min (c++ function)": [[0, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_prod (c++ function)": [[0, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "sigmoid (c++ function)": [[0, "_CPPv47sigmoidRK5array14StreamOrDevice"]], "sign (c++ function)": [[0, "_CPPv44signRK5array14StreamOrDevice"]], "sin (c++ function)": [[0, "_CPPv43sinRK5array14StreamOrDevice"]], "sinh (c++ function)": [[0, "_CPPv44sinhRK5array14StreamOrDevice"]], "slice (c++ function)": [[0, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45sliceRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice"]], "slice_update (c++ function)": [[0, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"]], "softmax (c++ function)": [[0, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv47softmaxRK5arrayb14StreamOrDevice"], [0, "_CPPv47softmaxRK5arrayib14StreamOrDevice"]], "sort (c++ function)": [[0, "_CPPv44sortRK5array14StreamOrDevice"], [0, "_CPPv44sortRK5arrayi14StreamOrDevice"]], "split (c++ function)": [[0, "_CPPv45splitRK5arrayRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice"], [0, "_CPPv45splitRK5arrayi14StreamOrDevice"], [0, "_CPPv45splitRK5arrayii14StreamOrDevice"]], "sqrt (c++ function)": [[0, "_CPPv44sqrtRK5array14StreamOrDevice"]], "square (c++ function)": [[0, "_CPPv46squareRK5array14StreamOrDevice"]], "squeeze (c++ function)": [[0, "_CPPv47squeezeRK5array14StreamOrDevice"], [0, "_CPPv47squeezeRK5arrayRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv47squeezeRK5arrayi14StreamOrDevice"]], "stack (c++ function)": [[0, "_CPPv45stackRKNSt6vectorI5arrayEE14StreamOrDevice"], [0, "_CPPv45stackRKNSt6vectorI5arrayEEi14StreamOrDevice"]], "std (c++ function)": [[0, "_CPPv4StRK5array14StreamOrDevice"], [0, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice"], [0, "_CPPv4StRK5arraybi14StreamOrDevice"], [0, "_CPPv4StRK5arrayibi14StreamOrDevice"]], "stop_gradient (c++ function)": [[0, "_CPPv413stop_gradientRK5array14StreamOrDevice"]], "subtract (c++ function)": [[0, "_CPPv48subtractRK5arrayRK5array14StreamOrDevice"]], "sum (c++ function)": [[0, "_CPPv43sumRK5array14StreamOrDevice"], [0, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv43sumRK5arrayb14StreamOrDevice"], [0, "_CPPv43sumRK5arrayib14StreamOrDevice"]], "swapaxes (c++ function)": [[0, "_CPPv48swapaxesRK5arrayii14StreamOrDevice"]], "take (c++ function)": [[0, "_CPPv44takeRK5arrayRK5array14StreamOrDevice"], [0, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice"]], "take_along_axis (c++ function)": [[0, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice"]], "tan (c++ function)": [[0, "_CPPv43tanRK5array14StreamOrDevice"]], "tanh (c++ function)": [[0, "_CPPv44tanhRK5array14StreamOrDevice"]], "tensordot (c++ function)": [[0, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice"], [0, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice"]], "tile (c++ function)": [[0, "_CPPv44tileRK5arrayNSt6vectorIiEE14StreamOrDevice"]], "topk (c++ function)": [[0, "_CPPv44topkRK5arrayi14StreamOrDevice"], [0, "_CPPv44topkRK5arrayii14StreamOrDevice"]], "trace (c++ function)": [[0, "_CPPv45traceRK5array14StreamOrDevice"], [0, "_CPPv45traceRK5arrayiii14StreamOrDevice"], [0, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice"]], "transpose (c++ function)": [[0, "_CPPv49transposeRK5array14StreamOrDevice"], [0, "_CPPv49transposeRK5arrayNSt16initializer_listIiEE14StreamOrDevice"], [0, "_CPPv49transposeRK5arrayNSt6vectorIiEE14StreamOrDevice"]], "tri (c++ function)": [[0, "_CPPv43trii5Dtype14StreamOrDevice"], [0, "_CPPv43triiii5Dtype14StreamOrDevice"]], "tril (c++ function)": [[0, "_CPPv44tril5arrayi14StreamOrDevice"]], "triu (c++ function)": [[0, "_CPPv44triu5arrayi14StreamOrDevice"]], "var (c++ function)": [[0, "_CPPv43varRK5array14StreamOrDevice"], [0, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice"], [0, "_CPPv43varRK5arraybi14StreamOrDevice"], [0, "_CPPv43varRK5arrayibi14StreamOrDevice"]], "view (c++ function)": [[0, "_CPPv44viewRK5arrayRK5Dtype14StreamOrDevice"]], "where (c++ function)": [[0, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice"]], "zeros (c++ function)": [[0, "_CPPv45zerosRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice"]], "zeros_like (c++ function)": [[0, "_CPPv410zeros_likeRK5array14StreamOrDevice"]], "device (class in mlx.core)": [[9, "mlx.core.Device"]], "__init__() (device method)": [[9, "mlx.core.Device.__init__"]], "dtype (class in mlx.core)": [[10, "mlx.core.Dtype"]], "__init__() (dtype method)": [[10, "mlx.core.Dtype.__init__"]], "dtypecategory (class in mlx.core)": [[11, "mlx.core.DtypeCategory"]], "__init__() (dtypecategory method)": [[11, "mlx.core.DtypeCategory.__init__"]], "abs() (in module mlx.core)": [[12, "mlx.core.abs"]], "add() (in module mlx.core)": [[13, "mlx.core.add"]], "addmm() (in module mlx.core)": [[14, "mlx.core.addmm"]], "all() (in module mlx.core)": [[15, "mlx.core.all"]], "allclose() (in module mlx.core)": [[16, "mlx.core.allclose"]], "any() (in module mlx.core)": [[17, "mlx.core.any"]], "arange() (in module mlx.core)": [[18, "mlx.core.arange"]], "arccos() (in module mlx.core)": [[19, "mlx.core.arccos"]], "arccosh() (in module mlx.core)": [[20, "mlx.core.arccosh"]], "arcsin() (in module mlx.core)": [[21, "mlx.core.arcsin"]], "arcsinh() (in module mlx.core)": [[22, "mlx.core.arcsinh"]], "arctan() (in module mlx.core)": [[23, "mlx.core.arctan"]], "arctan2() (in module mlx.core)": [[24, "mlx.core.arctan2"]], "arctanh() (in module mlx.core)": [[25, "mlx.core.arctanh"]], "argmax() (in module mlx.core)": [[26, "mlx.core.argmax"]], "argmin() (in module mlx.core)": [[27, "mlx.core.argmin"]], "argpartition() (in module mlx.core)": [[28, "mlx.core.argpartition"]], "argsort() (in module mlx.core)": [[29, "mlx.core.argsort"]], "__init__() (array method)": [[30, "mlx.core.array.__init__"]], "array (class in mlx.core)": [[30, "mlx.core.array"]], "t (array property)": [[31, "mlx.core.array.T"]], "abs() (array method)": [[32, "mlx.core.array.abs"]], "all() (array method)": [[33, "mlx.core.array.all"]], "any() (array method)": [[34, "mlx.core.array.any"]], "argmax() (array method)": [[35, "mlx.core.array.argmax"]], "argmin() (array method)": [[36, "mlx.core.array.argmin"]], "astype() (array method)": [[37, "mlx.core.array.astype"]], "at (array property)": [[38, "mlx.core.array.at"]], "conj() (array method)": [[39, "mlx.core.array.conj"]], "cos() (array method)": [[40, "mlx.core.array.cos"]], "cummax() (array method)": [[41, "mlx.core.array.cummax"]], "cummin() (array method)": [[42, "mlx.core.array.cummin"]], "cumprod() (array method)": [[43, "mlx.core.array.cumprod"]], "cumsum() (array method)": [[44, "mlx.core.array.cumsum"]], "diag() (array method)": [[45, "mlx.core.array.diag"]], "diagonal() (array method)": [[46, "mlx.core.array.diagonal"]], "dtype (array property)": [[47, "mlx.core.array.dtype"]], "exp() (array method)": [[48, "mlx.core.array.exp"]], "flatten() (array method)": [[49, "mlx.core.array.flatten"]], "item() (array method)": [[50, "mlx.core.array.item"]], "itemsize (array property)": [[51, "mlx.core.array.itemsize"]], "log() (array method)": [[52, "mlx.core.array.log"]], "log10() (array method)": [[53, "mlx.core.array.log10"]], "log1p() (array method)": [[54, "mlx.core.array.log1p"]], "log2() (array method)": [[55, "mlx.core.array.log2"]], "logsumexp() (array method)": [[56, "mlx.core.array.logsumexp"]], "max() (array method)": [[57, "mlx.core.array.max"]], "mean() (array method)": [[58, "mlx.core.array.mean"]], "min() (array method)": [[59, "mlx.core.array.min"]], "moveaxis() (array method)": [[60, "mlx.core.array.moveaxis"]], "nbytes (array property)": [[61, "mlx.core.array.nbytes"]], "ndim (array property)": [[62, "mlx.core.array.ndim"]], "prod() (array method)": [[63, "mlx.core.array.prod"]], "reciprocal() (array method)": [[64, "mlx.core.array.reciprocal"]], "reshape() (array method)": [[65, "mlx.core.array.reshape"]], "round() (array method)": [[66, "mlx.core.array.round"]], "rsqrt() (array method)": [[67, "mlx.core.array.rsqrt"]], "shape (array property)": [[68, "mlx.core.array.shape"]], "sin() (array method)": [[69, "mlx.core.array.sin"]], "size (array property)": [[70, "mlx.core.array.size"]], "split() (array method)": [[71, "mlx.core.array.split"]], "sqrt() (array method)": [[72, "mlx.core.array.sqrt"]], "square() (array method)": [[73, "mlx.core.array.square"]], "squeeze() (array method)": [[74, "mlx.core.array.squeeze"]], "std() (array method)": [[75, "mlx.core.array.std"]], "sum() (array method)": [[76, "mlx.core.array.sum"]], "swapaxes() (array method)": [[77, "mlx.core.array.swapaxes"]], "tolist() (array method)": [[78, "mlx.core.array.tolist"]], "transpose() (array method)": [[79, "mlx.core.array.transpose"]], "var() (array method)": [[80, "mlx.core.array.var"]], "view() (array method)": [[81, "mlx.core.array.view"]], "array_equal() (in module mlx.core)": [[82, "mlx.core.array_equal"]], "as_strided() (in module mlx.core)": [[83, "mlx.core.as_strided"]], "atleast_1d() (in module mlx.core)": [[84, "mlx.core.atleast_1d"]], "atleast_2d() (in module mlx.core)": [[85, "mlx.core.atleast_2d"]], "atleast_3d() (in module mlx.core)": [[86, "mlx.core.atleast_3d"]], "bitwise_and() (in module mlx.core)": [[87, "mlx.core.bitwise_and"]], "bitwise_or() (in module mlx.core)": [[88, "mlx.core.bitwise_or"]], "bitwise_xor() (in module mlx.core)": [[89, "mlx.core.bitwise_xor"]], "block_masked_mm() (in module mlx.core)": [[90, "mlx.core.block_masked_mm"]], "broadcast_to() (in module mlx.core)": [[91, "mlx.core.broadcast_to"]], "ceil() (in module mlx.core)": [[92, "mlx.core.ceil"]], "clip() (in module mlx.core)": [[93, "mlx.core.clip"]], "compile() (in module mlx.core)": [[94, "mlx.core.compile"]], "concatenate() (in module mlx.core)": [[95, "mlx.core.concatenate"]], "conj() (in module mlx.core)": [[96, "mlx.core.conj"]], "conjugate() (in module mlx.core)": [[97, "mlx.core.conjugate"]], "conv1d() (in module mlx.core)": [[98, "mlx.core.conv1d"]], "conv2d() (in module mlx.core)": [[99, "mlx.core.conv2d"]], "conv3d() (in module mlx.core)": [[100, "mlx.core.conv3d"]], "conv_general() (in module mlx.core)": [[101, "mlx.core.conv_general"]], "conv_transpose1d() (in module mlx.core)": [[102, "mlx.core.conv_transpose1d"]], "conv_transpose2d() (in module mlx.core)": [[103, "mlx.core.conv_transpose2d"]], "conv_transpose3d() (in module mlx.core)": [[104, "mlx.core.conv_transpose3d"]], "convolve() (in module mlx.core)": [[105, "mlx.core.convolve"]], "cos() (in module mlx.core)": [[106, "mlx.core.cos"]], "cosh() (in module mlx.core)": [[107, "mlx.core.cosh"]], "cummax() (in module mlx.core)": [[108, "mlx.core.cummax"]], "cummin() (in module mlx.core)": [[109, "mlx.core.cummin"]], "cumprod() (in module mlx.core)": [[110, "mlx.core.cumprod"]], "cumsum() (in module mlx.core)": [[111, "mlx.core.cumsum"]], "__init__() (custom_function method)": [[112, "mlx.core.custom_function.__init__"]], "custom_function (class in mlx.core)": [[112, "mlx.core.custom_function"]], "default_device() (in module mlx.core)": [[113, "mlx.core.default_device"]], "default_stream() (in module mlx.core)": [[114, "mlx.core.default_stream"]], "degrees() (in module mlx.core)": [[115, "mlx.core.degrees"]], "dequantize() (in module mlx.core)": [[116, "mlx.core.dequantize"]], "diag() (in module mlx.core)": [[117, "mlx.core.diag"]], "diagonal() (in module mlx.core)": [[118, "mlx.core.diagonal"]], "disable_compile() (in module mlx.core)": [[119, "mlx.core.disable_compile"]], "group (class in mlx.core.distributed)": [[120, "mlx.core.distributed.Group"]], "__init__() (group method)": [[120, "mlx.core.distributed.Group.__init__"]], "all_gather() (in module mlx.core.distributed)": [[121, "mlx.core.distributed.all_gather"]], "all_sum() (in module mlx.core.distributed)": [[122, "mlx.core.distributed.all_sum"]], "init() (in module mlx.core.distributed)": [[123, "mlx.core.distributed.init"]], "is_available() (in module mlx.core.distributed)": [[124, "mlx.core.distributed.is_available"]], "recv() (in module mlx.core.distributed)": [[125, "mlx.core.distributed.recv"]], "recv_like() (in module mlx.core.distributed)": [[126, "mlx.core.distributed.recv_like"]], "send() (in module mlx.core.distributed)": [[127, "mlx.core.distributed.send"]], "divide() (in module mlx.core)": [[128, "mlx.core.divide"]], "divmod() (in module mlx.core)": [[129, "mlx.core.divmod"]], "einsum() (in module mlx.core)": [[130, "mlx.core.einsum"]], "einsum_path() (in module mlx.core)": [[131, "mlx.core.einsum_path"]], "enable_compile() (in module mlx.core)": [[132, "mlx.core.enable_compile"]], "equal() (in module mlx.core)": [[133, "mlx.core.equal"]], "erf() (in module mlx.core)": [[134, "mlx.core.erf"]], "erfinv() (in module mlx.core)": [[135, "mlx.core.erfinv"]], "eval() (in module mlx.core)": [[136, "mlx.core.eval"]], "exp() (in module mlx.core)": [[137, "mlx.core.exp"]], "expand_dims() (in module mlx.core)": [[138, "mlx.core.expand_dims"]], "expm1() (in module mlx.core)": [[139, "mlx.core.expm1"]], "eye() (in module mlx.core)": [[140, "mlx.core.eye"]], "affine_quantize() (in module mlx.core.fast)": [[141, "mlx.core.fast.affine_quantize"]], "layer_norm() (in module mlx.core.fast)": [[142, "mlx.core.fast.layer_norm"]], "metal_kernel() (in module mlx.core.fast)": [[143, "mlx.core.fast.metal_kernel"]], "rms_norm() (in module mlx.core.fast)": [[144, "mlx.core.fast.rms_norm"]], "rope() (in module mlx.core.fast)": [[145, "mlx.core.fast.rope"]], "scaled_dot_product_attention() (in module mlx.core.fast)": [[146, "mlx.core.fast.scaled_dot_product_attention"]], "fft() (in module mlx.core.fft)": [[147, "mlx.core.fft.fft"]], "fft2() (in module mlx.core.fft)": [[148, "mlx.core.fft.fft2"]], "fftn() (in module mlx.core.fft)": [[149, "mlx.core.fft.fftn"]], "ifft() (in module mlx.core.fft)": [[150, "mlx.core.fft.ifft"]], "ifft2() (in module mlx.core.fft)": [[151, "mlx.core.fft.ifft2"]], "ifftn() (in module mlx.core.fft)": [[152, "mlx.core.fft.ifftn"]], "irfft() (in module mlx.core.fft)": [[153, "mlx.core.fft.irfft"]], "irfft2() (in module mlx.core.fft)": [[154, "mlx.core.fft.irfft2"]], "irfftn() (in module mlx.core.fft)": [[155, "mlx.core.fft.irfftn"]], "rfft() (in module mlx.core.fft)": [[156, "mlx.core.fft.rfft"]], "rfft2() (in module mlx.core.fft)": [[157, "mlx.core.fft.rfft2"]], "rfftn() (in module mlx.core.fft)": [[158, "mlx.core.fft.rfftn"]], "flatten() (in module mlx.core)": [[159, "mlx.core.flatten"]], "floor() (in module mlx.core)": [[160, "mlx.core.floor"]], "floor_divide() (in module mlx.core)": [[161, "mlx.core.floor_divide"]], "full() (in module mlx.core)": [[162, "mlx.core.full"]], "gather_mm() (in module mlx.core)": [[163, "mlx.core.gather_mm"]], "gather_qmm() (in module mlx.core)": [[164, "mlx.core.gather_qmm"]], "grad() (in module mlx.core)": [[165, "mlx.core.grad"]], "greater() (in module mlx.core)": [[166, "mlx.core.greater"]], "greater_equal() (in module mlx.core)": [[167, "mlx.core.greater_equal"]], "hadamard_transform() (in module mlx.core)": [[168, "mlx.core.hadamard_transform"]], "identity() (in module mlx.core)": [[169, "mlx.core.identity"]], "inner() (in module mlx.core)": [[170, "mlx.core.inner"]], "isclose() (in module mlx.core)": [[171, "mlx.core.isclose"]], "isfinite() (in module mlx.core)": [[172, "mlx.core.isfinite"]], "isinf() (in module mlx.core)": [[173, "mlx.core.isinf"]], "isnan() (in module mlx.core)": [[174, "mlx.core.isnan"]], "isneginf() (in module mlx.core)": [[175, "mlx.core.isneginf"]], "isposinf() (in module mlx.core)": [[176, "mlx.core.isposinf"]], "issubdtype() (in module mlx.core)": [[177, "mlx.core.issubdtype"]], "jvp() (in module mlx.core)": [[178, "mlx.core.jvp"]], "left_shift() (in module mlx.core)": [[179, "mlx.core.left_shift"]], "less() (in module mlx.core)": [[180, "mlx.core.less"]], "less_equal() (in module mlx.core)": [[181, "mlx.core.less_equal"]], "cholesky() (in module mlx.core.linalg)": [[182, "mlx.core.linalg.cholesky"]], "cholesky_inv() (in module mlx.core.linalg)": [[183, "mlx.core.linalg.cholesky_inv"]], "inv() (in module mlx.core.linalg)": [[184, "mlx.core.linalg.inv"]], "norm() (in module mlx.core.linalg)": [[185, "mlx.core.linalg.norm"]], "qr() (in module mlx.core.linalg)": [[186, "mlx.core.linalg.qr"]], "svd() (in module mlx.core.linalg)": [[187, "mlx.core.linalg.svd"]], "tri_inv() (in module mlx.core.linalg)": [[188, "mlx.core.linalg.tri_inv"]], "linspace() (in module mlx.core)": [[189, "mlx.core.linspace"]], "load() (in module mlx.core)": [[190, "mlx.core.load"]], "log() (in module mlx.core)": [[191, "mlx.core.log"]], "log10() (in module mlx.core)": [[192, "mlx.core.log10"]], "log1p() (in module mlx.core)": [[193, "mlx.core.log1p"]], "log2() (in module mlx.core)": [[194, "mlx.core.log2"]], "logaddexp() (in module mlx.core)": [[195, "mlx.core.logaddexp"]], "logical_and() (in module mlx.core)": [[196, "mlx.core.logical_and"]], "logical_not() (in module mlx.core)": [[197, "mlx.core.logical_not"]], "logical_or() (in module mlx.core)": [[198, "mlx.core.logical_or"]], "logsumexp() (in module mlx.core)": [[199, "mlx.core.logsumexp"]], "matmul() (in module mlx.core)": [[200, "mlx.core.matmul"]], "max() (in module mlx.core)": [[201, "mlx.core.max"]], "maximum() (in module mlx.core)": [[202, "mlx.core.maximum"]], "mean() (in module mlx.core)": [[203, "mlx.core.mean"]], "meshgrid() (in module mlx.core)": [[204, "mlx.core.meshgrid"]], "clear_cache() (in module mlx.core.metal)": [[205, "mlx.core.metal.clear_cache"]], "device_info() (in module mlx.core.metal)": [[206, "mlx.core.metal.device_info"]], "get_active_memory() (in module mlx.core.metal)": [[207, "mlx.core.metal.get_active_memory"]], "get_cache_memory() (in module mlx.core.metal)": [[208, "mlx.core.metal.get_cache_memory"]], "get_peak_memory() (in module mlx.core.metal)": [[209, "mlx.core.metal.get_peak_memory"]], "is_available() (in module mlx.core.metal)": [[210, "mlx.core.metal.is_available"]], "reset_peak_memory() (in module mlx.core.metal)": [[211, "mlx.core.metal.reset_peak_memory"]], "set_cache_limit() (in module mlx.core.metal)": [[212, "mlx.core.metal.set_cache_limit"]], "set_memory_limit() (in module mlx.core.metal)": [[213, "mlx.core.metal.set_memory_limit"]], "start_capture() (in module mlx.core.metal)": [[214, "mlx.core.metal.start_capture"]], "stop_capture() (in module mlx.core.metal)": [[215, "mlx.core.metal.stop_capture"]], "min() (in module mlx.core)": [[216, "mlx.core.min"]], "minimum() (in module mlx.core)": [[217, "mlx.core.minimum"]], "moveaxis() (in module mlx.core)": [[218, "mlx.core.moveaxis"]], "multiply() (in module mlx.core)": [[219, "mlx.core.multiply"]], "nan_to_num() (in module mlx.core)": [[220, "mlx.core.nan_to_num"]], "negative() (in module mlx.core)": [[221, "mlx.core.negative"]], "new_stream() (in module mlx.core)": [[222, "mlx.core.new_stream"]], "not_equal() (in module mlx.core)": [[223, "mlx.core.not_equal"]], "ones() (in module mlx.core)": [[224, "mlx.core.ones"]], "ones_like() (in module mlx.core)": [[225, "mlx.core.ones_like"]], "outer() (in module mlx.core)": [[226, "mlx.core.outer"]], "pad() (in module mlx.core)": [[227, "mlx.core.pad"]], "partition() (in module mlx.core)": [[228, "mlx.core.partition"]], "power() (in module mlx.core)": [[229, "mlx.core.power"]], "prod() (in module mlx.core)": [[230, "mlx.core.prod"]], "quantize() (in module mlx.core)": [[231, "mlx.core.quantize"]], "quantized_matmul() (in module mlx.core)": [[232, "mlx.core.quantized_matmul"]], "radians() (in module mlx.core)": [[233, "mlx.core.radians"]], "bernoulli() (in module mlx.core.random)": [[234, "mlx.core.random.bernoulli"]], "categorical() (in module mlx.core.random)": [[235, "mlx.core.random.categorical"]], "gumbel() (in module mlx.core.random)": [[236, "mlx.core.random.gumbel"]], "key() (in module mlx.core.random)": [[237, "mlx.core.random.key"]], "laplace() (in module mlx.core.random)": [[238, "mlx.core.random.laplace"]], "multivariate_normal() (in module mlx.core.random)": [[239, "mlx.core.random.multivariate_normal"]], "normal() (in module mlx.core.random)": [[240, "mlx.core.random.normal"]], "randint() (in module mlx.core.random)": [[241, "mlx.core.random.randint"]], "seed() (in module mlx.core.random)": [[242, "mlx.core.random.seed"]], "split() (in module mlx.core.random)": [[243, "mlx.core.random.split"]], "truncated_normal() (in module mlx.core.random)": [[244, "mlx.core.random.truncated_normal"]], "uniform() (in module mlx.core.random)": [[245, "mlx.core.random.uniform"]], "reciprocal() (in module mlx.core)": [[246, "mlx.core.reciprocal"]], "remainder() (in module mlx.core)": [[247, "mlx.core.remainder"]], "repeat() (in module mlx.core)": [[248, "mlx.core.repeat"]], "reshape() (in module mlx.core)": [[249, "mlx.core.reshape"]], "right_shift() (in module mlx.core)": [[250, "mlx.core.right_shift"]], "round() (in module mlx.core)": [[251, "mlx.core.round"]], "rsqrt() (in module mlx.core)": [[252, "mlx.core.rsqrt"]], "save() (in module mlx.core)": [[253, "mlx.core.save"]], "save_gguf() (in module mlx.core)": [[254, "mlx.core.save_gguf"]], "save_safetensors() (in module mlx.core)": [[255, "mlx.core.save_safetensors"]], "savez() (in module mlx.core)": [[256, "mlx.core.savez"]], "savez_compressed() (in module mlx.core)": [[257, "mlx.core.savez_compressed"]], "set_default_device() (in module mlx.core)": [[258, "mlx.core.set_default_device"]], "set_default_stream() (in module mlx.core)": [[259, "mlx.core.set_default_stream"]], "sigmoid() (in module mlx.core)": [[260, "mlx.core.sigmoid"]], "sign() (in module mlx.core)": [[261, "mlx.core.sign"]], "sin() (in module mlx.core)": [[262, "mlx.core.sin"]], "sinh() (in module mlx.core)": [[263, "mlx.core.sinh"]], "softmax() (in module mlx.core)": [[264, "mlx.core.softmax"]], "sort() (in module mlx.core)": [[265, "mlx.core.sort"]], "split() (in module mlx.core)": [[266, "mlx.core.split"]], "sqrt() (in module mlx.core)": [[267, "mlx.core.sqrt"]], "square() (in module mlx.core)": [[268, "mlx.core.square"]], "squeeze() (in module mlx.core)": [[269, "mlx.core.squeeze"]], "stack() (in module mlx.core)": [[270, "mlx.core.stack"]], "std() (in module mlx.core)": [[271, "mlx.core.std"]], "stop_gradient() (in module mlx.core)": [[272, "mlx.core.stop_gradient"]], "stream() (in module mlx.core)": [[273, "mlx.core.stream"]], "subtract() (in module mlx.core)": [[274, "mlx.core.subtract"]], "sum() (in module mlx.core)": [[275, "mlx.core.sum"]], "swapaxes() (in module mlx.core)": [[276, "mlx.core.swapaxes"]], "synchronize() (in module mlx.core)": [[277, "mlx.core.synchronize"]], "take() (in module mlx.core)": [[278, "mlx.core.take"]], "take_along_axis() (in module mlx.core)": [[279, "mlx.core.take_along_axis"]], "tan() (in module mlx.core)": [[280, "mlx.core.tan"]], "tanh() (in module mlx.core)": [[281, "mlx.core.tanh"]], "tensordot() (in module mlx.core)": [[282, "mlx.core.tensordot"]], "tile() (in module mlx.core)": [[283, "mlx.core.tile"]], "topk() (in module mlx.core)": [[284, "mlx.core.topk"]], "trace() (in module mlx.core)": [[285, "mlx.core.trace"]], "transpose() (in module mlx.core)": [[286, "mlx.core.transpose"]], "tri() (in module mlx.core)": [[287, "mlx.core.tri"]], "tril() (in module mlx.core)": [[288, "mlx.core.tril"]], "triu() (in module mlx.core)": [[289, "mlx.core.triu"]], "value_and_grad() (in module mlx.core)": [[290, "mlx.core.value_and_grad"]], "var() (in module mlx.core)": [[291, "mlx.core.var"]], "view() (in module mlx.core)": [[292, "mlx.core.view"]], "vjp() (in module mlx.core)": [[293, "mlx.core.vjp"]], "vmap() (in module mlx.core)": [[294, "mlx.core.vmap"]], "where() (in module mlx.core)": [[295, "mlx.core.where"]], "zeros() (in module mlx.core)": [[296, "mlx.core.zeros"]], "zeros_like() (in module mlx.core)": [[297, "mlx.core.zeros_like"]], "quantize() (in module mlx.nn)": [[298, "mlx.nn.quantize"]], "value_and_grad() (in module mlx.nn)": [[299, "mlx.nn.value_and_grad"]], "clip_grad_norm() (in module mlx.optimizers)": [[300, "mlx.optimizers.clip_grad_norm"]], "tree_flatten() (in module mlx.utils)": [[301, "mlx.utils.tree_flatten"]], "tree_map() (in module mlx.utils)": [[302, "mlx.utils.tree_map"]], "tree_map_with_path() (in module mlx.utils)": [[303, "mlx.utils.tree_map_with_path"]], "tree_reduce() (in module mlx.utils)": [[304, "mlx.utils.tree_reduce"]], "tree_unflatten() (in module mlx.utils)": [[305, "mlx.utils.tree_unflatten"]], "stream (class in mlx.core)": [[306, "mlx.core.Stream"]], "__init__() (stream method)": [[306, "mlx.core.Stream.__init__"]], "alibi (class in mlx.nn)": [[316, "mlx.nn.ALiBi"]], "avgpool1d (class in mlx.nn)": [[317, "mlx.nn.AvgPool1d"]], "avgpool2d (class in mlx.nn)": [[318, "mlx.nn.AvgPool2d"]], "batchnorm (class in mlx.nn)": [[319, "mlx.nn.BatchNorm"]], "conv1d (class in mlx.nn)": [[320, "mlx.nn.Conv1d"]], "conv2d (class in mlx.nn)": [[321, "mlx.nn.Conv2d"]], "conv3d (class in mlx.nn)": [[322, "mlx.nn.Conv3d"]], "convtranspose1d (class in mlx.nn)": [[323, "mlx.nn.ConvTranspose1d"]], "convtranspose2d (class in mlx.nn)": [[324, "mlx.nn.ConvTranspose2d"]], "convtranspose3d (class in mlx.nn)": [[325, "mlx.nn.ConvTranspose3d"]], "dropout (class in mlx.nn)": [[326, "mlx.nn.Dropout"]], "dropout2d (class in mlx.nn)": [[327, "mlx.nn.Dropout2d"]], "dropout3d (class in mlx.nn)": [[328, "mlx.nn.Dropout3d"]], "embedding (class in mlx.nn)": [[329, "mlx.nn.Embedding"]], "gelu (class in mlx.nn)": [[330, "mlx.nn.GELU"], [396, "mlx.nn.gelu"]], "glu (class in mlx.nn)": [[331, "mlx.nn.GLU"], [399, "mlx.nn.glu"]], "gru (class in mlx.nn)": [[332, "mlx.nn.GRU"]], "groupnorm (class in mlx.nn)": [[333, "mlx.nn.GroupNorm"]], "hardshrink (class in mlx.nn)": [[334, "mlx.nn.HardShrink"]], "hardtanh (class in mlx.nn)": [[335, "mlx.nn.HardTanh"]], "hardswish (class in mlx.nn)": [[336, "mlx.nn.Hardswish"], [402, "mlx.nn.hardswish"]], "instancenorm (class in mlx.nn)": [[337, "mlx.nn.InstanceNorm"]], "lstm (class in mlx.nn)": [[338, "mlx.nn.LSTM"]], "layernorm (class in mlx.nn)": [[339, "mlx.nn.LayerNorm"]], "leakyrelu (class in mlx.nn)": [[340, "mlx.nn.LeakyReLU"]], "linear (class in mlx.nn)": [[341, "mlx.nn.Linear"]], "maxpool1d (class in mlx.nn)": [[342, "mlx.nn.MaxPool1d"]], "maxpool2d (class in mlx.nn)": [[343, "mlx.nn.MaxPool2d"]], "mish (class in mlx.nn)": [[344, "mlx.nn.Mish"], [420, "mlx.nn.mish"]], "apply() (module method)": [[345, "mlx.nn.Module.apply"]], "apply_to_modules() (module method)": [[346, "mlx.nn.Module.apply_to_modules"]], "children() (module method)": [[347, "mlx.nn.Module.children"]], "eval() (module method)": [[348, "mlx.nn.Module.eval"]], "filter_and_map() (module method)": [[349, "mlx.nn.Module.filter_and_map"]], "freeze() (module method)": [[350, "mlx.nn.Module.freeze"]], "leaf_modules() (module method)": [[351, "mlx.nn.Module.leaf_modules"]], "load_weights() (module method)": [[352, "mlx.nn.Module.load_weights"]], "modules() (module method)": [[353, "mlx.nn.Module.modules"]], "named_modules() (module method)": [[354, "mlx.nn.Module.named_modules"]], "parameters() (module method)": [[355, "mlx.nn.Module.parameters"]], "save_weights() (module method)": [[356, "mlx.nn.Module.save_weights"]], "set_dtype() (module method)": [[357, "mlx.nn.Module.set_dtype"]], "state (module property)": [[358, "mlx.nn.Module.state"]], "train() (module method)": [[359, "mlx.nn.Module.train"]], "trainable_parameters() (module method)": [[360, "mlx.nn.Module.trainable_parameters"]], "training (module property)": [[361, "mlx.nn.Module.training"]], "unfreeze() (module method)": [[362, "mlx.nn.Module.unfreeze"]], "update() (module method)": [[363, "mlx.nn.Module.update"]], "update_modules() (module method)": [[364, "mlx.nn.Module.update_modules"]], "multiheadattention (class in mlx.nn)": [[365, "mlx.nn.MultiHeadAttention"]], "prelu (class in mlx.nn)": [[366, "mlx.nn.PReLU"], [421, "mlx.nn.prelu"]], "quantizedembedding (class in mlx.nn)": [[367, "mlx.nn.QuantizedEmbedding"]], "quantizedlinear (class in mlx.nn)": [[368, "mlx.nn.QuantizedLinear"]], "rmsnorm (class in mlx.nn)": [[369, "mlx.nn.RMSNorm"]], "rnn (class in mlx.nn)": [[370, "mlx.nn.RNN"]], "relu (class in mlx.nn)": [[371, "mlx.nn.ReLU"], [422, "mlx.nn.relu"]], "relu6 (class in mlx.nn)": [[372, "mlx.nn.ReLU6"], [423, "mlx.nn.relu6"]], "rope (class in mlx.nn)": [[373, "mlx.nn.RoPE"]], "selu (class in mlx.nn)": [[374, "mlx.nn.SELU"], [424, "mlx.nn.selu"]], "sequential (class in mlx.nn)": [[375, "mlx.nn.Sequential"]], "silu (class in mlx.nn)": [[376, "mlx.nn.SiLU"], [426, "mlx.nn.silu"]], "sinusoidalpositionalencoding (class in mlx.nn)": [[377, "mlx.nn.SinusoidalPositionalEncoding"]], "softmax (class in mlx.nn)": [[378, "mlx.nn.Softmax"], [427, "mlx.nn.softmax"]], "softmin (class in mlx.nn)": [[379, "mlx.nn.Softmin"], [428, "mlx.nn.softmin"]], "softplus (class in mlx.nn)": [[380, "mlx.nn.Softplus"], [429, "mlx.nn.softplus"]], "softshrink (class in mlx.nn)": [[381, "mlx.nn.Softshrink"], [430, "mlx.nn.softshrink"]], "softsign (class in mlx.nn)": [[382, "mlx.nn.Softsign"]], "step (class in mlx.nn)": [[383, "mlx.nn.Step"], [431, "mlx.nn.step"]], "tanh (class in mlx.nn)": [[384, "mlx.nn.Tanh"], [432, "mlx.nn.tanh"]], "transformer (class in mlx.nn)": [[385, "mlx.nn.Transformer"]], "upsample (class in mlx.nn)": [[386, "mlx.nn.Upsample"]], "constant() (in module mlx.nn.init)": [[387, "mlx.nn.init.constant"]], "glorot_normal() (in module mlx.nn.init)": [[388, "mlx.nn.init.glorot_normal"]], "glorot_uniform() (in module mlx.nn.init)": [[389, "mlx.nn.init.glorot_uniform"]], "he_normal() (in module mlx.nn.init)": [[390, "mlx.nn.init.he_normal"]], "he_uniform() (in module mlx.nn.init)": [[391, "mlx.nn.init.he_uniform"]], "identity() (in module mlx.nn.init)": [[392, "mlx.nn.init.identity"]], "normal() (in module mlx.nn.init)": [[393, "mlx.nn.init.normal"]], "uniform() (in module mlx.nn.init)": [[394, "mlx.nn.init.uniform"]], "elu (class in mlx.nn)": [[395, "mlx.nn.elu"]], "gelu_approx (class in mlx.nn)": [[397, "mlx.nn.gelu_approx"]], "gelu_fast_approx (class in mlx.nn)": [[398, "mlx.nn.gelu_fast_approx"]], "hard_shrink (class in mlx.nn)": [[400, "mlx.nn.hard_shrink"]], "hard_tanh (class in mlx.nn)": [[401, "mlx.nn.hard_tanh"]], "leaky_relu (class in mlx.nn)": [[403, "mlx.nn.leaky_relu"]], "log_sigmoid (class in mlx.nn)": [[404, "mlx.nn.log_sigmoid"]], "log_softmax (class in mlx.nn)": [[405, "mlx.nn.log_softmax"]], "binary_cross_entropy (class in mlx.nn.losses)": [[406, "mlx.nn.losses.binary_cross_entropy"]], "cosine_similarity_loss (class in mlx.nn.losses)": [[407, "mlx.nn.losses.cosine_similarity_loss"]], "cross_entropy (class in mlx.nn.losses)": [[408, "mlx.nn.losses.cross_entropy"]], "gaussian_nll_loss (class in mlx.nn.losses)": [[409, "mlx.nn.losses.gaussian_nll_loss"]], "hinge_loss (class in mlx.nn.losses)": [[410, "mlx.nn.losses.hinge_loss"]], "huber_loss (class in mlx.nn.losses)": [[411, "mlx.nn.losses.huber_loss"]], "kl_div_loss (class in mlx.nn.losses)": [[412, "mlx.nn.losses.kl_div_loss"]], "l1_loss (class in mlx.nn.losses)": [[413, "mlx.nn.losses.l1_loss"]], "log_cosh_loss (class in mlx.nn.losses)": [[414, "mlx.nn.losses.log_cosh_loss"]], "margin_ranking_loss (class in mlx.nn.losses)": [[415, "mlx.nn.losses.margin_ranking_loss"]], "mse_loss (class in mlx.nn.losses)": [[416, "mlx.nn.losses.mse_loss"]], "nll_loss (class in mlx.nn.losses)": [[417, "mlx.nn.losses.nll_loss"]], "smooth_l1_loss (class in mlx.nn.losses)": [[418, "mlx.nn.losses.smooth_l1_loss"]], "triplet_loss (class in mlx.nn.losses)": [[419, "mlx.nn.losses.triplet_loss"]], "sigmoid (class in mlx.nn)": [[425, "mlx.nn.sigmoid"]], "module (class in mlx.nn)": [[437, "mlx.nn.Module"]], "adadelta (class in mlx.optimizers)": [[440, "mlx.optimizers.AdaDelta"]], "adafactor (class in mlx.optimizers)": [[441, "mlx.optimizers.Adafactor"]], "adagrad (class in mlx.optimizers)": [[442, "mlx.optimizers.Adagrad"]], "adam (class in mlx.optimizers)": [[443, "mlx.optimizers.Adam"]], "adamw (class in mlx.optimizers)": [[444, "mlx.optimizers.AdamW"]], "adamax (class in mlx.optimizers)": [[445, "mlx.optimizers.Adamax"]], "lion (class in mlx.optimizers)": [[446, "mlx.optimizers.Lion"]], "apply_gradients() (optimizer method)": [[447, "mlx.optimizers.Optimizer.apply_gradients"]], "init() (optimizer method)": [[448, "mlx.optimizers.Optimizer.init"]], "state (optimizer property)": [[449, "mlx.optimizers.Optimizer.state"]], "update() (optimizer method)": [[450, "mlx.optimizers.Optimizer.update"]], "rmsprop (class in mlx.optimizers)": [[451, "mlx.optimizers.RMSprop"]], "sgd (class in mlx.optimizers)": [[452, "mlx.optimizers.SGD"]], "cosine_decay() (in module mlx.optimizers)": [[453, "mlx.optimizers.cosine_decay"]], "exponential_decay() (in module mlx.optimizers)": [[454, "mlx.optimizers.exponential_decay"]], "join_schedules() (in module mlx.optimizers)": [[455, "mlx.optimizers.join_schedules"]], "linear_schedule() (in module mlx.optimizers)": [[456, "mlx.optimizers.linear_schedule"]], "step_decay() (in module mlx.optimizers)": [[457, "mlx.optimizers.step_decay"]], "optimizer (class in mlx.optimizers)": [[459, "mlx.optimizers.Optimizer"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["cpp/ops", "dev/custom_metal_kernels", "dev/extensions", "dev/metal_debugger", "examples/linear_regression", "examples/llama-inference", "examples/mlp", "index", "install", "python/_autosummary/mlx.core.Device", "python/_autosummary/mlx.core.Dtype", "python/_autosummary/mlx.core.DtypeCategory", "python/_autosummary/mlx.core.abs", "python/_autosummary/mlx.core.add", "python/_autosummary/mlx.core.addmm", "python/_autosummary/mlx.core.all", "python/_autosummary/mlx.core.allclose", "python/_autosummary/mlx.core.any", "python/_autosummary/mlx.core.arange", "python/_autosummary/mlx.core.arccos", "python/_autosummary/mlx.core.arccosh", "python/_autosummary/mlx.core.arcsin", "python/_autosummary/mlx.core.arcsinh", "python/_autosummary/mlx.core.arctan", "python/_autosummary/mlx.core.arctan2", "python/_autosummary/mlx.core.arctanh", "python/_autosummary/mlx.core.argmax", "python/_autosummary/mlx.core.argmin", "python/_autosummary/mlx.core.argpartition", "python/_autosummary/mlx.core.argsort", "python/_autosummary/mlx.core.array", "python/_autosummary/mlx.core.array.T", "python/_autosummary/mlx.core.array.abs", "python/_autosummary/mlx.core.array.all", "python/_autosummary/mlx.core.array.any", "python/_autosummary/mlx.core.array.argmax", "python/_autosummary/mlx.core.array.argmin", "python/_autosummary/mlx.core.array.astype", "python/_autosummary/mlx.core.array.at", "python/_autosummary/mlx.core.array.conj", "python/_autosummary/mlx.core.array.cos", "python/_autosummary/mlx.core.array.cummax", "python/_autosummary/mlx.core.array.cummin", "python/_autosummary/mlx.core.array.cumprod", "python/_autosummary/mlx.core.array.cumsum", "python/_autosummary/mlx.core.array.diag", "python/_autosummary/mlx.core.array.diagonal", "python/_autosummary/mlx.core.array.dtype", "python/_autosummary/mlx.core.array.exp", "python/_autosummary/mlx.core.array.flatten", "python/_autosummary/mlx.core.array.item", "python/_autosummary/mlx.core.array.itemsize", "python/_autosummary/mlx.core.array.log", "python/_autosummary/mlx.core.array.log10", "python/_autosummary/mlx.core.array.log1p", "python/_autosummary/mlx.core.array.log2", "python/_autosummary/mlx.core.array.logsumexp", "python/_autosummary/mlx.core.array.max", "python/_autosummary/mlx.core.array.mean", "python/_autosummary/mlx.core.array.min", "python/_autosummary/mlx.core.array.moveaxis", "python/_autosummary/mlx.core.array.nbytes", "python/_autosummary/mlx.core.array.ndim", "python/_autosummary/mlx.core.array.prod", "python/_autosummary/mlx.core.array.reciprocal", "python/_autosummary/mlx.core.array.reshape", "python/_autosummary/mlx.core.array.round", "python/_autosummary/mlx.core.array.rsqrt", "python/_autosummary/mlx.core.array.shape", "python/_autosummary/mlx.core.array.sin", "python/_autosummary/mlx.core.array.size", "python/_autosummary/mlx.core.array.split", "python/_autosummary/mlx.core.array.sqrt", "python/_autosummary/mlx.core.array.square", "python/_autosummary/mlx.core.array.squeeze", "python/_autosummary/mlx.core.array.std", "python/_autosummary/mlx.core.array.sum", "python/_autosummary/mlx.core.array.swapaxes", "python/_autosummary/mlx.core.array.tolist", "python/_autosummary/mlx.core.array.transpose", "python/_autosummary/mlx.core.array.var", "python/_autosummary/mlx.core.array.view", "python/_autosummary/mlx.core.array_equal", "python/_autosummary/mlx.core.as_strided", "python/_autosummary/mlx.core.atleast_1d", "python/_autosummary/mlx.core.atleast_2d", "python/_autosummary/mlx.core.atleast_3d", "python/_autosummary/mlx.core.bitwise_and", "python/_autosummary/mlx.core.bitwise_or", "python/_autosummary/mlx.core.bitwise_xor", "python/_autosummary/mlx.core.block_masked_mm", "python/_autosummary/mlx.core.broadcast_to", "python/_autosummary/mlx.core.ceil", "python/_autosummary/mlx.core.clip", "python/_autosummary/mlx.core.compile", "python/_autosummary/mlx.core.concatenate", "python/_autosummary/mlx.core.conj", "python/_autosummary/mlx.core.conjugate", "python/_autosummary/mlx.core.conv1d", "python/_autosummary/mlx.core.conv2d", "python/_autosummary/mlx.core.conv3d", "python/_autosummary/mlx.core.conv_general", "python/_autosummary/mlx.core.conv_transpose1d", "python/_autosummary/mlx.core.conv_transpose2d", "python/_autosummary/mlx.core.conv_transpose3d", "python/_autosummary/mlx.core.convolve", "python/_autosummary/mlx.core.cos", "python/_autosummary/mlx.core.cosh", "python/_autosummary/mlx.core.cummax", "python/_autosummary/mlx.core.cummin", "python/_autosummary/mlx.core.cumprod", "python/_autosummary/mlx.core.cumsum", "python/_autosummary/mlx.core.custom_function", "python/_autosummary/mlx.core.default_device", "python/_autosummary/mlx.core.default_stream", "python/_autosummary/mlx.core.degrees", "python/_autosummary/mlx.core.dequantize", "python/_autosummary/mlx.core.diag", "python/_autosummary/mlx.core.diagonal", "python/_autosummary/mlx.core.disable_compile", "python/_autosummary/mlx.core.distributed.Group", "python/_autosummary/mlx.core.distributed.all_gather", "python/_autosummary/mlx.core.distributed.all_sum", "python/_autosummary/mlx.core.distributed.init", "python/_autosummary/mlx.core.distributed.is_available", "python/_autosummary/mlx.core.distributed.recv", "python/_autosummary/mlx.core.distributed.recv_like", "python/_autosummary/mlx.core.distributed.send", "python/_autosummary/mlx.core.divide", "python/_autosummary/mlx.core.divmod", "python/_autosummary/mlx.core.einsum", "python/_autosummary/mlx.core.einsum_path", "python/_autosummary/mlx.core.enable_compile", "python/_autosummary/mlx.core.equal", "python/_autosummary/mlx.core.erf", "python/_autosummary/mlx.core.erfinv", "python/_autosummary/mlx.core.eval", "python/_autosummary/mlx.core.exp", "python/_autosummary/mlx.core.expand_dims", "python/_autosummary/mlx.core.expm1", "python/_autosummary/mlx.core.eye", "python/_autosummary/mlx.core.fast.affine_quantize", "python/_autosummary/mlx.core.fast.layer_norm", "python/_autosummary/mlx.core.fast.metal_kernel", "python/_autosummary/mlx.core.fast.rms_norm", "python/_autosummary/mlx.core.fast.rope", "python/_autosummary/mlx.core.fast.scaled_dot_product_attention", "python/_autosummary/mlx.core.fft.fft", "python/_autosummary/mlx.core.fft.fft2", "python/_autosummary/mlx.core.fft.fftn", "python/_autosummary/mlx.core.fft.ifft", "python/_autosummary/mlx.core.fft.ifft2", "python/_autosummary/mlx.core.fft.ifftn", "python/_autosummary/mlx.core.fft.irfft", "python/_autosummary/mlx.core.fft.irfft2", "python/_autosummary/mlx.core.fft.irfftn", "python/_autosummary/mlx.core.fft.rfft", "python/_autosummary/mlx.core.fft.rfft2", "python/_autosummary/mlx.core.fft.rfftn", "python/_autosummary/mlx.core.flatten", "python/_autosummary/mlx.core.floor", "python/_autosummary/mlx.core.floor_divide", "python/_autosummary/mlx.core.full", "python/_autosummary/mlx.core.gather_mm", "python/_autosummary/mlx.core.gather_qmm", "python/_autosummary/mlx.core.grad", "python/_autosummary/mlx.core.greater", "python/_autosummary/mlx.core.greater_equal", "python/_autosummary/mlx.core.hadamard_transform", "python/_autosummary/mlx.core.identity", "python/_autosummary/mlx.core.inner", "python/_autosummary/mlx.core.isclose", "python/_autosummary/mlx.core.isfinite", "python/_autosummary/mlx.core.isinf", "python/_autosummary/mlx.core.isnan", "python/_autosummary/mlx.core.isneginf", "python/_autosummary/mlx.core.isposinf", "python/_autosummary/mlx.core.issubdtype", "python/_autosummary/mlx.core.jvp", "python/_autosummary/mlx.core.left_shift", "python/_autosummary/mlx.core.less", "python/_autosummary/mlx.core.less_equal", "python/_autosummary/mlx.core.linalg.cholesky", "python/_autosummary/mlx.core.linalg.cholesky_inv", "python/_autosummary/mlx.core.linalg.inv", "python/_autosummary/mlx.core.linalg.norm", "python/_autosummary/mlx.core.linalg.qr", "python/_autosummary/mlx.core.linalg.svd", "python/_autosummary/mlx.core.linalg.tri_inv", "python/_autosummary/mlx.core.linspace", "python/_autosummary/mlx.core.load", "python/_autosummary/mlx.core.log", "python/_autosummary/mlx.core.log10", "python/_autosummary/mlx.core.log1p", "python/_autosummary/mlx.core.log2", "python/_autosummary/mlx.core.logaddexp", "python/_autosummary/mlx.core.logical_and", "python/_autosummary/mlx.core.logical_not", "python/_autosummary/mlx.core.logical_or", "python/_autosummary/mlx.core.logsumexp", "python/_autosummary/mlx.core.matmul", "python/_autosummary/mlx.core.max", "python/_autosummary/mlx.core.maximum", "python/_autosummary/mlx.core.mean", "python/_autosummary/mlx.core.meshgrid", "python/_autosummary/mlx.core.metal.clear_cache", "python/_autosummary/mlx.core.metal.device_info", "python/_autosummary/mlx.core.metal.get_active_memory", "python/_autosummary/mlx.core.metal.get_cache_memory", "python/_autosummary/mlx.core.metal.get_peak_memory", "python/_autosummary/mlx.core.metal.is_available", "python/_autosummary/mlx.core.metal.reset_peak_memory", "python/_autosummary/mlx.core.metal.set_cache_limit", "python/_autosummary/mlx.core.metal.set_memory_limit", "python/_autosummary/mlx.core.metal.start_capture", "python/_autosummary/mlx.core.metal.stop_capture", "python/_autosummary/mlx.core.min", "python/_autosummary/mlx.core.minimum", "python/_autosummary/mlx.core.moveaxis", "python/_autosummary/mlx.core.multiply", "python/_autosummary/mlx.core.nan_to_num", "python/_autosummary/mlx.core.negative", "python/_autosummary/mlx.core.new_stream", "python/_autosummary/mlx.core.not_equal", "python/_autosummary/mlx.core.ones", "python/_autosummary/mlx.core.ones_like", "python/_autosummary/mlx.core.outer", "python/_autosummary/mlx.core.pad", "python/_autosummary/mlx.core.partition", "python/_autosummary/mlx.core.power", "python/_autosummary/mlx.core.prod", "python/_autosummary/mlx.core.quantize", "python/_autosummary/mlx.core.quantized_matmul", "python/_autosummary/mlx.core.radians", "python/_autosummary/mlx.core.random.bernoulli", "python/_autosummary/mlx.core.random.categorical", "python/_autosummary/mlx.core.random.gumbel", "python/_autosummary/mlx.core.random.key", "python/_autosummary/mlx.core.random.laplace", "python/_autosummary/mlx.core.random.multivariate_normal", "python/_autosummary/mlx.core.random.normal", "python/_autosummary/mlx.core.random.randint", "python/_autosummary/mlx.core.random.seed", "python/_autosummary/mlx.core.random.split", "python/_autosummary/mlx.core.random.truncated_normal", "python/_autosummary/mlx.core.random.uniform", "python/_autosummary/mlx.core.reciprocal", "python/_autosummary/mlx.core.remainder", "python/_autosummary/mlx.core.repeat", "python/_autosummary/mlx.core.reshape", "python/_autosummary/mlx.core.right_shift", "python/_autosummary/mlx.core.round", "python/_autosummary/mlx.core.rsqrt", "python/_autosummary/mlx.core.save", "python/_autosummary/mlx.core.save_gguf", "python/_autosummary/mlx.core.save_safetensors", "python/_autosummary/mlx.core.savez", "python/_autosummary/mlx.core.savez_compressed", "python/_autosummary/mlx.core.set_default_device", "python/_autosummary/mlx.core.set_default_stream", "python/_autosummary/mlx.core.sigmoid", "python/_autosummary/mlx.core.sign", "python/_autosummary/mlx.core.sin", "python/_autosummary/mlx.core.sinh", "python/_autosummary/mlx.core.softmax", "python/_autosummary/mlx.core.sort", "python/_autosummary/mlx.core.split", "python/_autosummary/mlx.core.sqrt", "python/_autosummary/mlx.core.square", "python/_autosummary/mlx.core.squeeze", "python/_autosummary/mlx.core.stack", "python/_autosummary/mlx.core.std", "python/_autosummary/mlx.core.stop_gradient", "python/_autosummary/mlx.core.stream", "python/_autosummary/mlx.core.subtract", "python/_autosummary/mlx.core.sum", "python/_autosummary/mlx.core.swapaxes", "python/_autosummary/mlx.core.synchronize", "python/_autosummary/mlx.core.take", "python/_autosummary/mlx.core.take_along_axis", "python/_autosummary/mlx.core.tan", "python/_autosummary/mlx.core.tanh", "python/_autosummary/mlx.core.tensordot", "python/_autosummary/mlx.core.tile", "python/_autosummary/mlx.core.topk", "python/_autosummary/mlx.core.trace", "python/_autosummary/mlx.core.transpose", "python/_autosummary/mlx.core.tri", "python/_autosummary/mlx.core.tril", "python/_autosummary/mlx.core.triu", "python/_autosummary/mlx.core.value_and_grad", "python/_autosummary/mlx.core.var", "python/_autosummary/mlx.core.view", "python/_autosummary/mlx.core.vjp", "python/_autosummary/mlx.core.vmap", "python/_autosummary/mlx.core.where", "python/_autosummary/mlx.core.zeros", "python/_autosummary/mlx.core.zeros_like", "python/_autosummary/mlx.nn.quantize", "python/_autosummary/mlx.nn.value_and_grad", "python/_autosummary/mlx.optimizers.clip_grad_norm", "python/_autosummary/mlx.utils.tree_flatten", "python/_autosummary/mlx.utils.tree_map", "python/_autosummary/mlx.utils.tree_map_with_path", "python/_autosummary/mlx.utils.tree_reduce", "python/_autosummary/mlx.utils.tree_unflatten", "python/_autosummary/stream_class", "python/array", "python/data_types", "python/devices_and_streams", "python/distributed", "python/fast", "python/fft", "python/linalg", "python/metal", "python/nn", "python/nn/_autosummary/mlx.nn.ALiBi", "python/nn/_autosummary/mlx.nn.AvgPool1d", "python/nn/_autosummary/mlx.nn.AvgPool2d", "python/nn/_autosummary/mlx.nn.BatchNorm", "python/nn/_autosummary/mlx.nn.Conv1d", "python/nn/_autosummary/mlx.nn.Conv2d", "python/nn/_autosummary/mlx.nn.Conv3d", "python/nn/_autosummary/mlx.nn.ConvTranspose1d", "python/nn/_autosummary/mlx.nn.ConvTranspose2d", "python/nn/_autosummary/mlx.nn.ConvTranspose3d", "python/nn/_autosummary/mlx.nn.Dropout", "python/nn/_autosummary/mlx.nn.Dropout2d", "python/nn/_autosummary/mlx.nn.Dropout3d", "python/nn/_autosummary/mlx.nn.Embedding", "python/nn/_autosummary/mlx.nn.GELU", "python/nn/_autosummary/mlx.nn.GLU", "python/nn/_autosummary/mlx.nn.GRU", "python/nn/_autosummary/mlx.nn.GroupNorm", "python/nn/_autosummary/mlx.nn.HardShrink", "python/nn/_autosummary/mlx.nn.HardTanh", "python/nn/_autosummary/mlx.nn.Hardswish", "python/nn/_autosummary/mlx.nn.InstanceNorm", "python/nn/_autosummary/mlx.nn.LSTM", "python/nn/_autosummary/mlx.nn.LayerNorm", "python/nn/_autosummary/mlx.nn.LeakyReLU", "python/nn/_autosummary/mlx.nn.Linear", "python/nn/_autosummary/mlx.nn.MaxPool1d", "python/nn/_autosummary/mlx.nn.MaxPool2d", "python/nn/_autosummary/mlx.nn.Mish", "python/nn/_autosummary/mlx.nn.Module.apply", "python/nn/_autosummary/mlx.nn.Module.apply_to_modules", "python/nn/_autosummary/mlx.nn.Module.children", "python/nn/_autosummary/mlx.nn.Module.eval", "python/nn/_autosummary/mlx.nn.Module.filter_and_map", "python/nn/_autosummary/mlx.nn.Module.freeze", "python/nn/_autosummary/mlx.nn.Module.leaf_modules", "python/nn/_autosummary/mlx.nn.Module.load_weights", "python/nn/_autosummary/mlx.nn.Module.modules", "python/nn/_autosummary/mlx.nn.Module.named_modules", "python/nn/_autosummary/mlx.nn.Module.parameters", "python/nn/_autosummary/mlx.nn.Module.save_weights", "python/nn/_autosummary/mlx.nn.Module.set_dtype", "python/nn/_autosummary/mlx.nn.Module.state", "python/nn/_autosummary/mlx.nn.Module.train", "python/nn/_autosummary/mlx.nn.Module.trainable_parameters", "python/nn/_autosummary/mlx.nn.Module.training", "python/nn/_autosummary/mlx.nn.Module.unfreeze", "python/nn/_autosummary/mlx.nn.Module.update", "python/nn/_autosummary/mlx.nn.Module.update_modules", "python/nn/_autosummary/mlx.nn.MultiHeadAttention", "python/nn/_autosummary/mlx.nn.PReLU", "python/nn/_autosummary/mlx.nn.QuantizedEmbedding", "python/nn/_autosummary/mlx.nn.QuantizedLinear", "python/nn/_autosummary/mlx.nn.RMSNorm", "python/nn/_autosummary/mlx.nn.RNN", "python/nn/_autosummary/mlx.nn.ReLU", "python/nn/_autosummary/mlx.nn.ReLU6", "python/nn/_autosummary/mlx.nn.RoPE", "python/nn/_autosummary/mlx.nn.SELU", "python/nn/_autosummary/mlx.nn.Sequential", "python/nn/_autosummary/mlx.nn.SiLU", "python/nn/_autosummary/mlx.nn.SinusoidalPositionalEncoding", "python/nn/_autosummary/mlx.nn.Softmax", "python/nn/_autosummary/mlx.nn.Softmin", "python/nn/_autosummary/mlx.nn.Softplus", "python/nn/_autosummary/mlx.nn.Softshrink", "python/nn/_autosummary/mlx.nn.Softsign", "python/nn/_autosummary/mlx.nn.Step", "python/nn/_autosummary/mlx.nn.Tanh", "python/nn/_autosummary/mlx.nn.Transformer", "python/nn/_autosummary/mlx.nn.Upsample", "python/nn/_autosummary/mlx.nn.init.constant", "python/nn/_autosummary/mlx.nn.init.glorot_normal", "python/nn/_autosummary/mlx.nn.init.glorot_uniform", "python/nn/_autosummary/mlx.nn.init.he_normal", "python/nn/_autosummary/mlx.nn.init.he_uniform", "python/nn/_autosummary/mlx.nn.init.identity", "python/nn/_autosummary/mlx.nn.init.normal", "python/nn/_autosummary/mlx.nn.init.uniform", "python/nn/_autosummary_functions/mlx.nn.elu", "python/nn/_autosummary_functions/mlx.nn.gelu", "python/nn/_autosummary_functions/mlx.nn.gelu_approx", "python/nn/_autosummary_functions/mlx.nn.gelu_fast_approx", "python/nn/_autosummary_functions/mlx.nn.glu", "python/nn/_autosummary_functions/mlx.nn.hard_shrink", "python/nn/_autosummary_functions/mlx.nn.hard_tanh", "python/nn/_autosummary_functions/mlx.nn.hardswish", "python/nn/_autosummary_functions/mlx.nn.leaky_relu", "python/nn/_autosummary_functions/mlx.nn.log_sigmoid", "python/nn/_autosummary_functions/mlx.nn.log_softmax", "python/nn/_autosummary_functions/mlx.nn.losses.binary_cross_entropy", "python/nn/_autosummary_functions/mlx.nn.losses.cosine_similarity_loss", "python/nn/_autosummary_functions/mlx.nn.losses.cross_entropy", "python/nn/_autosummary_functions/mlx.nn.losses.gaussian_nll_loss", "python/nn/_autosummary_functions/mlx.nn.losses.hinge_loss", "python/nn/_autosummary_functions/mlx.nn.losses.huber_loss", "python/nn/_autosummary_functions/mlx.nn.losses.kl_div_loss", "python/nn/_autosummary_functions/mlx.nn.losses.l1_loss", "python/nn/_autosummary_functions/mlx.nn.losses.log_cosh_loss", "python/nn/_autosummary_functions/mlx.nn.losses.margin_ranking_loss", "python/nn/_autosummary_functions/mlx.nn.losses.mse_loss", "python/nn/_autosummary_functions/mlx.nn.losses.nll_loss", "python/nn/_autosummary_functions/mlx.nn.losses.smooth_l1_loss", "python/nn/_autosummary_functions/mlx.nn.losses.triplet_loss", "python/nn/_autosummary_functions/mlx.nn.mish", "python/nn/_autosummary_functions/mlx.nn.prelu", "python/nn/_autosummary_functions/mlx.nn.relu", "python/nn/_autosummary_functions/mlx.nn.relu6", "python/nn/_autosummary_functions/mlx.nn.selu", "python/nn/_autosummary_functions/mlx.nn.sigmoid", "python/nn/_autosummary_functions/mlx.nn.silu", "python/nn/_autosummary_functions/mlx.nn.softmax", "python/nn/_autosummary_functions/mlx.nn.softmin", "python/nn/_autosummary_functions/mlx.nn.softplus", "python/nn/_autosummary_functions/mlx.nn.softshrink", "python/nn/_autosummary_functions/mlx.nn.step", "python/nn/_autosummary_functions/mlx.nn.tanh", "python/nn/functions", "python/nn/init", "python/nn/layers", "python/nn/losses", "python/nn/module", "python/ops", "python/optimizers", "python/optimizers/_autosummary/mlx.optimizers.AdaDelta", "python/optimizers/_autosummary/mlx.optimizers.Adafactor", "python/optimizers/_autosummary/mlx.optimizers.Adagrad", "python/optimizers/_autosummary/mlx.optimizers.Adam", "python/optimizers/_autosummary/mlx.optimizers.AdamW", "python/optimizers/_autosummary/mlx.optimizers.Adamax", "python/optimizers/_autosummary/mlx.optimizers.Lion", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.apply_gradients", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.init", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.state", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.update", "python/optimizers/_autosummary/mlx.optimizers.RMSprop", "python/optimizers/_autosummary/mlx.optimizers.SGD", "python/optimizers/_autosummary/mlx.optimizers.cosine_decay", "python/optimizers/_autosummary/mlx.optimizers.exponential_decay", "python/optimizers/_autosummary/mlx.optimizers.join_schedules", "python/optimizers/_autosummary/mlx.optimizers.linear_schedule", "python/optimizers/_autosummary/mlx.optimizers.step_decay", "python/optimizers/common_optimizers", "python/optimizers/optimizer", "python/optimizers/schedulers", "python/random", "python/transforms", "python/tree_utils", "usage/compile", "usage/distributed", "usage/function_transforms", "usage/indexing", "usage/lazy_evaluation", "usage/numpy", "usage/quick_start", "usage/saving_and_loading", "usage/unified_memory", "usage/using_streams"], "filenames": ["cpp/ops.rst", "dev/custom_metal_kernels.rst", "dev/extensions.rst", "dev/metal_debugger.rst", "examples/linear_regression.rst", "examples/llama-inference.rst", "examples/mlp.rst", "index.rst", "install.rst", "python/_autosummary/mlx.core.Device.rst", "python/_autosummary/mlx.core.Dtype.rst", "python/_autosummary/mlx.core.DtypeCategory.rst", "python/_autosummary/mlx.core.abs.rst", "python/_autosummary/mlx.core.add.rst", "python/_autosummary/mlx.core.addmm.rst", "python/_autosummary/mlx.core.all.rst", "python/_autosummary/mlx.core.allclose.rst", "python/_autosummary/mlx.core.any.rst", "python/_autosummary/mlx.core.arange.rst", "python/_autosummary/mlx.core.arccos.rst", "python/_autosummary/mlx.core.arccosh.rst", "python/_autosummary/mlx.core.arcsin.rst", "python/_autosummary/mlx.core.arcsinh.rst", "python/_autosummary/mlx.core.arctan.rst", "python/_autosummary/mlx.core.arctan2.rst", "python/_autosummary/mlx.core.arctanh.rst", "python/_autosummary/mlx.core.argmax.rst", "python/_autosummary/mlx.core.argmin.rst", "python/_autosummary/mlx.core.argpartition.rst", "python/_autosummary/mlx.core.argsort.rst", "python/_autosummary/mlx.core.array.rst", "python/_autosummary/mlx.core.array.T.rst", "python/_autosummary/mlx.core.array.abs.rst", "python/_autosummary/mlx.core.array.all.rst", "python/_autosummary/mlx.core.array.any.rst", "python/_autosummary/mlx.core.array.argmax.rst", "python/_autosummary/mlx.core.array.argmin.rst", "python/_autosummary/mlx.core.array.astype.rst", "python/_autosummary/mlx.core.array.at.rst", "python/_autosummary/mlx.core.array.conj.rst", "python/_autosummary/mlx.core.array.cos.rst", "python/_autosummary/mlx.core.array.cummax.rst", "python/_autosummary/mlx.core.array.cummin.rst", "python/_autosummary/mlx.core.array.cumprod.rst", "python/_autosummary/mlx.core.array.cumsum.rst", "python/_autosummary/mlx.core.array.diag.rst", "python/_autosummary/mlx.core.array.diagonal.rst", "python/_autosummary/mlx.core.array.dtype.rst", "python/_autosummary/mlx.core.array.exp.rst", "python/_autosummary/mlx.core.array.flatten.rst", "python/_autosummary/mlx.core.array.item.rst", "python/_autosummary/mlx.core.array.itemsize.rst", "python/_autosummary/mlx.core.array.log.rst", "python/_autosummary/mlx.core.array.log10.rst", "python/_autosummary/mlx.core.array.log1p.rst", "python/_autosummary/mlx.core.array.log2.rst", "python/_autosummary/mlx.core.array.logsumexp.rst", "python/_autosummary/mlx.core.array.max.rst", "python/_autosummary/mlx.core.array.mean.rst", "python/_autosummary/mlx.core.array.min.rst", "python/_autosummary/mlx.core.array.moveaxis.rst", "python/_autosummary/mlx.core.array.nbytes.rst", "python/_autosummary/mlx.core.array.ndim.rst", "python/_autosummary/mlx.core.array.prod.rst", "python/_autosummary/mlx.core.array.reciprocal.rst", "python/_autosummary/mlx.core.array.reshape.rst", "python/_autosummary/mlx.core.array.round.rst", "python/_autosummary/mlx.core.array.rsqrt.rst", "python/_autosummary/mlx.core.array.shape.rst", "python/_autosummary/mlx.core.array.sin.rst", "python/_autosummary/mlx.core.array.size.rst", "python/_autosummary/mlx.core.array.split.rst", "python/_autosummary/mlx.core.array.sqrt.rst", "python/_autosummary/mlx.core.array.square.rst", "python/_autosummary/mlx.core.array.squeeze.rst", "python/_autosummary/mlx.core.array.std.rst", "python/_autosummary/mlx.core.array.sum.rst", "python/_autosummary/mlx.core.array.swapaxes.rst", "python/_autosummary/mlx.core.array.tolist.rst", "python/_autosummary/mlx.core.array.transpose.rst", "python/_autosummary/mlx.core.array.var.rst", "python/_autosummary/mlx.core.array.view.rst", "python/_autosummary/mlx.core.array_equal.rst", "python/_autosummary/mlx.core.as_strided.rst", "python/_autosummary/mlx.core.atleast_1d.rst", "python/_autosummary/mlx.core.atleast_2d.rst", "python/_autosummary/mlx.core.atleast_3d.rst", "python/_autosummary/mlx.core.bitwise_and.rst", "python/_autosummary/mlx.core.bitwise_or.rst", "python/_autosummary/mlx.core.bitwise_xor.rst", "python/_autosummary/mlx.core.block_masked_mm.rst", "python/_autosummary/mlx.core.broadcast_to.rst", "python/_autosummary/mlx.core.ceil.rst", "python/_autosummary/mlx.core.clip.rst", "python/_autosummary/mlx.core.compile.rst", "python/_autosummary/mlx.core.concatenate.rst", "python/_autosummary/mlx.core.conj.rst", "python/_autosummary/mlx.core.conjugate.rst", "python/_autosummary/mlx.core.conv1d.rst", "python/_autosummary/mlx.core.conv2d.rst", "python/_autosummary/mlx.core.conv3d.rst", "python/_autosummary/mlx.core.conv_general.rst", "python/_autosummary/mlx.core.conv_transpose1d.rst", "python/_autosummary/mlx.core.conv_transpose2d.rst", "python/_autosummary/mlx.core.conv_transpose3d.rst", "python/_autosummary/mlx.core.convolve.rst", "python/_autosummary/mlx.core.cos.rst", "python/_autosummary/mlx.core.cosh.rst", "python/_autosummary/mlx.core.cummax.rst", "python/_autosummary/mlx.core.cummin.rst", "python/_autosummary/mlx.core.cumprod.rst", "python/_autosummary/mlx.core.cumsum.rst", "python/_autosummary/mlx.core.custom_function.rst", "python/_autosummary/mlx.core.default_device.rst", "python/_autosummary/mlx.core.default_stream.rst", "python/_autosummary/mlx.core.degrees.rst", "python/_autosummary/mlx.core.dequantize.rst", "python/_autosummary/mlx.core.diag.rst", "python/_autosummary/mlx.core.diagonal.rst", "python/_autosummary/mlx.core.disable_compile.rst", "python/_autosummary/mlx.core.distributed.Group.rst", "python/_autosummary/mlx.core.distributed.all_gather.rst", "python/_autosummary/mlx.core.distributed.all_sum.rst", "python/_autosummary/mlx.core.distributed.init.rst", "python/_autosummary/mlx.core.distributed.is_available.rst", "python/_autosummary/mlx.core.distributed.recv.rst", "python/_autosummary/mlx.core.distributed.recv_like.rst", "python/_autosummary/mlx.core.distributed.send.rst", "python/_autosummary/mlx.core.divide.rst", "python/_autosummary/mlx.core.divmod.rst", "python/_autosummary/mlx.core.einsum.rst", "python/_autosummary/mlx.core.einsum_path.rst", "python/_autosummary/mlx.core.enable_compile.rst", "python/_autosummary/mlx.core.equal.rst", "python/_autosummary/mlx.core.erf.rst", "python/_autosummary/mlx.core.erfinv.rst", "python/_autosummary/mlx.core.eval.rst", "python/_autosummary/mlx.core.exp.rst", "python/_autosummary/mlx.core.expand_dims.rst", "python/_autosummary/mlx.core.expm1.rst", "python/_autosummary/mlx.core.eye.rst", "python/_autosummary/mlx.core.fast.affine_quantize.rst", "python/_autosummary/mlx.core.fast.layer_norm.rst", "python/_autosummary/mlx.core.fast.metal_kernel.rst", "python/_autosummary/mlx.core.fast.rms_norm.rst", "python/_autosummary/mlx.core.fast.rope.rst", "python/_autosummary/mlx.core.fast.scaled_dot_product_attention.rst", "python/_autosummary/mlx.core.fft.fft.rst", "python/_autosummary/mlx.core.fft.fft2.rst", "python/_autosummary/mlx.core.fft.fftn.rst", "python/_autosummary/mlx.core.fft.ifft.rst", "python/_autosummary/mlx.core.fft.ifft2.rst", "python/_autosummary/mlx.core.fft.ifftn.rst", "python/_autosummary/mlx.core.fft.irfft.rst", "python/_autosummary/mlx.core.fft.irfft2.rst", "python/_autosummary/mlx.core.fft.irfftn.rst", "python/_autosummary/mlx.core.fft.rfft.rst", "python/_autosummary/mlx.core.fft.rfft2.rst", "python/_autosummary/mlx.core.fft.rfftn.rst", "python/_autosummary/mlx.core.flatten.rst", "python/_autosummary/mlx.core.floor.rst", "python/_autosummary/mlx.core.floor_divide.rst", "python/_autosummary/mlx.core.full.rst", "python/_autosummary/mlx.core.gather_mm.rst", "python/_autosummary/mlx.core.gather_qmm.rst", "python/_autosummary/mlx.core.grad.rst", "python/_autosummary/mlx.core.greater.rst", "python/_autosummary/mlx.core.greater_equal.rst", "python/_autosummary/mlx.core.hadamard_transform.rst", "python/_autosummary/mlx.core.identity.rst", "python/_autosummary/mlx.core.inner.rst", "python/_autosummary/mlx.core.isclose.rst", "python/_autosummary/mlx.core.isfinite.rst", "python/_autosummary/mlx.core.isinf.rst", "python/_autosummary/mlx.core.isnan.rst", "python/_autosummary/mlx.core.isneginf.rst", "python/_autosummary/mlx.core.isposinf.rst", "python/_autosummary/mlx.core.issubdtype.rst", "python/_autosummary/mlx.core.jvp.rst", "python/_autosummary/mlx.core.left_shift.rst", "python/_autosummary/mlx.core.less.rst", "python/_autosummary/mlx.core.less_equal.rst", "python/_autosummary/mlx.core.linalg.cholesky.rst", "python/_autosummary/mlx.core.linalg.cholesky_inv.rst", "python/_autosummary/mlx.core.linalg.inv.rst", "python/_autosummary/mlx.core.linalg.norm.rst", "python/_autosummary/mlx.core.linalg.qr.rst", "python/_autosummary/mlx.core.linalg.svd.rst", "python/_autosummary/mlx.core.linalg.tri_inv.rst", "python/_autosummary/mlx.core.linspace.rst", "python/_autosummary/mlx.core.load.rst", "python/_autosummary/mlx.core.log.rst", "python/_autosummary/mlx.core.log10.rst", "python/_autosummary/mlx.core.log1p.rst", "python/_autosummary/mlx.core.log2.rst", "python/_autosummary/mlx.core.logaddexp.rst", "python/_autosummary/mlx.core.logical_and.rst", "python/_autosummary/mlx.core.logical_not.rst", "python/_autosummary/mlx.core.logical_or.rst", "python/_autosummary/mlx.core.logsumexp.rst", "python/_autosummary/mlx.core.matmul.rst", "python/_autosummary/mlx.core.max.rst", "python/_autosummary/mlx.core.maximum.rst", "python/_autosummary/mlx.core.mean.rst", "python/_autosummary/mlx.core.meshgrid.rst", "python/_autosummary/mlx.core.metal.clear_cache.rst", "python/_autosummary/mlx.core.metal.device_info.rst", "python/_autosummary/mlx.core.metal.get_active_memory.rst", "python/_autosummary/mlx.core.metal.get_cache_memory.rst", "python/_autosummary/mlx.core.metal.get_peak_memory.rst", "python/_autosummary/mlx.core.metal.is_available.rst", "python/_autosummary/mlx.core.metal.reset_peak_memory.rst", "python/_autosummary/mlx.core.metal.set_cache_limit.rst", "python/_autosummary/mlx.core.metal.set_memory_limit.rst", "python/_autosummary/mlx.core.metal.start_capture.rst", "python/_autosummary/mlx.core.metal.stop_capture.rst", "python/_autosummary/mlx.core.min.rst", "python/_autosummary/mlx.core.minimum.rst", "python/_autosummary/mlx.core.moveaxis.rst", "python/_autosummary/mlx.core.multiply.rst", "python/_autosummary/mlx.core.nan_to_num.rst", "python/_autosummary/mlx.core.negative.rst", "python/_autosummary/mlx.core.new_stream.rst", "python/_autosummary/mlx.core.not_equal.rst", "python/_autosummary/mlx.core.ones.rst", "python/_autosummary/mlx.core.ones_like.rst", "python/_autosummary/mlx.core.outer.rst", "python/_autosummary/mlx.core.pad.rst", "python/_autosummary/mlx.core.partition.rst", "python/_autosummary/mlx.core.power.rst", "python/_autosummary/mlx.core.prod.rst", "python/_autosummary/mlx.core.quantize.rst", "python/_autosummary/mlx.core.quantized_matmul.rst", "python/_autosummary/mlx.core.radians.rst", "python/_autosummary/mlx.core.random.bernoulli.rst", "python/_autosummary/mlx.core.random.categorical.rst", "python/_autosummary/mlx.core.random.gumbel.rst", "python/_autosummary/mlx.core.random.key.rst", "python/_autosummary/mlx.core.random.laplace.rst", "python/_autosummary/mlx.core.random.multivariate_normal.rst", "python/_autosummary/mlx.core.random.normal.rst", "python/_autosummary/mlx.core.random.randint.rst", "python/_autosummary/mlx.core.random.seed.rst", "python/_autosummary/mlx.core.random.split.rst", "python/_autosummary/mlx.core.random.truncated_normal.rst", "python/_autosummary/mlx.core.random.uniform.rst", "python/_autosummary/mlx.core.reciprocal.rst", "python/_autosummary/mlx.core.remainder.rst", "python/_autosummary/mlx.core.repeat.rst", "python/_autosummary/mlx.core.reshape.rst", "python/_autosummary/mlx.core.right_shift.rst", "python/_autosummary/mlx.core.round.rst", "python/_autosummary/mlx.core.rsqrt.rst", "python/_autosummary/mlx.core.save.rst", "python/_autosummary/mlx.core.save_gguf.rst", "python/_autosummary/mlx.core.save_safetensors.rst", "python/_autosummary/mlx.core.savez.rst", "python/_autosummary/mlx.core.savez_compressed.rst", "python/_autosummary/mlx.core.set_default_device.rst", "python/_autosummary/mlx.core.set_default_stream.rst", "python/_autosummary/mlx.core.sigmoid.rst", "python/_autosummary/mlx.core.sign.rst", "python/_autosummary/mlx.core.sin.rst", "python/_autosummary/mlx.core.sinh.rst", "python/_autosummary/mlx.core.softmax.rst", "python/_autosummary/mlx.core.sort.rst", "python/_autosummary/mlx.core.split.rst", "python/_autosummary/mlx.core.sqrt.rst", "python/_autosummary/mlx.core.square.rst", "python/_autosummary/mlx.core.squeeze.rst", "python/_autosummary/mlx.core.stack.rst", "python/_autosummary/mlx.core.std.rst", "python/_autosummary/mlx.core.stop_gradient.rst", "python/_autosummary/mlx.core.stream.rst", "python/_autosummary/mlx.core.subtract.rst", "python/_autosummary/mlx.core.sum.rst", "python/_autosummary/mlx.core.swapaxes.rst", "python/_autosummary/mlx.core.synchronize.rst", "python/_autosummary/mlx.core.take.rst", "python/_autosummary/mlx.core.take_along_axis.rst", "python/_autosummary/mlx.core.tan.rst", "python/_autosummary/mlx.core.tanh.rst", "python/_autosummary/mlx.core.tensordot.rst", "python/_autosummary/mlx.core.tile.rst", "python/_autosummary/mlx.core.topk.rst", "python/_autosummary/mlx.core.trace.rst", "python/_autosummary/mlx.core.transpose.rst", "python/_autosummary/mlx.core.tri.rst", "python/_autosummary/mlx.core.tril.rst", "python/_autosummary/mlx.core.triu.rst", "python/_autosummary/mlx.core.value_and_grad.rst", "python/_autosummary/mlx.core.var.rst", "python/_autosummary/mlx.core.view.rst", "python/_autosummary/mlx.core.vjp.rst", "python/_autosummary/mlx.core.vmap.rst", "python/_autosummary/mlx.core.where.rst", "python/_autosummary/mlx.core.zeros.rst", "python/_autosummary/mlx.core.zeros_like.rst", "python/_autosummary/mlx.nn.quantize.rst", "python/_autosummary/mlx.nn.value_and_grad.rst", "python/_autosummary/mlx.optimizers.clip_grad_norm.rst", "python/_autosummary/mlx.utils.tree_flatten.rst", "python/_autosummary/mlx.utils.tree_map.rst", "python/_autosummary/mlx.utils.tree_map_with_path.rst", "python/_autosummary/mlx.utils.tree_reduce.rst", "python/_autosummary/mlx.utils.tree_unflatten.rst", "python/_autosummary/stream_class.rst", "python/array.rst", "python/data_types.rst", "python/devices_and_streams.rst", "python/distributed.rst", "python/fast.rst", "python/fft.rst", "python/linalg.rst", "python/metal.rst", "python/nn.rst", "python/nn/_autosummary/mlx.nn.ALiBi.rst", "python/nn/_autosummary/mlx.nn.AvgPool1d.rst", "python/nn/_autosummary/mlx.nn.AvgPool2d.rst", "python/nn/_autosummary/mlx.nn.BatchNorm.rst", "python/nn/_autosummary/mlx.nn.Conv1d.rst", "python/nn/_autosummary/mlx.nn.Conv2d.rst", "python/nn/_autosummary/mlx.nn.Conv3d.rst", "python/nn/_autosummary/mlx.nn.ConvTranspose1d.rst", "python/nn/_autosummary/mlx.nn.ConvTranspose2d.rst", "python/nn/_autosummary/mlx.nn.ConvTranspose3d.rst", "python/nn/_autosummary/mlx.nn.Dropout.rst", "python/nn/_autosummary/mlx.nn.Dropout2d.rst", "python/nn/_autosummary/mlx.nn.Dropout3d.rst", "python/nn/_autosummary/mlx.nn.Embedding.rst", "python/nn/_autosummary/mlx.nn.GELU.rst", "python/nn/_autosummary/mlx.nn.GLU.rst", "python/nn/_autosummary/mlx.nn.GRU.rst", "python/nn/_autosummary/mlx.nn.GroupNorm.rst", "python/nn/_autosummary/mlx.nn.HardShrink.rst", "python/nn/_autosummary/mlx.nn.HardTanh.rst", "python/nn/_autosummary/mlx.nn.Hardswish.rst", "python/nn/_autosummary/mlx.nn.InstanceNorm.rst", "python/nn/_autosummary/mlx.nn.LSTM.rst", "python/nn/_autosummary/mlx.nn.LayerNorm.rst", "python/nn/_autosummary/mlx.nn.LeakyReLU.rst", "python/nn/_autosummary/mlx.nn.Linear.rst", "python/nn/_autosummary/mlx.nn.MaxPool1d.rst", "python/nn/_autosummary/mlx.nn.MaxPool2d.rst", "python/nn/_autosummary/mlx.nn.Mish.rst", "python/nn/_autosummary/mlx.nn.Module.apply.rst", "python/nn/_autosummary/mlx.nn.Module.apply_to_modules.rst", "python/nn/_autosummary/mlx.nn.Module.children.rst", "python/nn/_autosummary/mlx.nn.Module.eval.rst", "python/nn/_autosummary/mlx.nn.Module.filter_and_map.rst", "python/nn/_autosummary/mlx.nn.Module.freeze.rst", "python/nn/_autosummary/mlx.nn.Module.leaf_modules.rst", "python/nn/_autosummary/mlx.nn.Module.load_weights.rst", "python/nn/_autosummary/mlx.nn.Module.modules.rst", "python/nn/_autosummary/mlx.nn.Module.named_modules.rst", "python/nn/_autosummary/mlx.nn.Module.parameters.rst", "python/nn/_autosummary/mlx.nn.Module.save_weights.rst", "python/nn/_autosummary/mlx.nn.Module.set_dtype.rst", "python/nn/_autosummary/mlx.nn.Module.state.rst", "python/nn/_autosummary/mlx.nn.Module.train.rst", "python/nn/_autosummary/mlx.nn.Module.trainable_parameters.rst", "python/nn/_autosummary/mlx.nn.Module.training.rst", "python/nn/_autosummary/mlx.nn.Module.unfreeze.rst", "python/nn/_autosummary/mlx.nn.Module.update.rst", "python/nn/_autosummary/mlx.nn.Module.update_modules.rst", "python/nn/_autosummary/mlx.nn.MultiHeadAttention.rst", "python/nn/_autosummary/mlx.nn.PReLU.rst", "python/nn/_autosummary/mlx.nn.QuantizedEmbedding.rst", "python/nn/_autosummary/mlx.nn.QuantizedLinear.rst", "python/nn/_autosummary/mlx.nn.RMSNorm.rst", "python/nn/_autosummary/mlx.nn.RNN.rst", "python/nn/_autosummary/mlx.nn.ReLU.rst", "python/nn/_autosummary/mlx.nn.ReLU6.rst", "python/nn/_autosummary/mlx.nn.RoPE.rst", "python/nn/_autosummary/mlx.nn.SELU.rst", "python/nn/_autosummary/mlx.nn.Sequential.rst", "python/nn/_autosummary/mlx.nn.SiLU.rst", "python/nn/_autosummary/mlx.nn.SinusoidalPositionalEncoding.rst", "python/nn/_autosummary/mlx.nn.Softmax.rst", "python/nn/_autosummary/mlx.nn.Softmin.rst", "python/nn/_autosummary/mlx.nn.Softplus.rst", "python/nn/_autosummary/mlx.nn.Softshrink.rst", "python/nn/_autosummary/mlx.nn.Softsign.rst", "python/nn/_autosummary/mlx.nn.Step.rst", "python/nn/_autosummary/mlx.nn.Tanh.rst", "python/nn/_autosummary/mlx.nn.Transformer.rst", "python/nn/_autosummary/mlx.nn.Upsample.rst", "python/nn/_autosummary/mlx.nn.init.constant.rst", "python/nn/_autosummary/mlx.nn.init.glorot_normal.rst", "python/nn/_autosummary/mlx.nn.init.glorot_uniform.rst", "python/nn/_autosummary/mlx.nn.init.he_normal.rst", "python/nn/_autosummary/mlx.nn.init.he_uniform.rst", "python/nn/_autosummary/mlx.nn.init.identity.rst", "python/nn/_autosummary/mlx.nn.init.normal.rst", "python/nn/_autosummary/mlx.nn.init.uniform.rst", "python/nn/_autosummary_functions/mlx.nn.elu.rst", "python/nn/_autosummary_functions/mlx.nn.gelu.rst", "python/nn/_autosummary_functions/mlx.nn.gelu_approx.rst", "python/nn/_autosummary_functions/mlx.nn.gelu_fast_approx.rst", "python/nn/_autosummary_functions/mlx.nn.glu.rst", "python/nn/_autosummary_functions/mlx.nn.hard_shrink.rst", "python/nn/_autosummary_functions/mlx.nn.hard_tanh.rst", "python/nn/_autosummary_functions/mlx.nn.hardswish.rst", "python/nn/_autosummary_functions/mlx.nn.leaky_relu.rst", "python/nn/_autosummary_functions/mlx.nn.log_sigmoid.rst", "python/nn/_autosummary_functions/mlx.nn.log_softmax.rst", "python/nn/_autosummary_functions/mlx.nn.losses.binary_cross_entropy.rst", "python/nn/_autosummary_functions/mlx.nn.losses.cosine_similarity_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.cross_entropy.rst", "python/nn/_autosummary_functions/mlx.nn.losses.gaussian_nll_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.hinge_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.huber_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.kl_div_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.l1_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.log_cosh_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.margin_ranking_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.mse_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.nll_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.smooth_l1_loss.rst", "python/nn/_autosummary_functions/mlx.nn.losses.triplet_loss.rst", "python/nn/_autosummary_functions/mlx.nn.mish.rst", "python/nn/_autosummary_functions/mlx.nn.prelu.rst", "python/nn/_autosummary_functions/mlx.nn.relu.rst", "python/nn/_autosummary_functions/mlx.nn.relu6.rst", "python/nn/_autosummary_functions/mlx.nn.selu.rst", "python/nn/_autosummary_functions/mlx.nn.sigmoid.rst", "python/nn/_autosummary_functions/mlx.nn.silu.rst", "python/nn/_autosummary_functions/mlx.nn.softmax.rst", "python/nn/_autosummary_functions/mlx.nn.softmin.rst", "python/nn/_autosummary_functions/mlx.nn.softplus.rst", "python/nn/_autosummary_functions/mlx.nn.softshrink.rst", "python/nn/_autosummary_functions/mlx.nn.step.rst", "python/nn/_autosummary_functions/mlx.nn.tanh.rst", "python/nn/functions.rst", "python/nn/init.rst", "python/nn/layers.rst", "python/nn/losses.rst", "python/nn/module.rst", "python/ops.rst", "python/optimizers.rst", "python/optimizers/_autosummary/mlx.optimizers.AdaDelta.rst", "python/optimizers/_autosummary/mlx.optimizers.Adafactor.rst", "python/optimizers/_autosummary/mlx.optimizers.Adagrad.rst", "python/optimizers/_autosummary/mlx.optimizers.Adam.rst", "python/optimizers/_autosummary/mlx.optimizers.AdamW.rst", "python/optimizers/_autosummary/mlx.optimizers.Adamax.rst", "python/optimizers/_autosummary/mlx.optimizers.Lion.rst", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.apply_gradients.rst", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.init.rst", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.state.rst", "python/optimizers/_autosummary/mlx.optimizers.Optimizer.update.rst", "python/optimizers/_autosummary/mlx.optimizers.RMSprop.rst", "python/optimizers/_autosummary/mlx.optimizers.SGD.rst", "python/optimizers/_autosummary/mlx.optimizers.cosine_decay.rst", "python/optimizers/_autosummary/mlx.optimizers.exponential_decay.rst", "python/optimizers/_autosummary/mlx.optimizers.join_schedules.rst", "python/optimizers/_autosummary/mlx.optimizers.linear_schedule.rst", "python/optimizers/_autosummary/mlx.optimizers.step_decay.rst", "python/optimizers/common_optimizers.rst", "python/optimizers/optimizer.rst", "python/optimizers/schedulers.rst", "python/random.rst", "python/transforms.rst", "python/tree_utils.rst", "usage/compile.rst", "usage/distributed.rst", "usage/function_transforms.rst", "usage/indexing.rst", "usage/lazy_evaluation.rst", "usage/numpy.rst", "usage/quick_start.rst", "usage/saving_and_loading.rst", "usage/unified_memory.rst", "usage/using_streams.rst"], "titles": ["Operations", "Custom Metal Kernels", "Custom Extensions in MLX", "Metal Debugger", "Linear Regression", "LLM inference", "Multi-Layer Perceptron", "MLX", "Build and Install", "mlx.core.Device", "mlx.core.Dtype", "mlx.core.DtypeCategory", "mlx.core.abs", "mlx.core.add", "mlx.core.addmm", "mlx.core.all", "mlx.core.allclose", "mlx.core.any", "mlx.core.arange", "mlx.core.arccos", "mlx.core.arccosh", "mlx.core.arcsin", "mlx.core.arcsinh", "mlx.core.arctan", "mlx.core.arctan2", "mlx.core.arctanh", "mlx.core.argmax", "mlx.core.argmin", "mlx.core.argpartition", "mlx.core.argsort", "mlx.core.array", "mlx.core.array.T", "mlx.core.array.abs", "mlx.core.array.all", "mlx.core.array.any", "mlx.core.array.argmax", "mlx.core.array.argmin", "mlx.core.array.astype", "mlx.core.array.at", "mlx.core.array.conj", "mlx.core.array.cos", "mlx.core.array.cummax", "mlx.core.array.cummin", "mlx.core.array.cumprod", "mlx.core.array.cumsum", "mlx.core.array.diag", "mlx.core.array.diagonal", "mlx.core.array.dtype", "mlx.core.array.exp", "mlx.core.array.flatten", "mlx.core.array.item", "mlx.core.array.itemsize", "mlx.core.array.log", "mlx.core.array.log10", "mlx.core.array.log1p", "mlx.core.array.log2", "mlx.core.array.logsumexp", "mlx.core.array.max", "mlx.core.array.mean", "mlx.core.array.min", "mlx.core.array.moveaxis", "mlx.core.array.nbytes", "mlx.core.array.ndim", "mlx.core.array.prod", "mlx.core.array.reciprocal", "mlx.core.array.reshape", "mlx.core.array.round", "mlx.core.array.rsqrt", "mlx.core.array.shape", "mlx.core.array.sin", "mlx.core.array.size", "mlx.core.array.split", "mlx.core.array.sqrt", "mlx.core.array.square", "mlx.core.array.squeeze", "mlx.core.array.std", "mlx.core.array.sum", "mlx.core.array.swapaxes", "mlx.core.array.tolist", "mlx.core.array.transpose", "mlx.core.array.var", "mlx.core.array.view", "mlx.core.array_equal", "mlx.core.as_strided", "mlx.core.atleast_1d", "mlx.core.atleast_2d", "mlx.core.atleast_3d", "mlx.core.bitwise_and", "mlx.core.bitwise_or", "mlx.core.bitwise_xor", "mlx.core.block_masked_mm", "mlx.core.broadcast_to", "mlx.core.ceil", "mlx.core.clip", "mlx.core.compile", "mlx.core.concatenate", "mlx.core.conj", "mlx.core.conjugate", "mlx.core.conv1d", "mlx.core.conv2d", "mlx.core.conv3d", "mlx.core.conv_general", "mlx.core.conv_transpose1d", "mlx.core.conv_transpose2d", "mlx.core.conv_transpose3d", "mlx.core.convolve", "mlx.core.cos", "mlx.core.cosh", "mlx.core.cummax", "mlx.core.cummin", "mlx.core.cumprod", "mlx.core.cumsum", "mlx.core.custom_function", "mlx.core.default_device", "mlx.core.default_stream", "mlx.core.degrees", "mlx.core.dequantize", "mlx.core.diag", "mlx.core.diagonal", "mlx.core.disable_compile", "mlx.core.distributed.Group", "mlx.core.distributed.all_gather", "mlx.core.distributed.all_sum", "mlx.core.distributed.init", "mlx.core.distributed.is_available", "mlx.core.distributed.recv", "mlx.core.distributed.recv_like", "mlx.core.distributed.send", "mlx.core.divide", "mlx.core.divmod", "mlx.core.einsum", "mlx.core.einsum_path", "mlx.core.enable_compile", "mlx.core.equal", "mlx.core.erf", "mlx.core.erfinv", "mlx.core.eval", "mlx.core.exp", "mlx.core.expand_dims", "mlx.core.expm1", "mlx.core.eye", "mlx.core.fast.affine_quantize", "mlx.core.fast.layer_norm", "mlx.core.fast.metal_kernel", "mlx.core.fast.rms_norm", "mlx.core.fast.rope", "mlx.core.fast.scaled_dot_product_attention", "mlx.core.fft.fft", "mlx.core.fft.fft2", "mlx.core.fft.fftn", "mlx.core.fft.ifft", "mlx.core.fft.ifft2", "mlx.core.fft.ifftn", "mlx.core.fft.irfft", "mlx.core.fft.irfft2", "mlx.core.fft.irfftn", "mlx.core.fft.rfft", "mlx.core.fft.rfft2", "mlx.core.fft.rfftn", "mlx.core.flatten", "mlx.core.floor", "mlx.core.floor_divide", "mlx.core.full", "mlx.core.gather_mm", "mlx.core.gather_qmm", "mlx.core.grad", "mlx.core.greater", "mlx.core.greater_equal", "mlx.core.hadamard_transform", "mlx.core.identity", "mlx.core.inner", "mlx.core.isclose", "mlx.core.isfinite", "mlx.core.isinf", "mlx.core.isnan", "mlx.core.isneginf", "mlx.core.isposinf", "mlx.core.issubdtype", "mlx.core.jvp", "mlx.core.left_shift", "mlx.core.less", "mlx.core.less_equal", "mlx.core.linalg.cholesky", "mlx.core.linalg.cholesky_inv", "mlx.core.linalg.inv", "mlx.core.linalg.norm", "mlx.core.linalg.qr", "mlx.core.linalg.svd", "mlx.core.linalg.tri_inv", "mlx.core.linspace", "mlx.core.load", "mlx.core.log", "mlx.core.log10", "mlx.core.log1p", "mlx.core.log2", "mlx.core.logaddexp", "mlx.core.logical_and", "mlx.core.logical_not", "mlx.core.logical_or", "mlx.core.logsumexp", "mlx.core.matmul", "mlx.core.max", "mlx.core.maximum", "mlx.core.mean", "mlx.core.meshgrid", "mlx.core.metal.clear_cache", "mlx.core.metal.device_info", "mlx.core.metal.get_active_memory", "mlx.core.metal.get_cache_memory", "mlx.core.metal.get_peak_memory", "mlx.core.metal.is_available", "mlx.core.metal.reset_peak_memory", "mlx.core.metal.set_cache_limit", "mlx.core.metal.set_memory_limit", "mlx.core.metal.start_capture", "mlx.core.metal.stop_capture", "mlx.core.min", "mlx.core.minimum", "mlx.core.moveaxis", "mlx.core.multiply", "mlx.core.nan_to_num", "mlx.core.negative", "mlx.core.new_stream", "mlx.core.not_equal", "mlx.core.ones", "mlx.core.ones_like", "mlx.core.outer", "mlx.core.pad", "mlx.core.partition", "mlx.core.power", "mlx.core.prod", "mlx.core.quantize", "mlx.core.quantized_matmul", "mlx.core.radians", "mlx.core.random.bernoulli", "mlx.core.random.categorical", "mlx.core.random.gumbel", "mlx.core.random.key", "mlx.core.random.laplace", "mlx.core.random.multivariate_normal", "mlx.core.random.normal", "mlx.core.random.randint", "mlx.core.random.seed", "mlx.core.random.split", "mlx.core.random.truncated_normal", "mlx.core.random.uniform", "mlx.core.reciprocal", "mlx.core.remainder", "mlx.core.repeat", "mlx.core.reshape", "mlx.core.right_shift", "mlx.core.round", "mlx.core.rsqrt", "mlx.core.save", "mlx.core.save_gguf", "mlx.core.save_safetensors", "mlx.core.savez", "mlx.core.savez_compressed", "mlx.core.set_default_device", "mlx.core.set_default_stream", "mlx.core.sigmoid", "mlx.core.sign", "mlx.core.sin", "mlx.core.sinh", "mlx.core.softmax", "mlx.core.sort", "mlx.core.split", "mlx.core.sqrt", "mlx.core.square", "mlx.core.squeeze", "mlx.core.stack", "mlx.core.std", "mlx.core.stop_gradient", "mlx.core.stream", "mlx.core.subtract", "mlx.core.sum", "mlx.core.swapaxes", "mlx.core.synchronize", "mlx.core.take", "mlx.core.take_along_axis", "mlx.core.tan", "mlx.core.tanh", "mlx.core.tensordot", "mlx.core.tile", "mlx.core.topk", "mlx.core.trace", "mlx.core.transpose", "mlx.core.tri", "mlx.core.tril", "mlx.core.triu", "mlx.core.value_and_grad", "mlx.core.var", "mlx.core.view", "mlx.core.vjp", "mlx.core.vmap", "mlx.core.where", "mlx.core.zeros", "mlx.core.zeros_like", "mlx.nn.quantize", "mlx.nn.value_and_grad", "mlx.optimizers.clip_grad_norm", "mlx.utils.tree_flatten", "mlx.utils.tree_map", "mlx.utils.tree_map_with_path", "mlx.utils.tree_reduce", "mlx.utils.tree_unflatten", "mlx.core.Stream", "Array", "Data Types", "Devices and Streams", "Distributed Communication", "Fast", "FFT", "Linear Algebra", "Metal", "Neural Networks", "mlx.nn.ALiBi", "mlx.nn.AvgPool1d", "mlx.nn.AvgPool2d", "mlx.nn.BatchNorm", "mlx.nn.Conv1d", "mlx.nn.Conv2d", "mlx.nn.Conv3d", "mlx.nn.ConvTranspose1d", "mlx.nn.ConvTranspose2d", "mlx.nn.ConvTranspose3d", "mlx.nn.Dropout", "mlx.nn.Dropout2d", "mlx.nn.Dropout3d", "mlx.nn.Embedding", "mlx.nn.GELU", "mlx.nn.GLU", "mlx.nn.GRU", "mlx.nn.GroupNorm", "mlx.nn.HardShrink", "mlx.nn.HardTanh", "mlx.nn.Hardswish", "mlx.nn.InstanceNorm", "mlx.nn.LSTM", "mlx.nn.LayerNorm", "mlx.nn.LeakyReLU", "mlx.nn.Linear", "mlx.nn.MaxPool1d", "mlx.nn.MaxPool2d", "mlx.nn.Mish", "mlx.nn.Module.apply", "mlx.nn.Module.apply_to_modules", "mlx.nn.Module.children", "mlx.nn.Module.eval", "mlx.nn.Module.filter_and_map", "mlx.nn.Module.freeze", "mlx.nn.Module.leaf_modules", "mlx.nn.Module.load_weights", "mlx.nn.Module.modules", "mlx.nn.Module.named_modules", "mlx.nn.Module.parameters", "mlx.nn.Module.save_weights", "mlx.nn.Module.set_dtype", "mlx.nn.Module.state", "mlx.nn.Module.train", "mlx.nn.Module.trainable_parameters", "mlx.nn.Module.training", "mlx.nn.Module.unfreeze", "mlx.nn.Module.update", "mlx.nn.Module.update_modules", "mlx.nn.MultiHeadAttention", "mlx.nn.PReLU", "mlx.nn.QuantizedEmbedding", "mlx.nn.QuantizedLinear", "mlx.nn.RMSNorm", "mlx.nn.RNN", "mlx.nn.ReLU", "mlx.nn.ReLU6", "mlx.nn.RoPE", "mlx.nn.SELU", "mlx.nn.Sequential", "mlx.nn.SiLU", "mlx.nn.SinusoidalPositionalEncoding", "mlx.nn.Softmax", "mlx.nn.Softmin", "mlx.nn.Softplus", "mlx.nn.Softshrink", "mlx.nn.Softsign", "mlx.nn.Step", "mlx.nn.Tanh", "mlx.nn.Transformer", "mlx.nn.Upsample", "mlx.nn.init.constant", "mlx.nn.init.glorot_normal", "mlx.nn.init.glorot_uniform", "mlx.nn.init.he_normal", "mlx.nn.init.he_uniform", "mlx.nn.init.identity", "mlx.nn.init.normal", "mlx.nn.init.uniform", "mlx.nn.elu", "mlx.nn.gelu", "mlx.nn.gelu_approx", "mlx.nn.gelu_fast_approx", "mlx.nn.glu", "mlx.nn.hard_shrink", "mlx.nn.hard_tanh", "mlx.nn.hardswish", "mlx.nn.leaky_relu", "mlx.nn.log_sigmoid", "mlx.nn.log_softmax", "mlx.nn.losses.binary_cross_entropy", "mlx.nn.losses.cosine_similarity_loss", "mlx.nn.losses.cross_entropy", "mlx.nn.losses.gaussian_nll_loss", "mlx.nn.losses.hinge_loss", "mlx.nn.losses.huber_loss", "mlx.nn.losses.kl_div_loss", "mlx.nn.losses.l1_loss", "mlx.nn.losses.log_cosh_loss", "mlx.nn.losses.margin_ranking_loss", "mlx.nn.losses.mse_loss", "mlx.nn.losses.nll_loss", "mlx.nn.losses.smooth_l1_loss", "mlx.nn.losses.triplet_loss", "mlx.nn.mish", "mlx.nn.prelu", "mlx.nn.relu", "mlx.nn.relu6", "mlx.nn.selu", "mlx.nn.sigmoid", "mlx.nn.silu", "mlx.nn.softmax", "mlx.nn.softmin", "mlx.nn.softplus", "mlx.nn.softshrink", "mlx.nn.step", "mlx.nn.tanh", "Functions", "Initializers", "Layers", "Loss Functions", "Module", "Operations", "Optimizers", "mlx.optimizers.AdaDelta", "mlx.optimizers.Adafactor", "mlx.optimizers.Adagrad", "mlx.optimizers.Adam", "mlx.optimizers.AdamW", "mlx.optimizers.Adamax", "mlx.optimizers.Lion", "mlx.optimizers.Optimizer.apply_gradients", "mlx.optimizers.Optimizer.init", "mlx.optimizers.Optimizer.state", "mlx.optimizers.Optimizer.update", "mlx.optimizers.RMSprop", "mlx.optimizers.SGD", "mlx.optimizers.cosine_decay", "mlx.optimizers.exponential_decay", "mlx.optimizers.join_schedules", "mlx.optimizers.linear_schedule", "mlx.optimizers.step_decay", "Common Optimizers", "Optimizer", "Schedulers", "Random", "Transforms", "Tree Utils", "Compilation", "Distributed Communication", "Function Transforms", "Indexing Arrays", "Lazy Evaluation", "Conversion to NumPy and Other Frameworks", "Quick Start Guide", "Saving and Loading Arrays", "Unified Memory", "Using Streams"], "terms": {"arrai": [0, 1, 2, 5, 6, 7, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 115, 116, 117, 118, 121, 122, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 300, 315, 319, 338, 345, 352, 355, 360, 366, 386, 387, 388, 389, 390, 391, 392, 393, 394, 399, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 431, 434, 437, 440, 441, 442, 443, 444, 445, 446, 451, 452, 453, 454, 455, 456, 457, 464, 465, 466, 468, 469, 470, 472], "arang": [0, 1, 185, 308, 386, 467, 469], "doubl": [0, 5], "start": [0, 1, 2, 4, 5, 7, 8, 18, 145, 189, 214, 266, 304, 464, 467, 472], "stop": [0, 2, 5, 18, 189, 215, 272, 466, 467], "step": [0, 3, 5, 6, 18, 315, 332, 338, 370, 441, 448, 453, 455, 456, 457, 464, 465], "dtype": [0, 1, 2, 5, 11, 18, 30, 37, 38, 78, 81, 125, 126, 140, 143, 159, 162, 169, 177, 185, 186, 189, 224, 236, 238, 239, 240, 241, 244, 245, 285, 287, 292, 296, 308, 357, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 408, 415, 453, 454, 455, 456, 457, 464, 465, 466, 467, 469, 470, 471], "streamordevic": [0, 2], "": [0, 1, 2, 4, 5, 6, 47, 51, 62, 94, 114, 116, 141, 148, 149, 151, 152, 154, 155, 157, 158, 165, 183, 185, 187, 190, 203, 226, 231, 235, 251, 254, 255, 271, 273, 290, 291, 292, 294, 299, 315, 318, 332, 338, 343, 349, 350, 352, 356, 357, 358, 362, 370, 439, 448, 449, 461, 464, 466, 468, 469, 470, 471, 472], "A": [0, 2, 5, 7, 8, 9, 68, 82, 94, 142, 143, 144, 146, 165, 177, 178, 183, 185, 186, 187, 190, 199, 200, 201, 206, 216, 231, 234, 235, 236, 238, 239, 240, 241, 244, 245, 266, 270, 273, 290, 293, 294, 298, 299, 300, 301, 302, 303, 304, 305, 306, 315, 319, 327, 332, 333, 337, 339, 349, 353, 354, 357, 363, 364, 369, 375, 377, 385, 388, 389, 391, 398, 419, 420, 437, 439, 443, 445, 447, 448, 450, 455, 464, 465, 466, 468, 469], "1d": [0, 98, 102, 105, 254, 279], "number": [0, 2, 11, 18, 61, 70, 94, 99, 100, 101, 103, 104, 116, 140, 141, 164, 165, 169, 178, 189, 220, 227, 231, 232, 235, 238, 240, 243, 245, 248, 251, 282, 283, 287, 290, 293, 294, 298, 315, 319, 320, 321, 322, 323, 324, 325, 327, 328, 333, 337, 365, 366, 385, 386, 388, 389, 390, 391, 453, 455, 456, 461, 464, 466, 473], "option": [0, 3, 5, 14, 15, 17, 18, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 83, 84, 85, 86, 90, 94, 95, 98, 99, 100, 101, 102, 103, 104, 105, 108, 109, 110, 111, 112, 116, 117, 118, 121, 122, 123, 125, 126, 127, 140, 141, 142, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 163, 164, 165, 169, 175, 176, 182, 183, 184, 185, 186, 187, 188, 189, 190, 199, 201, 203, 204, 213, 216, 220, 224, 227, 228, 230, 231, 232, 234, 235, 236, 238, 239, 240, 241, 243, 244, 245, 248, 249, 264, 265, 266, 269, 270, 271, 275, 277, 278, 282, 284, 285, 286, 287, 288, 289, 290, 291, 294, 296, 298, 301, 302, 303, 304, 317, 318, 319, 320, 321, 322, 323, 324, 325, 332, 338, 341, 342, 343, 345, 349, 350, 352, 357, 362, 365, 367, 368, 370, 373, 377, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 440, 441, 442, 443, 444, 445, 446, 448, 451, 452, 453, 461, 464, 471, 473], "int": [0, 1, 2, 5, 6, 9, 15, 17, 18, 26, 27, 28, 29, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 49, 56, 57, 58, 59, 60, 63, 66, 68, 71, 74, 75, 76, 77, 78, 80, 83, 90, 91, 95, 98, 99, 100, 101, 102, 103, 104, 108, 109, 110, 111, 116, 117, 118, 125, 126, 127, 131, 138, 140, 141, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 164, 165, 169, 177, 185, 189, 199, 201, 203, 206, 207, 208, 209, 212, 213, 216, 218, 224, 227, 228, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 248, 249, 251, 264, 265, 266, 269, 270, 271, 275, 276, 278, 279, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 294, 296, 298, 306, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 329, 331, 332, 333, 337, 338, 339, 341, 342, 343, 365, 367, 368, 369, 370, 373, 377, 385, 399, 407, 408, 412, 417, 419, 437, 453, 455, 456, 457], "linspac": 0, "num": [0, 5, 189, 243], "50": [0, 189], "float32": [0, 1, 2, 11, 18, 140, 143, 146, 168, 169, 177, 185, 186, 189, 224, 236, 238, 239, 240, 244, 245, 287, 296, 308, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 408, 415, 453, 454, 455, 456, 457, 464, 465, 466, 467, 468, 469, 470, 471], "evenli": [0, 189], "space": [0, 2, 189, 406, 417], "rang": [0, 2, 3, 4, 5, 6, 8, 18, 159, 163, 189, 389, 391, 397, 398, 439, 453, 454, 455, 456, 457, 461, 464, 466, 468, 472], "astyp": [0, 1, 2, 5, 143, 345, 469], "convert": [0, 1, 2, 78, 84, 85, 86, 115, 159, 233, 367, 368, 468, 469, 470], "an": [0, 1, 2, 3, 5, 6, 8, 10, 15, 17, 30, 84, 85, 86, 91, 98, 99, 100, 101, 102, 103, 104, 120, 125, 126, 127, 136, 140, 142, 146, 159, 162, 169, 172, 182, 185, 190, 213, 218, 224, 225, 227, 230, 231, 232, 248, 249, 251, 266, 269, 276, 278, 279, 282, 283, 287, 294, 296, 297, 301, 302, 303, 304, 315, 317, 318, 326, 330, 333, 338, 339, 341, 342, 343, 345, 365, 366, 368, 370, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 397, 421, 434, 439, 440, 450, 454, 459, 461, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473], "given": [0, 2, 8, 15, 17, 28, 38, 83, 91, 93, 95, 108, 109, 110, 111, 116, 118, 131, 136, 138, 141, 147, 148, 149, 150, 151, 152, 156, 157, 158, 162, 163, 185, 199, 201, 203, 212, 216, 220, 222, 230, 239, 241, 251, 259, 264, 266, 271, 275, 277, 283, 284, 285, 287, 288, 289, 291, 306, 317, 318, 326, 342, 343, 349, 365, 407, 409, 415], "data": [0, 2, 6, 7, 10, 18, 125, 140, 156, 157, 162, 169, 189, 220, 224, 244, 285, 287, 292, 296, 328, 387, 388, 389, 390, 391, 392, 393, 394, 464, 465, 467, 469], "type": [0, 1, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 37, 68, 78, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 115, 116, 117, 118, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 206, 212, 213, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 300, 301, 304, 315, 357, 385, 387, 388, 389, 390, 391, 392, 393, 394, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 464, 467], "as_strid": 0, "std": [0, 2, 393], "vector": [0, 2, 4, 7, 170, 178, 185, 278, 293, 294, 329, 408, 470], "shape": [0, 2, 3, 5, 6, 65, 82, 83, 90, 91, 94, 98, 99, 100, 101, 102, 103, 104, 118, 121, 125, 126, 143, 146, 147, 150, 153, 156, 157, 158, 162, 163, 168, 178, 184, 188, 200, 224, 225, 234, 235, 236, 238, 239, 240, 241, 244, 245, 249, 292, 293, 295, 296, 297, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 332, 337, 338, 341, 342, 343, 352, 370, 387, 388, 389, 390, 391, 392, 393, 394, 408, 419, 439, 464, 466, 467, 470, 472], "size_t": [0, 2], "stride": [0, 2, 83, 98, 99, 100, 101, 102, 103, 104, 317, 318, 320, 321, 322, 323, 324, 325, 342, 343, 373, 467], "offset": [0, 1, 2, 5, 46, 83, 118, 142, 145, 285], "creat": [0, 2, 5, 8, 83, 123, 140, 169, 273, 315, 437, 439, 455, 464, 467, 469], "view": [0, 3, 83, 469], "copi": [0, 1, 2, 5, 7, 228, 265, 469], "anoth": [0, 93, 177, 200, 274, 295, 308, 315, 345, 464, 466, 467, 472], "full": [0, 1, 2, 6, 65, 79, 105, 264, 363, 364, 409, 464, 465, 468], "val": [0, 30, 162], "fill": [0, 2, 162, 225, 287, 297, 387, 388, 389, 390, 391, 393, 394], "valu": [0, 1, 4, 5, 11, 12, 16, 18, 26, 27, 50, 78, 82, 93, 140, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 162, 171, 185, 187, 189, 206, 220, 227, 234, 235, 236, 238, 239, 240, 241, 244, 245, 254, 278, 279, 290, 294, 299, 301, 302, 303, 304, 308, 318, 326, 327, 328, 334, 337, 341, 343, 349, 365, 366, 381, 383, 385, 387, 406, 407, 408, 409, 410, 411, 413, 414, 415, 416, 417, 418, 431, 437, 441, 444, 453, 454, 456, 457, 466], "templat": [0, 1, 2, 143], "typenam": [0, 1, 2], "t": [0, 1, 2, 5, 8, 134, 143, 146, 164, 182, 183, 232, 290, 315, 317, 332, 338, 342, 370, 440, 441, 442, 443, 444, 445, 446, 451, 452, 464, 466, 472], "zero": [0, 140, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 204, 211, 287, 288, 289, 297, 315, 317, 318, 326, 327, 328, 352, 387, 388, 389, 390, 391, 392, 393, 394, 434, 439, 441, 467], "const": [0, 1, 2, 409], "inlin": 0, "zeros_lik": 0, "ones": [0, 2, 5, 225, 256, 287, 363, 364, 439, 465, 467], "ones_lik": 0, "ey": [0, 5, 184, 188], "n": [0, 1, 2, 5, 30, 90, 98, 99, 100, 101, 102, 103, 104, 140, 147, 149, 150, 152, 153, 156, 158, 168, 169, 239, 271, 287, 291, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 332, 338, 342, 343, 370, 386, 414, 419, 465], "m": [0, 2, 5, 8, 90, 140, 163, 168, 185, 287, 317, 318, 342, 343, 440, 464], "k": [0, 5, 45, 90, 117, 140, 146, 163, 168, 284, 287, 288, 289, 317, 341, 342, 350], "specifi": [0, 2, 18, 37, 99, 100, 101, 103, 104, 118, 154, 155, 162, 165, 185, 189, 218, 224, 235, 248, 276, 278, 279, 282, 285, 286, 290, 294, 296, 319, 383, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 431, 465, 466, 472], "diagon": [0, 45, 117, 140, 285, 287, 288, 289], "everywher": 0, "els": [0, 2, 5, 315, 350, 465, 468], "ident": [0, 112, 140, 272, 315, 359], "squar": [0, 4, 5, 144, 169, 184, 188, 252, 267, 290, 302, 315, 369, 416, 418, 440, 441, 443, 444, 445, 466, 469], "matrix": [0, 4, 14, 45, 90, 116, 117, 140, 141, 163, 164, 168, 169, 182, 183, 184, 185, 186, 187, 188, 200, 204, 231, 232, 239, 367, 368, 392, 434], "major": [0, 2], "tri": 0, "tril": 0, "x": [0, 1, 2, 4, 5, 6, 38, 90, 112, 121, 122, 126, 127, 134, 139, 142, 143, 144, 164, 168, 169, 185, 232, 236, 251, 256, 260, 288, 289, 295, 302, 304, 315, 317, 318, 319, 330, 331, 333, 337, 339, 340, 341, 342, 343, 344, 345, 366, 369, 371, 377, 383, 386, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 418, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 437, 439, 446, 464, 465, 466, 467, 468, 469, 470, 472], "0": [0, 1, 2, 4, 5, 6, 8, 9, 14, 18, 38, 45, 46, 49, 66, 71, 75, 80, 83, 95, 98, 99, 100, 101, 102, 103, 104, 117, 118, 140, 143, 146, 159, 163, 165, 184, 185, 186, 188, 205, 212, 220, 227, 234, 238, 240, 245, 248, 251, 266, 270, 271, 285, 287, 288, 289, 290, 291, 294, 300, 301, 303, 304, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 333, 334, 337, 339, 340, 342, 343, 366, 371, 373, 377, 381, 383, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 397, 398, 400, 401, 402, 403, 406, 408, 410, 411, 415, 418, 419, 421, 422, 423, 424, 430, 431, 434, 437, 440, 441, 443, 444, 445, 446, 448, 451, 452, 453, 454, 455, 456, 457, 461, 464, 465, 466, 467, 468, 469, 470, 471], "triu": 0, "reshap": [0, 5, 185, 386, 467], "flatten": [0, 28, 29, 108, 109, 110, 111, 185, 226, 228, 248, 265, 278, 279, 284, 301], "start_axi": [0, 49, 159], "end_axi": [0, 49, 159], "1": [0, 1, 2, 3, 5, 6, 14, 18, 28, 29, 38, 46, 49, 98, 99, 100, 101, 102, 103, 104, 117, 118, 139, 143, 146, 147, 148, 150, 151, 153, 154, 155, 156, 157, 158, 159, 168, 170, 177, 183, 185, 186, 200, 204, 213, 226, 228, 231, 235, 238, 239, 240, 245, 260, 265, 278, 284, 285, 290, 300, 303, 304, 308, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 332, 333, 337, 338, 339, 341, 342, 343, 366, 369, 370, 373, 377, 383, 386, 388, 389, 390, 391, 392, 393, 394, 395, 397, 398, 399, 401, 404, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 417, 418, 419, 424, 425, 427, 428, 429, 431, 434, 437, 439, 440, 441, 442, 443, 444, 445, 446, 448, 451, 452, 453, 454, 455, 456, 457, 464, 465, 466, 467, 469, 470, 471, 472], "dimens": [0, 2, 5, 15, 17, 26, 27, 62, 68, 78, 84, 85, 86, 94, 99, 100, 101, 103, 104, 118, 138, 145, 154, 155, 157, 158, 159, 163, 164, 170, 182, 183, 184, 185, 186, 187, 188, 199, 200, 201, 203, 216, 230, 231, 235, 243, 271, 275, 279, 282, 286, 291, 319, 320, 321, 322, 323, 324, 325, 327, 328, 331, 332, 333, 337, 338, 339, 365, 369, 370, 373, 385, 386, 399, 408, 464, 466], "hadamard_transform": 0, "float": [0, 1, 2, 11, 14, 16, 18, 78, 142, 143, 144, 145, 146, 161, 162, 168, 171, 177, 185, 220, 232, 234, 238, 240, 300, 308, 319, 326, 327, 328, 333, 337, 339, 345, 357, 369, 373, 377, 383, 385, 386, 387, 388, 389, 390, 391, 393, 394, 407, 408, 409, 411, 415, 418, 419, 430, 431, 440, 441, 442, 443, 444, 445, 446, 451, 452, 453, 454, 456, 457], "scale": [0, 2, 5, 14, 116, 141, 142, 144, 145, 146, 164, 168, 231, 232, 238, 240, 300, 327, 328, 339, 365, 373, 374, 377, 386, 424, 441], "nullopt": 0, "multipli": [0, 2, 38, 164, 231, 232, 326, 377, 386], "hadamard": [0, 168], "correspond": [0, 2, 15, 17, 78, 93, 116, 118, 141, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 199, 201, 216, 230, 275, 282, 294, 302, 466], "size": [0, 1, 2, 5, 6, 51, 68, 90, 99, 100, 103, 104, 116, 138, 141, 142, 143, 144, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 162, 164, 168, 169, 177, 185, 208, 213, 231, 232, 235, 249, 266, 269, 292, 298, 315, 317, 318, 320, 321, 322, 323, 324, 325, 329, 337, 342, 343, 367, 368, 386, 441, 465, 468, 469], "squeez": [0, 386, 464], "ax": [0, 2, 15, 17, 26, 27, 79, 112, 138, 148, 149, 151, 152, 154, 155, 157, 158, 159, 170, 185, 199, 201, 203, 216, 227, 230, 264, 269, 271, 275, 276, 282, 286, 291, 466], "remov": [0, 118, 200, 235, 269, 408], "singleton": [0, 15, 17, 26, 27, 123, 199, 200, 201, 203, 216, 230, 271, 275, 291], "axi": [0, 2, 5, 6, 15, 17, 26, 27, 28, 29, 33, 34, 35, 36, 41, 42, 43, 44, 56, 57, 58, 59, 63, 71, 74, 75, 76, 80, 95, 108, 109, 110, 111, 118, 121, 138, 142, 144, 147, 150, 153, 154, 155, 156, 157, 158, 159, 168, 185, 199, 201, 203, 216, 218, 227, 228, 230, 235, 248, 264, 265, 266, 269, 270, 271, 275, 276, 278, 279, 283, 284, 285, 286, 291, 292, 294, 317, 318, 331, 342, 343, 370, 399, 405, 407, 408, 412, 417, 419, 427, 428, 467], "all": [0, 1, 2, 3, 6, 8, 16, 28, 38, 84, 85, 86, 94, 99, 100, 101, 103, 104, 112, 121, 122, 123, 140, 149, 152, 155, 158, 163, 164, 187, 200, 227, 228, 269, 298, 315, 345, 346, 350, 353, 354, 355, 360, 362, 365, 377, 385, 386, 434, 437, 459, 461, 464, 467, 468, 470, 473], "expand_dim": 0, "add": [0, 1, 2, 3, 5, 14, 38, 138, 195, 227, 231, 320, 321, 322, 323, 324, 325, 466, 472], "slice": [0, 467], "each": [0, 1, 2, 68, 116, 136, 141, 145, 164, 177, 182, 183, 184, 187, 188, 200, 204, 227, 231, 232, 235, 248, 256, 257, 266, 283, 286, 292, 294, 295, 327, 328, 329, 332, 333, 338, 370, 373, 385, 406, 408, 461, 464, 465, 468], "slice_upd": 0, "src": [0, 125, 126], "updat": [0, 1, 2, 4, 5, 6, 38, 94, 298, 302, 304, 319, 345, 346, 352, 357, 358, 359, 364, 439, 441, 444, 446, 447, 448, 452, 453, 454, 455, 456, 457, 464, 465, 468], "from": [0, 1, 2, 5, 6, 7, 83, 115, 116, 118, 121, 122, 125, 126, 127, 141, 143, 154, 155, 157, 158, 162, 163, 168, 185, 190, 200, 204, 209, 212, 225, 231, 233, 234, 235, 236, 237, 238, 241, 244, 256, 269, 272, 274, 278, 279, 284, 285, 295, 297, 301, 302, 303, 304, 305, 315, 341, 350, 352, 365, 388, 389, 390, 391, 393, 394, 409, 418, 434, 439, 463, 464, 465, 466, 468, 469, 470, 471, 472], "sourc": [0, 1, 2, 3, 60, 125, 126, 143, 218, 286, 465], "split": [0, 331, 333, 399], "num_split": 0, "sub": [0, 6, 118, 243, 285, 298], "along": [0, 2, 26, 27, 94, 95, 108, 109, 110, 111, 121, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 163, 164, 168, 185, 248, 264, 266, 270, 278, 279, 282, 283, 284, 285, 292, 315, 331, 370, 399], "indic": [0, 2, 16, 26, 27, 28, 29, 38, 163, 164, 165, 171, 172, 173, 174, 175, 176, 177, 187, 266, 278, 279, 290, 359, 361, 408, 415, 455, 467], "meshgrid": 0, "bool": [0, 1, 2, 15, 16, 17, 26, 27, 33, 34, 35, 36, 41, 42, 43, 44, 56, 57, 58, 59, 63, 75, 76, 78, 80, 82, 94, 101, 108, 109, 110, 111, 123, 124, 143, 145, 164, 171, 177, 182, 183, 185, 188, 190, 199, 201, 203, 204, 210, 213, 216, 230, 232, 271, 275, 291, 319, 320, 321, 322, 323, 324, 325, 332, 333, 337, 338, 339, 341, 345, 349, 350, 352, 357, 359, 362, 365, 368, 370, 373, 377, 385, 386, 406, 409, 441, 452], "spars": [0, 204], "fals": [0, 1, 2, 5, 15, 16, 17, 26, 27, 33, 34, 35, 36, 41, 42, 43, 44, 56, 57, 58, 59, 63, 75, 76, 80, 82, 94, 101, 108, 109, 110, 111, 123, 143, 171, 177, 182, 183, 185, 188, 190, 199, 201, 203, 204, 213, 216, 230, 271, 275, 291, 295, 298, 301, 302, 303, 304, 308, 333, 337, 339, 341, 350, 352, 362, 365, 368, 373, 377, 385, 386, 406, 409, 441, 452, 469], "string": [0, 2, 131, 143, 206, 227, 469, 471], "index": [0, 1, 2, 7, 9, 28, 38, 138, 140, 165, 204, 228, 278, 279, 290, 306], "xy": [0, 204], "coordin": [0, 204], "clip": [0, 300, 406, 441], "a_min": [0, 93], "a_max": [0, 93], "limit": [0, 2, 93, 212, 213, 467], "concaten": [0, 5, 121], "stack": [0, 464], "new": [0, 2, 6, 91, 118, 218, 222, 249, 270, 286, 292, 302, 303, 357, 365, 437, 439, 450, 455, 464, 467, 468, 469], "repeat": [0, 283], "arr": [0, 253, 467], "tile": [0, 146], "rep": [0, 283], "transpos": [0, 5, 31, 102, 103, 104, 164, 232, 323, 324, 325], "permut": [0, 6], "accord": [0, 236, 295, 298, 365, 388, 389, 390, 391], "initializer_list": 0, "swapax": [0, 112], "axis1": [0, 46, 77, 118, 276, 285], "axis2": [0, 46, 77, 118, 276, 285], "swap": [0, 105, 213, 276, 364], "two": [0, 2, 13, 14, 16, 24, 82, 85, 87, 88, 89, 90, 118, 128, 133, 148, 151, 157, 163, 164, 166, 167, 171, 180, 181, 182, 183, 184, 186, 187, 188, 195, 200, 202, 217, 219, 223, 226, 276, 304, 318, 331, 338, 343, 399, 407, 464, 465, 466, 467, 472], "moveaxi": 0, "destin": [0, 2, 60, 127, 218], "move": [0, 2, 218, 472], "pad": [0, 1, 98, 99, 100, 101, 102, 103, 104, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 317, 318, 320, 321, 322, 323, 324, 325, 342, 343], "low_pad_s": 0, "high_pad_s": 0, "pad_valu": 0, "mode": [0, 1, 2, 105, 227, 348, 359, 361, 386, 390, 391, 465], "constant": [0, 2, 5, 8, 142, 144, 227, 315, 319, 333, 339, 369, 409, 419, 451, 453, 464, 469], "pair": [0, 2, 227, 352, 373], "pad_width": [0, 227], "revers": [0, 2, 41, 42, 43, 44, 83, 108, 109, 110, 111, 286, 377], "order": [0, 1, 28, 83, 101, 131, 185, 228, 231, 284, 315, 333, 363, 375, 448, 464, 466], "broadcast_to": 0, "broadcast": [0, 2, 13, 16, 87, 88, 89, 91, 93, 128, 129, 133, 162, 166, 167, 171, 179, 180, 181, 195, 200, 202, 217, 219, 223, 229, 234, 235, 239, 244, 245, 247, 250, 274, 279, 295, 365], "broadcast_arrai": [0, 2], "input": [0, 1, 2, 4, 5, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 117, 118, 121, 122, 127, 128, 129, 130, 131, 133, 134, 135, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 216, 217, 218, 219, 220, 221, 223, 225, 226, 227, 228, 229, 230, 231, 232, 233, 243, 246, 247, 248, 249, 250, 251, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, 286, 288, 289, 290, 291, 292, 294, 295, 297, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 329, 331, 332, 333, 337, 338, 339, 341, 342, 343, 365, 368, 369, 370, 373, 383, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 399, 406, 407, 409, 410, 411, 412, 414, 415, 417, 419, 431, 434, 464, 466, 467, 470, 471], "against": 0, "one": [0, 2, 5, 8, 38, 78, 84, 93, 99, 100, 101, 103, 104, 138, 140, 142, 144, 145, 185, 193, 200, 232, 235, 269, 274, 308, 362, 386, 408, 465, 472], "equal": [0, 16, 28, 82, 140, 167, 171, 181, 223, 228, 241, 266, 337, 341], "b": [0, 1, 2, 3, 5, 13, 14, 16, 24, 82, 87, 88, 89, 90, 128, 129, 133, 143, 161, 163, 166, 167, 170, 171, 179, 180, 181, 185, 195, 196, 198, 200, 202, 217, 219, 223, 226, 229, 231, 238, 247, 250, 274, 282, 290, 303, 304, 331, 341, 370, 386, 399, 466, 467, 468, 469, 470, 471, 472], "return": [0, 1, 2, 4, 5, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 37, 50, 68, 78, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 212, 213, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 315, 332, 338, 345, 346, 347, 349, 350, 351, 352, 353, 354, 355, 359, 360, 362, 363, 364, 370, 387, 388, 389, 390, 391, 392, 393, 394, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 434, 437, 447, 463, 464, 465, 466, 467, 468, 469, 471, 472], "element": [0, 1, 2, 12, 13, 19, 20, 21, 22, 23, 24, 25, 28, 70, 83, 87, 88, 89, 92, 106, 107, 108, 109, 110, 111, 116, 128, 129, 133, 134, 135, 137, 139, 140, 141, 160, 161, 164, 166, 167, 171, 172, 173, 174, 175, 176, 179, 180, 181, 191, 192, 193, 194, 195, 196, 197, 198, 202, 204, 217, 219, 221, 223, 228, 229, 231, 232, 246, 247, 248, 250, 252, 260, 261, 262, 263, 267, 268, 274, 278, 280, 281, 284, 290, 292, 295, 326, 327, 328, 332, 336, 338, 344, 366, 370, 373, 401, 402, 404, 405, 420, 421, 423, 426, 427, 428, 429, 464, 466], "wise": [0, 2, 12, 13, 19, 20, 21, 22, 23, 24, 25, 87, 88, 89, 92, 106, 107, 128, 129, 133, 134, 135, 137, 139, 160, 161, 166, 167, 171, 179, 180, 181, 191, 192, 193, 194, 195, 196, 197, 198, 202, 217, 219, 221, 223, 229, 246, 247, 250, 252, 260, 261, 262, 263, 267, 268, 274, 280, 281, 327, 328, 336, 344, 366, 401, 402, 404, 405, 420, 421, 423, 426, 427, 428, 429, 464], "not_equ": 0, "greater": [0, 5, 28, 139, 167, 228, 300, 383, 431], "greater_equ": 0, "less": [0, 5, 28, 181, 228, 373, 418], "less_equ": 0, "array_equ": [0, 16, 171], "equal_nan": [0, 16, 82, 171], "true": [0, 1, 2, 4, 5, 16, 41, 42, 43, 44, 82, 94, 108, 109, 110, 111, 143, 145, 164, 171, 177, 182, 183, 185, 190, 204, 213, 232, 264, 295, 298, 301, 302, 303, 304, 308, 315, 319, 320, 321, 322, 323, 324, 325, 332, 333, 337, 338, 339, 341, 349, 350, 352, 359, 362, 368, 370, 373, 377, 385, 386, 406, 414, 441], "have": [0, 1, 2, 5, 8, 16, 82, 84, 85, 86, 90, 121, 154, 155, 157, 158, 164, 171, 200, 214, 235, 292, 301, 338, 365, 375, 446, 448, 463, 464, 465, 467, 468, 472], "same": [0, 2, 5, 8, 16, 38, 82, 91, 94, 99, 100, 101, 103, 104, 105, 121, 142, 144, 153, 156, 157, 158, 164, 165, 171, 178, 227, 235, 251, 292, 293, 295, 303, 315, 318, 319, 326, 333, 337, 343, 367, 387, 388, 389, 390, 391, 392, 393, 394, 408, 419, 437, 447, 461, 464, 465, 467, 472], "isnan": 0, "isinf": 0, "isfinit": 0, "isposinf": 0, "isneginf": 0, "where": [0, 6, 140, 171, 183, 231, 290, 294, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 332, 333, 337, 338, 339, 341, 342, 343, 349, 366, 369, 370, 383, 390, 391, 395, 396, 398, 409, 415, 421, 424, 426, 431, 448, 465, 466, 467], "condit": [0, 2, 295, 472], "y": [0, 2, 4, 5, 6, 38, 112, 168, 295, 315, 319, 327, 333, 337, 339, 341, 369, 410, 415, 418, 439, 442, 464, 465, 466, 468, 469], "select": [0, 3, 8, 284, 295, 345, 349, 357], "depend": [0, 2, 3, 4, 8, 78, 185, 332, 338, 370, 465, 467, 471, 472], "nan_to_num": 0, "nan": [0, 16, 82, 171, 172, 174, 220], "0f": 0, "posinf": [0, 220], "neginf": [0, 220], "replac": [0, 5, 220, 363, 364, 385, 418], "infin": [0, 173, 175, 176, 220, 342, 343, 445], "finit": [0, 172, 220], "keepdim": [0, 15, 17, 26, 27, 33, 34, 35, 36, 56, 57, 58, 59, 63, 75, 76, 80, 185, 199, 201, 203, 216, 230, 264, 271, 275, 291], "ar": [0, 1, 2, 4, 5, 6, 7, 8, 16, 18, 82, 90, 91, 93, 94, 101, 105, 112, 118, 125, 126, 136, 140, 143, 148, 149, 151, 152, 154, 155, 157, 158, 159, 164, 165, 171, 172, 173, 174, 175, 176, 177, 178, 185, 186, 190, 200, 213, 226, 227, 228, 231, 232, 234, 235, 236, 241, 244, 245, 256, 257, 269, 270, 278, 290, 293, 294, 298, 301, 302, 308, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 333, 337, 339, 341, 352, 365, 368, 386, 406, 408, 409, 433, 437, 439, 446, 448, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472], "non": [0, 1, 2, 8, 204, 360, 370, 420, 437], "allclos": [0, 1, 143], "rtol": [0, 16, 171], "1e": [0, 4, 6, 16, 171, 319, 333, 337, 339, 340, 369, 407, 409, 419, 439, 440, 441, 442, 443, 444, 445, 448, 451, 453, 454, 455, 456, 457], "5": [0, 1, 2, 4, 5, 8, 185, 213, 234, 304, 317, 319, 326, 327, 328, 330, 334, 337, 342, 381, 386, 387, 390, 391, 397, 400, 418, 430, 434, 439, 451, 453, 454, 464, 466, 467], "atol": [0, 16, 171], "8": [0, 1, 2, 5, 8, 185, 231, 308, 318, 337, 343, 385, 407, 440, 441, 442, 443, 444, 445, 451, 464, 467, 470, 472], "within": [0, 3, 28, 171], "toler": [0, 16, 171], "isclos": 0, "boolean": [0, 16, 82, 171, 172, 173, 174, 175, 176, 177, 196, 197, 198, 308, 361, 467], "reduc": [0, 1, 8, 15, 17, 26, 27, 122, 199, 201, 203, 216, 230, 271, 275, 291, 304, 319, 385, 414], "output": [0, 1, 2, 5, 8, 15, 16, 17, 18, 28, 83, 90, 91, 94, 96, 97, 108, 109, 110, 111, 112, 130, 140, 142, 143, 144, 145, 146, 153, 156, 157, 158, 162, 163, 165, 168, 169, 171, 185, 189, 199, 201, 203, 204, 216, 220, 224, 225, 228, 230, 234, 235, 236, 238, 239, 240, 241, 244, 245, 256, 257, 264, 269, 271, 275, 279, 285, 287, 290, 291, 292, 293, 294, 295, 296, 297, 317, 318, 319, 320, 321, 322, 323, 324, 325, 337, 341, 342, 343, 365, 368, 383, 385, 386, 388, 389, 390, 391, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 431, 434, 464, 465, 466, 467, 468, 469, 470, 471, 472], "i": [0, 1, 2, 3, 5, 6, 7, 8, 16, 18, 28, 37, 78, 83, 93, 99, 100, 101, 103, 104, 105, 108, 109, 110, 111, 112, 117, 118, 121, 122, 124, 125, 126, 127, 129, 136, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 168, 171, 172, 177, 178, 182, 183, 184, 185, 186, 187, 188, 190, 195, 199, 200, 204, 210, 213, 227, 228, 231, 232, 239, 240, 249, 253, 254, 255, 260, 264, 266, 271, 272, 277, 278, 279, 282, 285, 286, 290, 291, 292, 293, 294, 295, 298, 300, 301, 302, 303, 304, 308, 310, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 332, 333, 337, 338, 339, 341, 342, 343, 349, 350, 356, 358, 359, 361, 362, 364, 365, 366, 368, 369, 370, 373, 377, 383, 385, 386, 390, 391, 396, 398, 406, 407, 409, 414, 415, 418, 419, 421, 426, 431, 437, 439, 441, 444, 446, 447, 448, 453, 455, 456, 461, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473], "ani": [0, 1, 2, 5, 7, 18, 94, 301, 302, 303, 304, 305, 315, 330, 345, 346, 349, 358, 368, 385, 386, 434, 456, 463, 464, 466, 468, 470, 471, 472], "sum": [0, 2, 4, 13, 111, 122, 170, 185, 199, 264, 282, 285, 315, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 465, 467, 469], "mean": [0, 1, 4, 5, 6, 144, 238, 239, 240, 290, 315, 319, 333, 350, 369, 393, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 464, 466, 469], "comput": [0, 1, 2, 4, 5, 6, 7, 8, 108, 109, 110, 111, 112, 116, 131, 139, 141, 145, 165, 178, 182, 183, 184, 185, 188, 195, 203, 226, 231, 247, 264, 271, 272, 282, 290, 291, 293, 299, 315, 319, 332, 333, 337, 338, 339, 350, 363, 368, 369, 373, 385, 388, 389, 390, 391, 397, 398, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 439, 440, 441, 443, 444, 445, 446, 450, 464, 465, 466, 470, 472], "var": [0, 319, 333, 337, 339, 409], "ddof": [0, 75, 80, 271, 291], "varianc": [0, 271, 291, 319, 333, 409], "standard": [0, 1, 6, 50, 78, 200, 236, 240, 271, 385, 388, 390, 393, 465, 470], "deviat": [0, 240, 271, 388, 390, 393], "deviatoin": 0, "prod": [0, 1], "The": [0, 1, 2, 3, 5, 6, 7, 8, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 37, 47, 51, 61, 62, 68, 78, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 115, 116, 117, 118, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 185, 186, 187, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 208, 209, 212, 213, 214, 216, 217, 218, 219, 221, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 254, 255, 260, 261, 262, 263, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 308, 310, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 331, 332, 333, 337, 338, 339, 341, 342, 343, 345, 346, 350, 352, 356, 357, 358, 359, 362, 363, 364, 365, 367, 368, 369, 370, 373, 375, 377, 383, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 399, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 431, 434, 437, 439, 440, 441, 442, 443, 444, 445, 446, 449, 451, 452, 453, 456, 459, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473], "product": [0, 2, 14, 83, 110, 170, 178, 200, 226, 230, 282, 293, 365, 470], "max": [0, 1, 2, 185, 202, 342, 343, 366, 401, 402, 407, 409, 410, 415, 419, 421, 423, 441, 445, 464, 466, 472], "maximum": [0, 6, 26, 38, 93, 108, 209, 213, 300, 315, 340, 371, 377, 397, 398, 403, 422, 437, 468], "min": [0, 2, 185, 217, 366, 401, 402, 421, 423], "minimum": [0, 27, 38, 93, 109, 377, 406, 407], "argmin": 0, "argmax": [0, 6], "sort": [0, 28, 29, 228, 284], "argsort": 0, "partit": [0, 28], "kth": [0, 28, 228], "smaller": [0, 8, 228, 446, 464], "first": [0, 1, 2, 3, 4, 5, 6, 8, 118, 121, 159, 165, 177, 179, 187, 196, 198, 200, 228, 243, 250, 276, 282, 285, 290, 301, 303, 304, 315, 318, 333, 343, 386, 407, 415, 441, 443, 444, 445, 448, 464, 466, 469, 472], "argpartit": 0, "topk": 0, "logsumexp": 0, "ab": [0, 16, 171, 185, 290, 333, 337, 339, 344, 369, 398, 420, 464], "absolut": [0, 12, 16, 171, 397, 398, 418], "neg": [0, 118, 159, 175, 220, 285, 340, 342, 343, 365, 409, 417, 419, 467], "negat": [0, 221], "sign": [0, 16, 171, 308, 446], "logical_not": 0, "logic": [0, 2, 196, 197, 198], "logical_and": 0, "logical_or": 0, "reciproc": [0, 252], "subtract": [0, 38], "divid": [0, 2, 38, 161, 231, 247, 465], "divmod": 0, "quotient": [0, 128, 129, 161], "remaind": [0, 129], "floor_divid": 0, "integ": [0, 11, 161, 163, 164, 177, 185, 206, 227, 231, 232, 234, 241, 266, 278, 282, 294, 308, 329, 357, 455, 467], "divis": [0, 128, 161, 231, 247], "equival": [0, 2, 31, 65, 79, 126, 129, 161, 164, 168, 278, 330, 334, 335, 336, 364, 366, 368, 371, 372, 374, 376, 378, 379, 380, 381, 382, 384], "do": [0, 2, 5, 8, 292, 315, 351, 362, 434, 437, 444, 464, 465, 466, 468], "floor": [0, 1, 161], "between": [0, 2, 7, 93, 159, 385, 407, 410, 411, 414, 455, 465, 468, 469, 472], "ceil": 0, "exp": [0, 1, 139, 143, 195, 199, 236, 264, 395, 412, 424, 425, 429, 464, 472], "exponenti": [0, 137, 139, 374, 395, 424, 454], "sin": [0, 112, 377, 466, 470], "sine": [0, 21, 22, 262, 263, 466], "co": [0, 2, 112, 377, 466], "cosin": [0, 19, 20, 106, 107, 407, 453, 455, 466], "tan": 0, "tangent": [0, 2, 23, 24, 25, 112, 178, 280, 281, 384, 432], "arcsin": 0, "arc": 0, "arcco": 0, "arctan": 0, "arctan2": 0, "invers": [0, 19, 20, 21, 22, 23, 24, 25, 135, 150, 151, 152, 153, 154, 155, 183, 184, 188], "ratio": [0, 24], "sinh": 0, "hyperbol": [0, 20, 22, 25, 107, 263, 281, 384, 432], "cosh": [0, 414], "tanh": [0, 315, 330, 332, 338, 344, 370, 397, 420], "arcsinh": 0, "arccosh": 0, "arctanh": 0, "degre": [0, 233, 419], "radian": [0, 115], "log": [0, 193, 195, 199, 404, 405, 406, 409, 412, 414, 417, 429], "natur": [0, 191, 193, 468], "logarithm": [0, 191, 192, 193, 194], "log2": 0, "base": [0, 2, 145, 185, 192, 194, 229, 373, 385, 437, 439, 445, 459, 461, 464, 467], "2": [0, 1, 2, 4, 5, 6, 38, 99, 103, 117, 118, 134, 148, 151, 153, 154, 155, 156, 157, 158, 159, 168, 177, 182, 183, 184, 185, 186, 187, 188, 194, 200, 231, 239, 243, 282, 285, 287, 288, 289, 300, 304, 308, 315, 317, 318, 321, 324, 330, 340, 342, 343, 369, 377, 386, 387, 388, 389, 390, 391, 392, 393, 394, 397, 408, 409, 411, 418, 419, 434, 437, 439, 440, 442, 443, 444, 448, 451, 464, 465, 466, 467, 468, 469, 470, 471, 472], "log10": 0, "10": [0, 3, 5, 6, 192, 251, 256, 302, 315, 352, 434, 455, 457, 464, 465, 467], "log1p": 0, "plu": [0, 193], "logaddexp": 0, "sigmoid": [0, 5, 315, 376, 398, 404, 406, 426], "logist": [0, 4, 260, 398, 426], "erf": [0, 135, 464], "error": [0, 2, 8, 123, 134, 135, 213, 266, 330, 396, 397, 398, 414, 416, 466, 469], "function": [0, 1, 2, 3, 4, 5, 6, 7, 16, 83, 94, 112, 129, 134, 135, 143, 165, 171, 178, 182, 183, 184, 185, 186, 187, 188, 200, 260, 290, 293, 294, 299, 300, 302, 303, 304, 315, 330, 331, 334, 335, 336, 344, 346, 350, 357, 362, 366, 370, 371, 372, 374, 375, 376, 378, 379, 380, 381, 382, 383, 384, 385, 396, 397, 398, 399, 400, 401, 402, 404, 405, 406, 420, 425, 427, 428, 429, 430, 431, 432, 434, 439, 448, 461, 463, 465, 467, 468, 469, 471], "erfinv": 0, "expm1": 0, "stop_gradi": [0, 466], "flow": [0, 272, 468], "gradient": [0, 4, 6, 112, 165, 272, 290, 299, 300, 315, 350, 363, 368, 385, 414, 437, 439, 440, 441, 443, 444, 445, 446, 447, 450, 452, 464, 465, 466, 467, 468, 469, 470], "round": [0, 231], "decim": [0, 66, 251], "point": [0, 2, 4, 5, 8, 83, 161, 232, 308], "matmul": [0, 163, 472], "multipl": [0, 1, 8, 14, 90, 142, 144, 163, 164, 200, 219, 231, 232, 365, 377, 454, 455, 457, 464, 468, 471], "gather": [0, 121, 163, 164], "slice_s": 0, "entri": [0, 327, 328], "take": [0, 2, 5, 6, 87, 88, 89, 94, 163, 165, 178, 202, 217, 225, 232, 279, 290, 293, 294, 297, 303, 304, 365, 406, 461, 465, 466, 467, 471, 472, 473], "treat": [0, 2, 154, 155, 157, 158, 278, 386, 464], "take_along_axi": [0, 467], "put_along_axi": 0, "put": [0, 1, 6, 464, 465], "scatter": 0, "paramet": [0, 1, 2, 4, 5, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 37, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 115, 116, 117, 118, 121, 122, 123, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 212, 213, 214, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 337, 338, 339, 340, 341, 342, 343, 345, 346, 349, 350, 352, 357, 358, 359, 362, 363, 364, 365, 366, 367, 368, 369, 370, 373, 375, 377, 381, 383, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 399, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 431, 433, 434, 437, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 450, 451, 452, 453, 454, 455, 456, 457, 459, 464, 465, 466, 468], "determin": [0, 2, 118, 239, 304, 308, 356, 471], "locat": [0, 2, 83, 363, 364, 465, 472], "assum": [0, 2, 5, 90, 186, 302, 315, 317, 318, 333, 342, 343], "d": [0, 1, 2, 5, 100, 104, 117, 118, 170, 185, 200, 204, 226, 278, 285, 287, 288, 289, 305, 322, 325, 328, 332, 338, 370, 440, 443, 445, 472], "simplic": 0, "which": [0, 1, 2, 5, 6, 7, 8, 18, 37, 83, 94, 101, 118, 121, 122, 125, 126, 127, 136, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 165, 172, 173, 174, 175, 176, 178, 182, 183, 184, 185, 186, 187, 188, 190, 204, 214, 231, 235, 236, 248, 249, 253, 254, 255, 256, 257, 269, 270, 278, 285, 290, 293, 294, 298, 318, 327, 328, 330, 343, 345, 349, 373, 406, 408, 411, 415, 418, 434, 447, 448, 461, 464, 465, 466, 467, 468, 472, 473], "appli": [0, 38, 145, 146, 163, 187, 302, 303, 304, 315, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 330, 331, 333, 334, 335, 336, 337, 339, 340, 341, 342, 343, 344, 346, 359, 366, 368, 369, 370, 371, 372, 374, 376, 378, 379, 380, 381, 382, 383, 384, 386, 395, 396, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 434, 447, 450, 456, 459, 464, 465], "note": [0, 2, 5, 8, 16, 83, 90, 94, 100, 103, 104, 112, 146, 154, 155, 164, 171, 185, 207, 231, 235, 292, 298, 315, 369, 386, 439, 469, 471], "assign": [0, 2, 38, 437], "henc": [0, 2, 231, 464], "If": [0, 1, 2, 5, 8, 15, 16, 17, 18, 26, 27, 28, 29, 78, 82, 83, 93, 95, 105, 108, 109, 110, 111, 117, 118, 121, 122, 123, 125, 126, 127, 136, 142, 145, 156, 157, 158, 161, 162, 165, 171, 182, 183, 185, 190, 199, 200, 201, 203, 204, 212, 213, 216, 220, 224, 227, 228, 230, 235, 239, 248, 264, 265, 266, 271, 275, 277, 278, 279, 282, 284, 285, 290, 291, 294, 296, 298, 302, 304, 319, 320, 321, 322, 323, 324, 325, 333, 339, 341, 350, 352, 362, 368, 370, 373, 375, 377, 386, 406, 408, 419, 441, 464, 465, 466, 468, 471, 472, 473], "provid": [0, 2, 5, 83, 116, 141, 165, 282, 290, 302, 304, 310, 315, 345, 350, 352, 362, 363, 364, 367, 368, 385, 386, 433, 437, 465, 471, 473], "rank": [0, 125, 126, 127, 415, 465], "must": [0, 1, 2, 3, 8, 90, 93, 145, 162, 164, 185, 234, 235, 239, 241, 244, 245, 295, 386, 469], "In": [0, 1, 2, 5, 6, 38, 200, 231, 302, 315, 327, 333, 437, 440, 442, 443, 445, 446, 447, 463, 464, 465, 466, 468, 471, 472], "other": [0, 2, 5, 7, 177, 185, 315, 351, 437, 446, 464, 465, 467, 468, 470], "word": 0, "ndim": [0, 1, 2, 159, 185, 187, 386], "lead": [0, 18, 83, 464], "remain": [0, 5, 290, 303, 326, 327, 328, 465], "For": [0, 1, 2, 5, 8, 38, 146, 163, 177, 185, 231, 305, 315, 319, 327, 330, 345, 350, 359, 362, 368, 373, 377, 386, 388, 389, 390, 391, 406, 434, 439, 461, 464, 465, 466, 467, 468, 469, 470, 471, 472], "exampl": [0, 3, 4, 5, 6, 8, 18, 38, 112, 143, 159, 177, 185, 186, 273, 278, 300, 303, 304, 315, 317, 318, 319, 337, 342, 343, 350, 352, 359, 362, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 408, 415, 434, 439, 448, 453, 454, 455, 456, 457, 461, 466, 467, 468, 469, 470, 471], "auto": [0, 2, 8], "4": [0, 1, 2, 5, 116, 141, 143, 159, 164, 185, 231, 232, 256, 298, 304, 308, 317, 318, 319, 337, 342, 343, 367, 368, 385, 386, 388, 389, 390, 406, 464, 465, 467, 470, 472], "3": [0, 1, 2, 5, 8, 100, 104, 159, 177, 185, 186, 300, 304, 322, 325, 330, 386, 389, 391, 397, 402, 441, 446, 461, 464, 467, 469, 470], "out": [0, 1, 2, 8, 90, 143, 317, 318, 327, 328, 342, 343, 359, 464, 465, 466, 467], "produc": [0, 2, 8, 94, 365, 434], "thi": [0, 1, 2, 5, 6, 8, 15, 16, 17, 18, 26, 27, 28, 29, 83, 112, 132, 143, 163, 164, 168, 171, 178, 182, 183, 184, 185, 186, 187, 188, 195, 199, 200, 201, 203, 205, 207, 216, 228, 230, 235, 259, 264, 265, 266, 271, 275, 278, 284, 291, 300, 303, 304, 315, 326, 327, 328, 331, 332, 338, 346, 347, 349, 350, 353, 354, 355, 360, 362, 363, 364, 365, 368, 370, 383, 388, 389, 390, 391, 397, 398, 399, 406, 414, 431, 437, 448, 463, 464, 465, 466, 468, 469, 471], "row": [0, 1, 2, 83, 140, 143, 169, 231, 287], "posit": [0, 5, 28, 118, 145, 159, 165, 176, 182, 183, 218, 220, 228, 239, 285, 290, 302, 315, 320, 321, 322, 323, 324, 325, 365, 373, 377, 409, 419], "ad": [0, 1, 2, 4, 8, 142, 337, 437, 440, 441, 442, 443, 444, 445, 451, 465, 468, 471], "we": [0, 1, 2, 4, 5, 6, 116, 125, 126, 141, 164, 231, 232, 315, 329, 367, 375, 444, 446, 461, 463, 464, 465, 466, 468, 472], "also": [0, 1, 2, 5, 6, 7, 8, 11, 13, 87, 88, 89, 119, 128, 129, 133, 149, 152, 155, 158, 166, 167, 179, 180, 181, 195, 202, 217, 219, 223, 229, 231, 247, 250, 274, 298, 299, 310, 315, 349, 363, 365, 367, 368, 376, 396, 424, 426, 433, 439, 464, 465, 466, 467, 468, 469, 470, 473], "To": [0, 2, 3, 4, 5, 6, 8, 212, 315, 434, 439, 464, 465, 466, 470], "control": [0, 340, 461, 468], "addit": [0, 2, 5, 8, 13, 14, 142, 144, 146, 190, 319, 333, 339, 365, 369, 437, 466], "item": [0, 2, 4, 5, 6, 302, 439, 468, 469, 470], "togeth": [0, 1, 2, 6, 231, 302, 303, 465], "doe": [0, 2, 3, 5, 8, 207, 292, 300, 315, 464, 467, 468, 469], "perform": [0, 1, 2, 3, 5, 7, 14, 90, 101, 108, 109, 110, 111, 127, 130, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 163, 164, 168, 200, 232, 251, 264, 278, 315, 333, 385, 390, 391, 439, 464, 465, 467, 468, 472], "bound": [0, 241, 244, 245, 330, 394, 464, 467, 472], "check": [0, 2, 8, 82, 124, 177, 210, 352, 466, 467], "access": [0, 5, 50, 315, 437, 448, 465, 468, 472], "undefin": [0, 28, 112, 182, 183, 228, 239, 467], "typic": [0, 146, 329, 439, 464, 468], "result": [0, 5, 14, 18, 38, 78, 83, 94, 142, 144, 164, 185, 200, 232, 239, 248, 270, 302, 303, 304, 377, 406, 464, 466, 469], "unintend": 0, "invalid": [0, 83], "memori": [0, 1, 2, 7, 83, 205, 207, 208, 209, 211, 212, 213, 385, 437, 441, 464, 468, 469], "write": [0, 1, 2, 5, 315, 469], "scatter_add": 0, "scatter_prod": 0, "scatter_max": 0, "linear": [0, 2, 5, 6, 7, 298, 302, 315, 330, 331, 340, 352, 368, 370, 371, 372, 374, 376, 386, 395, 396, 397, 398, 399, 403, 422, 423, 424, 426, 434, 437, 448, 456, 464], "scatter_min": 0, "sqrt": [0, 5, 134, 146, 168, 319, 330, 333, 337, 339, 341, 369, 377, 388, 389, 390, 391, 397, 440, 442, 443, 444, 451, 464], "root": [0, 5, 144, 252, 267, 369], "rsqrt": 0, "softmax": [0, 5, 146, 315, 405, 408], "precis": [0, 2, 5, 139, 146, 315, 330, 369, 406, 447, 464], "power": [0, 466, 469], "rais": [0, 5, 185, 213, 229, 266, 352], "cumsum": 0, "inclus": [0, 41, 42, 43, 44, 108, 109, 110, 111, 159], "cumul": [0, 83, 108, 109, 110, 111], "cumprod": 0, "cummax": 0, "cummin": 0, "conv_gener": 0, "weight": [0, 4, 98, 99, 100, 101, 102, 103, 104, 142, 144, 302, 315, 352, 356, 367, 368, 406, 408, 437, 441, 444, 446, 448, 452, 466, 468], "padding_lo": 0, "padding_hi": 0, "kernel_dil": [0, 101], "input_dil": [0, 101], "group": [0, 1, 98, 99, 100, 101, 102, 103, 104, 116, 121, 122, 123, 125, 126, 127, 141, 146, 164, 231, 232, 292, 298, 320, 333, 367, 368, 465], "flip": [0, 101, 105], "gener": [0, 1, 2, 3, 4, 11, 18, 101, 140, 143, 154, 155, 189, 204, 234, 239, 240, 241, 244, 245, 385, 461, 464, 467, 468, 473], "convolut": [0, 98, 99, 100, 101, 102, 103, 104, 105, 320, 321, 322, 323, 324, 325, 327, 328], "filter": [0, 105, 320, 321, 322, 323, 324, 325, 345, 349], "conv1d": [0, 315], "dilat": [0, 98, 99, 100, 101, 102, 103, 104, 320, 321, 323, 324], "conv2d": [0, 315], "2d": [0, 99, 103, 118, 231, 319, 327], "conv3d": [0, 315], "tupl": [0, 30, 65, 68, 79, 95, 99, 100, 101, 103, 104, 125, 129, 131, 136, 138, 178, 185, 186, 187, 227, 231, 249, 269, 290, 293, 301, 302, 303, 304, 305, 317, 318, 321, 322, 324, 325, 342, 343, 352, 354, 375, 386, 441, 443, 444, 445, 446, 463, 466], "3d": [0, 2, 100, 104, 319, 328, 386], "conv_transpose1d": 0, "conv_transpose2d": 0, "conv_transpose3d": 0, "quantized_matmul": 0, "w": [0, 1, 4, 99, 100, 103, 104, 116, 141, 164, 231, 232, 290, 303, 318, 319, 321, 322, 324, 325, 327, 328, 341, 343, 439, 452, 466], "bias": [0, 116, 141, 164, 231, 232, 332, 338, 350, 362, 365], "group_siz": [0, 116, 141, 164, 231, 232, 298, 367, 368], "64": [0, 1, 90, 116, 141, 164, 231, 232, 298, 308, 367, 368], "bit": [0, 116, 141, 164, 179, 231, 232, 250, 298, 308, 345, 367, 368, 369], "quantiz": [0, 116, 141, 164, 190, 232, 367, 368], "its": [0, 1, 2, 8, 183, 200, 228, 243, 287, 299, 305, 315, 368, 439, 443, 444, 445, 465, 469, 472], "last": [0, 1, 5, 29, 78, 142, 144, 149, 152, 154, 155, 157, 158, 159, 163, 164, 170, 182, 183, 184, 186, 187, 188, 200, 209, 235, 265, 282, 292, 320, 321, 322, 323, 324, 325, 327, 328, 333, 386, 469], "dequant": [0, 231], "gather_qmm": 0, "lhs_indic": [0, 163, 164], "rhs_indic": [0, 163, 164], "level": [0, 163, 164, 390, 391], "tensordot": 0, "contract": [0, 131], "over": [0, 2, 5, 6, 15, 17, 26, 27, 28, 29, 98, 99, 100, 101, 102, 103, 104, 108, 109, 110, 111, 149, 152, 155, 158, 170, 185, 187, 189, 199, 201, 203, 216, 228, 230, 252, 264, 265, 271, 275, 282, 284, 291, 319, 320, 321, 322, 323, 324, 325, 333, 339, 369, 408, 453, 456, 465, 466], "axes_a": 0, "axes_b": 0, "outer": [0, 464, 468], "inner": [0, 464], "addmm": 0, "c": [0, 1, 2, 5, 14, 185, 317, 318, 319, 320, 321, 322, 323, 324, 325, 327, 328, 337, 338, 342, 343, 469, 470, 472], "alpha": [0, 2, 14, 231, 395, 419, 421, 424, 444, 451], "f": [0, 2, 4, 6, 112, 185, 315, 338, 444, 464, 469], "beta": [0, 2, 14, 116, 141, 231, 319, 333, 337, 339, 418, 439, 443, 444, 445, 446], "block_masked_mm": 0, "block_siz": [0, 90], "mask_out": [0, 90], "mask_lh": [0, 90], "mask_rh": [0, 90], "block": [0, 2, 5, 90, 385], "mask": [0, 5, 90, 146, 359, 365, 467], "gather_mm": [0, 164], "extract": [0, 5, 45, 117, 118, 315, 349, 437, 465], "construct": [0, 2, 6, 45, 117, 162, 224, 283, 296], "diag": [0, 187], "trace": [0, 3, 464], "implement": [0, 1, 4, 6, 145, 146, 185, 329, 349, 365, 373, 375, 377, 383, 385, 386, 431, 440, 441, 442, 443, 445, 446, 447, 459, 464, 466], "allow": [0, 1, 2, 177, 300, 315, 364, 437, 459, 465, 467, 470], "inject": 0, "ensur": [0, 1, 2, 8, 143, 300, 414, 465], "been": [0, 2, 5, 208, 468], "when": [0, 1, 2, 5, 7, 8, 94, 101, 112, 127, 182, 183, 184, 185, 187, 188, 190, 320, 321, 322, 323, 324, 325, 386, 390, 391, 406, 412, 418, 437, 439, 455, 461, 464, 465, 472], "atleast_1d": 0, "atleast": 0, "atleast_2d": 0, "atleast_3d": 0, "number_of_el": 0, "invert": 0, "int32": [0, 1, 11, 18, 38, 159, 177, 185, 241, 308, 386, 467, 470], "some": [0, 2, 4, 5, 6, 350, 362, 439, 448, 464, 466, 468], "scalar": [0, 2, 13, 14, 16, 30, 50, 78, 82, 87, 88, 89, 90, 91, 93, 128, 129, 133, 161, 162, 165, 166, 167, 168, 171, 179, 180, 181, 189, 195, 196, 197, 198, 200, 202, 217, 219, 220, 223, 227, 229, 234, 241, 244, 245, 247, 250, 254, 274, 290, 292, 295, 299, 419, 466, 468, 470], "us": [0, 3, 4, 5, 6, 7, 8, 18, 38, 83, 112, 116, 119, 121, 122, 125, 126, 127, 129, 141, 143, 145, 159, 164, 179, 182, 183, 184, 185, 186, 187, 188, 200, 207, 208, 209, 212, 231, 232, 248, 249, 250, 277, 301, 304, 308, 310, 315, 318, 327, 329, 330, 332, 338, 341, 343, 345, 349, 356, 363, 365, 367, 368, 370, 373, 377, 385, 386, 390, 391, 397, 398, 407, 434, 437, 439, 440, 441, 443, 444, 445, 446, 447, 448, 461, 463, 464, 465, 466, 467, 470, 472], "shapeless": [0, 94], "compil": [0, 3, 7, 8, 119, 132, 143, 465, 466, 468], "pun": 0, "intend": [0, 464], "conjug": [0, 96], "bitwise_and": 0, "bitwis": [0, 87, 88, 89, 179, 250], "bitwise_or": 0, "bitwise_xor": 0, "exclus": [0, 83, 89], "left_shift": 0, "shift": [0, 179, 250, 319], "left": [0, 5, 145, 179, 185, 231, 317, 318, 330, 342, 343, 373, 386, 397, 398, 409, 411, 419], "right_shift": 0, "right": [0, 1, 2, 8, 231, 250, 317, 318, 330, 342, 343, 386, 397, 398, 409, 411, 419], "mlx": [1, 3, 4, 5, 6, 8, 310, 315, 434, 437, 439, 461, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472], "support": [1, 2, 5, 7, 8, 16, 90, 100, 103, 104, 146, 159, 168, 171, 182, 183, 184, 186, 187, 188, 190, 200, 231, 239, 465, 466, 467, 469, 471], "through": [1, 2, 272, 385, 446, 464, 466, 469], "python": [1, 3, 5, 50, 68, 78, 136, 301, 302, 303, 304, 305, 437, 447, 448, 450, 463, 465, 466, 469], "api": [1, 2, 330, 465, 466], "let": [1, 2, 4, 5, 183, 464, 466, 468, 469], "elementwis": [1, 96, 97], "def": [1, 2, 4, 5, 6, 112, 143, 290, 315, 437, 464, 465, 466, 467, 468, 469, 472], "exp_elementwis": [1, 143], "mx": [1, 2, 3, 4, 5, 6, 38, 96, 97, 112, 123, 126, 143, 159, 177, 185, 186, 190, 256, 290, 300, 315, 317, 318, 319, 337, 340, 342, 343, 345, 352, 356, 371, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 403, 406, 407, 408, 412, 415, 422, 432, 434, 437, 439, 461, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473], "uint": [1, 2, 143], "elem": [1, 143], "thread_position_in_grid": [1, 2, 143], "tmp": [1, 143], "inp": [1, 143], "fast": [1, 7, 330, 398, 465, 472], "metal_kernel": 1, "name": [1, 2, 143, 164, 190, 231, 232, 254, 255, 256, 257, 315, 333, 349, 352, 354, 465, 467, 471], "myexp": [1, 143], "input_nam": [1, 143], "output_nam": [1, 143], "threadgroup": [1, 2, 143], "256": [1, 2, 6, 143], "output_shap": [1, 143], "output_dtyp": [1, 143], "random": [1, 2, 3, 4, 5, 6, 7, 143, 317, 318, 319, 337, 342, 343, 352, 359, 464, 466, 472, 473], "normal": [1, 2, 4, 5, 142, 143, 144, 239, 244, 315, 317, 318, 319, 333, 337, 339, 342, 343, 369, 385, 388, 390, 469, 472], "16": [1, 143, 308, 317, 337, 342, 345, 437], "float16": [1, 2, 11, 143, 168, 190, 308, 345, 468, 469], "assert": [1, 2, 143], "onli": [1, 2, 5, 7, 8, 82, 90, 99, 100, 101, 103, 104, 185, 231, 239, 292, 315, 349, 350, 352, 357, 359, 362, 363, 364, 437, 464, 465, 466, 471, 472], "requir": [1, 2, 5, 315, 465, 468, 469], "pass": [1, 2, 5, 6, 65, 79, 226, 227, 290, 299, 301, 302, 303, 315, 350, 362, 363, 364, 375, 464, 465, 468], "bodi": [1, 143], "signatur": [1, 143], "abov": [1, 2, 5, 231, 288, 315, 386, 444, 465, 466, 467, 468, 472], "kei": [1, 3, 5, 146, 206, 234, 235, 236, 238, 239, 240, 241, 243, 244, 245, 301, 302, 349, 350, 362, 365, 448, 461, 463, 466], "so": [1, 2, 5, 8, 165, 168, 290, 326, 386, 439, 464, 465, 468, 472], "devic": [1, 2, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 121, 122, 125, 126, 127, 128, 129, 130, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 206, 213, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 291, 292, 295, 296, 297, 306, 472, 473], "float16_t": [1, 2], "inp_shap": 1, "inp_strid": 1, "inp_ndim": 1, "conveni": [1, 2, 6, 177], "thei": [1, 2, 4, 5, 8, 16, 105, 164, 171, 375, 410, 437, 446, 463, 464, 465, 468, 470, 471, 472], "present": 1, "list": [1, 5, 10, 15, 17, 30, 71, 78, 83, 84, 85, 86, 91, 94, 95, 101, 131, 136, 143, 148, 149, 151, 152, 154, 155, 157, 158, 162, 165, 178, 185, 199, 201, 203, 204, 216, 224, 227, 230, 234, 235, 236, 238, 239, 240, 241, 244, 245, 254, 264, 266, 270, 271, 275, 282, 283, 286, 290, 291, 293, 296, 301, 304, 305, 315, 350, 352, 353, 354, 355, 360, 362, 363, 364, 437, 439, 443, 444, 445, 446, 455, 463, 464, 465, 466, 468], "instanti": [1, 2, 6, 468], "custom_kernel_myexp_float": 1, "can": [1, 2, 3, 5, 7, 8, 13, 18, 65, 79, 83, 87, 88, 89, 94, 118, 119, 120, 128, 129, 133, 136, 166, 167, 179, 180, 181, 185, 195, 202, 217, 219, 223, 229, 234, 235, 241, 244, 245, 247, 250, 254, 274, 285, 290, 304, 315, 318, 329, 330, 343, 349, 362, 367, 375, 386, 408, 434, 437, 439, 447, 448, 461, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473], "core": [1, 2, 3, 4, 5, 6, 298, 315, 317, 318, 319, 337, 342, 343, 352, 355, 357, 360, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 408, 415, 434, 437, 439, 464, 465, 469, 470], "attribut": [1, 9, 10, 11, 30, 306, 358, 437, 459], "These": [1, 2, 94, 279, 408, 472], "argument": [1, 31, 65, 79, 94, 136, 165, 290, 302, 303, 304, 315, 386, 461, 465, 466, 471, 472, 473], "defin": [1, 2, 4, 5, 6, 8, 112, 126, 143, 164, 185, 232, 298, 301, 469], "tabl": [1, 185, 308, 329], "shade": [1, 2], "languag": [1, 2], "specif": [1, 2, 8, 465, 466], "follow": [1, 2, 5, 6, 7, 8, 18, 105, 116, 141, 163, 185, 227, 231, 303, 315, 397, 398, 412, 440, 441, 442, 443, 444, 445, 446, 452, 461, 464, 465, 466, 472], "void": [1, 2], "buffer": [1, 2, 207, 469], "uint3": 1, "host_nam": [1, 2], "decltyp": 1, "verbos": [1, 143], "__call__": [1, 5, 6, 315, 437], "print": [1, 2, 4, 5, 6, 8, 300, 301, 302, 303, 305, 315, 461, 464, 465, 466, 467, 468, 469, 470], "code": [1, 143, 464, 465, 468], "debug": [1, 3, 465], "purpos": [1, 185], "ensure_row_contigu": [1, 143], "default": [1, 2, 8, 14, 15, 16, 17, 18, 26, 27, 28, 29, 82, 83, 90, 94, 95, 98, 99, 100, 101, 102, 103, 104, 112, 113, 114, 116, 117, 118, 121, 122, 123, 125, 126, 127, 140, 141, 143, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 163, 164, 165, 168, 169, 171, 182, 183, 184, 185, 186, 187, 188, 189, 190, 199, 201, 203, 204, 212, 213, 216, 220, 224, 227, 228, 230, 231, 232, 234, 235, 236, 238, 239, 240, 241, 243, 244, 245, 248, 249, 251, 258, 259, 265, 266, 269, 270, 271, 273, 275, 277, 282, 284, 285, 286, 287, 288, 289, 290, 291, 294, 296, 298, 308, 317, 318, 319, 320, 321, 322, 323, 324, 325, 331, 332, 334, 337, 338, 340, 341, 342, 343, 345, 350, 352, 357, 359, 362, 365, 366, 367, 368, 370, 373, 377, 381, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 399, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 437, 440, 441, 442, 443, 444, 445, 446, 451, 452, 453, 461, 463, 464, 466, 469, 471, 473], "need": [1, 2, 5, 6, 7, 8, 82, 231, 315, 363, 364, 377, 385, 461, 465, 466, 468, 469, 470, 472], "befor": [1, 2, 5, 8, 28, 143, 228, 349, 385, 448, 465, 467, 468], "launch": [1, 2, 123, 465, 467], "layout": 1, "contigu": [1, 2, 83, 143], "make": [1, 2, 3, 5, 6, 8, 200, 222, 259, 315, 453, 454, 456, 457, 464, 468, 470, 472], "easier": [1, 468], "sinc": [1, 2, 5, 6, 164, 209, 437, 446, 455, 469, 472], "don": [1, 8, 464, 472], "worri": [1, 468], "about": [1, 2, 5, 6, 131, 206, 468, 472], "gap": 1, "dim": [1, 5, 145, 146, 329, 333, 337, 339, 365, 367, 369, 373, 377, 385], "want": [1, 5, 465, 466, 472], "avoid": [1, 2, 357, 464], "automat": [1, 2, 7, 143, 190, 465, 470, 471, 472], "a_shap": 1, "a_strid": 1, "a_ndim": 1, "built": [1, 2, 8, 468], "util": [1, 2, 5, 7, 8, 256, 315, 439, 465], "fetch": 1, "thread": [1, 2], "arbitrarili": [1, 94, 315, 463, 466, 470], "without": [1, 5, 7, 272, 365, 433, 463, 464, 465, 468, 469, 472], "reli": [1, 2], "backend": [1, 8, 123, 124], "h": [1, 2, 98, 99, 100, 102, 103, 104, 185, 318, 319, 321, 322, 324, 325, 327, 328, 332, 338, 343, 370, 466, 468], "includ": [1, 2, 108, 109, 110, 111, 143, 207, 208, 213, 339, 346, 358, 368, 409, 439, 464, 466, 467, 470, 471, 473], "loc": [1, 238, 240], "elem_to_loc": [1, 2], "alwai": [1, 83, 207, 301, 466], "myexp_strid": 1, "more": [1, 2, 3, 6, 10, 78, 118, 163, 182, 183, 184, 187, 188, 200, 212, 213, 254, 255, 308, 315, 319, 327, 373, 377, 385, 386, 388, 389, 390, 391, 406, 461, 464, 465, 466, 467, 470, 472], "grid_sampl": 1, "bilinear": [1, 386], "ll": [1, 4, 6, 411, 464, 466], "op": [1, 2, 226, 292, 350, 468], "grid_sample_ref": 1, "h_in": 1, "w_in": 1, "_": [1, 3, 4, 5, 303, 315, 453, 454, 455, 456, 457, 461, 464, 468, 472], "ix": 1, "ii": 1, "ix_nw": 1, "iy_nw": 1, "ix_n": 1, "iy_n": 1, "ix_sw": 1, "iy_sw": 1, "ix_s": 1, "iy_s": 1, "nw": 1, "ne": 1, "sw": 1, "se": 1, "i_nw": 1, "none": [1, 2, 5, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 115, 116, 117, 118, 119, 121, 122, 125, 126, 127, 128, 129, 130, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 211, 214, 215, 216, 217, 218, 219, 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 294, 295, 296, 297, 298, 301, 302, 303, 304, 306, 317, 318, 330, 342, 343, 345, 349, 350, 357, 362, 365, 370, 377, 385, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 441, 459, 467], "i_n": 1, "i_sw": 1, "i_s": 1, "mask_nw": 1, "mask_n": 1, "mask_sw": 1, "mask_s": 1, "now": [1, 2, 5, 8, 368, 464, 465, 469], "custom_funct": 1, "gpu": [1, 3, 7, 8, 206, 464, 467, 472], "both": [1, 2, 13, 87, 88, 89, 128, 129, 133, 166, 167, 177, 179, 180, 181, 185, 195, 202, 217, 219, 223, 229, 235, 247, 250, 274, 298, 317, 318, 337, 338, 342, 343, 439, 464, 465, 466, 470, 472], "forward": [1, 2, 290, 464, 468], "backward": [1, 464, 466], "fuse": [1, 464], "4d": [1, 386], "gn": 1, "gm": 1, "out_shap": [1, 2], "x_shape": 1, "gh": 1, "grid_shap": 1, "gw": 1, "w_stride": 1, "h_stride": 1, "b_stride": 1, "grid_idx": 1, "batch_idx": 1, "channel_idx": 1, "base_idx": 1, "np": [1, 5, 6, 465, 469, 470], "reason": [1, 5, 467], "1024": [1, 5], "On": [1, 464, 466, 468], "m1": [1, 5, 464, 466, 472], "see": [1, 2, 5, 6, 8, 10, 11, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 185, 212, 254, 255, 298, 308, 315, 319, 327, 330, 334, 335, 336, 348, 366, 367, 368, 371, 372, 373, 374, 376, 377, 378, 379, 380, 381, 382, 384, 386, 388, 389, 390, 391, 396, 397, 398, 424, 464, 465, 466, 467, 470, 472], "big": [1, 464], "improv": [1, 2, 3, 5, 406, 440, 441, 442, 443, 444, 445, 451, 464, 465], "55": 1, "7m": 1, "6": [1, 2, 5, 185, 256, 372, 385, 389, 397, 398, 402, 409, 419, 423, 451, 464, 467, 470], "8x": 1, "speed": [1, 2], "up": [1, 2, 5, 112, 464], "decor": [1, 112], "transform": [1, 5, 7, 112, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 168, 299, 315, 319, 333, 339, 341, 349, 350, 362, 368, 373, 467], "differenti": [1, 2, 7], "atom": [1, 143], "x_grad": 1, "grid_grad": 1, "few": [1, 2, 5, 6, 7, 8, 465, 468, 470], "extra": [1, 302, 303], "featur": [1, 7, 98, 99, 100, 101, 102, 103, 104, 145, 319, 332, 333, 337, 338, 339, 341, 368, 369, 370, 373, 385, 386, 464, 468], "init_valu": 1, "initi": [1, 3, 4, 5, 123, 304, 315, 319, 333, 337, 339, 341, 366, 369, 387, 388, 389, 390, 391, 392, 393, 394, 437, 448, 453, 454, 456, 457, 464, 465, 468], "run": [1, 2, 3, 5, 6, 7, 8, 9, 143, 226, 306, 319, 345, 440, 441, 443, 444, 445, 464, 465, 468, 472, 473], "u": [1, 2, 182, 187, 341, 364, 459, 468], "part": [1, 2, 466, 467], "atomic_output": [1, 143], "design": [1, 4, 7, 461, 472], "simultan": 1, "section": [1, 5, 8, 266, 419, 464, 465, 466], "15": [1, 8, 185, 304, 464], "detail": [1, 2, 10, 212, 315, 327, 373, 377, 386, 388, 389, 390, 391, 440, 442, 443, 445, 446, 467, 470], "grid_sample_vjp": 1, "primal": [1, 2, 112, 178, 293], "cotang": [1, 2, 112, 293], "nearest": [1, 386], "larger": [1, 145, 373, 446], "simdgroup": 1, "c_pad": 1, "ceildiv": 1, "threads_per_simdgroup": 1, "gix": 1, "gii": 1, "cot_index": 1, "cot": 1, "atomic_fetch_add_explicit": 1, "memory_order_relax": 1, "gix_mult": 1, "giy_mult": 1, "across": [1, 2, 333, 465], "much": [1, 2, 5, 317, 318, 342, 343, 464, 468], "faster": [1, 2, 8, 129, 396, 406, 464, 466], "than": [1, 2, 5, 78, 105, 118, 129, 145, 163, 166, 167, 180, 181, 182, 183, 184, 187, 188, 200, 212, 300, 302, 373, 383, 386, 415, 418, 431, 441, 446, 464, 466, 472], "pure": [1, 315, 439], "simd_sum": 1, "thread_index_in_simdgroup": 1, "grid_sample_grad": 1, "channel": [1, 98, 99, 100, 101, 102, 103, 104, 319, 320, 321, 322, 323, 324, 325, 327, 328], "simd": 1, "our": [1, 2, 5, 6, 375, 440, 441, 442, 443, 445, 446, 465], "overlap": 1, "simdgroup_s": 1, "32": [1, 5, 6, 90, 231, 232, 308, 318, 343, 369, 464], "grid_siz": 1, "There": [1, 2, 315, 386, 464], "even": [1, 2, 5, 94, 464, 468, 469], "676": 1, "4m": 1, "40x": 1, "you": [2, 3, 5, 6, 7, 8, 315, 377, 385, 434, 461, 464, 465, 466, 467, 469, 471, 472], "extend": [2, 227], "guid": [2, 7], "explain": 2, "how": [2, 5, 6, 315, 317, 318, 320, 321, 322, 323, 324, 325, 329, 342, 343, 367, 386, 447, 464, 467, 472], "simpl": [2, 5, 6, 315, 329, 433, 439, 464, 465, 466, 468], "sai": [2, 5, 434, 468], "would": [2, 5, 386, 465, 467, 468, 469, 472], "like": [2, 5, 7, 126, 177, 225, 297, 328, 414, 448, 450, 464, 465, 466, 468, 469, 470, 472], "them": [2, 5, 121, 315, 350, 362, 465, 472], "coeffici": [2, 440, 441, 443, 444, 445, 446], "respect": [2, 4, 6, 142, 144, 163, 164, 165, 231, 290, 302, 315, 319, 330, 333, 337, 339, 437, 466, 470], "get": [2, 4, 6, 8, 99, 100, 101, 103, 104, 113, 114, 206, 207, 208, 209, 237, 315, 464, 466, 468, 472], "z": [2, 332, 464, 468], "directli": [2, 5, 83], "import": [2, 3, 4, 5, 6, 8, 112, 168, 185, 256, 290, 301, 302, 303, 304, 305, 315, 317, 318, 319, 337, 342, 343, 352, 386, 406, 408, 415, 434, 437, 439, 464, 465, 466, 467, 468, 469, 470], "simple_axpbi": 2, "while": [2, 3, 5, 8, 249, 373, 468, 469], "leav": [2, 136, 302, 303, 304], "howev": [2, 112, 315, 330, 333, 448, 461, 464, 465, 468, 469], "mai": [2, 185, 298, 327, 465, 466, 467], "underli": [2, 292], "perhap": [2, 5], "tutori": 2, "go": [2, 5, 466], "It": [2, 5, 8, 126, 165, 259, 290, 300, 304, 315, 364, 368, 447, 459, 469, 471], "cover": 2, "structur": [2, 447, 466], "librari": [2, 8, 310, 315], "redirect": 2, "acceler": [2, 319], "appropri": [2, 464], "metal": [2, 7, 143], "vjp": [2, 112, 470], "jvp": [2, 112, 470], "graph": [2, 5, 6, 7, 466], "rule": [2, 439], "evalu": [2, 5, 6, 7, 127, 136, 178, 293, 315, 348, 359, 437, 439, 464, 470], "discuss": 2, "front": 2, "axpbi": 2, "numpi": [2, 5, 6, 7, 13, 16, 18, 87, 88, 89, 91, 128, 129, 133, 166, 167, 171, 179, 180, 181, 195, 200, 202, 217, 219, 223, 229, 247, 250, 274, 468, 470, 471], "style": [2, 13, 16, 87, 88, 89, 128, 129, 133, 166, 167, 171, 179, 180, 181, 195, 200, 202, 217, 219, 223, 229, 247, 250, 274], "upcast": 2, "factor": [2, 14, 168, 182, 183, 186, 386, 408, 454, 457], "stream": [2, 7, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 121, 122, 125, 126, 127, 128, 129, 130, 133, 134, 135, 137, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 291, 292, 295, 296, 297, 465, 472], "schedul": [2, 213, 439, 453, 454, 455, 456, 457, 459, 472], "simplest": [2, 315, 465], "wai": [2, 5, 8, 315, 386, 464, 465, 466, 467], "term": [2, 409, 440, 441, 442, 443, 444, 445, 451], "exist": [2, 3, 5, 350, 362], "themselv": [2, 464], "contain": [2, 5, 8, 28, 29, 68, 94, 118, 131, 153, 154, 155, 163, 164, 185, 196, 197, 198, 231, 266, 295, 300, 315, 349, 351, 352, 358, 385, 415, 434, 437, 464, 465, 466], "act": [2, 414], "nor": [2, 165, 290], "rather": [2, 466, 472], "easi": [2, 315, 465], "interfac": 2, "further": [2, 8, 466], "ha": [2, 3, 5, 6, 7, 8, 78, 94, 118, 127, 153, 154, 156, 157, 158, 165, 182, 183, 184, 187, 188, 204, 208, 235, 319, 332, 338, 341, 370, 437, 439, 464, 467, 468, 470, 472], "method": [2, 5, 9, 10, 30, 112, 120, 298, 306, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 356, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 437, 440, 441, 442, 443, 444, 445, 446, 448, 451, 452, 459], "concret": [2, 332, 338, 341, 370, 468, 472], "class": [2, 5, 6, 9, 10, 11, 30, 112, 120, 306, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 437, 440, 441, 442, 443, 444, 445, 446, 451, 452, 459], "public": [2, 315], "explicit": [2, 448, 461, 469], "alpha_": 2, "beta_": 2, "know": [2, 5], "itself": [2, 298, 448], "popul": 2, "unnecessari": [2, 5], "alloc": [2, 208, 212, 213, 437], "respons": 2, "eval_cpu": 2, "overrid": [2, 132], "eval_gpu": 2, "jacobian": [2, 178, 293, 470], "argnum": [2, 165, 290, 466], "cotan": [2, 112], "repres": [2, 5, 120, 123, 164, 415, 419, 469], "virtual": 2, "vmap": [2, 112, 466, 468, 470], "ostream": 2, "o": [2, 8, 146, 338], "is_equival": 2, "privat": 2, "fall": [2, 112], "eval": [2, 3, 4, 5, 6, 315, 437, 439, 464, 465, 466, 468, 470], "deriv": [2, 466, 468], "reimplement": 2, "promot": 2, "promoted_dtyp": 2, "promote_typ": 2, "out_dtyp": 2, "is_floating_point": 2, "cast": [2, 37, 156, 157, 158, 190, 345, 357, 469], "x_cast": 2, "y_cast": 2, "broadcasted_input": 2, "unique_ptr": 2, "make_shar": 2, "to_stream": 2, "handl": [2, 315, 464], "resolv": 2, "No": [2, 5], "happen": [2, 5, 142, 385, 439, 464, 468], "call": [2, 3, 5, 6, 31, 126, 161, 205, 209, 315, 329, 350, 362, 367, 375, 437, 439, 448, 464, 465, 466, 468], "alon": [2, 469], "execut": [2, 8, 84, 85, 86, 209, 469, 472], "user": [2, 5, 315], "naiv": [2, 466], "version": [2, 8, 116, 141, 195, 199, 231, 264, 294, 461, 466, 467], "declar": 2, "member": [2, 315, 355, 360], "earlier": 2, "find": [2, 4, 8, 465], "captur": [2, 3, 94, 214, 215, 315, 464], "axpby_impl": 2, "readi": 2, "malloc_or_wait": 2, "synchron": [2, 464], "avail": [2, 4, 5, 6, 8, 10, 124, 210, 310, 472], "wait": [2, 5, 213], "here": [2, 5, 439, 464, 466, 468, 471, 472], "request": 2, "under": [2, 185], "pressur": 2, "set_data": 2, "nbyte": 2, "collect": [2, 302, 303, 463], "pointer": 2, "x_ptr": 2, "y_ptr": 2, "out_ptr": 2, "relev": 2, "static_cast": 2, "out_idx": 2, "map": [2, 6, 38, 190, 302, 329, 345], "x_offset": 2, "y_offset": 2, "regularli": 2, "doesn": [2, 315], "should": [2, 4, 5, 6, 8, 83, 118, 121, 142, 143, 144, 146, 178, 205, 214, 231, 279, 285, 290, 293, 298, 301, 315, 320, 321, 322, 323, 324, 325, 327, 328, 359, 365, 375, 408, 410, 415, 437, 463, 464, 465, 466, 468, 469, 473], "work": [2, 3, 5, 213, 464, 465, 466, 467, 468], "incom": 2, "accordingli": 2, "dispatch": 2, "bfloat16": [2, 11, 168, 308, 469], "complex64": [2, 11, 308], "throw": [2, 94, 123], "encount": [2, 466], "unexpect": [2, 18], "correct": [2, 8, 443, 444, 445, 467, 468], "bfloat16_t": 2, "complex64_t": 2, "runtime_error": 2, "good": [2, 8, 439, 464, 465, 472], "fallback": 2, "routin": 2, "framework": [2, 7], "certain": [2, 359, 464], "case": [2, 5, 121, 122, 123, 125, 126, 127, 149, 152, 153, 155, 156, 157, 158, 159, 182, 183, 184, 186, 187, 188, 200, 249, 269, 318, 327, 343, 383, 400, 418, 424, 430, 431, 447, 448, 464, 466, 470, 471, 472, 473], "half": [2, 18, 241, 245, 373, 468], "fix": [2, 5, 8, 468], "direct": [2, 5, 347, 446, 472], "column": [2, 140, 169, 231], "place": [2, 5, 38, 251, 298, 465, 468, 469], "expect": [2, 5, 320, 321, 322, 323, 324, 325, 326, 327, 328, 377, 385, 409, 464, 467], "catlas_saxpbi": 2, "axpby_impl_acceler": 2, "special": 2, "copy_inplac": 2, "copytyp": 2, "inplac": [2, 8], "incx": 2, "inci": 2, "fit": [2, 231, 472], "criteria": 2, "With": 2, "mind": [2, 5], "finish": 2, "singl": [2, 6, 136, 178, 190, 204, 227, 293, 318, 343, 464, 467, 471], "flag": [2, 8, 464, 469], "row_contigu": 2, "col_contigu": 2, "common": [2, 439, 464, 468], "just": [2, 6, 339, 464, 467], "enough": [2, 468], "plan": [2, 464], "enjoi": 2, "appl": [2, 5, 7, 8, 472], "silicon": [2, 5, 7, 8, 472], "address": 2, "kernel": [2, 7, 8, 98, 99, 100, 101, 102, 103, 104, 143, 317, 318, 342, 343, 464, 467], "written": 2, "help": [2, 5, 464, 472], "resourc": 2, "walkthrough": 2, "pipelin": 2, "document": [2, 3, 65, 79, 254, 255, 308, 464, 466, 467], "cpp": 2, "keep": [2, 15, 17, 26, 27, 199, 201, 203, 216, 230, 271, 275, 291, 315, 349, 466, 468], "exactli": [2, 5, 145, 352, 466], "mani": [2, 83, 266, 320, 321, 322, 323, 324, 325, 329, 367, 464, 465, 468], "pick": 2, "axpby_gener": 2, "x_stride": 2, "y_stride": 2, "7": [2, 5, 185, 231, 467], "give": [2, 5, 6, 28, 464], "uniqu": [2, 461], "host": 2, "identifi": [2, 301, 463], "instantiate_axpbi": 2, "type_nam": 2, "axpby_general_": 2, "set": [2, 5, 6, 8, 94, 112, 119, 121, 122, 123, 125, 126, 127, 132, 142, 145, 206, 212, 213, 258, 259, 273, 330, 339, 341, 348, 350, 357, 358, 359, 362, 363, 368, 373, 383, 407, 419, 431, 437, 439, 441, 448, 461, 466, 468], "grid": [2, 143, 204], "shown": 2, "below": [2, 8, 185, 287, 289, 308, 386, 468], "prepar": [2, 5], "carri": 2, "ostringstream": 2, "kname": 2, "axpby_": 2, "general_": 2, "type_to_nam": 2, "sure": [2, 3, 5, 8, 315, 464], "register_librari": 2, "mlx_ext": 2, "get_kernel": 2, "str": [2, 105, 130, 131, 143, 165, 185, 190, 204, 206, 214, 253, 254, 255, 256, 257, 290, 301, 305, 345, 346, 349, 350, 352, 354, 356, 362, 386, 390, 391, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419], "encod": [2, 145, 373, 377, 385, 408], "compute_encod": 2, "get_command_encod": 2, "setcomputepipelinest": 2, "regist": [2, 6], "those": [2, 5, 315], "nelem": 2, "set_input_arrai": 2, "set_output_arrai": 2, "setbyt": 2, "sizeof": 2, "higher": [2, 170, 415, 466], "tgp_size": 2, "maxtotalthreadsperthreadgroup": 2, "mtl": 2, "group_dim": 2, "grid_dim": 2, "among": 2, "dispatchthread": 2, "thing": [2, 5, 465], "track": [2, 315, 319], "activ": [2, 8, 207, 327, 383, 385, 400, 420, 430, 431, 433, 464], "command_buff": 2, "mtlcommandbuff": 2, "associ": [2, 256, 257, 468], "command": [2, 3, 8, 465], "instead": [2, 8, 112, 315, 364, 377, 465, 466, 468], "end_encod": 2, "until": [2, 468, 470], "hit": 2, "flush": 2, "next": [2, 5, 6, 212], "top": [2, 284, 341, 386], "diff": 2, "push": 2, "similarli": [2, 8, 200, 466, 468], "scale_arr": 2, "contribut": 2, "tangent_x": 2, "tangent_i": 2, "unus": 2, "arg": [2, 5, 10, 120, 136, 256, 257], "push_back": 2, "fulli": [2, 7, 464, 465, 469, 472], "look": [2, 5, 465], "overal": 2, "directori": [2, 5, 8], "mlx_sample_extens": 2, "__init__": [2, 5, 6, 9, 10, 11, 30, 112, 120, 306, 315, 437], "py": [2, 5, 8, 465], "cmakelist": 2, "txt": 2, "setup": [2, 4, 6, 8, 464], "packag": [2, 4, 6, 8, 310, 434, 465], "hold": [2, 5, 10, 11, 185, 464], "instal": 2, "nanobind": [2, 385], "compon": [2, 5], "etc": [2, 231, 315, 386, 465], "alreadi": [2, 3, 5, 465], "nb_modul": 2, "_ext": 2, "doc": [2, 6, 465], "sampl": [2, 4, 5, 189, 234, 235, 236, 238, 239, 241, 244, 245, 388, 389, 390, 391, 393, 394, 409, 415, 419, 461, 464], "_a": 2, "nb": 2, "kw_onli": 2, "r": [2, 5, 186, 290, 327, 332], "most": [2, 235, 315, 450, 464, 465, 466, 467, 468], "complex": [2, 96, 97, 154, 155, 156, 157, 158, 301, 308, 315, 364, 464, 466], "come": [2, 5, 465, 466], "bell": 2, "whistl": 2, "liter": [2, 227, 386, 390, 391, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419], "modul": [2, 5, 6, 298, 299, 375, 385, 434, 450, 463, 464, 468], "caster": 2, "find_packag": 2, "config": [2, 465], "link": [2, 8], "your": [2, 5, 8, 437, 466, 468], "add_librari": 2, "target_sourc": 2, "cmake_current_list_dir": 2, "header": [2, 143], "target_include_directori": 2, "target_link_librari": 2, "attach": 2, "mlx_build_metallib": 2, "metallib": [2, 8], "target": [2, 290, 406, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 464], "what": [2, 5, 302], "practic": [2, 464], "mlx_build_met": [2, 8], "mlx_ext_metallib": 2, "titl": 2, "include_dir": 2, "project_source_dir": 2, "mlx_include_dir": 2, "output_directori": 2, "cmake_library_output_directori": 2, "add_depend": 2, "endif": 2, "final": [2, 4, 5, 6, 168, 453, 456], "nanobind_add_modul": 2, "nb_static": 2, "stable_abi": 2, "lto": 2, "nomins": 2, "nb_domain": 2, "build_shared_lib": [2, 8], "target_link_opt": 2, "wl": 2, "rpath": 2, "loader_path": 2, "onc": [2, 8, 464], "describ": [2, 468], "__name__": [2, 5], "__main__": [2, 5], "descript": [2, 5, 308], "ext_modul": 2, "cmakeextens": 2, "cmdclass": 2, "build_ext": [2, 8], "cmakebuild": 2, "package_data": 2, "dylib": 2, "extras_requir": 2, "dev": [2, 8], "zip_saf": 2, "python_requir": 2, "though": [2, 5, 464, 468, 469], "pip": [2, 8], "develop": [2, 8], "j8": 2, "libmlx_ext": 2, "cpython": 2, "3x": 2, "darwin": 2, "try": [2, 8], "after": [2, 5, 6, 28, 159, 161, 164, 205, 228, 231, 319, 333, 339, 345, 346, 350, 352, 359, 362, 363, 364, 365, 385, 418, 464, 472], "abl": [2, 231], "simpli": [2, 5, 8, 340, 371, 395, 403, 422, 432, 437, 464, 465, 466], "plai": [2, 5], "quick": [2, 7], "benchmark": [2, 464], "compar": [2, 82, 464], "time": [2, 5, 8, 213, 283, 315, 317, 318, 332, 338, 342, 343, 370, 464, 466, 468, 472], "set_default_devic": 2, "512": [2, 3, 5, 385, 472], "bench": 2, "warm": [2, 464], "100": [2, 4, 5, 406, 456, 464, 466, 468, 472], "5000": 2, "e": [2, 6, 8, 112, 134, 143, 163, 164, 178, 260, 319, 320, 321, 322, 323, 324, 325, 327, 328, 333, 337, 339, 350, 369, 404, 405, 427, 428, 433, 439, 442, 464, 468, 473], "simple_tim": 2, "custom_tim": 2, "3f": [2, 6, 464], "114": 2, "109": 2, "modest": 2, "awai": [2, 5], "nn": [2, 5, 6, 256, 302, 315, 434, 437, 439, 448, 450, 464, 468], "grad": [2, 4, 6, 290, 300, 439, 447, 464, 465, 466, 467, 468, 470], "profil": 3, "optim": [3, 4, 6, 7, 363, 464, 465, 466, 468], "build": [3, 5, 7, 390, 437, 464], "mlx_metal_debug": [3, 8], "record": [3, 209, 468], "dure": [3, 94, 326, 327, 328, 386, 469], "later": [3, 8, 439], "inspect": [3, 464, 470], "label": [3, 4, 408, 415], "object": [3, 10, 30, 50, 78, 94, 143, 177, 256, 294, 301, 302, 303, 304, 308, 327, 385, 463], "queue": 3, "readabl": 3, "enabl": [3, 5, 8, 94, 132, 452], "prepend": [3, 200], "cmake_arg": 3, "dmlx_metal_debug": 3, "ON": [3, 8], "start_captur": 3, "applic": [3, 8], "mtl_capture_en": 3, "uniform": [3, 315, 341, 352, 389, 391, 434, 461, 464, 466, 472], "trace_fil": 3, "mlx_trace": 3, "gputrac": [3, 214], "path": [3, 8, 131, 214, 256, 257, 298, 303, 352, 465], "stop_captur": 3, "open": [3, 8, 18, 241, 245], "replai": 3, "great": 3, "overview": 3, "oper": [3, 5, 7, 9, 37, 84, 85, 86, 101, 146, 163, 164, 229, 264, 272, 279, 306, 315, 385, 446, 464, 465, 466, 467, 468, 469, 470, 472, 473], "checkout": [3, 464], "inform": [3, 5, 6, 8, 131, 206, 254, 255, 308, 315, 319, 330, 365, 466, 472], "skip": [3, 83], "save": [3, 5, 7, 190, 214, 231, 254, 255, 256, 257, 356, 468], "project": [3, 5, 365], "cmake": [3, 8], "mkdir": [3, 8], "cd": [3, 8], "g": [3, 8, 112, 143, 185, 231, 338, 433, 451, 452, 468, 473], "xcodeproj": 3, "metal_captur": 3, "schema": 3, "basic": [4, 251, 466], "model": [4, 6, 7, 256, 298, 299, 302, 303, 315, 345, 348, 350, 352, 356, 359, 361, 362, 363, 365, 385, 434, 437, 439, 447, 448, 450, 464, 465, 468], "learn": [4, 6, 7, 319, 333, 337, 339, 366, 369, 439, 440, 441, 442, 443, 444, 445, 446, 451, 452], "problem": [4, 6, 315], "metadata": [4, 190, 254, 255], "num_featur": [4, 319], "num_exampl": 4, "1_000": 4, "num_it": 4, "10_000": 4, "iter": [4, 6, 187, 302, 303, 461, 464, 468], "sgd": [4, 6, 439, 446, 448, 453, 454, 457, 464], "lr": [4, 446], "01": [4, 340, 403, 444], "rate": [4, 439, 440, 441, 442, 443, 444, 445, 446, 451, 452], "synthet": 4, "dataset": [4, 465, 468], "ground": [4, 5, 408, 418], "truth": [4, 408, 418], "w_star": 4, "gaussian": [4, 330, 396, 397, 398, 409], "nois": 4, "noisi": 4, "ep": [4, 142, 144, 319, 333, 337, 339, 369, 407, 409, 419, 439, 440, 441, 442, 443, 444, 445, 451], "loss": [4, 6, 290, 315, 439, 464, 465, 466, 468], "loss_fn": [4, 6, 439, 464, 466], "grad_fn": [4, 464, 466], "randomli": [4, 5, 326, 327, 328], "Then": [4, 8], "repeatedli": 4, "verifi": [4, 8], "close": [4, 7, 8, 16, 171], "error_norm": 4, "5f": 4, "someth": [4, 5, 467], "00005": 4, "00364": 4, "complet": [4, 5, 8, 213, 363, 364, 466, 472], "github": [4, 6, 8, 464], "repo": [4, 6, 8, 464], "effici": [5, 7, 163, 327, 373, 468, 470], "larg": [5, 315, 365, 414, 464, 465, 468], "ish": 5, "compromis": 5, "eas": 5, "llama": 5, "famili": 5, "200": [5, 455], "line": [5, 465, 468, 469], "neural": [5, 7, 329, 388, 389, 420, 434, 437, 451], "network": [5, 7, 319, 327, 329, 388, 389, 434, 437, 451, 465], "concis": 5, "architectur": [5, 8, 206, 315, 364, 472], "notabl": [5, 7], "rope": [5, 315], "cach": [5, 8, 205, 207, 208, 212, 464], "llamaattent": 5, "self": [5, 6, 9, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 112, 306, 315, 420, 437], "num_head": [5, 365, 385], "super": [5, 6, 315, 437], "tradit": [5, 145, 327, 328, 373], "query_proj": 5, "bia": [5, 116, 141, 142, 164, 231, 232, 302, 315, 320, 321, 322, 323, 324, 325, 332, 338, 339, 341, 350, 352, 362, 365, 368, 370, 443, 444, 445, 448, 466], "key_proj": 5, "value_proj": 5, "out_proj": [5, 437], "queri": [5, 146, 365], "l": [5, 6, 182, 183, 315, 317, 319, 320, 323, 332, 338, 342, 370, 418], "combin": [5, 187, 304], "key_cach": 5, "value_cach": 5, "math": [5, 419, 464], "score": [5, 146, 415], "values_hat": 5, "possibli": [5, 14, 90, 163, 200, 300], "rm": [5, 8, 144, 441], "swiglu": 5, "rmsnorm": [5, 315], "llamaencoderlay": 5, "mlp_dim": [5, 385], "norm1": 5, "norm2": 5, "linear1": 5, "linear2": 5, "linear3": 5, "instanc": [5, 38, 112, 231, 305, 315, 337, 345, 346, 347, 350, 352, 353, 354, 359, 362, 363, 364, 375, 437, 469], "embed": [5, 298, 315, 367, 373, 377, 407], "emb": [5, 329, 367, 377], "token": [5, 329, 367], "num_lay": [5, 6, 439], "vocab_s": 5, "norm": [5, 144, 300, 333, 419, 445, 446], "multiheadattent": [5, 315], "create_additive_causal_mask": 5, "still": [5, 8, 185, 464, 468], "consid": [5, 16, 82, 171, 301, 302, 303, 333, 463], "train": [5, 6, 315, 319, 326, 327, 328, 348, 350, 362, 388, 389], "process": [5, 101, 105, 120, 121, 122, 123, 125, 126, 127, 302, 303, 328, 329, 385, 463, 465], "ignor": [5, 38, 93, 94, 136, 441], "whatsoev": 5, "rest": [5, 145, 302, 303, 373], "subsect": 5, "prompt": 5, "autoregress": 5, "yield": [5, 6, 461], "temp": 5, "causal": 5, "append": [5, 200, 464, 468], "store": 5, "per": [5, 6, 116, 141, 164, 231, 232, 298, 319, 333, 337, 339, 369, 459, 464, 465, 468], "care": [5, 468], "logit": [5, 235, 406, 408, 464], "categor": 5, "lazili": [5, 315], "noth": [5, 315, 468], "yet": [5, 185, 315, 437, 448, 466, 467, 468, 470], "forc": [5, 6, 315, 465, 470], "choos": [5, 145, 373], "pars": 5, "feed": 5, "back": [5, 112, 210, 469], "loop": [5, 6, 464, 465, 466, 468], "unsqueez": 5, "sequenc": [5, 15, 17, 33, 34, 56, 57, 58, 59, 63, 71, 74, 75, 76, 80, 83, 91, 101, 125, 138, 143, 148, 149, 151, 152, 154, 155, 157, 158, 162, 199, 201, 203, 216, 224, 230, 234, 235, 236, 238, 239, 240, 241, 244, 245, 249, 264, 266, 269, 271, 275, 282, 283, 286, 291, 296, 319, 320, 323, 332, 338, 370, 385, 461, 472], "length": [5, 269, 319, 320, 323, 332, 338, 370, 455], "len": [5, 149, 152, 155, 158, 168, 455], "overwrit": 5, "discard": [5, 301], "old": 5, "moment": [5, 441, 443, 444, 445], "anymor": 5, "everyth": [5, 465], "small": [5, 139, 142, 144, 319, 333, 339, 369, 409, 414, 419, 464, 465, 472], "12": [5, 168, 455], "8192": [5, 168], "actual": [5, 18, 352, 437, 468], "materi": [5, 7], "could": [5, 315], "20_000": 5, "machin": [5, 7, 8, 451, 465], "8gb": 5, "ram": 5, "44": 5, "bracket": 5, "becaus": [5, 207, 315, 468], "batch": [5, 14, 90, 163, 164, 200, 239, 319, 320, 321, 322, 323, 324, 325, 327, 328, 332, 338, 365, 370, 386, 468], "zip": [5, 6], "haven": 5, "anyth": [5, 290, 468], "veri": [5, 365, 465, 468, 472], "similar": [5, 164, 177, 302, 363, 364, 365, 407, 469, 471], "runtim": [5, 123, 310, 464, 465], "origin": [5, 118, 300, 319, 358, 388, 389, 390, 391, 440, 441, 442, 443, 445, 446, 469], "sentencepiec": 5, "pytorch": [5, 7, 330, 333, 466], "compat": [5, 235, 239, 330, 471], "npz": [5, 190, 256, 257, 352, 356, 471], "file": [5, 8, 190, 253, 254, 255, 256, 257, 352, 356, 465, 466, 471], "argpars": 5, "itertool": [5, 302], "starmap": [5, 302], "torch": [5, 469], "map_torch_to_mlx": 5, "tok_embed": 5, "elif": 5, "attention_norm": 5, "ffn_norm": 5, "wq": 5, "wk": 5, "wv": 5, "wo": 5, "w1": [5, 300], "w2": [5, 300], "w3": 5, "ffn": 5, "separ": [5, 65, 79, 333, 415], "submodul": [5, 6, 315, 346, 350, 351, 362, 364], "feed_forward": 5, "parser": 5, "argumentpars": 5, "add_argu": 5, "torch_weight": 5, "output_fil": 5, "parse_arg": 5, "state": [5, 6, 315, 332, 338, 370, 439, 448, 461, 464], "savez": [5, 356, 471], "v": [5, 105, 146, 315, 350, 469], "disk": 5, "text": [5, 317, 318, 330, 332, 338, 342, 343, 344, 370, 383, 388, 389, 390, 391, 397, 400, 401, 402, 409, 410, 411, 414, 415, 418, 420, 421, 424, 425, 430, 431, 441, 446], "format": [5, 190, 253, 254, 255, 256, 257, 469], "dictionari": [5, 94, 190, 206, 254, 255, 300, 301, 304, 315, 349, 358, 363, 364, 449, 463, 471], "represent": [5, 231, 292, 301, 305], "tree_unflatten": [5, 439], "helper": [5, 143, 464], "weight_fil": 5, "incur": [5, 8], "sever": [5, 8, 98, 99, 100, 101, 102, 103, 104, 256, 257, 464, 471], "futur": [5, 368, 467, 468], "pth": 5, "current": [5, 7, 8, 83, 90, 100, 103, 104, 127, 206, 208, 231, 304, 315, 441, 465, 468], "around": 5, "ultra": 5, "7b": 5, "me": 5, "ishmael": 5, "year": 5, "ago": 5, "never": [5, 468], "long": 5, "info": [5, 8], "247": 5, "press": [5, 185], "enter": 5, "littl": 5, "monei": 5, "my": [5, 8], "purs": 5, "consequ": 5, "walk": 5, "down": [5, 300], "gower": 5, "street": 5, "afternoon": 5, "heavi": 5, "rain": 5, "saw": [5, 466], "off": [5, 8, 468], "man": 5, "rag": 5, "who": 5, "sat": 5, "upon": [5, 302, 303], "hi": [5, 338], "bundl": 5, "hard": 5, "wet": 5, "he": [5, 390, 391], "were": [5, 472], "cry": 5, "watch": [5, 464], "him": 5, "observ": 5, "numer": [5, 142, 144, 185, 195, 199, 264, 319, 333, 337, 339, 369, 406, 407, 409, 419, 440, 441, 442, 443, 444, 445, 451, 464, 468], "crowd": 5, "wa": [5, 83, 125, 126, 465, 468], "hurri": 5, "437": 5, "330": 5, "second": [5, 8, 118, 177, 179, 196, 198, 200, 250, 276, 285, 290, 318, 343, 407, 415, 441, 443, 444, 445, 466, 472], "spent": 5, "amount": [5, 209, 317, 342], "39": 5, "By": [5, 298, 357, 406, 466, 469], "bigger": [5, 441], "well": [5, 315, 350, 362, 365, 468], "almost": 5, "nobodi": 5, "took": 5, "least": [5, 84, 85, 86, 93, 182, 183, 184, 186, 187, 188, 231], "notic": [5, 466, 471], "distanc": [5, 419], "had": 5, "doubt": 5, "minut": 5, "straight": 5, "slowli": 5, "speak": [5, 185], "resum": 5, "postur": 5, "stood": 5, "feel": 5, "pain": 5, "heart": 5, "said": 5, "smile": 5, "face": 5, "am": 5, "someon": 5, "three": [5, 86, 386], "quarter": 5, "hour": 5, "made": [5, 310], "immedi": [5, 345], "repli": 5, "again": [5, 8, 315, 464], "hand": [5, 466, 468], "did": 5, "accustom": 5, "thu": [5, 315], "question": [5, 468], "tell": [5, 464, 469], "understand": [5, 388, 389], "579": 5, "690": 5, "500": [5, 472], "628": 5, "went": 5, "nervou": 5, "trembl": 5, "told": 5, "why": 5, "And": [5, 386], "surpris": 5, "matter": [5, 315], "shall": 5, "anyhow": 5, "friend": 5, "ye": 5, "slight": [5, 468], "kind": 5, "longer": [5, 105, 466], "soon": 5, "unless": [5, 16, 171, 185, 437], "unlik": [5, 16, 171, 327, 328, 358], "strang": 5, "amus": 5, "That": 5, "secret": 5, "disappoint": 5, "mine": 5, "cannot": [5, 93, 467, 469], "happi": 5, "ask": [5, 465], "shop": 5, "bui": 5, "food": 5, "633": 5, "21": [5, 457], "475": 5, "su": 5, "j": [5, 8, 185, 327, 442, 443, 445], "lu": 5, "pan": 5, "murtadha": 5, "wen": 5, "liu": 5, "2021": 5, "roform": [5, 373], "enhanc": [5, 373, 468], "rotari": [5, 145, 373], "arxiv": [5, 333, 337, 339, 344, 369, 398, 420, 440, 446], "preprint": [5, 440, 446], "2104": 5, "09864": 5, "zhang": 5, "sennrich": 5, "2019": [5, 444], "advanc": [5, 464], "system": [5, 8, 206, 207, 208], "shazeer": 5, "2020": 5, "glu": [5, 315], "variant": [5, 418, 445], "2002": 5, "05202": 5, "classifi": 6, "mnist": 6, "As": [6, 38, 278, 315, 464], "mlp": [6, 315, 385, 439], "inherit": [6, 463], "idiom": [6, 464], "input_dim": [6, 315, 341, 368], "hidden_dim": [6, 437, 439], "output_dim": [6, 315, 341, 368], "layer_s": 6, "idim": 6, "odim": 6, "cross": [6, 101, 406, 408], "entropi": [6, 406, 408], "commonli": [6, 363, 434, 464], "cross_entropi": [6, 315], "accuraci": 6, "valid": [6, 105, 159, 294, 301, 350, 362, 463], "eval_fn": 6, "load": [6, 7, 310, 352, 465], "loader": 6, "num_class": [6, 439], "batch_siz": [6, 439], "num_epoch": [6, 439], "learning_r": [6, 439, 440, 441, 442, 443, 444, 445, 446, 448, 451, 452, 453, 454, 455, 456, 457, 464], "train_imag": [6, 439], "train_label": [6, 439], "test_imag": 6, "test_label": 6, "re": [6, 8, 434], "shuffl": 6, "minibatch": 6, "batch_iter": [6, 439], "perm": 6, "id": [6, 8], "trainabl": [6, 299, 315, 437], "loss_and_grad_fn": [6, 439, 464, 466], "value_and_grad": [6, 112, 315, 363, 437, 439, 450, 464, 466, 469, 470], "epoch": 6, "test": [6, 8, 465], "confus": 6, "decent": 6, "95": 6, "flexibl": 7, "brought": 7, "research": 7, "except": [7, 140, 153, 154, 156, 157, 158, 333, 352, 467, 469], "main": [7, 118, 140, 143, 285, 302, 303, 315, 465], "differ": [7, 177, 274, 292, 418, 466], "compos": [7, 315, 464, 466, 470], "lazi": [7, 437, 470], "multi": [7, 146, 320, 321, 322, 323, 324, 325, 467, 469], "cpu": [7, 8, 186, 464, 472], "inspir": 7, "jax": [7, 461], "arrayfir": 7, "unifi": 7, "live": [7, 143, 472], "share": [7, 116, 141, 164, 231, 232, 292, 465], "convers": 7, "distribut": [7, 8, 234, 235, 236, 238, 239, 240, 244, 245, 341, 388, 389, 390, 391, 393, 394, 409, 412, 417, 419, 434], "commun": [7, 120, 123, 124], "regress": [7, 414], "layer": [7, 142, 298, 315, 317, 318, 327, 328, 332, 333, 338, 339, 341, 342, 343, 359, 364, 367, 368, 370, 375, 385, 433, 437], "perceptron": 7, "llm": 7, "infer": [7, 162, 190, 285, 465], "fft": 7, "algebra": 7, "tree": [7, 94, 136, 165, 290, 294, 301, 302, 303, 304, 305, 447, 448, 450, 459, 466], "custom": [7, 112, 143, 385], "extens": [7, 190, 214, 356, 471], "debugg": 7, "pypi": 8, "own": [8, 469], "meet": 8, "seri": 8, "chip": 8, "nativ": 8, "maco": 8, "13": 8, "highli": 8, "recommend": [8, 213, 446], "14": 8, "sonoma": 8, "conda": [8, 465], "forg": 8, "match": [8, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 207, 352, 386, 408, 465, 467, 469], "probabl": [8, 241, 326, 327, 328, 368, 406, 408, 412, 472], "platform": 8, "processor": 8, "arm": 8, "i386": 8, "switch": 8, "17": 8, "clang": 8, "24": 8, "xcode": 8, "sdk": 8, "environ": [8, 119, 132, 465], "via": [8, 112, 447, 450, 465, 468, 469], "rosetta": 8, "unam": 8, "p": [8, 234, 315, 326, 327, 328, 419, 443, 445], "clone": 8, "git": 8, "com": [8, 465], "ml": 8, "explor": 8, "cmake_build_parallel_level": 8, "edit": [8, 364], "unittest": 8, "discov": 8, "stub": 8, "generate_stub": 8, "either": [8, 13, 65, 78, 79, 87, 88, 89, 93, 128, 129, 133, 161, 166, 167, 179, 180, 181, 185, 195, 200, 202, 217, 219, 223, 229, 247, 250, 274, 290, 318, 343, 375, 386, 390, 391, 469], "static": 8, "libmlx": 8, "preprocessor": 8, "metal_path": 8, "mlx_build_test": 8, "mlx_build_exampl": 8, "mlx_build_benchmark": 8, "mlx_build_cpu": 8, "mlx_build_python_bind": 8, "mlx_build_safetensor": 8, "mlx_build_gguf": 8, "mlx_metal_jit": 8, "wish": 8, "variabl": [8, 94, 119, 132, 165, 178, 290, 293, 294, 465], "export": 8, "developer_dir": 8, "app": 8, "content": [8, 349, 464], "xcrun": 8, "macosx": 8, "show": [8, 308, 464], "cmake_build_typ": 8, "minsizerel": 8, "safetensor": [8, 190, 255, 352, 356, 439, 468, 471], "gguf": [8, 190, 254, 471], "dcmake_build_typ": 8, "dbuild_shared_lib": 8, "dmlx_build_cpu": 8, "dmlx_build_safetensor": 8, "dmlx_build_gguf": 8, "dmlx_metal_jit": 8, "THE": 8, "pre": [8, 146, 406], "substanti": 8, "cold": 8, "cost": [8, 441, 465, 468], "anwywher": 8, "hundr": 8, "millisecond": [8, 464, 472], "persist": 8, "accross": 8, "reboot": 8, "unabl": 8, "tool": 8, "sudo": 8, "ouptut": 8, "finder": 8, "iterm": 8, "termin": 8, "click": 8, "uncheck": 8, "window": [8, 317, 318, 342, 343], "restart": 8, "grep": 8, "cmake_host_system_processor": 8, "arm64": 8, "x86_64": 8, "wipe": 8, "cahc": 8, "rf": 8, "devicetyp": 9, "kwarg": [10, 120, 256, 257, 473], "categori": [11, 177, 308], "bool_": [11, 308], "unsignedinteg": 11, "uint8": [11, 308], "uint16": [11, 308], "uint32": [11, 26, 27, 28, 29, 235, 308], "uint64": [11, 308], "signedinteg": [11, 177], "int8": [11, 308], "int64": [11, 308], "inexact": [11, 177], "complexflo": 11, "issubdtyp": [11, 308], "semant": [13, 87, 88, 89, 91, 128, 129, 133, 166, 167, 179, 180, 181, 195, 200, 202, 217, 219, 223, 229, 247, 250, 274, 472], "reduct": [15, 17, 122, 199, 201, 216, 230, 304, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 465], "unspecifi": [15, 17, 18, 26, 27, 28, 29, 95, 108, 109, 110, 111, 162, 199, 201, 203, 216, 224, 228, 230, 248, 264, 265, 271, 275, 278, 284, 285, 291, 296, 473], "entir": [15, 17, 26, 27, 199, 201, 203, 216, 230, 271, 275, 291, 327, 328], "05": [16, 171, 319, 333, 337, 339, 369], "08": [16, 171, 407, 442, 443, 444, 445, 451], "approxim": [16, 330, 396, 397, 398], "comparison": [16, 133, 166, 167, 180, 181, 223], "infinit": [16, 171, 172], "rel": [16, 171, 441, 464], "interv": [18, 189, 241, 245], "increment": 18, "otherwis": [18, 101, 123, 213, 298, 301, 302, 303, 304, 350, 352, 362, 383, 385, 386, 400, 406, 411, 418, 430, 431, 468, 469], "convent": [18, 105, 130, 131, 386, 444], "fraction": 18, "integr": [18, 278, 468], "dimension": [30, 142, 144, 147, 148, 149, 150, 151, 152, 156, 157, 158, 317, 318, 319, 320, 321, 322, 323, 324, 325, 329, 341, 342, 343, 367, 368, 377, 467, 469], "ndarrai": [30, 467, 468, 470], "properti": [31, 38, 47, 51, 61, 62, 68, 70, 358, 361, 449, 466], "union": [32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 84, 85, 86, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 175, 176, 177, 206, 254, 273], "regular": [38, 327, 420, 444, 464, 467], "idx": [38, 467], "correctli": 38, "syntax": [38, 467], "datatyp": 51, "byte": [51, 61, 207, 208, 209, 212, 213, 308], "indices_or_sect": [71, 266], "nest": [78, 94, 304, 315, 437, 463, 466], "regardless": [83, 146], "storag": 83, "caution": 83, "chang": [83, 94, 259, 292, 363, 368, 386, 411, 418, 464, 469], "crash": [83, 464], "begin": [83, 183, 209, 231, 318, 332, 338, 343, 383, 400, 411, 418, 424, 430, 431], "ari": [84, 85, 86], "xor": 89, "lhs_mask": 90, "lceil": 90, "rceil": 90, "rhs_mask": 90, "out_mask": 90, "edg": [93, 227, 386, 464], "At": 93, "fun": [94, 165, 178, 290, 293, 294, 464, 467, 468, 472], "callabl": [94, 112, 143, 165, 178, 290, 293, 294, 298, 299, 301, 302, 303, 304, 345, 346, 349, 357, 370, 375, 385, 387, 388, 389, 390, 391, 392, 393, 394, 440, 441, 442, 443, 444, 445, 446, 451, 452, 453, 454, 455, 456, 457], "dict": [94, 136, 190, 206, 254, 255, 256, 300, 355, 360, 363, 364, 437, 439, 447, 448, 450, 463, 466, 471], "leaf": [94, 298, 301, 302, 303, 304, 349], "node": [94, 136, 294, 303, 304], "recompil": [94, 464], "Not": [94, 223, 464], "attempt": 94, "alia": [96, 97, 330], "conj": 97, "c_in": [98, 99, 100, 101, 102, 103, 104], "c_out": [98, 99, 100, 101, 102, 103, 104], "convolv": [98, 99, 100, 101, 102, 103, 104], "spatial": [99, 100, 101, 103, 104, 317, 333, 342, 386], "symmetr": [99, 100, 103, 104, 182, 183], "correl": [101, 327], "discret": [105, 147, 148, 149, 150, 151, 152, 156, 157, 158, 329, 367], "conv": 105, "signal": [105, 386], "th": [108, 109, 110, 111, 117, 140, 455], "definit": [112, 182, 183, 239], "meant": 112, "behav": 112, "wrap": [112, 315], "behaviour": [112, 182, 183], "usag": [112, 385, 464], "f_vjp": 112, "f_jvp": 112, "dx": 112, "dy": 112, "f_vmap": 112, "ai": 112, "angl": [115, 233, 340], "configur": [116, 141, 465], "formal": [116, 141, 231], "notat": [116, 141, 301, 354], "w_i": [116, 141, 231], "hat": [116, 141, 231], "occupi": [116, 141, 164, 231, 232], "subarrai": [118, 266], "insert": [118, 138, 472], "end": [118, 183, 210, 231, 318, 332, 338, 343, 383, 400, 411, 418, 424, 430, 431, 453, 456], "taken": [118, 278, 285], "global": [119, 121, 122, 123, 125, 126, 127, 132, 242, 300, 461, 464], "disabl": [119, 212, 464], "mlx_disable_compil": [119, 132, 464], "independ": [120, 327, 328], "particip": [121, 122, 125, 126, 127], "strict": [123, 166, 180, 350, 352, 362], "is_avail": 123, "receiv": [125, 126, 298, 455, 469], "recv": 126, "dst": 127, "sned": 127, "empti": [127, 239], "fuction": 129, "subscript": [130, 131], "operand": [130, 131, 163], "einstein": [130, 131], "summat": [130, 131], "equat": [130, 131], "einsum": 131, "chosen": 131, "mathrm": [134, 260, 337], "frac": [134, 231, 260, 317, 318, 319, 326, 327, 328, 333, 337, 339, 341, 342, 343, 369, 388, 389, 390, 391, 407, 409, 411, 414, 425, 427, 428, 440, 442, 443, 444, 445, 451], "pi": [134, 330, 377, 397, 466], "int_0": 134, "dt": 134, "minu": 139, "whose": [140, 298, 299], "translat": [142, 339], "stabil": [142, 144, 319, 333, 337, 339, 369, 406, 407, 409, 440, 441, 442, 443, 444, 445, 451], "jit": 143, "outsid": [143, 159], "whether": [143, 164, 188, 232, 332, 338, 349, 365, 370, 406, 409, 415], "freq": 145, "rotat": [145, 373], "unchang": [145, 272, 373], "consecut": [145, 231, 373], "angular": [145, 373], "frequenc": [145, 373, 377], "q": [146, 186], "head": [146, 365, 385], "attent": [146, 350, 365, 377, 385], "One": [147, 150, 156, 227, 252, 464, 466], "fourier": [147, 148, 149, 150, 151, 152, 156, 157, 158], "truncat": [147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 244], "dft": [147, 148, 149, 150, 151, 152, 156, 157, 158], "rfft": 153, "real": [153, 154, 155, 156, 157, 158, 182, 183], "rfft2": 154, "rfftn": 155, "silent": [156, 157, 158], "clamp": 159, "explicitli": [163, 315, 461], "flat": [163, 164, 301, 305], "a1": 163, "a2": 163, "AS": 163, "b1": 163, "b2": 163, "pack": [164, 231, 232], "unsign": [164, 231, 232, 308], "argnam": [165, 290], "neither": [165, 290], "keyword": [165, 256, 257, 290, 302, 315, 461, 471, 473], "walsh": 168, "scipi": 168, "linalg": 168, "20": [168, 185], "28": 168, "16384": 168, "orthonorm": 168, "ordinari": 170, "inifn": 173, "arg1": 177, "dtypecategori": [177, 308], "arg2": 177, "subtyp": [177, 308], "subdtyp": 177, "float64": 177, "too": [177, 464, 468], "upper": [182, 183, 188, 231, 241, 244, 245, 394], "decomposit": [182, 183, 187], "semi": [182, 183, 239], "triangular": [182, 183, 188], "lower": [182, 183, 188, 231, 241, 244, 245, 287, 394], "dot": [182, 184, 188, 282, 301, 354, 365], "choleski": 183, "mathbf": 183, "align": [183, 231, 318, 332, 338, 343], "ainv": [184, 188], "ord": 185, "frobeniu": 185, "matric": [185, 186, 187], "strictli": 185, "mathemat": 185, "variou": 185, "calcul": [185, 406, 409, 415, 441], "fro": 185, "inf": [185, 220, 365], "largest": [185, 220, 284], "sing": 185, "smallest": 185, "singular": [185, 187], "nuclear": 185, "_f": 185, "sum_": [185, 317, 318, 414], "a_": 185, "valueerror": [185, 352, 466], "refer": [185, 337, 344, 358, 388, 389, 390, 391, 398, 420, 467], "golub": 185, "van": 185, "loan": 185, "baltimor": 185, "md": 185, "john": 185, "hopkin": 185, "univers": 185, "1985": 185, "pg": 185, "la": 185, "9": [185, 408, 440, 443, 444, 445, 446, 448, 454, 457, 469], "74597": 185, "84804": 185, "41421": 185, "23607": [185, 186], "74166": 185, "24264": 185, "11": 185, "225": 185, "894427": 186, "447214": 186, "57771": 186, "vt": 187, "return_metadata": 190, "binari": [190, 253, 254, 255, 256, 257, 292, 383, 406, 431, 464], "npy": [190, 253, 471], "matadata": 190, "unsupport": 190, "tensor": [190, 282, 317, 318, 342, 343, 419, 469], "stabl": [195, 199, 264, 414], "multidimension": 204, "dens": [204, 472], "cartesian": 204, "ij": 204, "clear": 205, "get_cache_memori": 205, "max_buffer_s": 206, "max_recommended_working_set_s": 206, "memory_s": 206, "report": [207, 213], "peak": [209, 211], "program": [209, 465], "reset_peak_memori": 209, "reset": 211, "free": 212, "reclaim": 212, "set_memory_limit": 212, "previou": [212, 213], "relax": 213, "task": [213, 414], "exceed": 213, "potenti": 213, "beforehand": 226, "constant_valu": 227, "before_1": 227, "after_1": 227, "before_2": 227, "after_2": 227, "before_n": 227, "after_n": 227, "before_i": 227, "after_i": 227, "side": [227, 317, 318, 342, 343, 464], "everi": [231, 302, 439, 457, 466], "particular": [231, 333], "w_1": 231, "w_g": 231, "max_i": 231, "min_i": 231, "textrm": [231, 330, 331, 396, 399], "1st": 231, "signific": 231, "2nd": 231, "w_q": 231, "prng": [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 461], "num_sampl": 235, "unnorm": [235, 406, 408], "draw": 235, "cdf": [236, 330, 396], "seed": 237, "cov": 239, "jointli": 239, "covari": [239, 319], "behavior": [239, 414, 467, 468], "low": [241, 245, 394, 434], "high": [241, 245, 315, 329, 394, 434], "roadcast": 241, "domain": [244, 465], "uniformli": 245, "repetit": 248, "preserv": [249, 466], "obj": 254, "uncompress": 256, "my_path": 256, "tree_flatten": [256, 302, 305, 315, 439], "transformerencod": 256, "128": [256, 315], "flat_param": 256, "compress": 257, "possibl": [266, 329, 367, 464, 465, 467, 472], "divisor": [271, 291], "being": [272, 315], "prevent": [272, 419, 469], "streamcontext": 273, "context": 273, "manag": [273, 461, 465, 472], "prior": [278, 279], "exclud": 279, "necessarili": 284, "elsewher": [287, 467], "col": 287, "triangl": 287, "mse": 290, "param": [290, 315, 434, 466], "lvalu": 290, "dlvalu": 290, "dparam": 290, "lasso": 290, "l1": [290, 411, 413, 414, 418], "impli": 292, "gaurante": 292, "in_ax": [294, 466], "out_ax": [294, 466], "prefix": [294, 301], "class_pred": 298, "predic": [298, 357], "to_quant": 298, "fn": [299, 302, 303, 304, 470], "wrt": 299, "max_norm": 300, "exce": 300, "proportion": 300, "clipped_grad": 300, "total_norm": 300, "rescal": 300, "is_leaf": [301, 302, 303, 304], "arbitrari": [301, 437], "depth": [301, 322, 325, 328, 466], "hello": [301, 305], "charact": 301, "superset": [302, 447], "closer": 302, "decid": [302, 349], "constitut": 302, "dict_kei": [302, 448], "lambda": [302, 303, 304, 315, 334, 345, 350, 357, 381, 400, 424, 430, 440, 441, 442, 443, 444, 445, 446, 451, 452, 464, 465, 466], "tree_map": [303, 315, 465], "new_tre": 303, "accumul": [304, 369], "acc": 304, "recreat": [305, 439], "world": [305, 465], "42": 305, "int16": 308, "brain": 308, "e8": 308, "m7": 308, "ieee": 308, "e5": 308, "m10": 308, "hierarchi": 308, "mpi": 310, "done": [315, 326, 369, 464, 465, 468, 469], "manual": 315, "solv": 315, "intuit": 315, "freez": [315, 362, 437], "finetun": 315, "in_dim": [315, 437], "out_dim": [315, 437], "enumer": 315, "caus": [315, 464, 468], "local": [315, 327, 465], "scope": 315, "l2_loss": 315, "y_hat": 315, "trainable_paramet": [315, 349, 448], "loss_and_grad": 315, "workhors": 315, "Its": 315, "recurs": [315, 349, 350, 355, 360, 362, 437], "frozen": [315, 350, 360, 362, 368, 437], "individu": [315, 327, 328], "subset": [315, 349], "action": 315, "displai": 315, "count": [315, 455], "num_param": 315, "preclud": 315, "pattern": [315, 468], "achiev": [315, 465], "other_input": 315, "necessari": 315, "apply_to_modul": [315, 350], "children": 315, "filter_and_map": 315, "leaf_modul": 315, "load_weight": [315, 468], "named_modul": 315, "save_weight": 315, "set_dtyp": 315, "unfreez": [315, 350], "update_modul": 315, "alibi": 315, "avgpool1d": 315, "avgpool2d": 315, "batchnorm": 315, "celu": 315, "convtranspose1d": 315, "convtranspose2d": 315, "convtranspose3d": 315, "dropout": [315, 327, 328, 359, 385, 464], "dropout2d": 315, "dropout3d": 315, "elu": [315, 424], "gelu": [315, 397, 398, 464], "groupnorm": 315, "gru": 315, "hardshrink": [315, 400], "hardtanh": [315, 401], "hardswish": 315, "instancenorm": 315, "layernorm": 315, "leakyrelu": 315, "logsigmoid": 315, "logsoftmax": 315, "lstm": 315, "maxpool1d": 315, "maxpool2d": 315, "mish": 315, "prelu": 315, "quantizedembed": 315, "quantizedlinear": 315, "relu": [315, 366, 385, 421, 434], "relu6": 315, "rnn": [315, 332], "selu": 315, "sequenti": [315, 434], "silu": 315, "sinusoidalpositionalencod": 315, "softmin": 315, "softshrink": 315, "softsign": 315, "softplu": [315, 344, 420], "upsampl": 315, "gelu_approx": [315, 330, 396], "gelu_fast_approx": [315, 330, 396], "hard_shrink": [315, 334], "hard_tanh": [315, 335], "leaky_relu": 315, "log_sigmoid": 315, "log_softmax": 315, "binary_cross_entropi": [315, 464], "cosine_similarity_loss": 315, "gaussian_nll_loss": 315, "hinge_loss": 315, "huber_loss": 315, "kl_div_loss": 315, "l1_loss": 315, "log_cosh_loss": 315, "margin_ranking_loss": 315, "mse_loss": 315, "nll_loss": 315, "smooth_l1_loss": 315, "triplet_loss": 315, "init": [315, 366, 434, 439, 453, 454, 456, 457, 465], "glorot_norm": 315, "glorot_uniform": 315, "he_norm": 315, "he_uniform": 315, "kernel_s": [317, 318, 320, 321, 322, 323, 324, 325, 342, 343], "averag": [317, 318, 440, 441, 443, 444, 445, 465], "pool": [317, 318, 342, 343, 472], "l_": [317, 342, 411], "n_i": [317, 318, 342, 343], "c_j": [317, 318, 342, 343], "ldot": [317, 318, 342, 343], "lfloor": [317, 318, 342, 343], "_size": [317, 318, 342, 343], "rfloor": [317, 318, 342, 343], "k_h": [318, 343], "k_w": [318, 343], "h_": [318, 332, 338, 343, 370], "w_": [318, 332, 338, 343, 370, 440, 441, 442, 443, 444, 445, 446, 451, 452], "height": [318, 319, 321, 322, 324, 325, 327, 328, 343], "width": [318, 319, 321, 322, 324, 325, 327, 328, 343, 367, 368], "momentum": [319, 446, 448, 452, 464], "affin": [319, 333, 337, 339, 341, 368], "track_running_stat": 319, "epsilon": [319, 333, 337, 339, 369, 407, 409, 440, 442, 443, 444, 445, 451], "gamma": [319, 333, 337, 339, 369, 388, 389, 390, 391], "nc": 319, "nlc": [319, 320, 323], "four": 319, "nhwc": [319, 321, 324], "paper": [319, 377, 440, 441, 442, 443, 445, 446], "deep": [319, 388, 389, 390, 391], "intern": 319, "bn": 319, "in_channel": [320, 321, 322, 323, 324, 325], "out_channel": [320, 321, 322, 323, 324, 325], "learnabl": [320, 321, 322, 323, 324, 325, 375], "imag": [321, 322, 324, 325, 327, 328, 386], "ndhwc": [322, 325, 328], "portion": 326, "nwhc": 327, "whc": 327, "maintain": [327, 328, 446], "benefici": [327, 328, 468], "earli": 327, "adjac": 327, "pixel": 327, "effect": [327, 464, 468], "thompson": 327, "goroshin": 327, "jain": 327, "lecun": 327, "bregler": 327, "2015": [327, 443, 445], "cvpr": 327, "dhwc": 328, "often": 328, "medic": 328, "video": 328, "num_embed": [329, 367], "lookup": 329, "usual": [329, 367, 463, 468], "vocabulari": [329, 367], "approx": 330, "unit": [330, 331, 332, 340, 371, 372, 374, 376, 388, 389, 390, 391, 395, 396, 397, 398, 399, 403, 422, 423, 424, 426], "phi": [330, 396], "geluapprox": 330, "044715": [330, 397], "gelufast": 330, "sigma": [330, 331, 332, 338, 388, 389, 390, 391, 398, 399, 404, 425, 426], "702": [330, 398], "regard": 330, "gate": [331, 332, 399], "halv": [331, 399], "input_s": [332, 338, 370], "hidden_s": [332, 338, 370], "recurr": [332, 338, 370], "nld": [332, 338, 370], "ld": [332, 338, 370], "r_t": 332, "xr": 332, "x_t": [332, 338, 370], "hr": 332, "h_t": [332, 338, 370], "b_": [332, 338], "z_t": 332, "xz": 332, "hz": 332, "n_t": 332, "xn": 332, "odot": [332, 338], "hn": 332, "hidden": [332, 338, 370, 385], "nh": [332, 338, 370], "nlh": [332, 338, 370], "lh": [332, 338, 370], "num_group": 333, "pytorch_compat": 333, "preced": 333, "http": [333, 337, 339, 344, 369, 398, 420], "org": [333, 337, 339, 344, 369, 398, 420], "1803": 333, "08494": 333, "lambd": [334, 381, 400, 430], "denomin": [337, 407, 440, 442, 443, 444, 445, 451], "inorm": 337, "1607": [337, 339], "08022": 337, "i_t": 338, "xi": 338, "f_t": 338, "xf": 338, "hf": 338, "g_t": [338, 440, 442, 443, 444, 445, 446, 451, 452], "xg": 338, "hg": 338, "o_t": 338, "xo": 338, "ho": 338, "c_": [338, 446], "c_t": [338, 446], "cell": 338, "06450": 339, "realli": 339, "negative_slop": [340, 403], "leaki": [340, 403], "rectifi": [340, 371, 372, 390, 391, 403, 422, 423], "slope": 340, "mathcal": 341, "d_i": 341, "max_": [342, 343], "1908": [344, 420], "08681": [344, 420], "map_fn": [345, 349], "filter_fn": [345, 349], "valid_parameter_filt": 345, "apply_fn": 346, "descend": 347, "is_leaf_fn": 349, "found": 349, "drop": 349, "idempot": [350, 362], "endswith": 350, "file_or_weight": 352, "miss": [352, 471], "ok": [352, 466], "save_safetensor": [356, 439, 471], "reflect": [358, 464, 467, 469], "ie": [362, 465], "noop": 362, "unfrozen": 362, "tracer": 363, "partial": [363, 364, 464, 468], "child": 364, "flexibli": 364, "programmat": 364, "query_input_dim": 365, "key_input_dim": 365, "value_input_dim": 365, "value_dim": 365, "value_output_dim": 365, "aggreg": 365, "linearli": 365, "attend": 365, "num_paramet": 366, "25": [366, 386], "parametr": [366, 421], "from_embed": 367, "classmethod": [367, 368], "from_linear": 368, "1910": 369, "07467": 369, "nonlinear": [370, 464], "elman": 370, "ih": 370, "hh": 370, "func": 370, "10000": 373, "slightli": [373, 472], "plain": 375, "known": [376, 426], "swish": [376, 426], "min_freq": 377, "0001": 377, "max_freq": 377, "cos_first": 377, "full_turn": 377, "sinusoid": 377, "threshold": [383, 411, 418, 431], "geq": [383, 431], "num_encoder_lay": 385, "num_decoder_lay": 385, "nb_func": 385, "custom_encod": 385, "custom_decod": 385, "norm_first": 385, "checkpoint": [385, 439], "decod": 385, "interact": 385, "mechan": 385, "expens": 385, "scale_factor": 386, "align_corn": 386, "audio": 386, "forth": 386, "algorithm": [386, 446], "neighbor": 386, "interpol": 386, "cubic": 386, "trilinear": 386, "bicub": 386, "corner": 386, "bottom": 386, "75": 386, "33333": 386, "66667": 386, "init_fn": [387, 388, 389, 390, 391, 392, 393, 394, 434], "glorot": [388, 389], "fan_in": [388, 389, 390, 391], "fan_out": [388, 389, 390, 391], "fan": [388, 389, 390, 391], "_in": [388, 389], "_out": [388, 389], "difficulti": [388, 389], "feedforward": [388, 389], "191107": 388, "61278": 388, "150594": 388, "363207": 388, "gain": [388, 389, 390, 391], "89613": 388, "53947": 388, "48095": 388, "995016": 388, "223404": 389, "890597": 389, "379159": 389, "776856": 389, "90041": 389, "02264": 389, "912766": 389, "12451": 389, "delv": [390, 391], "surpass": [390, 391], "human": [390, 391], "imagenet": [390, 391], "classif": [390, 391], "25211": 390, "458835": 390, "177208": 390, "0137595": 390, "6967": 390, "02765": 390, "15268": 390, "75787": 390, "kaim": 391, "0300242": 391, "0184009": 391, "793615": 391, "666329": 391, "64331": 391, "16506": 391, "08619": 391, "79854": 391, "982273": 393, "534422": 393, "380709": 393, "0645099": 393, "883935": 394, "863726": 394, "617261": 394, "417497": 394, "exact": [397, 398], "0005": 397, "015": 398, "cdot": [398, 407, 410, 426], "hendryck": 398, "1606": 398, "08415": 398, "min_val": 401, "max_val": 401, "_val": 401, "sum_i": 405, "x_i": [405, 427, 428], "with_logit": 406, "predict": [406, 409, 410, 411, 412, 413, 414, 416, 417, 418], "105361": 406, "223144": 406, "20397": 406, "916291": 406, "539245": 406, "prob": 406, "510826": 406, "x1": 407, "x2": 407, "x_1": [407, 415], "x_2": [407, 415], "label_smooth": 408, "hot": 408, "smooth": [408, 418, 451], "0485873": 408, "348587": 408, "06": [409, 419, 440], "likelihood": [409, 417], "nll": [409, 417], "hing": 410, "y_": [410, 414], "pred": [410, 414], "delta": [411, 440], "huber": 411, "leq": [411, 424], "l2": [411, 414, 452], "kullback": 412, "leibler": 412, "diverg": 412, "logcosh": 414, "sensit": 414, "outlier": 414, "dual": 414, "offer": 414, "balanc": 414, "robust": 414, "approach": [414, 466], "inputs1": 415, "inputs2": 415, "margin": [415, 419], "573409": 415, "765166": 415, "0638": 415, "75596": 415, "225763": 415, "256995": 415, "773433": 415, "formula": 418, "anchor": 419, "triplet": 419, "_p": 419, "pairwis": 419, "instabl": 419, "monoton": 420, "0507": 424, "67326": 424, "sum_j": [427, 428], "x_j": [427, 428], "subclass": 437, "concept": 437, "mymlp": 437, "in_proj": 437, "involv": [439, 464], "subsequ": 439, "far": 439, "serial": 439, "adam": [439, 445, 446, 455, 456], "configu": 439, "thumb": 439, "apply_gradi": 439, "rmsprop": 439, "adagrad": 439, "adafactor": 439, "adadelta": 439, "adamw": [439, 446], "adamax": 439, "lion": 439, "cosine_decai": [439, 455], "exponential_decai": 439, "join_schedul": 439, "linear_schedul": [439, 455], "step_decai": 439, "rho": 440, "zeiler": 440, "2012": [440, 451], "adapt": [440, 441, 442, 465], "1212": 440, "5701": 440, "v_": [440, 442, 443, 444, 445, 451, 452], "v_t": [440, 442, 443, 444, 445, 451, 452], "u_t": 440, "u_": 440, "w_t": [440, 442, 443, 444, 445, 446, 451, 452], "30": 441, "001": 441, "clip_threshold": 441, "decay_r": [441, 454, 457], "beta_1": [441, 443, 444, 445, 446], "weight_decai": [441, 444, 446, 452], "scale_paramet": 441, "relative_step": 441, "warmup_init": 441, "sublinear": 441, "epsilon_1": 441, "epsilon_2": 441, "parameter_scal": 441, "unscal": 441, "decai": [441, 444, 446, 452, 453, 454, 457], "duchi": 442, "hazan": 442, "singer": 442, "2011": 442, "subgradi": 442, "onlin": 442, "stochast": [442, 443, 445, 452, 468], "jmlr": 442, "999": [443, 444, 445], "omit": [443, 445, 465], "estim": [443, 445], "kingma": [443, 445], "ba": [443, 445], "iclr": [443, 444, 445], "m_": [443, 444, 445, 446], "m_t": [443, 444, 445, 446], "beta_2": [443, 444, 445, 446], "contrast": 444, "loshchilov": 444, "hutter": 444, "decoupl": 444, "99": [446, 451], "tend": 446, "10x": 446, "strength": [446, 452], "wd": 446, "chen": 446, "symbol": 446, "discoveri": 446, "2302": 446, "06675": 446, "eta": 446, "opt": [447, 465], "tieleman": 451, "hinton": 451, "lectur": 451, "coursera": 451, "dampen": 452, "nesterov": 452, "descent": [452, 464, 468], "mu": 452, "tau": 452, "penalti": 452, "decay_step": 453, "beyond": [453, 456], "lr_schedul": [453, 454, 455, 457], "1000": [453, 464], "0999961": 453, "06561": 454, "boundari": 455, "join": 455, "transit": 455, "warmup": [455, 456], "0999938": 455, "101": 456, "step_siz": 457, "081": 457, "basi": 459, "implicit": [461, 464, 466], "fine": [461, 468], "grain": 461, "pseudo": 461, "altern": 461, "splittabl": 461, "threefri": 461, "counter": 461, "cycl": 463, "merg": 464, "awar": [464, 468], "36788": 464, "compiled_fun": 464, "slow": 464, "rerun": [464, 468], "frequent": [464, 468], "destroi": 464, "anonym": 464, "unari": 464, "overhead": [464, 468, 472], "bandwidth": [464, 465], "fusibl": 464, "consider": 464, "versu": 464, "timeit": [464, 466], "tic": 464, "perf_count": 464, "toc": 464, "tpi": 464, "1e3": 464, "4096": [464, 466, 472], "five": 464, "latest": 464, "won": 464, "placehold": 464, "insid": 464, "disable_compil": 464, "okai": [464, 468], "deal": 464, "pretti": [464, 468], "inconveni": 464, "functool": 464, "particularli": 464, "compiled_grad_fn": 464, "71828": 464, "opportun": 464, "physic": 465, "lot": [465, 466], "figur": 465, "best": 465, "mac": 465, "abil": 465, "talk": 465, "minim": 465, "all_sum": 465, "mpirun": 465, "mpiexec": 465, "send": 465, "homebrew": 465, "anaconda": 465, "openmpi": 465, "libmpi": 465, "dyld": 465, "dyld_library_path": 465, "lib": 465, "connect": 465, "ssh": 465, "checklist": 465, "issu": [465, 466, 469], "hostnam": 465, "password": 465, "confirm": 465, "foo": 465, "bar": 465, "host1": 465, "host2": 465, "qualifi": 465, "ip": 465, "slot": 465, "hostfil": 465, "parallel": [465, 472], "snippet": 465, "loss_grad_fn": 465, "all_avg": 465, "all_reduce_grad": 465, "latenc": 465, "mca": 465, "btl_tcp_link": 465, "tcp": 465, "idea": [466, 468], "behind": 466, "dfdx": [466, 467], "d2fdx2": 466, "zero_grad": 466, "detach": 466, "requires_grad": 466, "dloss_dw": 466, "dloss_dx": 466, "redund": 466, "continu": 466, "suppos": [466, 472], "nice": [466, 468], "propag": [466, 467], "autom": 466, "contriv": [466, 472], "sake": 466, "clariti": 466, "quit": [466, 469], "difficult": 466, "primit": 466, "priorit": 466, "naive_add": 466, "vmap_add": 466, "total": 466, "390": 466, "wherea": 466, "025": 466, "ten": [466, 468], "Of": 466, "cours": 466, "better": [466, 472], "handi": 466, "ellipsi": 467, "mix": 467, "lack": 467, "extrem": [467, 468], "ineffici": [467, 468], "nonzero": 467, "dynam": 468, "fun1": 468, "expensive_fun": 468, "consum": 468, "eager": 468, "thank": 468, "weights_fp16": 468, "trade": 468, "bad": 468, "grow": 468, "computation": 468, "costli": 468, "luckili": 468, "wide": 468, "thousand": 468, "value_and_grad_fn": 468, "implicitli": 468, "anytim": 468, "memoryview": [468, 469], "perfectli": 468, "first_lay": 468, "second_layer_a": 468, "second_layer_b": 468, "protocol": 469, "dlpack": 469, "pep": 469, "3118": 469, "a_view": 469, "owndata": 469, "extern": 469, "demonstr": 469, "x_view": 469, "modifi": 469, "df": 469, "x\u00b2": 469, "2x": 469, "indirectli": 469, "modif": 469, "seen": 469, "occur": 469, "incorpor": 469, "aris": 469, "incorrect": 469, "experiment": 469, "break": 469, "advis": 469, "intermedi": 469, "jnp": 469, "tf": 469, "page": 470, "composit": 470, "archiv": 471, "savez_compress": 471, "save_gguf": 471, "arr_0": 471, "advantag": 472, "race": 472, "interest": 472, "albeit": 472, "d1": 472, "d2": 472, "But": 472, "twice": 472, "measur": 472, "default_stream": 473, "default_devic": 473, "my_devic": 473}, "objects": {"": [[0, 0, 1, "_CPPv43absRK5array14StreamOrDevice", "abs"], [0, 1, 1, "_CPPv43absRK5array14StreamOrDevice", "abs::a"], [0, 1, 1, "_CPPv43absRK5array14StreamOrDevice", "abs::s"], [0, 0, 1, "_CPPv43addRK5arrayRK5array14StreamOrDevice", "add"], [0, 1, 1, "_CPPv43addRK5arrayRK5array14StreamOrDevice", "add::a"], [0, 1, 1, "_CPPv43addRK5arrayRK5array14StreamOrDevice", "add::b"], [0, 1, 1, "_CPPv43addRK5arrayRK5array14StreamOrDevice", "add::s"], [0, 0, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm"], [0, 1, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm::a"], [0, 1, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm::alpha"], [0, 1, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm::b"], [0, 1, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm::beta"], [0, 1, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm::c"], [0, 1, 1, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice", "addmm::s"], [0, 0, 1, "_CPPv43allRK5array14StreamOrDevice", "all"], [0, 0, 1, "_CPPv43allRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "all"], [0, 0, 1, "_CPPv43allRK5arrayb14StreamOrDevice", "all"], [0, 0, 1, "_CPPv43allRK5arrayib14StreamOrDevice", "all"], [0, 1, 1, "_CPPv43allRK5array14StreamOrDevice", "all::a"], [0, 1, 1, "_CPPv43allRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "all::a"], [0, 1, 1, "_CPPv43allRK5arrayb14StreamOrDevice", "all::a"], [0, 1, 1, "_CPPv43allRK5arrayib14StreamOrDevice", "all::a"], [0, 1, 1, "_CPPv43allRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "all::axes"], [0, 1, 1, "_CPPv43allRK5arrayib14StreamOrDevice", "all::axis"], [0, 1, 1, "_CPPv43allRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "all::keepdims"], [0, 1, 1, "_CPPv43allRK5arrayb14StreamOrDevice", "all::keepdims"], [0, 1, 1, "_CPPv43allRK5arrayib14StreamOrDevice", "all::keepdims"], [0, 1, 1, "_CPPv43allRK5array14StreamOrDevice", "all::s"], [0, 1, 1, "_CPPv43allRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "all::s"], [0, 1, 1, "_CPPv43allRK5arrayb14StreamOrDevice", "all::s"], [0, 1, 1, "_CPPv43allRK5arrayib14StreamOrDevice", "all::s"], [0, 0, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose"], [0, 1, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose::a"], [0, 1, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose::atol"], [0, 1, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose::b"], [0, 1, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose::equal_nan"], [0, 1, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose::rtol"], [0, 1, 1, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice", "allclose::s"], [0, 0, 1, "_CPPv43anyRK5array14StreamOrDevice", "any"], [0, 0, 1, "_CPPv43anyRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "any"], [0, 0, 1, "_CPPv43anyRK5arrayb14StreamOrDevice", "any"], [0, 0, 1, "_CPPv43anyRK5arrayib14StreamOrDevice", "any"], [0, 1, 1, "_CPPv43anyRK5array14StreamOrDevice", "any::a"], [0, 1, 1, "_CPPv43anyRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "any::a"], [0, 1, 1, "_CPPv43anyRK5arrayb14StreamOrDevice", "any::a"], [0, 1, 1, "_CPPv43anyRK5arrayib14StreamOrDevice", "any::a"], [0, 1, 1, "_CPPv43anyRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "any::axes"], [0, 1, 1, "_CPPv43anyRK5arrayib14StreamOrDevice", "any::axis"], [0, 1, 1, "_CPPv43anyRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "any::keepdims"], [0, 1, 1, "_CPPv43anyRK5arrayb14StreamOrDevice", "any::keepdims"], [0, 1, 1, "_CPPv43anyRK5arrayib14StreamOrDevice", "any::keepdims"], [0, 1, 1, "_CPPv43anyRK5array14StreamOrDevice", "any::s"], [0, 1, 1, "_CPPv43anyRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "any::s"], [0, 1, 1, "_CPPv43anyRK5arrayb14StreamOrDevice", "any::s"], [0, 1, 1, "_CPPv43anyRK5arrayib14StreamOrDevice", "any::s"], [0, 0, 1, "_CPPv46aranged14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46aranged5Dtype14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangedd14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangedd5Dtype14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangeddd14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangeddd5Dtype14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangei14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangeii14StreamOrDevice", "arange"], [0, 0, 1, "_CPPv46arangeiii14StreamOrDevice", "arange"], [0, 1, 1, "_CPPv46aranged5Dtype14StreamOrDevice", "arange::dtype"], [0, 1, 1, "_CPPv46arangedd5Dtype14StreamOrDevice", "arange::dtype"], [0, 1, 1, "_CPPv46arangeddd5Dtype14StreamOrDevice", "arange::dtype"], [0, 1, 1, "_CPPv46aranged14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46aranged5Dtype14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangedd14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangedd5Dtype14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangeddd14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangeddd5Dtype14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangei14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangeii14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangeiii14StreamOrDevice", "arange::s"], [0, 1, 1, "_CPPv46arangedd14StreamOrDevice", "arange::start"], [0, 1, 1, "_CPPv46arangedd5Dtype14StreamOrDevice", "arange::start"], [0, 1, 1, "_CPPv46arangeddd14StreamOrDevice", "arange::start"], [0, 1, 1, "_CPPv46arangeddd5Dtype14StreamOrDevice", "arange::start"], [0, 1, 1, "_CPPv46arangeii14StreamOrDevice", "arange::start"], [0, 1, 1, "_CPPv46arangeiii14StreamOrDevice", "arange::start"], [0, 1, 1, "_CPPv46arangeddd14StreamOrDevice", "arange::step"], [0, 1, 1, "_CPPv46arangeddd5Dtype14StreamOrDevice", "arange::step"], [0, 1, 1, "_CPPv46arangeiii14StreamOrDevice", "arange::step"], [0, 1, 1, "_CPPv46aranged14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46aranged5Dtype14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangedd14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangedd5Dtype14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangeddd14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangeddd5Dtype14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangei14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangeii14StreamOrDevice", "arange::stop"], [0, 1, 1, "_CPPv46arangeiii14StreamOrDevice", "arange::stop"], [0, 0, 1, "_CPPv46arccosRK5array14StreamOrDevice", "arccos"], [0, 1, 1, "_CPPv46arccosRK5array14StreamOrDevice", "arccos::a"], [0, 1, 1, "_CPPv46arccosRK5array14StreamOrDevice", "arccos::s"], [0, 0, 1, "_CPPv47arccoshRK5array14StreamOrDevice", "arccosh"], [0, 1, 1, "_CPPv47arccoshRK5array14StreamOrDevice", "arccosh::a"], [0, 1, 1, "_CPPv47arccoshRK5array14StreamOrDevice", "arccosh::s"], [0, 0, 1, "_CPPv46arcsinRK5array14StreamOrDevice", "arcsin"], [0, 1, 1, "_CPPv46arcsinRK5array14StreamOrDevice", "arcsin::a"], [0, 1, 1, "_CPPv46arcsinRK5array14StreamOrDevice", "arcsin::s"], [0, 0, 1, "_CPPv47arcsinhRK5array14StreamOrDevice", "arcsinh"], [0, 1, 1, "_CPPv47arcsinhRK5array14StreamOrDevice", "arcsinh::a"], [0, 1, 1, "_CPPv47arcsinhRK5array14StreamOrDevice", "arcsinh::s"], [0, 0, 1, "_CPPv46arctanRK5array14StreamOrDevice", "arctan"], [0, 0, 1, "_CPPv47arctan2RK5arrayRK5array14StreamOrDevice", "arctan2"], [0, 1, 1, "_CPPv47arctan2RK5arrayRK5array14StreamOrDevice", "arctan2::a"], [0, 1, 1, "_CPPv47arctan2RK5arrayRK5array14StreamOrDevice", "arctan2::b"], [0, 1, 1, "_CPPv47arctan2RK5arrayRK5array14StreamOrDevice", "arctan2::s"], [0, 1, 1, "_CPPv46arctanRK5array14StreamOrDevice", "arctan::a"], [0, 1, 1, "_CPPv46arctanRK5array14StreamOrDevice", "arctan::s"], [0, 0, 1, "_CPPv47arctanhRK5array14StreamOrDevice", "arctanh"], [0, 1, 1, "_CPPv47arctanhRK5array14StreamOrDevice", "arctanh::a"], [0, 1, 1, "_CPPv47arctanhRK5array14StreamOrDevice", "arctanh::s"], [0, 0, 1, "_CPPv46argmaxRK5array14StreamOrDevice", "argmax"], [0, 0, 1, "_CPPv46argmaxRK5arrayb14StreamOrDevice", "argmax"], [0, 0, 1, "_CPPv46argmaxRK5arrayib14StreamOrDevice", "argmax"], [0, 1, 1, "_CPPv46argmaxRK5array14StreamOrDevice", "argmax::a"], [0, 1, 1, "_CPPv46argmaxRK5arrayb14StreamOrDevice", "argmax::a"], [0, 1, 1, "_CPPv46argmaxRK5arrayib14StreamOrDevice", "argmax::a"], [0, 1, 1, "_CPPv46argmaxRK5arrayib14StreamOrDevice", "argmax::axis"], [0, 1, 1, "_CPPv46argmaxRK5arrayb14StreamOrDevice", "argmax::keepdims"], [0, 1, 1, "_CPPv46argmaxRK5arrayib14StreamOrDevice", "argmax::keepdims"], [0, 1, 1, "_CPPv46argmaxRK5array14StreamOrDevice", "argmax::s"], [0, 1, 1, "_CPPv46argmaxRK5arrayb14StreamOrDevice", "argmax::s"], [0, 1, 1, "_CPPv46argmaxRK5arrayib14StreamOrDevice", "argmax::s"], [0, 0, 1, "_CPPv46argminRK5array14StreamOrDevice", "argmin"], [0, 0, 1, "_CPPv46argminRK5arrayb14StreamOrDevice", "argmin"], [0, 0, 1, "_CPPv46argminRK5arrayib14StreamOrDevice", "argmin"], [0, 1, 1, "_CPPv46argminRK5array14StreamOrDevice", "argmin::a"], [0, 1, 1, "_CPPv46argminRK5arrayb14StreamOrDevice", "argmin::a"], [0, 1, 1, "_CPPv46argminRK5arrayib14StreamOrDevice", "argmin::a"], [0, 1, 1, "_CPPv46argminRK5arrayib14StreamOrDevice", "argmin::axis"], [0, 1, 1, "_CPPv46argminRK5arrayb14StreamOrDevice", "argmin::keepdims"], [0, 1, 1, "_CPPv46argminRK5arrayib14StreamOrDevice", "argmin::keepdims"], [0, 1, 1, "_CPPv46argminRK5array14StreamOrDevice", "argmin::s"], [0, 1, 1, "_CPPv46argminRK5arrayb14StreamOrDevice", "argmin::s"], [0, 1, 1, "_CPPv46argminRK5arrayib14StreamOrDevice", "argmin::s"], [0, 0, 1, "_CPPv412argpartitionRK5arrayi14StreamOrDevice", "argpartition"], [0, 0, 1, "_CPPv412argpartitionRK5arrayii14StreamOrDevice", "argpartition"], [0, 1, 1, "_CPPv412argpartitionRK5arrayi14StreamOrDevice", "argpartition::a"], [0, 1, 1, "_CPPv412argpartitionRK5arrayii14StreamOrDevice", "argpartition::a"], [0, 1, 1, "_CPPv412argpartitionRK5arrayii14StreamOrDevice", "argpartition::axis"], [0, 1, 1, "_CPPv412argpartitionRK5arrayi14StreamOrDevice", "argpartition::kth"], [0, 1, 1, "_CPPv412argpartitionRK5arrayii14StreamOrDevice", "argpartition::kth"], [0, 1, 1, "_CPPv412argpartitionRK5arrayi14StreamOrDevice", "argpartition::s"], [0, 1, 1, "_CPPv412argpartitionRK5arrayii14StreamOrDevice", "argpartition::s"], [0, 0, 1, "_CPPv47argsortRK5array14StreamOrDevice", "argsort"], [0, 0, 1, "_CPPv47argsortRK5arrayi14StreamOrDevice", "argsort"], [0, 1, 1, "_CPPv47argsortRK5array14StreamOrDevice", "argsort::a"], [0, 1, 1, "_CPPv47argsortRK5arrayi14StreamOrDevice", "argsort::a"], [0, 1, 1, "_CPPv47argsortRK5arrayi14StreamOrDevice", "argsort::axis"], [0, 1, 1, "_CPPv47argsortRK5array14StreamOrDevice", "argsort::s"], [0, 1, 1, "_CPPv47argsortRK5arrayi14StreamOrDevice", "argsort::s"], [0, 0, 1, "_CPPv411array_equalRK5arrayRK5array14StreamOrDevice", "array_equal"], [0, 0, 1, "_CPPv411array_equalRK5arrayRK5arrayb14StreamOrDevice", "array_equal"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5array14StreamOrDevice", "array_equal::a"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5arrayb14StreamOrDevice", "array_equal::a"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5array14StreamOrDevice", "array_equal::b"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5arrayb14StreamOrDevice", "array_equal::b"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5arrayb14StreamOrDevice", "array_equal::equal_nan"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5array14StreamOrDevice", "array_equal::s"], [0, 1, 1, "_CPPv411array_equalRK5arrayRK5arrayb14StreamOrDevice", "array_equal::s"], [0, 0, 1, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice", "as_strided"], [0, 1, 1, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice", "as_strided::a"], [0, 1, 1, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice", "as_strided::offset"], [0, 1, 1, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice", "as_strided::s"], [0, 1, 1, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice", "as_strided::shape"], [0, 1, 1, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice", "as_strided::strides"], [0, 0, 1, "_CPPv46astype5array5Dtype14StreamOrDevice", "astype"], [0, 1, 1, "_CPPv46astype5array5Dtype14StreamOrDevice", "astype::a"], [0, 1, 1, "_CPPv46astype5array5Dtype14StreamOrDevice", "astype::dtype"], [0, 1, 1, "_CPPv46astype5array5Dtype14StreamOrDevice", "astype::s"], [0, 0, 1, "_CPPv410atleast_1dRK5array14StreamOrDevice", "atleast_1d"], [0, 0, 1, "_CPPv410atleast_1dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_1d"], [0, 1, 1, "_CPPv410atleast_1dRK5array14StreamOrDevice", "atleast_1d::a"], [0, 1, 1, "_CPPv410atleast_1dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_1d::a"], [0, 1, 1, "_CPPv410atleast_1dRK5array14StreamOrDevice", "atleast_1d::s"], [0, 1, 1, "_CPPv410atleast_1dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_1d::s"], [0, 0, 1, "_CPPv410atleast_2dRK5array14StreamOrDevice", "atleast_2d"], [0, 0, 1, "_CPPv410atleast_2dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_2d"], [0, 1, 1, "_CPPv410atleast_2dRK5array14StreamOrDevice", "atleast_2d::a"], [0, 1, 1, "_CPPv410atleast_2dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_2d::a"], [0, 1, 1, "_CPPv410atleast_2dRK5array14StreamOrDevice", "atleast_2d::s"], [0, 1, 1, "_CPPv410atleast_2dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_2d::s"], [0, 0, 1, "_CPPv410atleast_3dRK5array14StreamOrDevice", "atleast_3d"], [0, 0, 1, "_CPPv410atleast_3dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_3d"], [0, 1, 1, "_CPPv410atleast_3dRK5array14StreamOrDevice", "atleast_3d::a"], [0, 1, 1, "_CPPv410atleast_3dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_3d::a"], [0, 1, 1, "_CPPv410atleast_3dRK5array14StreamOrDevice", "atleast_3d::s"], [0, 1, 1, "_CPPv410atleast_3dRKNSt6vectorI5arrayEE14StreamOrDevice", "atleast_3d::s"], [0, 0, 1, "_CPPv411bitwise_andRK5arrayRK5array14StreamOrDevice", "bitwise_and"], [0, 1, 1, "_CPPv411bitwise_andRK5arrayRK5array14StreamOrDevice", "bitwise_and::a"], [0, 1, 1, "_CPPv411bitwise_andRK5arrayRK5array14StreamOrDevice", "bitwise_and::b"], [0, 1, 1, "_CPPv411bitwise_andRK5arrayRK5array14StreamOrDevice", "bitwise_and::s"], [0, 0, 1, "_CPPv410bitwise_orRK5arrayRK5array14StreamOrDevice", "bitwise_or"], [0, 1, 1, "_CPPv410bitwise_orRK5arrayRK5array14StreamOrDevice", "bitwise_or::a"], [0, 1, 1, "_CPPv410bitwise_orRK5arrayRK5array14StreamOrDevice", "bitwise_or::b"], [0, 1, 1, "_CPPv410bitwise_orRK5arrayRK5array14StreamOrDevice", "bitwise_or::s"], [0, 0, 1, "_CPPv411bitwise_xorRK5arrayRK5array14StreamOrDevice", "bitwise_xor"], [0, 1, 1, "_CPPv411bitwise_xorRK5arrayRK5array14StreamOrDevice", "bitwise_xor::a"], [0, 1, 1, "_CPPv411bitwise_xorRK5arrayRK5array14StreamOrDevice", "bitwise_xor::b"], [0, 1, 1, "_CPPv411bitwise_xorRK5arrayRK5array14StreamOrDevice", "bitwise_xor::s"], [0, 0, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::a"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::b"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::block_size"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::mask_lhs"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::mask_out"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::mask_rhs"], [0, 1, 1, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "block_masked_mm::s"], [0, 0, 1, "_CPPv416broadcast_arraysRKNSt6vectorI5arrayEE14StreamOrDevice", "broadcast_arrays"], [0, 1, 1, "_CPPv416broadcast_arraysRKNSt6vectorI5arrayEE14StreamOrDevice", "broadcast_arrays::inputs"], [0, 1, 1, "_CPPv416broadcast_arraysRKNSt6vectorI5arrayEE14StreamOrDevice", "broadcast_arrays::s"], [0, 0, 1, "_CPPv412broadcast_toRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "broadcast_to"], [0, 1, 1, "_CPPv412broadcast_toRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "broadcast_to::a"], [0, 1, 1, "_CPPv412broadcast_toRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "broadcast_to::s"], [0, 1, 1, "_CPPv412broadcast_toRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "broadcast_to::shape"], [0, 0, 1, "_CPPv44ceilRK5array14StreamOrDevice", "ceil"], [0, 1, 1, "_CPPv44ceilRK5array14StreamOrDevice", "ceil::a"], [0, 1, 1, "_CPPv44ceilRK5array14StreamOrDevice", "ceil::s"], [0, 0, 1, "_CPPv44clipRK5arrayRKNSt8optionalI5arrayEERKNSt8optionalI5arrayEE14StreamOrDevice", "clip"], [0, 1, 1, "_CPPv44clipRK5arrayRKNSt8optionalI5arrayEERKNSt8optionalI5arrayEE14StreamOrDevice", "clip::a"], [0, 1, 1, "_CPPv44clipRK5arrayRKNSt8optionalI5arrayEERKNSt8optionalI5arrayEE14StreamOrDevice", "clip::a_max"], [0, 1, 1, "_CPPv44clipRK5arrayRKNSt8optionalI5arrayEERKNSt8optionalI5arrayEE14StreamOrDevice", "clip::a_min"], [0, 1, 1, "_CPPv44clipRK5arrayRKNSt8optionalI5arrayEERKNSt8optionalI5arrayEE14StreamOrDevice", "clip::s"], [0, 0, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEE14StreamOrDevice", "concatenate"], [0, 0, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEEi14StreamOrDevice", "concatenate"], [0, 1, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEE14StreamOrDevice", "concatenate::arrays"], [0, 1, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEEi14StreamOrDevice", "concatenate::arrays"], [0, 1, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEEi14StreamOrDevice", "concatenate::axis"], [0, 1, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEE14StreamOrDevice", "concatenate::s"], [0, 1, 1, "_CPPv411concatenateRKNSt6vectorI5arrayEEi14StreamOrDevice", "concatenate::s"], [0, 0, 1, "_CPPv49conjugateRK5array14StreamOrDevice", "conjugate"], [0, 1, 1, "_CPPv49conjugateRK5array14StreamOrDevice", "conjugate::a"], [0, 1, 1, "_CPPv49conjugateRK5array14StreamOrDevice", "conjugate::s"], [0, 0, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::dilation"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::groups"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::input"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::padding"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::s"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::stride"], [0, 1, 1, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv1d::weight"], [0, 0, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::dilation"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::groups"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::input"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::padding"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::s"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::stride"], [0, 1, 1, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv2d::weight"], [0, 0, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::dilation"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::groups"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::input"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::padding"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::s"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::stride"], [0, 1, 1, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv3d::weight"], [0, 0, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general"], [0, 0, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::flip"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::flip"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::groups"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::groups"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::input"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::input"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::input_dilation"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::input_dilation"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::kernel_dilation"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::kernel_dilation"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::padding"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::padding_hi"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::padding_lo"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::s"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::s"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::stride"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::stride"], [0, 1, 1, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::weight"], [0, 1, 1, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice", "conv_general::weight"], [0, 0, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::dilation"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::groups"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::input"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::padding"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::s"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::stride"], [0, 1, 1, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice", "conv_transpose1d::weight"], [0, 0, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::dilation"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::groups"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::input"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::padding"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::s"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::stride"], [0, 1, 1, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice", "conv_transpose2d::weight"], [0, 0, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::dilation"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::groups"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::input"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::padding"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::s"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::stride"], [0, 1, 1, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice", "conv_transpose3d::weight"], [0, 0, 1, "_CPPv44copy5array14StreamOrDevice", "copy"], [0, 1, 1, "_CPPv44copy5array14StreamOrDevice", "copy::a"], [0, 1, 1, "_CPPv44copy5array14StreamOrDevice", "copy::s"], [0, 0, 1, "_CPPv43cosRK5array14StreamOrDevice", "cos"], [0, 1, 1, "_CPPv43cosRK5array14StreamOrDevice", "cos::a"], [0, 1, 1, "_CPPv43cosRK5array14StreamOrDevice", "cos::s"], [0, 0, 1, "_CPPv44coshRK5array14StreamOrDevice", "cosh"], [0, 1, 1, "_CPPv44coshRK5array14StreamOrDevice", "cosh::a"], [0, 1, 1, "_CPPv44coshRK5array14StreamOrDevice", "cosh::s"], [0, 0, 1, "_CPPv46cummaxRK5arrayibb14StreamOrDevice", "cummax"], [0, 1, 1, "_CPPv46cummaxRK5arrayibb14StreamOrDevice", "cummax::a"], [0, 1, 1, "_CPPv46cummaxRK5arrayibb14StreamOrDevice", "cummax::axis"], [0, 1, 1, "_CPPv46cummaxRK5arrayibb14StreamOrDevice", "cummax::inclusive"], [0, 1, 1, "_CPPv46cummaxRK5arrayibb14StreamOrDevice", "cummax::reverse"], [0, 1, 1, "_CPPv46cummaxRK5arrayibb14StreamOrDevice", "cummax::s"], [0, 0, 1, "_CPPv46cumminRK5arrayibb14StreamOrDevice", "cummin"], [0, 1, 1, "_CPPv46cumminRK5arrayibb14StreamOrDevice", "cummin::a"], [0, 1, 1, "_CPPv46cumminRK5arrayibb14StreamOrDevice", "cummin::axis"], [0, 1, 1, "_CPPv46cumminRK5arrayibb14StreamOrDevice", "cummin::inclusive"], [0, 1, 1, "_CPPv46cumminRK5arrayibb14StreamOrDevice", "cummin::reverse"], [0, 1, 1, "_CPPv46cumminRK5arrayibb14StreamOrDevice", "cummin::s"], [0, 0, 1, "_CPPv47cumprodRK5arrayibb14StreamOrDevice", "cumprod"], [0, 1, 1, "_CPPv47cumprodRK5arrayibb14StreamOrDevice", "cumprod::a"], [0, 1, 1, "_CPPv47cumprodRK5arrayibb14StreamOrDevice", "cumprod::axis"], [0, 1, 1, "_CPPv47cumprodRK5arrayibb14StreamOrDevice", "cumprod::inclusive"], [0, 1, 1, "_CPPv47cumprodRK5arrayibb14StreamOrDevice", "cumprod::reverse"], [0, 1, 1, "_CPPv47cumprodRK5arrayibb14StreamOrDevice", "cumprod::s"], [0, 0, 1, "_CPPv46cumsumRK5arrayibb14StreamOrDevice", "cumsum"], [0, 1, 1, "_CPPv46cumsumRK5arrayibb14StreamOrDevice", "cumsum::a"], [0, 1, 1, "_CPPv46cumsumRK5arrayibb14StreamOrDevice", "cumsum::axis"], [0, 1, 1, "_CPPv46cumsumRK5arrayibb14StreamOrDevice", "cumsum::inclusive"], [0, 1, 1, "_CPPv46cumsumRK5arrayibb14StreamOrDevice", "cumsum::reverse"], [0, 1, 1, "_CPPv46cumsumRK5arrayibb14StreamOrDevice", "cumsum::s"], [0, 0, 1, "_CPPv47degreesRK5array14StreamOrDevice", "degrees"], [0, 1, 1, "_CPPv47degreesRK5array14StreamOrDevice", "degrees::a"], [0, 1, 1, "_CPPv47degreesRK5array14StreamOrDevice", "degrees::s"], [0, 0, 1, "_CPPv47dependsRKNSt6vectorI5arrayEERKNSt6vectorI5arrayEE", "depends"], [0, 1, 1, "_CPPv47dependsRKNSt6vectorI5arrayEERKNSt6vectorI5arrayEE", "depends::dependencies"], [0, 1, 1, "_CPPv47dependsRKNSt6vectorI5arrayEERKNSt6vectorI5arrayEE", "depends::inputs"], [0, 0, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize"], [0, 1, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize::biases"], [0, 1, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize::bits"], [0, 1, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize::group_size"], [0, 1, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize::s"], [0, 1, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize::scales"], [0, 1, 1, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice", "dequantize::w"], [0, 0, 1, "_CPPv44diagRK5arrayi14StreamOrDevice", "diag"], [0, 1, 1, "_CPPv44diagRK5arrayi14StreamOrDevice", "diag::a"], [0, 1, 1, "_CPPv44diagRK5arrayi14StreamOrDevice", "diag::k"], [0, 1, 1, "_CPPv44diagRK5arrayi14StreamOrDevice", "diag::s"], [0, 0, 1, "_CPPv48diagonalRK5arrayiii14StreamOrDevice", "diagonal"], [0, 1, 1, "_CPPv48diagonalRK5arrayiii14StreamOrDevice", "diagonal::a"], [0, 1, 1, "_CPPv48diagonalRK5arrayiii14StreamOrDevice", "diagonal::axis1"], [0, 1, 1, "_CPPv48diagonalRK5arrayiii14StreamOrDevice", "diagonal::axis2"], [0, 1, 1, "_CPPv48diagonalRK5arrayiii14StreamOrDevice", "diagonal::offset"], [0, 1, 1, "_CPPv48diagonalRK5arrayiii14StreamOrDevice", "diagonal::s"], [0, 0, 1, "_CPPv46divideRK5arrayRK5array14StreamOrDevice", "divide"], [0, 1, 1, "_CPPv46divideRK5arrayRK5array14StreamOrDevice", "divide::a"], [0, 1, 1, "_CPPv46divideRK5arrayRK5array14StreamOrDevice", "divide::b"], [0, 1, 1, "_CPPv46divideRK5arrayRK5array14StreamOrDevice", "divide::s"], [0, 0, 1, "_CPPv46divmodRK5arrayRK5array14StreamOrDevice", "divmod"], [0, 1, 1, "_CPPv46divmodRK5arrayRK5array14StreamOrDevice", "divmod::a"], [0, 1, 1, "_CPPv46divmodRK5arrayRK5array14StreamOrDevice", "divmod::b"], [0, 1, 1, "_CPPv46divmodRK5arrayRK5array14StreamOrDevice", "divmod::s"], [0, 0, 1, "_CPPv45equalRK5arrayRK5array14StreamOrDevice", "equal"], [0, 1, 1, "_CPPv45equalRK5arrayRK5array14StreamOrDevice", "equal::a"], [0, 1, 1, "_CPPv45equalRK5arrayRK5array14StreamOrDevice", "equal::b"], [0, 1, 1, "_CPPv45equalRK5arrayRK5array14StreamOrDevice", "equal::s"], [0, 0, 1, "_CPPv43erfRK5array14StreamOrDevice", "erf"], [0, 1, 1, "_CPPv43erfRK5array14StreamOrDevice", "erf::a"], [0, 1, 1, "_CPPv43erfRK5array14StreamOrDevice", "erf::s"], [0, 0, 1, "_CPPv46erfinvRK5array14StreamOrDevice", "erfinv"], [0, 1, 1, "_CPPv46erfinvRK5array14StreamOrDevice", "erfinv::a"], [0, 1, 1, "_CPPv46erfinvRK5array14StreamOrDevice", "erfinv::s"], [0, 0, 1, "_CPPv43expRK5array14StreamOrDevice", "exp"], [0, 1, 1, "_CPPv43expRK5array14StreamOrDevice", "exp::a"], [0, 1, 1, "_CPPv43expRK5array14StreamOrDevice", "exp::s"], [0, 0, 1, "_CPPv411expand_dimsRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "expand_dims"], [0, 0, 1, "_CPPv411expand_dimsRK5arrayi14StreamOrDevice", "expand_dims"], [0, 1, 1, "_CPPv411expand_dimsRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "expand_dims::a"], [0, 1, 1, "_CPPv411expand_dimsRK5arrayi14StreamOrDevice", "expand_dims::a"], [0, 1, 1, "_CPPv411expand_dimsRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "expand_dims::axes"], [0, 1, 1, "_CPPv411expand_dimsRK5arrayi14StreamOrDevice", "expand_dims::axis"], [0, 1, 1, "_CPPv411expand_dimsRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "expand_dims::s"], [0, 1, 1, "_CPPv411expand_dimsRK5arrayi14StreamOrDevice", "expand_dims::s"], [0, 0, 1, "_CPPv45expm1RK5array14StreamOrDevice", "expm1"], [0, 1, 1, "_CPPv45expm1RK5array14StreamOrDevice", "expm1::a"], [0, 1, 1, "_CPPv45expm1RK5array14StreamOrDevice", "expm1::s"], [0, 0, 1, "_CPPv43eyei14StreamOrDevice", "eye"], [0, 0, 1, "_CPPv43eyei5Dtype14StreamOrDevice", "eye"], [0, 0, 1, "_CPPv43eyeii14StreamOrDevice", "eye"], [0, 0, 1, "_CPPv43eyeiii14StreamOrDevice", "eye"], [0, 0, 1, "_CPPv43eyeiii5Dtype14StreamOrDevice", "eye"], [0, 1, 1, "_CPPv43eyei5Dtype14StreamOrDevice", "eye::dtype"], [0, 1, 1, "_CPPv43eyeiii5Dtype14StreamOrDevice", "eye::dtype"], [0, 1, 1, "_CPPv43eyeiii14StreamOrDevice", "eye::k"], [0, 1, 1, "_CPPv43eyeiii5Dtype14StreamOrDevice", "eye::k"], [0, 1, 1, "_CPPv43eyeii14StreamOrDevice", "eye::m"], [0, 1, 1, "_CPPv43eyeiii14StreamOrDevice", "eye::m"], [0, 1, 1, "_CPPv43eyeiii5Dtype14StreamOrDevice", "eye::m"], [0, 1, 1, "_CPPv43eyei14StreamOrDevice", "eye::n"], [0, 1, 1, "_CPPv43eyei5Dtype14StreamOrDevice", "eye::n"], [0, 1, 1, "_CPPv43eyeii14StreamOrDevice", "eye::n"], [0, 1, 1, "_CPPv43eyeiii14StreamOrDevice", "eye::n"], [0, 1, 1, "_CPPv43eyeiii5Dtype14StreamOrDevice", "eye::n"], [0, 1, 1, "_CPPv43eyei14StreamOrDevice", "eye::s"], [0, 1, 1, "_CPPv43eyei5Dtype14StreamOrDevice", "eye::s"], [0, 1, 1, "_CPPv43eyeii14StreamOrDevice", "eye::s"], [0, 1, 1, "_CPPv43eyeiii14StreamOrDevice", "eye::s"], [0, 1, 1, "_CPPv43eyeiii5Dtype14StreamOrDevice", "eye::s"], [0, 0, 1, "_CPPv47flattenRK5array14StreamOrDevice", "flatten"], [0, 0, 1, "_CPPv47flattenRK5arrayii14StreamOrDevice", "flatten"], [0, 1, 1, "_CPPv47flattenRK5array14StreamOrDevice", "flatten::a"], [0, 1, 1, "_CPPv47flattenRK5arrayii14StreamOrDevice", "flatten::a"], [0, 1, 1, "_CPPv47flattenRK5arrayii14StreamOrDevice", "flatten::end_axis"], [0, 1, 1, "_CPPv47flattenRK5array14StreamOrDevice", "flatten::s"], [0, 1, 1, "_CPPv47flattenRK5arrayii14StreamOrDevice", "flatten::s"], [0, 1, 1, "_CPPv47flattenRK5arrayii14StreamOrDevice", "flatten::start_axis"], [0, 0, 1, "_CPPv45floorRK5array14StreamOrDevice", "floor"], [0, 1, 1, "_CPPv45floorRK5array14StreamOrDevice", "floor::a"], [0, 1, 1, "_CPPv45floorRK5array14StreamOrDevice", "floor::s"], [0, 0, 1, "_CPPv412floor_divideRK5arrayRK5array14StreamOrDevice", "floor_divide"], [0, 1, 1, "_CPPv412floor_divideRK5arrayRK5array14StreamOrDevice", "floor_divide::a"], [0, 1, 1, "_CPPv412floor_divideRK5arrayRK5array14StreamOrDevice", "floor_divide::b"], [0, 1, 1, "_CPPv412floor_divideRK5arrayRK5array14StreamOrDevice", "floor_divide::s"], [0, 0, 1, "_CPPv44fullNSt6vectorIiEE5array14StreamOrDevice", "full"], [0, 0, 1, "_CPPv44fullNSt6vectorIiEE5array5Dtype14StreamOrDevice", "full"], [0, 0, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T14StreamOrDevice", "full"], [0, 0, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice", "full"], [0, 2, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T14StreamOrDevice", "full::T"], [0, 2, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice", "full::T"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array5Dtype14StreamOrDevice", "full::dtype"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice", "full::dtype"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array14StreamOrDevice", "full::s"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array5Dtype14StreamOrDevice", "full::s"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T14StreamOrDevice", "full::s"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice", "full::s"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array14StreamOrDevice", "full::shape"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array5Dtype14StreamOrDevice", "full::shape"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T14StreamOrDevice", "full::shape"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice", "full::shape"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T14StreamOrDevice", "full::val"], [0, 1, 1, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice", "full::val"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array14StreamOrDevice", "full::vals"], [0, 1, 1, "_CPPv44fullNSt6vectorIiEE5array5Dtype14StreamOrDevice", "full::vals"], [0, 0, 1, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice", "gather"], [0, 0, 1, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "gather"], [0, 1, 1, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice", "gather::a"], [0, 1, 1, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "gather::a"], [0, 1, 1, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "gather::axes"], [0, 1, 1, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice", "gather::axis"], [0, 1, 1, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice", "gather::indices"], [0, 1, 1, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "gather::indices"], [0, 1, 1, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice", "gather::s"], [0, 1, 1, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "gather::s"], [0, 1, 1, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice", "gather::slice_sizes"], [0, 1, 1, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "gather::slice_sizes"], [0, 0, 1, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "gather_mm"], [0, 1, 1, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "gather_mm::a"], [0, 1, 1, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "gather_mm::b"], [0, 1, 1, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "gather_mm::lhs_indices"], [0, 1, 1, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "gather_mm::rhs_indices"], [0, 1, 1, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice", "gather_mm::s"], [0, 0, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::biases"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::bits"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::group_size"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::lhs_indices"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::rhs_indices"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::s"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::scales"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::transpose"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::w"], [0, 1, 1, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice", "gather_qmm::x"], [0, 0, 1, "_CPPv47greaterRK5arrayRK5array14StreamOrDevice", "greater"], [0, 1, 1, "_CPPv47greaterRK5arrayRK5array14StreamOrDevice", "greater::a"], [0, 1, 1, "_CPPv47greaterRK5arrayRK5array14StreamOrDevice", "greater::b"], [0, 1, 1, "_CPPv47greaterRK5arrayRK5array14StreamOrDevice", "greater::s"], [0, 0, 1, "_CPPv413greater_equalRK5arrayRK5array14StreamOrDevice", "greater_equal"], [0, 1, 1, "_CPPv413greater_equalRK5arrayRK5array14StreamOrDevice", "greater_equal::a"], [0, 1, 1, "_CPPv413greater_equalRK5arrayRK5array14StreamOrDevice", "greater_equal::b"], [0, 1, 1, "_CPPv413greater_equalRK5arrayRK5array14StreamOrDevice", "greater_equal::s"], [0, 0, 1, "_CPPv418hadamard_transformRK5arrayNSt8optionalIfEE14StreamOrDevice", "hadamard_transform"], [0, 1, 1, "_CPPv418hadamard_transformRK5arrayNSt8optionalIfEE14StreamOrDevice", "hadamard_transform::a"], [0, 1, 1, "_CPPv418hadamard_transformRK5arrayNSt8optionalIfEE14StreamOrDevice", "hadamard_transform::s"], [0, 1, 1, "_CPPv418hadamard_transformRK5arrayNSt8optionalIfEE14StreamOrDevice", "hadamard_transform::scale"], [0, 0, 1, "_CPPv48identityi14StreamOrDevice", "identity"], [0, 0, 1, "_CPPv48identityi5Dtype14StreamOrDevice", "identity"], [0, 1, 1, "_CPPv48identityi5Dtype14StreamOrDevice", "identity::dtype"], [0, 1, 1, "_CPPv48identityi14StreamOrDevice", "identity::n"], [0, 1, 1, "_CPPv48identityi5Dtype14StreamOrDevice", "identity::n"], [0, 1, 1, "_CPPv48identityi14StreamOrDevice", "identity::s"], [0, 1, 1, "_CPPv48identityi5Dtype14StreamOrDevice", "identity::s"], [0, 0, 1, "_CPPv45innerRK5arrayRK5array14StreamOrDevice", "inner"], [0, 1, 1, "_CPPv45innerRK5arrayRK5array14StreamOrDevice", "inner::a"], [0, 1, 1, "_CPPv45innerRK5arrayRK5array14StreamOrDevice", "inner::b"], [0, 1, 1, "_CPPv45innerRK5arrayRK5array14StreamOrDevice", "inner::s"], [0, 0, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose"], [0, 1, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose::a"], [0, 1, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose::atol"], [0, 1, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose::b"], [0, 1, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose::equal_nan"], [0, 1, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose::rtol"], [0, 1, 1, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice", "isclose::s"], [0, 0, 1, "_CPPv48isfiniteRK5array14StreamOrDevice", "isfinite"], [0, 1, 1, "_CPPv48isfiniteRK5array14StreamOrDevice", "isfinite::a"], [0, 1, 1, "_CPPv48isfiniteRK5array14StreamOrDevice", "isfinite::s"], [0, 0, 1, "_CPPv45isinfRK5array14StreamOrDevice", "isinf"], [0, 1, 1, "_CPPv45isinfRK5array14StreamOrDevice", "isinf::a"], [0, 1, 1, "_CPPv45isinfRK5array14StreamOrDevice", "isinf::s"], [0, 0, 1, "_CPPv45isnanRK5array14StreamOrDevice", "isnan"], [0, 1, 1, "_CPPv45isnanRK5array14StreamOrDevice", "isnan::a"], [0, 1, 1, "_CPPv45isnanRK5array14StreamOrDevice", "isnan::s"], [0, 0, 1, "_CPPv48isneginfRK5array14StreamOrDevice", "isneginf"], [0, 1, 1, "_CPPv48isneginfRK5array14StreamOrDevice", "isneginf::a"], [0, 1, 1, "_CPPv48isneginfRK5array14StreamOrDevice", "isneginf::s"], [0, 0, 1, "_CPPv48isposinfRK5array14StreamOrDevice", "isposinf"], [0, 1, 1, "_CPPv48isposinfRK5array14StreamOrDevice", "isposinf::a"], [0, 1, 1, "_CPPv48isposinfRK5array14StreamOrDevice", "isposinf::s"], [0, 0, 1, "_CPPv410left_shiftRK5arrayRK5array14StreamOrDevice", "left_shift"], [0, 1, 1, "_CPPv410left_shiftRK5arrayRK5array14StreamOrDevice", "left_shift::a"], [0, 1, 1, "_CPPv410left_shiftRK5arrayRK5array14StreamOrDevice", "left_shift::b"], [0, 1, 1, "_CPPv410left_shiftRK5arrayRK5array14StreamOrDevice", "left_shift::s"], [0, 0, 1, "_CPPv44lessRK5arrayRK5array14StreamOrDevice", "less"], [0, 1, 1, "_CPPv44lessRK5arrayRK5array14StreamOrDevice", "less::a"], [0, 1, 1, "_CPPv44lessRK5arrayRK5array14StreamOrDevice", "less::b"], [0, 1, 1, "_CPPv44lessRK5arrayRK5array14StreamOrDevice", "less::s"], [0, 0, 1, "_CPPv410less_equalRK5arrayRK5array14StreamOrDevice", "less_equal"], [0, 1, 1, "_CPPv410less_equalRK5arrayRK5array14StreamOrDevice", "less_equal::a"], [0, 1, 1, "_CPPv410less_equalRK5arrayRK5array14StreamOrDevice", "less_equal::b"], [0, 1, 1, "_CPPv410less_equalRK5arrayRK5array14StreamOrDevice", "less_equal::s"], [0, 0, 1, "_CPPv48linspaceddi5Dtype14StreamOrDevice", "linspace"], [0, 1, 1, "_CPPv48linspaceddi5Dtype14StreamOrDevice", "linspace::dtype"], [0, 1, 1, "_CPPv48linspaceddi5Dtype14StreamOrDevice", "linspace::num"], [0, 1, 1, "_CPPv48linspaceddi5Dtype14StreamOrDevice", "linspace::s"], [0, 1, 1, "_CPPv48linspaceddi5Dtype14StreamOrDevice", "linspace::start"], [0, 1, 1, "_CPPv48linspaceddi5Dtype14StreamOrDevice", "linspace::stop"], [0, 0, 1, "_CPPv43logRK5array14StreamOrDevice", "log"], [0, 0, 1, "_CPPv45log10RK5array14StreamOrDevice", "log10"], [0, 1, 1, "_CPPv45log10RK5array14StreamOrDevice", "log10::a"], [0, 1, 1, "_CPPv45log10RK5array14StreamOrDevice", "log10::s"], [0, 0, 1, "_CPPv45log1pRK5array14StreamOrDevice", "log1p"], [0, 1, 1, "_CPPv45log1pRK5array14StreamOrDevice", "log1p::a"], [0, 1, 1, "_CPPv45log1pRK5array14StreamOrDevice", "log1p::s"], [0, 0, 1, "_CPPv44log2RK5array14StreamOrDevice", "log2"], [0, 1, 1, "_CPPv44log2RK5array14StreamOrDevice", "log2::a"], [0, 1, 1, "_CPPv44log2RK5array14StreamOrDevice", "log2::s"], [0, 1, 1, "_CPPv43logRK5array14StreamOrDevice", "log::a"], [0, 1, 1, "_CPPv43logRK5array14StreamOrDevice", "log::s"], [0, 0, 1, "_CPPv49logaddexpRK5arrayRK5array14StreamOrDevice", "logaddexp"], [0, 1, 1, "_CPPv49logaddexpRK5arrayRK5array14StreamOrDevice", "logaddexp::a"], [0, 1, 1, "_CPPv49logaddexpRK5arrayRK5array14StreamOrDevice", "logaddexp::b"], [0, 1, 1, "_CPPv49logaddexpRK5arrayRK5array14StreamOrDevice", "logaddexp::s"], [0, 0, 1, "_CPPv411logical_andRK5arrayRK5array14StreamOrDevice", "logical_and"], [0, 1, 1, "_CPPv411logical_andRK5arrayRK5array14StreamOrDevice", "logical_and::a"], [0, 1, 1, "_CPPv411logical_andRK5arrayRK5array14StreamOrDevice", "logical_and::b"], [0, 1, 1, "_CPPv411logical_andRK5arrayRK5array14StreamOrDevice", "logical_and::s"], [0, 0, 1, "_CPPv411logical_notRK5array14StreamOrDevice", "logical_not"], [0, 1, 1, "_CPPv411logical_notRK5array14StreamOrDevice", "logical_not::a"], [0, 1, 1, "_CPPv411logical_notRK5array14StreamOrDevice", "logical_not::s"], [0, 0, 1, "_CPPv410logical_orRK5arrayRK5array14StreamOrDevice", "logical_or"], [0, 1, 1, "_CPPv410logical_orRK5arrayRK5array14StreamOrDevice", "logical_or::a"], [0, 1, 1, "_CPPv410logical_orRK5arrayRK5array14StreamOrDevice", "logical_or::b"], [0, 1, 1, "_CPPv410logical_orRK5arrayRK5array14StreamOrDevice", "logical_or::s"], [0, 0, 1, "_CPPv49logsumexpRK5array14StreamOrDevice", "logsumexp"], [0, 0, 1, "_CPPv49logsumexpRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "logsumexp"], [0, 0, 1, "_CPPv49logsumexpRK5arrayb14StreamOrDevice", "logsumexp"], [0, 0, 1, "_CPPv49logsumexpRK5arrayib14StreamOrDevice", "logsumexp"], [0, 1, 1, "_CPPv49logsumexpRK5array14StreamOrDevice", "logsumexp::a"], [0, 1, 1, "_CPPv49logsumexpRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "logsumexp::a"], [0, 1, 1, "_CPPv49logsumexpRK5arrayb14StreamOrDevice", "logsumexp::a"], [0, 1, 1, "_CPPv49logsumexpRK5arrayib14StreamOrDevice", "logsumexp::a"], [0, 1, 1, "_CPPv49logsumexpRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "logsumexp::axes"], [0, 1, 1, "_CPPv49logsumexpRK5arrayib14StreamOrDevice", "logsumexp::axis"], [0, 1, 1, "_CPPv49logsumexpRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "logsumexp::keepdims"], [0, 1, 1, "_CPPv49logsumexpRK5arrayb14StreamOrDevice", "logsumexp::keepdims"], [0, 1, 1, "_CPPv49logsumexpRK5arrayib14StreamOrDevice", "logsumexp::keepdims"], [0, 1, 1, "_CPPv49logsumexpRK5array14StreamOrDevice", "logsumexp::s"], [0, 1, 1, "_CPPv49logsumexpRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "logsumexp::s"], [0, 1, 1, "_CPPv49logsumexpRK5arrayb14StreamOrDevice", "logsumexp::s"], [0, 1, 1, "_CPPv49logsumexpRK5arrayib14StreamOrDevice", "logsumexp::s"], [0, 0, 1, "_CPPv46matmulRK5arrayRK5array14StreamOrDevice", "matmul"], [0, 1, 1, "_CPPv46matmulRK5arrayRK5array14StreamOrDevice", "matmul::a"], [0, 1, 1, "_CPPv46matmulRK5arrayRK5array14StreamOrDevice", "matmul::b"], [0, 1, 1, "_CPPv46matmulRK5arrayRK5array14StreamOrDevice", "matmul::s"], [0, 0, 1, "_CPPv43maxRK5array14StreamOrDevice", "max"], [0, 0, 1, "_CPPv43maxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "max"], [0, 0, 1, "_CPPv43maxRK5arrayb14StreamOrDevice", "max"], [0, 0, 1, "_CPPv43maxRK5arrayib14StreamOrDevice", "max"], [0, 1, 1, "_CPPv43maxRK5array14StreamOrDevice", "max::a"], [0, 1, 1, "_CPPv43maxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "max::a"], [0, 1, 1, "_CPPv43maxRK5arrayb14StreamOrDevice", "max::a"], [0, 1, 1, "_CPPv43maxRK5arrayib14StreamOrDevice", "max::a"], [0, 1, 1, "_CPPv43maxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "max::axes"], [0, 1, 1, "_CPPv43maxRK5arrayib14StreamOrDevice", "max::axis"], [0, 1, 1, "_CPPv43maxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "max::keepdims"], [0, 1, 1, "_CPPv43maxRK5arrayb14StreamOrDevice", "max::keepdims"], [0, 1, 1, "_CPPv43maxRK5arrayib14StreamOrDevice", "max::keepdims"], [0, 1, 1, "_CPPv43maxRK5array14StreamOrDevice", "max::s"], [0, 1, 1, "_CPPv43maxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "max::s"], [0, 1, 1, "_CPPv43maxRK5arrayb14StreamOrDevice", "max::s"], [0, 1, 1, "_CPPv43maxRK5arrayib14StreamOrDevice", "max::s"], [0, 0, 1, "_CPPv47maximumRK5arrayRK5array14StreamOrDevice", "maximum"], [0, 1, 1, "_CPPv47maximumRK5arrayRK5array14StreamOrDevice", "maximum::a"], [0, 1, 1, "_CPPv47maximumRK5arrayRK5array14StreamOrDevice", "maximum::b"], [0, 1, 1, "_CPPv47maximumRK5arrayRK5array14StreamOrDevice", "maximum::s"], [0, 0, 1, "_CPPv44meanRK5array14StreamOrDevice", "mean"], [0, 0, 1, "_CPPv44meanRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "mean"], [0, 0, 1, "_CPPv44meanRK5arrayb14StreamOrDevice", "mean"], [0, 0, 1, "_CPPv44meanRK5arrayib14StreamOrDevice", "mean"], [0, 1, 1, "_CPPv44meanRK5array14StreamOrDevice", "mean::a"], [0, 1, 1, "_CPPv44meanRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "mean::a"], [0, 1, 1, "_CPPv44meanRK5arrayb14StreamOrDevice", "mean::a"], [0, 1, 1, "_CPPv44meanRK5arrayib14StreamOrDevice", "mean::a"], [0, 1, 1, "_CPPv44meanRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "mean::axes"], [0, 1, 1, "_CPPv44meanRK5arrayib14StreamOrDevice", "mean::axis"], [0, 1, 1, "_CPPv44meanRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "mean::keepdims"], [0, 1, 1, "_CPPv44meanRK5arrayb14StreamOrDevice", "mean::keepdims"], [0, 1, 1, "_CPPv44meanRK5arrayib14StreamOrDevice", "mean::keepdims"], [0, 1, 1, "_CPPv44meanRK5array14StreamOrDevice", "mean::s"], [0, 1, 1, "_CPPv44meanRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "mean::s"], [0, 1, 1, "_CPPv44meanRK5arrayb14StreamOrDevice", "mean::s"], [0, 1, 1, "_CPPv44meanRK5arrayib14StreamOrDevice", "mean::s"], [0, 0, 1, "_CPPv48meshgridRKNSt6vectorI5arrayEEbNSt6stringE14StreamOrDevice", "meshgrid"], [0, 1, 1, "_CPPv48meshgridRKNSt6vectorI5arrayEEbNSt6stringE14StreamOrDevice", "meshgrid::arrays"], [0, 1, 1, "_CPPv48meshgridRKNSt6vectorI5arrayEEbNSt6stringE14StreamOrDevice", "meshgrid::indexing"], [0, 1, 1, "_CPPv48meshgridRKNSt6vectorI5arrayEEbNSt6stringE14StreamOrDevice", "meshgrid::s"], [0, 1, 1, "_CPPv48meshgridRKNSt6vectorI5arrayEEbNSt6stringE14StreamOrDevice", "meshgrid::sparse"], [0, 0, 1, "_CPPv43minRK5array14StreamOrDevice", "min"], [0, 0, 1, "_CPPv43minRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "min"], [0, 0, 1, "_CPPv43minRK5arrayb14StreamOrDevice", "min"], [0, 0, 1, "_CPPv43minRK5arrayib14StreamOrDevice", "min"], [0, 1, 1, "_CPPv43minRK5array14StreamOrDevice", "min::a"], [0, 1, 1, "_CPPv43minRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "min::a"], [0, 1, 1, "_CPPv43minRK5arrayb14StreamOrDevice", "min::a"], [0, 1, 1, "_CPPv43minRK5arrayib14StreamOrDevice", "min::a"], [0, 1, 1, "_CPPv43minRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "min::axes"], [0, 1, 1, "_CPPv43minRK5arrayib14StreamOrDevice", "min::axis"], [0, 1, 1, "_CPPv43minRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "min::keepdims"], [0, 1, 1, "_CPPv43minRK5arrayb14StreamOrDevice", "min::keepdims"], [0, 1, 1, "_CPPv43minRK5arrayib14StreamOrDevice", "min::keepdims"], [0, 1, 1, "_CPPv43minRK5array14StreamOrDevice", "min::s"], [0, 1, 1, "_CPPv43minRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "min::s"], [0, 1, 1, "_CPPv43minRK5arrayb14StreamOrDevice", "min::s"], [0, 1, 1, "_CPPv43minRK5arrayib14StreamOrDevice", "min::s"], [0, 0, 1, "_CPPv47minimumRK5arrayRK5array14StreamOrDevice", "minimum"], [0, 1, 1, "_CPPv47minimumRK5arrayRK5array14StreamOrDevice", "minimum::a"], [0, 1, 1, "_CPPv47minimumRK5arrayRK5array14StreamOrDevice", "minimum::b"], [0, 1, 1, "_CPPv47minimumRK5arrayRK5array14StreamOrDevice", "minimum::s"], [0, 0, 1, "_CPPv48moveaxisRK5arrayii14StreamOrDevice", "moveaxis"], [0, 1, 1, "_CPPv48moveaxisRK5arrayii14StreamOrDevice", "moveaxis::a"], [0, 1, 1, "_CPPv48moveaxisRK5arrayii14StreamOrDevice", "moveaxis::destination"], [0, 1, 1, "_CPPv48moveaxisRK5arrayii14StreamOrDevice", "moveaxis::s"], [0, 1, 1, "_CPPv48moveaxisRK5arrayii14StreamOrDevice", "moveaxis::source"], [0, 0, 1, "_CPPv48multiplyRK5arrayRK5array14StreamOrDevice", "multiply"], [0, 1, 1, "_CPPv48multiplyRK5arrayRK5array14StreamOrDevice", "multiply::a"], [0, 1, 1, "_CPPv48multiplyRK5arrayRK5array14StreamOrDevice", "multiply::b"], [0, 1, 1, "_CPPv48multiplyRK5arrayRK5array14StreamOrDevice", "multiply::s"], [0, 0, 1, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice", "nan_to_num"], [0, 1, 1, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice", "nan_to_num::a"], [0, 1, 1, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice", "nan_to_num::nan"], [0, 1, 1, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice", "nan_to_num::neginf"], [0, 1, 1, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice", "nan_to_num::posinf"], [0, 1, 1, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice", "nan_to_num::s"], [0, 0, 1, "_CPPv48negativeRK5array14StreamOrDevice", "negative"], [0, 1, 1, "_CPPv48negativeRK5array14StreamOrDevice", "negative::a"], [0, 1, 1, "_CPPv48negativeRK5array14StreamOrDevice", "negative::s"], [0, 0, 1, "_CPPv49not_equalRK5arrayRK5array14StreamOrDevice", "not_equal"], [0, 1, 1, "_CPPv49not_equalRK5arrayRK5array14StreamOrDevice", "not_equal::a"], [0, 1, 1, "_CPPv49not_equalRK5arrayRK5array14StreamOrDevice", "not_equal::b"], [0, 1, 1, "_CPPv49not_equalRK5arrayRK5array14StreamOrDevice", "not_equal::s"], [0, 0, 1, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice", "number_of_elements"], [0, 1, 1, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice", "number_of_elements::a"], [0, 1, 1, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice", "number_of_elements::axes"], [0, 1, 1, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice", "number_of_elements::dtype"], [0, 1, 1, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice", "number_of_elements::inverted"], [0, 1, 1, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice", "number_of_elements::s"], [0, 0, 1, "_CPPv44onesRKNSt6vectorIiEE14StreamOrDevice", "ones"], [0, 0, 1, "_CPPv44onesRKNSt6vectorIiEE5Dtype14StreamOrDevice", "ones"], [0, 1, 1, "_CPPv44onesRKNSt6vectorIiEE5Dtype14StreamOrDevice", "ones::dtype"], [0, 1, 1, "_CPPv44onesRKNSt6vectorIiEE14StreamOrDevice", "ones::s"], [0, 1, 1, "_CPPv44onesRKNSt6vectorIiEE5Dtype14StreamOrDevice", "ones::s"], [0, 1, 1, "_CPPv44onesRKNSt6vectorIiEE14StreamOrDevice", "ones::shape"], [0, 1, 1, "_CPPv44onesRKNSt6vectorIiEE5Dtype14StreamOrDevice", "ones::shape"], [0, 0, 1, "_CPPv49ones_likeRK5array14StreamOrDevice", "ones_like"], [0, 1, 1, "_CPPv49ones_likeRK5array14StreamOrDevice", "ones_like::a"], [0, 1, 1, "_CPPv49ones_likeRK5array14StreamOrDevice", "ones_like::s"], [0, 0, 1, "_CPPv4I0Ene5array1TRK5array", "operator!="], [0, 0, 1, "_CPPv4I0Ene5arrayRK5array1T", "operator!="], [0, 0, 1, "_CPPv4neRK5arrayRK5array", "operator!="], [0, 2, 1, "_CPPv4I0Ene5array1TRK5array", "operator!=::T"], [0, 2, 1, "_CPPv4I0Ene5arrayRK5array1T", "operator!=::T"], [0, 1, 1, "_CPPv4I0Ene5array1TRK5array", "operator!=::a"], [0, 1, 1, "_CPPv4I0Ene5arrayRK5array1T", "operator!=::a"], [0, 1, 1, "_CPPv4neRK5arrayRK5array", "operator!=::a"], [0, 1, 1, "_CPPv4I0Ene5array1TRK5array", "operator!=::b"], [0, 1, 1, "_CPPv4I0Ene5arrayRK5array1T", "operator!=::b"], [0, 1, 1, "_CPPv4neRK5arrayRK5array", "operator!=::b"], [0, 0, 1, "_CPPv4I0Erm5array1TRK5array", "operator%"], [0, 0, 1, "_CPPv4I0Erm5arrayRK5array1T", "operator%"], [0, 0, 1, "_CPPv4rmRK5arrayRK5array", "operator%"], [0, 2, 1, "_CPPv4I0Erm5array1TRK5array", "operator%::T"], [0, 2, 1, "_CPPv4I0Erm5arrayRK5array1T", "operator%::T"], [0, 1, 1, "_CPPv4I0Erm5array1TRK5array", "operator%::a"], [0, 1, 1, "_CPPv4I0Erm5arrayRK5array1T", "operator%::a"], [0, 1, 1, "_CPPv4rmRK5arrayRK5array", "operator%::a"], [0, 1, 1, "_CPPv4I0Erm5array1TRK5array", "operator%::b"], [0, 1, 1, "_CPPv4I0Erm5arrayRK5array1T", "operator%::b"], [0, 1, 1, "_CPPv4rmRK5arrayRK5array", "operator%::b"], [0, 0, 1, "_CPPv4anRK5arrayRK5array", "operator&"], [0, 0, 1, "_CPPv4aaRK5arrayRK5array", "operator&&"], [0, 1, 1, "_CPPv4aaRK5arrayRK5array", "operator&&::a"], [0, 1, 1, "_CPPv4aaRK5arrayRK5array", "operator&&::b"], [0, 1, 1, "_CPPv4anRK5arrayRK5array", "operator&::a"], [0, 1, 1, "_CPPv4anRK5arrayRK5array", "operator&::b"], [0, 0, 1, "_CPPv4I0Eml5array1TRK5array", "operator*"], [0, 0, 1, "_CPPv4I0Eml5arrayRK5array1T", "operator*"], [0, 0, 1, "_CPPv4mlRK5arrayRK5array", "operator*"], [0, 2, 1, "_CPPv4I0Eml5array1TRK5array", "operator*::T"], [0, 2, 1, "_CPPv4I0Eml5arrayRK5array1T", "operator*::T"], [0, 1, 1, "_CPPv4I0Eml5array1TRK5array", "operator*::a"], [0, 1, 1, "_CPPv4I0Eml5arrayRK5array1T", "operator*::a"], [0, 1, 1, "_CPPv4mlRK5arrayRK5array", "operator*::a"], [0, 1, 1, "_CPPv4I0Eml5array1TRK5array", "operator*::b"], [0, 1, 1, "_CPPv4I0Eml5arrayRK5array1T", "operator*::b"], [0, 1, 1, "_CPPv4mlRK5arrayRK5array", "operator*::b"], [0, 0, 1, "_CPPv4I0Epl5array1TRK5array", "operator+"], [0, 0, 1, "_CPPv4I0Epl5arrayRK5array1T", "operator+"], [0, 0, 1, "_CPPv4plRK5arrayRK5array", "operator+"], [0, 2, 1, "_CPPv4I0Epl5array1TRK5array", "operator+::T"], [0, 2, 1, "_CPPv4I0Epl5arrayRK5array1T", "operator+::T"], [0, 1, 1, "_CPPv4I0Epl5array1TRK5array", "operator+::a"], [0, 1, 1, "_CPPv4I0Epl5arrayRK5array1T", "operator+::a"], [0, 1, 1, "_CPPv4plRK5arrayRK5array", "operator+::a"], [0, 1, 1, "_CPPv4I0Epl5array1TRK5array", "operator+::b"], [0, 1, 1, "_CPPv4I0Epl5arrayRK5array1T", "operator+::b"], [0, 1, 1, "_CPPv4plRK5arrayRK5array", "operator+::b"], [0, 0, 1, "_CPPv4I0Emi5array1TRK5array", "operator-"], [0, 0, 1, "_CPPv4I0Emi5arrayRK5array1T", "operator-"], [0, 0, 1, "_CPPv4miRK5array", "operator-"], [0, 0, 1, "_CPPv4miRK5arrayRK5array", "operator-"], [0, 2, 1, "_CPPv4I0Emi5array1TRK5array", "operator-::T"], [0, 2, 1, "_CPPv4I0Emi5arrayRK5array1T", "operator-::T"], [0, 1, 1, "_CPPv4I0Emi5array1TRK5array", "operator-::a"], [0, 1, 1, "_CPPv4I0Emi5arrayRK5array1T", "operator-::a"], [0, 1, 1, "_CPPv4miRK5array", "operator-::a"], [0, 1, 1, "_CPPv4miRK5arrayRK5array", "operator-::a"], [0, 1, 1, "_CPPv4I0Emi5array1TRK5array", "operator-::b"], [0, 1, 1, "_CPPv4I0Emi5arrayRK5array1T", "operator-::b"], [0, 1, 1, "_CPPv4miRK5arrayRK5array", "operator-::b"], [0, 0, 1, "_CPPv4dvRK5arrayRK5array", "operator/"], [0, 0, 1, "_CPPv4dvRK5arrayd", "operator/"], [0, 0, 1, "_CPPv4dvdRK5array", "operator/"], [0, 1, 1, "_CPPv4dvRK5arrayRK5array", "operator/::a"], [0, 1, 1, "_CPPv4dvRK5arrayd", "operator/::a"], [0, 1, 1, "_CPPv4dvdRK5array", "operator/::a"], [0, 1, 1, "_CPPv4dvRK5arrayRK5array", "operator/::b"], [0, 1, 1, "_CPPv4dvRK5arrayd", "operator/::b"], [0, 1, 1, "_CPPv4dvdRK5array", "operator/::b"], [0, 0, 1, "_CPPv4I0Elt5array1TRK5array", "operator<"], [0, 0, 1, "_CPPv4I0Elt5arrayRK5array1T", "operator<"], [0, 0, 1, "_CPPv4ltRK5arrayRK5array", "operator<"], [0, 2, 1, "_CPPv4I0Elt5array1TRK5array", "operator<::T"], [0, 2, 1, "_CPPv4I0Elt5arrayRK5array1T", "operator<::T"], [0, 1, 1, "_CPPv4I0Elt5array1TRK5array", "operator<::a"], [0, 1, 1, "_CPPv4I0Elt5arrayRK5array1T", "operator<::a"], [0, 1, 1, "_CPPv4ltRK5arrayRK5array", "operator<::a"], [0, 1, 1, "_CPPv4I0Elt5array1TRK5array", "operator<::b"], [0, 1, 1, "_CPPv4I0Elt5arrayRK5array1T", "operator<::b"], [0, 1, 1, "_CPPv4ltRK5arrayRK5array", "operator<::b"], [0, 0, 1, "_CPPv4lsRK5arrayRK5array", "operator<<"], [0, 1, 1, "_CPPv4lsRK5arrayRK5array", "operator<<::a"], [0, 1, 1, "_CPPv4lsRK5arrayRK5array", "operator<<::b"], [0, 0, 1, "_CPPv4I0Ele5array1TRK5array", "operator<="], [0, 0, 1, "_CPPv4I0Ele5arrayRK5array1T", "operator<="], [0, 0, 1, "_CPPv4leRK5arrayRK5array", "operator<="], [0, 2, 1, "_CPPv4I0Ele5array1TRK5array", "operator<=::T"], [0, 2, 1, "_CPPv4I0Ele5arrayRK5array1T", "operator<=::T"], [0, 1, 1, "_CPPv4I0Ele5array1TRK5array", "operator<=::a"], [0, 1, 1, "_CPPv4I0Ele5arrayRK5array1T", "operator<=::a"], [0, 1, 1, "_CPPv4leRK5arrayRK5array", "operator<=::a"], [0, 1, 1, "_CPPv4I0Ele5array1TRK5array", "operator<=::b"], [0, 1, 1, "_CPPv4I0Ele5arrayRK5array1T", "operator<=::b"], [0, 1, 1, "_CPPv4leRK5arrayRK5array", "operator<=::b"], [0, 0, 1, "_CPPv4I0Eeq5array1TRK5array", "operator=="], [0, 0, 1, "_CPPv4I0Eeq5arrayRK5array1T", "operator=="], [0, 0, 1, "_CPPv4eqRK5arrayRK5array", "operator=="], [0, 2, 1, "_CPPv4I0Eeq5array1TRK5array", "operator==::T"], [0, 2, 1, "_CPPv4I0Eeq5arrayRK5array1T", "operator==::T"], [0, 1, 1, "_CPPv4I0Eeq5array1TRK5array", "operator==::a"], [0, 1, 1, "_CPPv4I0Eeq5arrayRK5array1T", "operator==::a"], [0, 1, 1, "_CPPv4eqRK5arrayRK5array", "operator==::a"], [0, 1, 1, "_CPPv4I0Eeq5array1TRK5array", "operator==::b"], [0, 1, 1, "_CPPv4I0Eeq5arrayRK5array1T", "operator==::b"], [0, 1, 1, "_CPPv4eqRK5arrayRK5array", "operator==::b"], [0, 0, 1, "_CPPv4I0Egt5array1TRK5array", "operator>"], [0, 0, 1, "_CPPv4I0Egt5arrayRK5array1T", "operator>"], [0, 0, 1, "_CPPv4gtRK5arrayRK5array", "operator>"], [0, 2, 1, "_CPPv4I0Egt5array1TRK5array", "operator>::T"], [0, 2, 1, "_CPPv4I0Egt5arrayRK5array1T", "operator>::T"], [0, 1, 1, "_CPPv4I0Egt5array1TRK5array", "operator>::a"], [0, 1, 1, "_CPPv4I0Egt5arrayRK5array1T", "operator>::a"], [0, 1, 1, "_CPPv4gtRK5arrayRK5array", "operator>::a"], [0, 1, 1, "_CPPv4I0Egt5array1TRK5array", "operator>::b"], [0, 1, 1, "_CPPv4I0Egt5arrayRK5array1T", "operator>::b"], [0, 1, 1, "_CPPv4gtRK5arrayRK5array", "operator>::b"], [0, 0, 1, "_CPPv4I0Ege5array1TRK5array", "operator>="], [0, 0, 1, "_CPPv4I0Ege5arrayRK5array1T", "operator>="], [0, 0, 1, "_CPPv4geRK5arrayRK5array", "operator>="], [0, 2, 1, "_CPPv4I0Ege5array1TRK5array", "operator>=::T"], [0, 2, 1, "_CPPv4I0Ege5arrayRK5array1T", "operator>=::T"], [0, 1, 1, "_CPPv4I0Ege5array1TRK5array", "operator>=::a"], [0, 1, 1, "_CPPv4I0Ege5arrayRK5array1T", "operator>=::a"], [0, 1, 1, "_CPPv4geRK5arrayRK5array", "operator>=::a"], [0, 1, 1, "_CPPv4I0Ege5array1TRK5array", "operator>=::b"], [0, 1, 1, "_CPPv4I0Ege5arrayRK5array1T", "operator>=::b"], [0, 1, 1, "_CPPv4geRK5arrayRK5array", "operator>=::b"], [0, 0, 1, "_CPPv4rsRK5arrayRK5array", "operator>>"], [0, 1, 1, "_CPPv4rsRK5arrayRK5array", "operator>>::a"], [0, 1, 1, "_CPPv4rsRK5arrayRK5array", "operator>>::b"], [0, 0, 1, "_CPPv4eoRK5arrayRK5array", "operator^"], [0, 1, 1, "_CPPv4eoRK5arrayRK5array", "operator^::a"], [0, 1, 1, "_CPPv4eoRK5arrayRK5array", "operator^::b"], [0, 0, 1, "_CPPv4orRK5arrayRK5array", "operator|"], [0, 1, 1, "_CPPv4orRK5arrayRK5array", "operator|::a"], [0, 1, 1, "_CPPv4orRK5arrayRK5array", "operator|::b"], [0, 0, 1, "_CPPv4ooRK5arrayRK5array", "operator||"], [0, 1, 1, "_CPPv4ooRK5arrayRK5array", "operator||::a"], [0, 1, 1, "_CPPv4ooRK5arrayRK5array", "operator||::b"], [0, 0, 1, "_CPPv45outerRK5arrayRK5array14StreamOrDevice", "outer"], [0, 1, 1, "_CPPv45outerRK5arrayRK5array14StreamOrDevice", "outer::a"], [0, 1, 1, "_CPPv45outerRK5arrayRK5array14StreamOrDevice", "outer::b"], [0, 1, 1, "_CPPv45outerRK5arrayRK5array14StreamOrDevice", "outer::s"], [0, 0, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice", "pad"], [0, 0, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice", "pad"], [0, 0, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad"], [0, 0, 1, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice", "pad"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::axes"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::high_pad_size"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::low_pad_size"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::mode"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice", "pad::mode"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::mode"], [0, 1, 1, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice", "pad::mode"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_width"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_width"], [0, 1, 1, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice", "pad::pad_width"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::s"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice", "pad::s"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice", "pad::s"], [0, 1, 1, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice", "pad::s"], [0, 0, 1, "_CPPv49partitionRK5arrayi14StreamOrDevice", "partition"], [0, 0, 1, "_CPPv49partitionRK5arrayii14StreamOrDevice", "partition"], [0, 1, 1, "_CPPv49partitionRK5arrayi14StreamOrDevice", "partition::a"], [0, 1, 1, "_CPPv49partitionRK5arrayii14StreamOrDevice", "partition::a"], [0, 1, 1, "_CPPv49partitionRK5arrayii14StreamOrDevice", "partition::axis"], [0, 1, 1, "_CPPv49partitionRK5arrayi14StreamOrDevice", "partition::kth"], [0, 1, 1, "_CPPv49partitionRK5arrayii14StreamOrDevice", "partition::kth"], [0, 1, 1, "_CPPv49partitionRK5arrayi14StreamOrDevice", "partition::s"], [0, 1, 1, "_CPPv49partitionRK5arrayii14StreamOrDevice", "partition::s"], [0, 0, 1, "_CPPv45powerRK5arrayRK5array14StreamOrDevice", "power"], [0, 1, 1, "_CPPv45powerRK5arrayRK5array14StreamOrDevice", "power::a"], [0, 1, 1, "_CPPv45powerRK5arrayRK5array14StreamOrDevice", "power::b"], [0, 1, 1, "_CPPv45powerRK5arrayRK5array14StreamOrDevice", "power::s"], [0, 0, 1, "_CPPv44prodRK5array14StreamOrDevice", "prod"], [0, 0, 1, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "prod"], [0, 0, 1, "_CPPv44prodRK5arrayb14StreamOrDevice", "prod"], [0, 0, 1, "_CPPv44prodRK5arrayib14StreamOrDevice", "prod"], [0, 1, 1, "_CPPv44prodRK5array14StreamOrDevice", "prod::a"], [0, 1, 1, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "prod::a"], [0, 1, 1, "_CPPv44prodRK5arrayb14StreamOrDevice", "prod::a"], [0, 1, 1, "_CPPv44prodRK5arrayib14StreamOrDevice", "prod::a"], [0, 1, 1, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "prod::axes"], [0, 1, 1, "_CPPv44prodRK5arrayib14StreamOrDevice", "prod::axis"], [0, 1, 1, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "prod::keepdims"], [0, 1, 1, "_CPPv44prodRK5arrayb14StreamOrDevice", "prod::keepdims"], [0, 1, 1, "_CPPv44prodRK5arrayib14StreamOrDevice", "prod::keepdims"], [0, 1, 1, "_CPPv44prodRK5array14StreamOrDevice", "prod::s"], [0, 1, 1, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "prod::s"], [0, 1, 1, "_CPPv44prodRK5arrayb14StreamOrDevice", "prod::s"], [0, 1, 1, "_CPPv44prodRK5arrayib14StreamOrDevice", "prod::s"], [0, 0, 1, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "put_along_axis"], [0, 1, 1, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "put_along_axis::a"], [0, 1, 1, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "put_along_axis::axis"], [0, 1, 1, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "put_along_axis::indices"], [0, 1, 1, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "put_along_axis::s"], [0, 1, 1, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "put_along_axis::values"], [0, 0, 1, "_CPPv48quantizeRK5arrayii14StreamOrDevice", "quantize"], [0, 1, 1, "_CPPv48quantizeRK5arrayii14StreamOrDevice", "quantize::bits"], [0, 1, 1, "_CPPv48quantizeRK5arrayii14StreamOrDevice", "quantize::group_size"], [0, 1, 1, "_CPPv48quantizeRK5arrayii14StreamOrDevice", "quantize::s"], [0, 1, 1, "_CPPv48quantizeRK5arrayii14StreamOrDevice", "quantize::w"], [0, 0, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::biases"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::bits"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::group_size"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::s"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::scales"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::transpose"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::w"], [0, 1, 1, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice", "quantized_matmul::x"], [0, 0, 1, "_CPPv47radiansRK5array14StreamOrDevice", "radians"], [0, 1, 1, "_CPPv47radiansRK5array14StreamOrDevice", "radians::a"], [0, 1, 1, "_CPPv47radiansRK5array14StreamOrDevice", "radians::s"], [0, 0, 1, "_CPPv410reciprocalRK5array14StreamOrDevice", "reciprocal"], [0, 1, 1, "_CPPv410reciprocalRK5array14StreamOrDevice", "reciprocal::a"], [0, 1, 1, "_CPPv410reciprocalRK5array14StreamOrDevice", "reciprocal::s"], [0, 0, 1, "_CPPv49remainderRK5arrayRK5array14StreamOrDevice", "remainder"], [0, 1, 1, "_CPPv49remainderRK5arrayRK5array14StreamOrDevice", "remainder::a"], [0, 1, 1, "_CPPv49remainderRK5arrayRK5array14StreamOrDevice", "remainder::b"], [0, 1, 1, "_CPPv49remainderRK5arrayRK5array14StreamOrDevice", "remainder::s"], [0, 0, 1, "_CPPv46repeatRK5arrayi14StreamOrDevice", "repeat"], [0, 0, 1, "_CPPv46repeatRK5arrayii14StreamOrDevice", "repeat"], [0, 1, 1, "_CPPv46repeatRK5arrayi14StreamOrDevice", "repeat::arr"], [0, 1, 1, "_CPPv46repeatRK5arrayii14StreamOrDevice", "repeat::arr"], [0, 1, 1, "_CPPv46repeatRK5arrayii14StreamOrDevice", "repeat::axis"], [0, 1, 1, "_CPPv46repeatRK5arrayi14StreamOrDevice", "repeat::repeats"], [0, 1, 1, "_CPPv46repeatRK5arrayii14StreamOrDevice", "repeat::repeats"], [0, 1, 1, "_CPPv46repeatRK5arrayi14StreamOrDevice", "repeat::s"], [0, 1, 1, "_CPPv46repeatRK5arrayii14StreamOrDevice", "repeat::s"], [0, 0, 1, "_CPPv47reshapeRK5arrayNSt6vectorIiEE14StreamOrDevice", "reshape"], [0, 1, 1, "_CPPv47reshapeRK5arrayNSt6vectorIiEE14StreamOrDevice", "reshape::a"], [0, 1, 1, "_CPPv47reshapeRK5arrayNSt6vectorIiEE14StreamOrDevice", "reshape::s"], [0, 1, 1, "_CPPv47reshapeRK5arrayNSt6vectorIiEE14StreamOrDevice", "reshape::shape"], [0, 0, 1, "_CPPv411right_shiftRK5arrayRK5array14StreamOrDevice", "right_shift"], [0, 1, 1, "_CPPv411right_shiftRK5arrayRK5array14StreamOrDevice", "right_shift::a"], [0, 1, 1, "_CPPv411right_shiftRK5arrayRK5array14StreamOrDevice", "right_shift::b"], [0, 1, 1, "_CPPv411right_shiftRK5arrayRK5array14StreamOrDevice", "right_shift::s"], [0, 0, 1, "_CPPv45roundRK5array14StreamOrDevice", "round"], [0, 0, 1, "_CPPv45roundRK5arrayi14StreamOrDevice", "round"], [0, 1, 1, "_CPPv45roundRK5array14StreamOrDevice", "round::a"], [0, 1, 1, "_CPPv45roundRK5arrayi14StreamOrDevice", "round::a"], [0, 1, 1, "_CPPv45roundRK5arrayi14StreamOrDevice", "round::decimals"], [0, 1, 1, "_CPPv45roundRK5array14StreamOrDevice", "round::s"], [0, 1, 1, "_CPPv45roundRK5arrayi14StreamOrDevice", "round::s"], [0, 0, 1, "_CPPv45rsqrtRK5array14StreamOrDevice", "rsqrt"], [0, 1, 1, "_CPPv45rsqrtRK5array14StreamOrDevice", "rsqrt::a"], [0, 1, 1, "_CPPv45rsqrtRK5array14StreamOrDevice", "rsqrt::s"], [0, 0, 1, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter"], [0, 0, 1, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter"], [0, 1, 1, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter::a"], [0, 1, 1, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter::a"], [0, 1, 1, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter::axes"], [0, 1, 1, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter::axis"], [0, 1, 1, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter::indices"], [0, 1, 1, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter::indices"], [0, 1, 1, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter::s"], [0, 1, 1, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter::s"], [0, 1, 1, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter::updates"], [0, 1, 1, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter::updates"], [0, 0, 1, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_add"], [0, 0, 1, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_add"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_add::a"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_add::a"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_add::axes"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_add::axis"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_add::indices"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_add::indices"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_add::s"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_add::s"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_add::updates"], [0, 1, 1, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_add::updates"], [0, 0, 1, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_max"], [0, 0, 1, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_max"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_max::a"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_max::a"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_max::axes"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_max::axis"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_max::indices"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_max::indices"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_max::s"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_max::s"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_max::updates"], [0, 1, 1, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_max::updates"], [0, 0, 1, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_min"], [0, 0, 1, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_min"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_min::a"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_min::a"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_min::axes"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_min::axis"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_min::indices"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_min::indices"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_min::s"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_min::s"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_min::updates"], [0, 1, 1, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_min::updates"], [0, 0, 1, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_prod"], [0, 0, 1, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_prod"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_prod::a"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_prod::a"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_prod::axes"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_prod::axis"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_prod::indices"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_prod::indices"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_prod::s"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_prod::s"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice", "scatter_prod::updates"], [0, 1, 1, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice", "scatter_prod::updates"], [0, 0, 1, "_CPPv47sigmoidRK5array14StreamOrDevice", "sigmoid"], [0, 1, 1, "_CPPv47sigmoidRK5array14StreamOrDevice", "sigmoid::a"], [0, 1, 1, "_CPPv47sigmoidRK5array14StreamOrDevice", "sigmoid::s"], [0, 0, 1, "_CPPv44signRK5array14StreamOrDevice", "sign"], [0, 1, 1, "_CPPv44signRK5array14StreamOrDevice", "sign::a"], [0, 1, 1, "_CPPv44signRK5array14StreamOrDevice", "sign::s"], [0, 0, 1, "_CPPv43sinRK5array14StreamOrDevice", "sin"], [0, 1, 1, "_CPPv43sinRK5array14StreamOrDevice", "sin::a"], [0, 1, 1, "_CPPv43sinRK5array14StreamOrDevice", "sin::s"], [0, 0, 1, "_CPPv44sinhRK5array14StreamOrDevice", "sinh"], [0, 1, 1, "_CPPv44sinhRK5array14StreamOrDevice", "sinh::a"], [0, 1, 1, "_CPPv44sinhRK5array14StreamOrDevice", "sinh::s"], [0, 0, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice"], [0, 0, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::a"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::a"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::s"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::s"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::start"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::start"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::stop"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::stop"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::strides"], [0, 0, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update"], [0, 0, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::s"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::s"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::src"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::src"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::start"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::start"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::stop"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::stop"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::strides"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::update"], [0, 1, 1, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice_update::update"], [0, 0, 1, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "softmax"], [0, 0, 1, "_CPPv47softmaxRK5arrayb14StreamOrDevice", "softmax"], [0, 0, 1, "_CPPv47softmaxRK5arrayib14StreamOrDevice", "softmax"], [0, 1, 1, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "softmax::a"], [0, 1, 1, "_CPPv47softmaxRK5arrayb14StreamOrDevice", "softmax::a"], [0, 1, 1, "_CPPv47softmaxRK5arrayib14StreamOrDevice", "softmax::a"], [0, 1, 1, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "softmax::axes"], [0, 1, 1, "_CPPv47softmaxRK5arrayib14StreamOrDevice", "softmax::axis"], [0, 1, 1, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "softmax::precise"], [0, 1, 1, "_CPPv47softmaxRK5arrayb14StreamOrDevice", "softmax::precise"], [0, 1, 1, "_CPPv47softmaxRK5arrayib14StreamOrDevice", "softmax::precise"], [0, 1, 1, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "softmax::s"], [0, 1, 1, "_CPPv47softmaxRK5arrayb14StreamOrDevice", "softmax::s"], [0, 1, 1, "_CPPv47softmaxRK5arrayib14StreamOrDevice", "softmax::s"], [0, 0, 1, "_CPPv44sortRK5array14StreamOrDevice", "sort"], [0, 0, 1, "_CPPv44sortRK5arrayi14StreamOrDevice", "sort"], [0, 1, 1, "_CPPv44sortRK5array14StreamOrDevice", "sort::a"], [0, 1, 1, "_CPPv44sortRK5arrayi14StreamOrDevice", "sort::a"], [0, 1, 1, "_CPPv44sortRK5arrayi14StreamOrDevice", "sort::axis"], [0, 1, 1, "_CPPv44sortRK5array14StreamOrDevice", "sort::s"], [0, 1, 1, "_CPPv44sortRK5arrayi14StreamOrDevice", "sort::s"], [0, 0, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "split"], [0, 0, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice", "split"], [0, 0, 1, "_CPPv45splitRK5arrayi14StreamOrDevice", "split"], [0, 0, 1, "_CPPv45splitRK5arrayii14StreamOrDevice", "split"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "split::a"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice", "split::a"], [0, 1, 1, "_CPPv45splitRK5arrayi14StreamOrDevice", "split::a"], [0, 1, 1, "_CPPv45splitRK5arrayii14StreamOrDevice", "split::a"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice", "split::axis"], [0, 1, 1, "_CPPv45splitRK5arrayii14StreamOrDevice", "split::axis"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "split::indices"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice", "split::indices"], [0, 1, 1, "_CPPv45splitRK5arrayi14StreamOrDevice", "split::num_splits"], [0, 1, 1, "_CPPv45splitRK5arrayii14StreamOrDevice", "split::num_splits"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "split::s"], [0, 1, 1, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice", "split::s"], [0, 1, 1, "_CPPv45splitRK5arrayi14StreamOrDevice", "split::s"], [0, 1, 1, "_CPPv45splitRK5arrayii14StreamOrDevice", "split::s"], [0, 0, 1, "_CPPv44sqrtRK5array14StreamOrDevice", "sqrt"], [0, 1, 1, "_CPPv44sqrtRK5array14StreamOrDevice", "sqrt::a"], [0, 1, 1, "_CPPv44sqrtRK5array14StreamOrDevice", "sqrt::s"], [0, 0, 1, "_CPPv46squareRK5array14StreamOrDevice", "square"], [0, 1, 1, "_CPPv46squareRK5array14StreamOrDevice", "square::a"], [0, 1, 1, "_CPPv46squareRK5array14StreamOrDevice", "square::s"], [0, 0, 1, "_CPPv47squeezeRK5array14StreamOrDevice", "squeeze"], [0, 0, 1, "_CPPv47squeezeRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "squeeze"], [0, 0, 1, "_CPPv47squeezeRK5arrayi14StreamOrDevice", "squeeze"], [0, 1, 1, "_CPPv47squeezeRK5array14StreamOrDevice", "squeeze::a"], [0, 1, 1, "_CPPv47squeezeRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "squeeze::a"], [0, 1, 1, "_CPPv47squeezeRK5arrayi14StreamOrDevice", "squeeze::a"], [0, 1, 1, "_CPPv47squeezeRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "squeeze::axes"], [0, 1, 1, "_CPPv47squeezeRK5arrayi14StreamOrDevice", "squeeze::axis"], [0, 1, 1, "_CPPv47squeezeRK5array14StreamOrDevice", "squeeze::s"], [0, 1, 1, "_CPPv47squeezeRK5arrayRKNSt6vectorIiEE14StreamOrDevice", "squeeze::s"], [0, 1, 1, "_CPPv47squeezeRK5arrayi14StreamOrDevice", "squeeze::s"], [0, 0, 1, "_CPPv45stackRKNSt6vectorI5arrayEE14StreamOrDevice", "stack"], [0, 0, 1, "_CPPv45stackRKNSt6vectorI5arrayEEi14StreamOrDevice", "stack"], [0, 1, 1, "_CPPv45stackRKNSt6vectorI5arrayEE14StreamOrDevice", "stack::arrays"], [0, 1, 1, "_CPPv45stackRKNSt6vectorI5arrayEEi14StreamOrDevice", "stack::arrays"], [0, 1, 1, "_CPPv45stackRKNSt6vectorI5arrayEEi14StreamOrDevice", "stack::axis"], [0, 1, 1, "_CPPv45stackRKNSt6vectorI5arrayEE14StreamOrDevice", "stack::s"], [0, 1, 1, "_CPPv45stackRKNSt6vectorI5arrayEEi14StreamOrDevice", "stack::s"], [0, 0, 1, "_CPPv4StRK5array14StreamOrDevice", "std"], [0, 0, 1, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "std"], [0, 0, 1, "_CPPv4StRK5arraybi14StreamOrDevice", "std"], [0, 0, 1, "_CPPv4StRK5arrayibi14StreamOrDevice", "std"], [0, 1, 1, "_CPPv4StRK5array14StreamOrDevice", "std::a"], [0, 1, 1, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "std::a"], [0, 1, 1, "_CPPv4StRK5arraybi14StreamOrDevice", "std::a"], [0, 1, 1, "_CPPv4StRK5arrayibi14StreamOrDevice", "std::a"], [0, 1, 1, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "std::axes"], [0, 1, 1, "_CPPv4StRK5arrayibi14StreamOrDevice", "std::axis"], [0, 1, 1, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "std::ddof"], [0, 1, 1, "_CPPv4StRK5arraybi14StreamOrDevice", "std::ddof"], [0, 1, 1, "_CPPv4StRK5arrayibi14StreamOrDevice", "std::ddof"], [0, 1, 1, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "std::keepdims"], [0, 1, 1, "_CPPv4StRK5arraybi14StreamOrDevice", "std::keepdims"], [0, 1, 1, "_CPPv4StRK5arrayibi14StreamOrDevice", "std::keepdims"], [0, 1, 1, "_CPPv4StRK5array14StreamOrDevice", "std::s"], [0, 1, 1, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "std::s"], [0, 1, 1, "_CPPv4StRK5arraybi14StreamOrDevice", "std::s"], [0, 1, 1, "_CPPv4StRK5arrayibi14StreamOrDevice", "std::s"], [0, 0, 1, "_CPPv413stop_gradientRK5array14StreamOrDevice", "stop_gradient"], [0, 1, 1, "_CPPv413stop_gradientRK5array14StreamOrDevice", "stop_gradient::a"], [0, 1, 1, "_CPPv413stop_gradientRK5array14StreamOrDevice", "stop_gradient::s"], [0, 0, 1, "_CPPv48subtractRK5arrayRK5array14StreamOrDevice", "subtract"], [0, 1, 1, "_CPPv48subtractRK5arrayRK5array14StreamOrDevice", "subtract::a"], [0, 1, 1, "_CPPv48subtractRK5arrayRK5array14StreamOrDevice", "subtract::b"], [0, 1, 1, "_CPPv48subtractRK5arrayRK5array14StreamOrDevice", "subtract::s"], [0, 0, 1, "_CPPv43sumRK5array14StreamOrDevice", "sum"], [0, 0, 1, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "sum"], [0, 0, 1, "_CPPv43sumRK5arrayb14StreamOrDevice", "sum"], [0, 0, 1, "_CPPv43sumRK5arrayib14StreamOrDevice", "sum"], [0, 1, 1, "_CPPv43sumRK5array14StreamOrDevice", "sum::a"], [0, 1, 1, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "sum::a"], [0, 1, 1, "_CPPv43sumRK5arrayb14StreamOrDevice", "sum::a"], [0, 1, 1, "_CPPv43sumRK5arrayib14StreamOrDevice", "sum::a"], [0, 1, 1, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "sum::axes"], [0, 1, 1, "_CPPv43sumRK5arrayib14StreamOrDevice", "sum::axis"], [0, 1, 1, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "sum::keepdims"], [0, 1, 1, "_CPPv43sumRK5arrayb14StreamOrDevice", "sum::keepdims"], [0, 1, 1, "_CPPv43sumRK5arrayib14StreamOrDevice", "sum::keepdims"], [0, 1, 1, "_CPPv43sumRK5array14StreamOrDevice", "sum::s"], [0, 1, 1, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice", "sum::s"], [0, 1, 1, "_CPPv43sumRK5arrayb14StreamOrDevice", "sum::s"], [0, 1, 1, "_CPPv43sumRK5arrayib14StreamOrDevice", "sum::s"], [0, 0, 1, "_CPPv48swapaxesRK5arrayii14StreamOrDevice", "swapaxes"], [0, 1, 1, "_CPPv48swapaxesRK5arrayii14StreamOrDevice", "swapaxes::a"], [0, 1, 1, "_CPPv48swapaxesRK5arrayii14StreamOrDevice", "swapaxes::axis1"], [0, 1, 1, "_CPPv48swapaxesRK5arrayii14StreamOrDevice", "swapaxes::axis2"], [0, 1, 1, "_CPPv48swapaxesRK5arrayii14StreamOrDevice", "swapaxes::s"], [0, 0, 1, "_CPPv44takeRK5arrayRK5array14StreamOrDevice", "take"], [0, 0, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take"], [0, 0, 1, "_CPPv44takeRK5arrayi14StreamOrDevice", "take"], [0, 0, 1, "_CPPv44takeRK5arrayii14StreamOrDevice", "take"], [0, 1, 1, "_CPPv44takeRK5arrayRK5array14StreamOrDevice", "take::a"], [0, 1, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take::a"], [0, 1, 1, "_CPPv44takeRK5arrayi14StreamOrDevice", "take::a"], [0, 1, 1, "_CPPv44takeRK5arrayii14StreamOrDevice", "take::a"], [0, 1, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take::axis"], [0, 1, 1, "_CPPv44takeRK5arrayii14StreamOrDevice", "take::axis"], [0, 1, 1, "_CPPv44takeRK5arrayi14StreamOrDevice", "take::index"], [0, 1, 1, "_CPPv44takeRK5arrayii14StreamOrDevice", "take::index"], [0, 1, 1, "_CPPv44takeRK5arrayRK5array14StreamOrDevice", "take::indices"], [0, 1, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take::indices"], [0, 1, 1, "_CPPv44takeRK5arrayRK5array14StreamOrDevice", "take::s"], [0, 1, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take::s"], [0, 1, 1, "_CPPv44takeRK5arrayi14StreamOrDevice", "take::s"], [0, 1, 1, "_CPPv44takeRK5arrayii14StreamOrDevice", "take::s"], [0, 0, 1, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice", "take_along_axis"], [0, 1, 1, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice", "take_along_axis::a"], [0, 1, 1, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice", "take_along_axis::axis"], [0, 1, 1, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice", "take_along_axis::indices"], [0, 1, 1, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice", "take_along_axis::s"], [0, 0, 1, "_CPPv43tanRK5array14StreamOrDevice", "tan"], [0, 1, 1, "_CPPv43tanRK5array14StreamOrDevice", "tan::a"], [0, 1, 1, "_CPPv43tanRK5array14StreamOrDevice", "tan::s"], [0, 0, 1, "_CPPv44tanhRK5array14StreamOrDevice", "tanh"], [0, 1, 1, "_CPPv44tanhRK5array14StreamOrDevice", "tanh::a"], [0, 1, 1, "_CPPv44tanhRK5array14StreamOrDevice", "tanh::s"], [0, 0, 1, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice", "tensordot"], [0, 0, 1, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "tensordot"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice", "tensordot::a"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "tensordot::a"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "tensordot::axes_a"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "tensordot::axes_b"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice", "tensordot::axis"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice", "tensordot::b"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "tensordot::b"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice", "tensordot::s"], [0, 1, 1, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "tensordot::s"], [0, 0, 1, "_CPPv44tileRK5arrayNSt6vectorIiEE14StreamOrDevice", "tile"], [0, 1, 1, "_CPPv44tileRK5arrayNSt6vectorIiEE14StreamOrDevice", "tile::arr"], [0, 1, 1, "_CPPv44tileRK5arrayNSt6vectorIiEE14StreamOrDevice", "tile::reps"], [0, 1, 1, "_CPPv44tileRK5arrayNSt6vectorIiEE14StreamOrDevice", "tile::s"], [0, 0, 1, "_CPPv44topkRK5arrayi14StreamOrDevice", "topk"], [0, 0, 1, "_CPPv44topkRK5arrayii14StreamOrDevice", "topk"], [0, 1, 1, "_CPPv44topkRK5arrayi14StreamOrDevice", "topk::a"], [0, 1, 1, "_CPPv44topkRK5arrayii14StreamOrDevice", "topk::a"], [0, 1, 1, "_CPPv44topkRK5arrayii14StreamOrDevice", "topk::axis"], [0, 1, 1, "_CPPv44topkRK5arrayi14StreamOrDevice", "topk::k"], [0, 1, 1, "_CPPv44topkRK5arrayii14StreamOrDevice", "topk::k"], [0, 1, 1, "_CPPv44topkRK5arrayi14StreamOrDevice", "topk::s"], [0, 1, 1, "_CPPv44topkRK5arrayii14StreamOrDevice", "topk::s"], [0, 0, 1, "_CPPv45traceRK5array14StreamOrDevice", "trace"], [0, 0, 1, "_CPPv45traceRK5arrayiii14StreamOrDevice", "trace"], [0, 0, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace"], [0, 1, 1, "_CPPv45traceRK5array14StreamOrDevice", "trace::a"], [0, 1, 1, "_CPPv45traceRK5arrayiii14StreamOrDevice", "trace::a"], [0, 1, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace::a"], [0, 1, 1, "_CPPv45traceRK5arrayiii14StreamOrDevice", "trace::axis1"], [0, 1, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace::axis1"], [0, 1, 1, "_CPPv45traceRK5arrayiii14StreamOrDevice", "trace::axis2"], [0, 1, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace::axis2"], [0, 1, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace::dtype"], [0, 1, 1, "_CPPv45traceRK5arrayiii14StreamOrDevice", "trace::offset"], [0, 1, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace::offset"], [0, 1, 1, "_CPPv45traceRK5array14StreamOrDevice", "trace::s"], [0, 1, 1, "_CPPv45traceRK5arrayiii14StreamOrDevice", "trace::s"], [0, 1, 1, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice", "trace::s"], [0, 0, 1, "_CPPv49transposeRK5array14StreamOrDevice", "transpose"], [0, 0, 1, "_CPPv49transposeRK5arrayNSt16initializer_listIiEE14StreamOrDevice", "transpose"], [0, 0, 1, "_CPPv49transposeRK5arrayNSt6vectorIiEE14StreamOrDevice", "transpose"], [0, 1, 1, "_CPPv49transposeRK5array14StreamOrDevice", "transpose::a"], [0, 1, 1, "_CPPv49transposeRK5arrayNSt16initializer_listIiEE14StreamOrDevice", "transpose::a"], [0, 1, 1, "_CPPv49transposeRK5arrayNSt6vectorIiEE14StreamOrDevice", "transpose::a"], [0, 1, 1, "_CPPv49transposeRK5arrayNSt16initializer_listIiEE14StreamOrDevice", "transpose::axes"], [0, 1, 1, "_CPPv49transposeRK5arrayNSt6vectorIiEE14StreamOrDevice", "transpose::axes"], [0, 1, 1, "_CPPv49transposeRK5array14StreamOrDevice", "transpose::s"], [0, 1, 1, "_CPPv49transposeRK5arrayNSt16initializer_listIiEE14StreamOrDevice", "transpose::s"], [0, 1, 1, "_CPPv49transposeRK5arrayNSt6vectorIiEE14StreamOrDevice", "transpose::s"], [0, 0, 1, "_CPPv43trii5Dtype14StreamOrDevice", "tri"], [0, 0, 1, "_CPPv43triiii5Dtype14StreamOrDevice", "tri"], [0, 1, 1, "_CPPv43triiii5Dtype14StreamOrDevice", "tri::k"], [0, 1, 1, "_CPPv43triiii5Dtype14StreamOrDevice", "tri::m"], [0, 1, 1, "_CPPv43trii5Dtype14StreamOrDevice", "tri::n"], [0, 1, 1, "_CPPv43triiii5Dtype14StreamOrDevice", "tri::n"], [0, 1, 1, "_CPPv43trii5Dtype14StreamOrDevice", "tri::s"], [0, 1, 1, "_CPPv43triiii5Dtype14StreamOrDevice", "tri::s"], [0, 1, 1, "_CPPv43trii5Dtype14StreamOrDevice", "tri::type"], [0, 1, 1, "_CPPv43triiii5Dtype14StreamOrDevice", "tri::type"], [0, 0, 1, "_CPPv44tril5arrayi14StreamOrDevice", "tril"], [0, 1, 1, "_CPPv44tril5arrayi14StreamOrDevice", "tril::k"], [0, 1, 1, "_CPPv44tril5arrayi14StreamOrDevice", "tril::s"], [0, 1, 1, "_CPPv44tril5arrayi14StreamOrDevice", "tril::x"], [0, 0, 1, "_CPPv44triu5arrayi14StreamOrDevice", "triu"], [0, 1, 1, "_CPPv44triu5arrayi14StreamOrDevice", "triu::k"], [0, 1, 1, "_CPPv44triu5arrayi14StreamOrDevice", "triu::s"], [0, 1, 1, "_CPPv44triu5arrayi14StreamOrDevice", "triu::x"], [0, 0, 1, "_CPPv43varRK5array14StreamOrDevice", "var"], [0, 0, 1, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "var"], [0, 0, 1, "_CPPv43varRK5arraybi14StreamOrDevice", "var"], [0, 0, 1, "_CPPv43varRK5arrayibi14StreamOrDevice", "var"], [0, 1, 1, "_CPPv43varRK5array14StreamOrDevice", "var::a"], [0, 1, 1, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "var::a"], [0, 1, 1, "_CPPv43varRK5arraybi14StreamOrDevice", "var::a"], [0, 1, 1, "_CPPv43varRK5arrayibi14StreamOrDevice", "var::a"], [0, 1, 1, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "var::axes"], [0, 1, 1, "_CPPv43varRK5arrayibi14StreamOrDevice", "var::axis"], [0, 1, 1, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "var::ddof"], [0, 1, 1, "_CPPv43varRK5arraybi14StreamOrDevice", "var::ddof"], [0, 1, 1, "_CPPv43varRK5arrayibi14StreamOrDevice", "var::ddof"], [0, 1, 1, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "var::keepdims"], [0, 1, 1, "_CPPv43varRK5arraybi14StreamOrDevice", "var::keepdims"], [0, 1, 1, "_CPPv43varRK5arrayibi14StreamOrDevice", "var::keepdims"], [0, 1, 1, "_CPPv43varRK5array14StreamOrDevice", "var::s"], [0, 1, 1, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice", "var::s"], [0, 1, 1, "_CPPv43varRK5arraybi14StreamOrDevice", "var::s"], [0, 1, 1, "_CPPv43varRK5arrayibi14StreamOrDevice", "var::s"], [0, 0, 1, "_CPPv44viewRK5arrayRK5Dtype14StreamOrDevice", "view"], [0, 1, 1, "_CPPv44viewRK5arrayRK5Dtype14StreamOrDevice", "view::a"], [0, 1, 1, "_CPPv44viewRK5arrayRK5Dtype14StreamOrDevice", "view::dtype"], [0, 1, 1, "_CPPv44viewRK5arrayRK5Dtype14StreamOrDevice", "view::s"], [0, 0, 1, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice", "where"], [0, 1, 1, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice", "where::condition"], [0, 1, 1, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice", "where::s"], [0, 1, 1, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice", "where::x"], [0, 1, 1, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice", "where::y"], [0, 0, 1, "_CPPv45zerosRKNSt6vectorIiEE14StreamOrDevice", "zeros"], [0, 0, 1, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice", "zeros"], [0, 1, 1, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice", "zeros::dtype"], [0, 1, 1, "_CPPv45zerosRKNSt6vectorIiEE14StreamOrDevice", "zeros::s"], [0, 1, 1, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice", "zeros::s"], [0, 1, 1, "_CPPv45zerosRKNSt6vectorIiEE14StreamOrDevice", "zeros::shape"], [0, 1, 1, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice", "zeros::shape"], [0, 0, 1, "_CPPv410zeros_likeRK5array14StreamOrDevice", "zeros_like"], [0, 1, 1, "_CPPv410zeros_likeRK5array14StreamOrDevice", "zeros_like::a"], [0, 1, 1, "_CPPv410zeros_likeRK5array14StreamOrDevice", "zeros_like::s"]], "mlx.core": [[9, 3, 1, "", "Device"], [10, 3, 1, "", "Dtype"], [11, 3, 1, "", "DtypeCategory"], [306, 3, 1, "", "Stream"], [12, 5, 1, "", "abs"], [13, 5, 1, "", "add"], [14, 5, 1, "", "addmm"], [15, 5, 1, "", "all"], [16, 5, 1, "", "allclose"], [17, 5, 1, "", "any"], [18, 5, 1, "", "arange"], [19, 5, 1, "", "arccos"], [20, 5, 1, "", "arccosh"], [21, 5, 1, "", "arcsin"], [22, 5, 1, "", "arcsinh"], [23, 5, 1, "", "arctan"], [24, 5, 1, "", "arctan2"], [25, 5, 1, "", "arctanh"], [26, 5, 1, "", "argmax"], [27, 5, 1, "", "argmin"], [28, 5, 1, "", "argpartition"], [29, 5, 1, "", "argsort"], [30, 3, 1, "", "array"], [82, 5, 1, "", "array_equal"], [83, 5, 1, "", "as_strided"], [84, 5, 1, "", "atleast_1d"], [85, 5, 1, "", "atleast_2d"], [86, 5, 1, "", "atleast_3d"], [87, 5, 1, "", "bitwise_and"], [88, 5, 1, "", "bitwise_or"], [89, 5, 1, "", "bitwise_xor"], [90, 5, 1, "", "block_masked_mm"], [91, 5, 1, "", "broadcast_to"], [92, 5, 1, "", "ceil"], [93, 5, 1, "", "clip"], [94, 5, 1, "", "compile"], [95, 5, 1, "", "concatenate"], [96, 5, 1, "", "conj"], [97, 5, 1, "", "conjugate"], [98, 5, 1, "", "conv1d"], [99, 5, 1, "", "conv2d"], [100, 5, 1, "", "conv3d"], [101, 5, 1, "", "conv_general"], [102, 5, 1, "", "conv_transpose1d"], [103, 5, 1, "", "conv_transpose2d"], [104, 5, 1, "", "conv_transpose3d"], [105, 5, 1, "", "convolve"], [106, 5, 1, "", "cos"], [107, 5, 1, "", "cosh"], [108, 5, 1, "", "cummax"], [109, 5, 1, "", "cummin"], [110, 5, 1, "", "cumprod"], [111, 5, 1, "", "cumsum"], [112, 3, 1, "", "custom_function"], [113, 5, 1, "", "default_device"], [114, 5, 1, "", "default_stream"], [115, 5, 1, "", "degrees"], [116, 5, 1, "", "dequantize"], [117, 5, 1, "", "diag"], [118, 5, 1, "", "diagonal"], [119, 5, 1, "", "disable_compile"], [128, 5, 1, "", "divide"], [129, 5, 1, "", "divmod"], [130, 5, 1, "", "einsum"], [131, 5, 1, "", "einsum_path"], [132, 5, 1, "", "enable_compile"], [133, 5, 1, "", "equal"], [134, 5, 1, "", "erf"], [135, 5, 1, "", "erfinv"], [136, 5, 1, "", "eval"], [137, 5, 1, "", "exp"], [138, 5, 1, "", "expand_dims"], [139, 5, 1, "", "expm1"], [140, 5, 1, "", "eye"], [159, 5, 1, "", "flatten"], [160, 5, 1, "", "floor"], [161, 5, 1, "", "floor_divide"], [162, 5, 1, "", "full"], [163, 5, 1, "", "gather_mm"], [164, 5, 1, "", "gather_qmm"], [165, 5, 1, "", "grad"], [166, 5, 1, "", "greater"], [167, 5, 1, "", "greater_equal"], [168, 5, 1, "", "hadamard_transform"], [169, 5, 1, "", "identity"], [170, 5, 1, "", "inner"], [171, 5, 1, "", "isclose"], [172, 5, 1, "", "isfinite"], [173, 5, 1, "", "isinf"], [174, 5, 1, "", "isnan"], [175, 5, 1, "", "isneginf"], [176, 5, 1, "", "isposinf"], [177, 5, 1, "", "issubdtype"], [178, 5, 1, "", "jvp"], [179, 5, 1, "", "left_shift"], [180, 5, 1, "", "less"], [181, 5, 1, "", "less_equal"], [189, 5, 1, "", "linspace"], [190, 5, 1, "", "load"], [191, 5, 1, "", "log"], [192, 5, 1, "", "log10"], [193, 5, 1, "", "log1p"], [194, 5, 1, "", "log2"], [195, 5, 1, "", "logaddexp"], [196, 5, 1, "", "logical_and"], [197, 5, 1, "", "logical_not"], [198, 5, 1, "", "logical_or"], [199, 5, 1, "", "logsumexp"], [200, 5, 1, "", "matmul"], [201, 5, 1, "", "max"], [202, 5, 1, "", "maximum"], [203, 5, 1, "", "mean"], [204, 5, 1, "", "meshgrid"], [216, 5, 1, "", "min"], [217, 5, 1, "", "minimum"], [218, 5, 1, "", "moveaxis"], [219, 5, 1, "", "multiply"], [220, 5, 1, "", "nan_to_num"], [221, 5, 1, "", "negative"], [222, 5, 1, "", "new_stream"], [223, 5, 1, "", "not_equal"], [224, 5, 1, "", "ones"], [225, 5, 1, "", "ones_like"], [226, 5, 1, "", "outer"], [227, 5, 1, "", "pad"], [228, 5, 1, "", "partition"], [229, 5, 1, "", "power"], [230, 5, 1, "", "prod"], [231, 5, 1, "", "quantize"], [232, 5, 1, "", "quantized_matmul"], [233, 5, 1, "", "radians"], [246, 5, 1, "", "reciprocal"], [247, 5, 1, "", "remainder"], [248, 5, 1, "", "repeat"], [249, 5, 1, "", "reshape"], [250, 5, 1, "", "right_shift"], [251, 5, 1, "", "round"], [252, 5, 1, "", "rsqrt"], [253, 5, 1, "", "save"], [254, 5, 1, "", "save_gguf"], [255, 5, 1, "", "save_safetensors"], [256, 5, 1, "", "savez"], [257, 5, 1, "", "savez_compressed"], [258, 5, 1, "", "set_default_device"], [259, 5, 1, "", "set_default_stream"], [260, 5, 1, "", "sigmoid"], [261, 5, 1, "", "sign"], [262, 5, 1, "", "sin"], [263, 5, 1, "", "sinh"], [264, 5, 1, "", "softmax"], [265, 5, 1, "", "sort"], [266, 5, 1, "", "split"], [267, 5, 1, "", "sqrt"], [268, 5, 1, "", "square"], [269, 5, 1, "", "squeeze"], [270, 5, 1, "", "stack"], [271, 5, 1, "", "std"], [272, 5, 1, "", "stop_gradient"], [273, 5, 1, "", "stream"], [274, 5, 1, "", "subtract"], [275, 5, 1, "", "sum"], [276, 5, 1, "", "swapaxes"], [277, 5, 1, "", "synchronize"], [278, 5, 1, "", "take"], [279, 5, 1, "", "take_along_axis"], [280, 5, 1, "", "tan"], [281, 5, 1, "", "tanh"], [282, 5, 1, "", "tensordot"], [283, 5, 1, "", "tile"], [284, 5, 1, "", "topk"], [285, 5, 1, "", "trace"], [286, 5, 1, "", "transpose"], [287, 5, 1, "", "tri"], [288, 5, 1, "", "tril"], [289, 5, 1, "", "triu"], [290, 5, 1, "", "value_and_grad"], [291, 5, 1, "", "var"], [292, 5, 1, "", "view"], [293, 5, 1, "", "vjp"], [294, 5, 1, "", "vmap"], [295, 5, 1, "", "where"], [296, 5, 1, "", "zeros"], [297, 5, 1, "", "zeros_like"]], "mlx.core.Device": [[9, 4, 1, "", "__init__"]], "mlx.core.Dtype": [[10, 4, 1, "", "__init__"]], "mlx.core.DtypeCategory": [[11, 4, 1, "", "__init__"]], "mlx.core.Stream": [[306, 4, 1, "", "__init__"]], "mlx.core.array": [[31, 6, 1, "", "T"], [30, 4, 1, "", "__init__"], [32, 4, 1, "", "abs"], [33, 4, 1, "", "all"], [34, 4, 1, "", "any"], [35, 4, 1, "", "argmax"], [36, 4, 1, "", "argmin"], [37, 4, 1, "", "astype"], [38, 6, 1, "", "at"], [39, 4, 1, "", "conj"], [40, 4, 1, "", "cos"], [41, 4, 1, "", "cummax"], [42, 4, 1, "", "cummin"], [43, 4, 1, "", "cumprod"], [44, 4, 1, "", "cumsum"], [45, 4, 1, "", "diag"], [46, 4, 1, "", "diagonal"], [47, 6, 1, "", "dtype"], [48, 4, 1, "", "exp"], [49, 4, 1, "", "flatten"], [50, 4, 1, "", "item"], [51, 6, 1, "", "itemsize"], [52, 4, 1, "", "log"], [53, 4, 1, "", "log10"], [54, 4, 1, "", "log1p"], [55, 4, 1, "", "log2"], [56, 4, 1, "", "logsumexp"], [57, 4, 1, "", "max"], [58, 4, 1, "", "mean"], [59, 4, 1, "", "min"], [60, 4, 1, "", "moveaxis"], [61, 6, 1, "", "nbytes"], [62, 6, 1, "", "ndim"], [63, 4, 1, "", "prod"], [64, 4, 1, "", "reciprocal"], [65, 4, 1, "", "reshape"], [66, 4, 1, "", "round"], [67, 4, 1, "", "rsqrt"], [68, 6, 1, "", "shape"], [69, 4, 1, "", "sin"], [70, 6, 1, "", "size"], [71, 4, 1, "", "split"], [72, 4, 1, "", "sqrt"], [73, 4, 1, "", "square"], [74, 4, 1, "", "squeeze"], [75, 4, 1, "", "std"], [76, 4, 1, "", "sum"], [77, 4, 1, "", "swapaxes"], [78, 4, 1, "", "tolist"], [79, 4, 1, "", "transpose"], [80, 4, 1, "", "var"], [81, 4, 1, "", "view"]], "mlx.core.custom_function": [[112, 4, 1, "", "__init__"]], "mlx.core.distributed": [[120, 3, 1, "", "Group"], [121, 5, 1, "", "all_gather"], [122, 5, 1, "", "all_sum"], [123, 5, 1, "", "init"], [124, 5, 1, "", "is_available"], [125, 5, 1, "", "recv"], [126, 5, 1, "", "recv_like"], [127, 5, 1, "", "send"]], "mlx.core.distributed.Group": [[120, 4, 1, "", "__init__"]], "mlx.core.fast": [[141, 5, 1, "", "affine_quantize"], [142, 5, 1, "", "layer_norm"], [143, 5, 1, "", "metal_kernel"], [144, 5, 1, "", "rms_norm"], [145, 5, 1, "", "rope"], [146, 5, 1, "", "scaled_dot_product_attention"]], "mlx.core.fft": [[147, 5, 1, "", "fft"], [148, 5, 1, "", "fft2"], [149, 5, 1, "", "fftn"], [150, 5, 1, "", "ifft"], [151, 5, 1, "", "ifft2"], [152, 5, 1, "", "ifftn"], [153, 5, 1, "", "irfft"], [154, 5, 1, "", "irfft2"], [155, 5, 1, "", "irfftn"], [156, 5, 1, "", "rfft"], [157, 5, 1, "", "rfft2"], [158, 5, 1, "", "rfftn"]], "mlx.core.linalg": [[182, 5, 1, "", "cholesky"], [183, 5, 1, "", "cholesky_inv"], [184, 5, 1, "", "inv"], [185, 5, 1, "", "norm"], [186, 5, 1, "", "qr"], [187, 5, 1, "", "svd"], [188, 5, 1, "", "tri_inv"]], "mlx.core.metal": [[205, 5, 1, "", "clear_cache"], [206, 5, 1, "", "device_info"], [207, 5, 1, "", "get_active_memory"], [208, 5, 1, "", "get_cache_memory"], [209, 5, 1, "", "get_peak_memory"], [210, 5, 1, "", "is_available"], [211, 5, 1, "", "reset_peak_memory"], [212, 5, 1, "", "set_cache_limit"], [213, 5, 1, "", "set_memory_limit"], [214, 5, 1, "", "start_capture"], [215, 5, 1, "", "stop_capture"]], "mlx.core.random": [[234, 5, 1, "", "bernoulli"], [235, 5, 1, "", "categorical"], [236, 5, 1, "", "gumbel"], [237, 5, 1, "", "key"], [238, 5, 1, "", "laplace"], [239, 5, 1, "", "multivariate_normal"], [240, 5, 1, "", "normal"], [241, 5, 1, "", "randint"], [242, 5, 1, "", "seed"], [243, 5, 1, "", "split"], [244, 5, 1, "", "truncated_normal"], [245, 5, 1, "", "uniform"]], "mlx.nn": [[316, 3, 1, "", "ALiBi"], [317, 3, 1, "", "AvgPool1d"], [318, 3, 1, "", "AvgPool2d"], [319, 3, 1, "", "BatchNorm"], [320, 3, 1, "", "Conv1d"], [321, 3, 1, "", "Conv2d"], [322, 3, 1, "", "Conv3d"], [323, 3, 1, "", "ConvTranspose1d"], [324, 3, 1, "", "ConvTranspose2d"], [325, 3, 1, "", "ConvTranspose3d"], [326, 3, 1, "", "Dropout"], [327, 3, 1, "", "Dropout2d"], [328, 3, 1, "", "Dropout3d"], [329, 3, 1, "", "Embedding"], [330, 3, 1, "", "GELU"], [331, 3, 1, "", "GLU"], [332, 3, 1, "", "GRU"], [333, 3, 1, "", "GroupNorm"], [334, 3, 1, "", "HardShrink"], [335, 3, 1, "", "HardTanh"], [336, 3, 1, "", "Hardswish"], [337, 3, 1, "", "InstanceNorm"], [338, 3, 1, "", "LSTM"], [339, 3, 1, "", "LayerNorm"], [340, 3, 1, "", "LeakyReLU"], [341, 3, 1, "", "Linear"], [342, 3, 1, "", "MaxPool1d"], [343, 3, 1, "", "MaxPool2d"], [344, 3, 1, "", "Mish"], [437, 3, 1, "", "Module"], [365, 3, 1, "", "MultiHeadAttention"], [366, 3, 1, "", "PReLU"], [367, 3, 1, "", "QuantizedEmbedding"], [368, 3, 1, "", "QuantizedLinear"], [369, 3, 1, "", "RMSNorm"], [370, 3, 1, "", "RNN"], [371, 3, 1, "", "ReLU"], [372, 3, 1, "", "ReLU6"], [373, 3, 1, "", "RoPE"], [374, 3, 1, "", "SELU"], [375, 3, 1, "", "Sequential"], [376, 3, 1, "", "SiLU"], [377, 3, 1, "", "SinusoidalPositionalEncoding"], [378, 3, 1, "", "Softmax"], [379, 3, 1, "", "Softmin"], [380, 3, 1, "", "Softplus"], [381, 3, 1, "", "Softshrink"], [382, 3, 1, "", "Softsign"], [383, 3, 1, "", "Step"], [384, 3, 1, "", "Tanh"], [385, 3, 1, "", "Transformer"], [386, 3, 1, "", "Upsample"], [395, 3, 1, "", "elu"], [396, 3, 1, "", "gelu"], [397, 3, 1, "", "gelu_approx"], [398, 3, 1, "", "gelu_fast_approx"], [399, 3, 1, "", "glu"], [400, 3, 1, "", "hard_shrink"], [401, 3, 1, "", "hard_tanh"], [402, 3, 1, "", "hardswish"], [403, 3, 1, "", "leaky_relu"], [404, 3, 1, "", "log_sigmoid"], [405, 3, 1, "", "log_softmax"], [420, 3, 1, "", "mish"], [421, 3, 1, "", "prelu"], [298, 5, 1, "", "quantize"], [422, 3, 1, "", "relu"], [423, 3, 1, "", "relu6"], [424, 3, 1, "", "selu"], [425, 3, 1, "", "sigmoid"], [426, 3, 1, "", "silu"], [427, 3, 1, "", "softmax"], [428, 3, 1, "", "softmin"], [429, 3, 1, "", "softplus"], [430, 3, 1, "", "softshrink"], [431, 3, 1, "", "step"], [432, 3, 1, "", "tanh"], [299, 5, 1, "", "value_and_grad"]], "mlx.nn.Module": [[345, 4, 1, "", "apply"], [346, 4, 1, "", "apply_to_modules"], [347, 4, 1, "", "children"], [348, 4, 1, "", "eval"], [349, 4, 1, "", "filter_and_map"], [350, 4, 1, "", "freeze"], [351, 4, 1, "", "leaf_modules"], [352, 4, 1, "", "load_weights"], [353, 4, 1, "", "modules"], [354, 4, 1, "", "named_modules"], [355, 4, 1, "", "parameters"], [356, 4, 1, "", "save_weights"], [357, 4, 1, "", "set_dtype"], [358, 6, 1, "", "state"], [359, 4, 1, "", "train"], [360, 4, 1, "", "trainable_parameters"], [361, 6, 1, "", "training"], [362, 4, 1, "", "unfreeze"], [363, 4, 1, "", "update"], [364, 4, 1, "", "update_modules"]], "mlx.nn.init": [[387, 5, 1, "", "constant"], [388, 5, 1, "", "glorot_normal"], [389, 5, 1, "", "glorot_uniform"], [390, 5, 1, "", "he_normal"], [391, 5, 1, "", "he_uniform"], [392, 5, 1, "", "identity"], [393, 5, 1, "", "normal"], [394, 5, 1, "", "uniform"]], "mlx.nn.losses": [[406, 3, 1, "", "binary_cross_entropy"], [407, 3, 1, "", "cosine_similarity_loss"], [408, 3, 1, "", "cross_entropy"], [409, 3, 1, "", "gaussian_nll_loss"], [410, 3, 1, "", "hinge_loss"], [411, 3, 1, "", "huber_loss"], [412, 3, 1, "", "kl_div_loss"], [413, 3, 1, "", "l1_loss"], [414, 3, 1, "", "log_cosh_loss"], [415, 3, 1, "", "margin_ranking_loss"], [416, 3, 1, "", "mse_loss"], [417, 3, 1, "", "nll_loss"], [418, 3, 1, "", "smooth_l1_loss"], [419, 3, 1, "", "triplet_loss"]], "mlx.optimizers": [[440, 3, 1, "", "AdaDelta"], [441, 3, 1, "", "Adafactor"], [442, 3, 1, "", "Adagrad"], [443, 3, 1, "", "Adam"], [444, 3, 1, "", "AdamW"], [445, 3, 1, "", "Adamax"], [446, 3, 1, "", "Lion"], [459, 3, 1, "", "Optimizer"], [451, 3, 1, "", "RMSprop"], [452, 3, 1, "", "SGD"], [300, 5, 1, "", "clip_grad_norm"], [453, 5, 1, "", "cosine_decay"], [454, 5, 1, "", "exponential_decay"], [455, 5, 1, "", "join_schedules"], [456, 5, 1, "", "linear_schedule"], [457, 5, 1, "", "step_decay"]], "mlx.optimizers.Optimizer": [[447, 4, 1, "", "apply_gradients"], [448, 4, 1, "", "init"], [449, 6, 1, "", "state"], [450, 4, 1, "", "update"]], "mlx.utils": [[301, 5, 1, "", "tree_flatten"], [302, 5, 1, "", "tree_map"], [303, 5, 1, "", "tree_map_with_path"], [304, 5, 1, "", "tree_reduce"], [305, 5, 1, "", "tree_unflatten"]]}, "objtypes": {"0": "cpp:function", "1": "cpp:functionParam", "2": "cpp:templateParam", "3": "py:class", "4": "py:method", "5": "py:function", "6": "py:property"}, "objnames": {"0": ["cpp", "function", "C++ function"], "1": ["cpp", "functionParam", "C++ function parameter"], "2": ["cpp", "templateParam", "C++ template parameter"], "3": ["py", "class", "Python class"], "4": ["py", "method", "Python method"], "5": ["py", "function", "Python function"], "6": ["py", "property", "Python property"]}, "titleterms": {"oper": [0, 2, 438], "custom": [1, 2], "metal": [1, 3, 8, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 314], "kernel": 1, "simpl": [1, 472], "exampl": [1, 2, 7, 464, 465, 472], "us": [1, 2, 468, 473], "shape": [1, 68], "stride": 1, "complex": 1, "grid": 1, "sampl": 1, "vjp": [1, 293], "extens": 2, "mlx": [2, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457], "introduc": 2, "primit": 2, "implement": [2, 5], "cpu": 2, "back": 2, "end": 2, "gpu": 2, "transform": [2, 385, 462, 464, 466, 468, 470], "build": [2, 8], "bind": 2, "python": [2, 7, 8], "cmake": 2, "setuptool": 2, "usag": [2, 7], "result": 2, "script": [2, 5], "download": [2, 5], "code": [2, 5], "debugg": 3, "xcode": 3, "workflow": 3, "linear": [4, 313, 341], "regress": 4, "llm": 5, "infer": 5, "model": 5, "attent": 5, "layer": [5, 6, 435], "encod": 5, "full": [5, 162], "gener": 5, "put": 5, "all": [5, 15, 33, 465], "togeth": 5, "convert": 5, "weight": 5, "load": [5, 190, 439, 471], "benchmark": 5, "multi": 6, "perceptron": 6, "instal": [7, 8, 465], "api": [7, 8], "refer": 7, "c": [7, 8], "further": 7, "read": 7, "troubleshoot": 8, "from": [8, 467], "sourc": 8, "requir": 8, "option": 8, "binari": 8, "size": [8, 70], "minim": 8, "found": 8, "x86": 8, "shell": 8, "core": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 306], "devic": [9, 309], "dtype": [10, 47], "dtypecategori": 11, "ab": [12, 32], "add": 13, "addmm": 14, "allclos": 16, "ani": [17, 34], "arang": 18, "arcco": 19, "arccosh": 20, "arcsin": 21, "arcsinh": 22, "arctan": 23, "arctan2": 24, "arctanh": 25, "argmax": [26, 35], "argmin": [27, 36], "argpartit": 28, "argsort": 29, "arrai": [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 307, 467, 471], "t": 31, "astyp": 37, "conj": [39, 96], "co": [40, 106], "cummax": [41, 108], "cummin": [42, 109], "cumprod": [43, 110], "cumsum": [44, 111], "diag": [45, 117], "diagon": [46, 118], "exp": [48, 137], "flatten": [49, 159], "item": 50, "items": 51, "log": [52, 191], "log10": [53, 192], "log1p": [54, 193], "log2": [55, 194], "logsumexp": [56, 199], "max": [57, 201], "mean": [58, 203], "min": [59, 216], "moveaxi": [60, 218], "nbyte": 61, "ndim": 62, "prod": [63, 230], "reciproc": [64, 246], "reshap": [65, 249], "round": [66, 251], "rsqrt": [67, 252], "sin": [69, 262], "split": [71, 243, 266], "sqrt": [72, 267], "squar": [73, 268], "squeez": [74, 269], "std": [75, 271], "sum": [76, 275], "swapax": [77, 276], "tolist": 78, "transpos": [79, 286], "var": [80, 291], "view": [81, 292], "array_equ": 82, "as_strid": 83, "atleast_1d": 84, "atleast_2d": 85, "atleast_3d": 86, "bitwise_and": 87, "bitwise_or": 88, "bitwise_xor": 89, "block_masked_mm": 90, "broadcast_to": 91, "ceil": 92, "clip": 93, "compil": [94, 464], "concaten": 95, "conjug": 97, "conv1d": [98, 320], "conv2d": [99, 321], "conv3d": [100, 322], "conv_gener": 101, "conv_transpose1d": 102, "conv_transpose2d": 103, "conv_transpose3d": 104, "convolv": 105, "cosh": 107, "custom_funct": 112, "default_devic": 113, "default_stream": 114, "degre": 115, "dequant": 116, "disable_compil": 119, "distribut": [120, 121, 122, 123, 124, 125, 126, 127, 310, 465], "group": 120, "all_gath": 121, "all_sum": 122, "init": [123, 387, 388, 389, 390, 391, 392, 393, 394, 448], "is_avail": [124, 210], "recv": 125, "recv_lik": 126, "send": 127, "divid": 128, "divmod": 129, "einsum": 130, "einsum_path": 131, "enable_compil": 132, "equal": 133, "erf": 134, "erfinv": 135, "eval": [136, 348], "expand_dim": 138, "expm1": 139, "ey": 140, "fast": [141, 142, 143, 144, 145, 146, 311], "affine_quant": 141, "layer_norm": 142, "metal_kernel": 143, "rms_norm": 144, "rope": [145, 373], "scaled_dot_product_attent": 146, "fft": [147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 312], "fft2": 148, "fftn": 149, "ifft": 150, "ifft2": 151, "ifftn": 152, "irfft": 153, "irfft2": 154, "irfftn": 155, "rfft": 156, "rfft2": 157, "rfftn": 158, "floor": 160, "floor_divid": 161, "gather_mm": 163, "gather_qmm": 164, "grad": [165, 315], "greater": 166, "greater_equ": 167, "hadamard_transform": 168, "ident": [169, 392], "inner": 170, "isclos": 171, "isfinit": 172, "isinf": 173, "isnan": 174, "isneginf": 175, "isposinf": 176, "issubdtyp": 177, "jvp": 178, "left_shift": 179, "less": 180, "less_equ": 181, "linalg": [182, 183, 184, 185, 186, 187, 188], "choleski": 182, "cholesky_inv": 183, "inv": 184, "norm": 185, "qr": 186, "svd": 187, "tri_inv": 188, "linspac": 189, "logaddexp": 195, "logical_and": 196, "logical_not": 197, "logical_or": 198, "matmul": 200, "maximum": 202, "meshgrid": 204, "clear_cach": 205, "device_info": 206, "get_active_memori": 207, "get_cache_memori": 208, "get_peak_memori": 209, "reset_peak_memori": 211, "set_cache_limit": 212, "set_memory_limit": 213, "start_captur": 214, "stop_captur": 215, "minimum": 217, "multipli": 219, "nan_to_num": 220, "neg": 221, "new_stream": 222, "not_equ": 223, "ones": 224, "ones_lik": 225, "outer": 226, "pad": 227, "partit": 228, "power": 229, "quantiz": [231, 298], "quantized_matmul": 232, "radian": 233, "random": [234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 461], "bernoulli": 234, "categor": 235, "gumbel": 236, "kei": 237, "laplac": 238, "multivariate_norm": 239, "normal": [240, 393], "randint": 241, "seed": 242, "truncated_norm": 244, "uniform": [245, 394], "remaind": 247, "repeat": 248, "right_shift": 250, "save": [253, 439, 471], "save_gguf": 254, "save_safetensor": 255, "savez": 256, "savez_compress": 257, "set_default_devic": 258, "set_default_stream": 259, "sigmoid": [260, 425], "sign": 261, "sinh": 263, "softmax": [264, 378, 427], "sort": 265, "stack": 270, "stop_gradi": 272, "stream": [273, 306, 309, 473], "subtract": 274, "synchron": 277, "take": 278, "take_along_axi": 279, "tan": 280, "tanh": [281, 384, 432], "tensordot": 282, "tile": 283, "topk": 284, "trace": 285, "tri": 287, "tril": 288, "triu": 289, "value_and_grad": [290, 299], "vmap": 294, "where": 295, "zero": 296, "zeros_lik": 297, "nn": [298, 299, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432], "optim": [300, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459], "clip_grad_norm": 300, "util": [301, 302, 303, 304, 305, 463], "tree_flatten": 301, "tree_map": 302, "tree_map_with_path": 303, "tree_reduc": 304, "tree_unflatten": 305, "data": 308, "type": 308, "support": 308, "commun": [310, 465], "algebra": 313, "neural": 315, "network": 315, "quick": [315, 470], "start": [315, 465, 470], "The": 315, "modul": [315, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 437], "class": 315, "paramet": [315, 355], "updat": [315, 363, 450, 467], "inspect": 315, "valu": 315, "alibi": 316, "avgpool1d": 317, "avgpool2d": 318, "batchnorm": 319, "convtranspose1d": 323, "convtranspose2d": 324, "convtranspose3d": 325, "dropout": 326, "dropout2d": 327, "dropout3d": 328, "embed": 329, "gelu": [330, 396], "glu": [331, 399], "gru": 332, "groupnorm": 333, "hardshrink": 334, "hardtanh": 335, "hardswish": [336, 402], "instancenorm": 337, "lstm": 338, "layernorm": 339, "leakyrelu": 340, "maxpool1d": 342, "maxpool2d": 343, "mish": [344, 420], "appli": 345, "apply_to_modul": 346, "children": 347, "filter_and_map": 349, "freez": 350, "leaf_modul": 351, "load_weight": 352, "named_modul": 354, "save_weight": 356, "set_dtyp": 357, "state": [358, 449], "train": [359, 361, 464, 465], "trainable_paramet": 360, "unfreez": 362, "update_modul": 364, "multiheadattent": 365, "prelu": [366, 421], "quantizedembed": 367, "quantizedlinear": 368, "rmsnorm": 369, "rnn": 370, "relu": [371, 422], "relu6": [372, 423], "selu": [374, 424], "sequenti": 375, "silu": [376, 426], "sinusoidalpositionalencod": 377, "softmin": [379, 428], "softplu": [380, 429], "softshrink": [381, 430], "softsign": 382, "step": [383, 431], "upsampl": 386, "constant": 387, "glorot_norm": 388, "glorot_uniform": 389, "he_norm": 390, "he_uniform": 391, "elu": 395, "gelu_approx": 397, "gelu_fast_approx": 398, "hard_shrink": 400, "hard_tanh": 401, "leaky_relu": 403, "log_sigmoid": 404, "log_softmax": 405, "loss": [406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 436], "binary_cross_entropi": 406, "cosine_similarity_loss": 407, "cross_entropi": 408, "gaussian_nll_loss": 409, "hinge_loss": 410, "huber_loss": 411, "kl_div_loss": 412, "l1_loss": 413, "log_cosh_loss": 414, "margin_ranking_loss": 415, "mse_loss": 416, "nll_loss": 417, "smooth_l1_loss": 418, "triplet_loss": 419, "function": [433, 436, 464, 466, 470], "initi": 434, "adadelta": 440, "adafactor": 441, "adagrad": 442, "adam": 443, "adamw": 444, "adamax": 445, "lion": 446, "apply_gradi": 447, "rmsprop": 451, "sgd": 452, "cosine_decai": 453, "exponential_decai": 454, "join_schedul": 455, "linear_schedul": 456, "step_decai": 457, "common": 458, "schedul": 460, "tree": 463, "basic": [464, 470], "speedup": 464, "debug": 464, "pure": 464, "graph": [464, 468, 470], "get": 465, "mpi": 465, "set": 465, "up": 465, "remot": 465, "host": 465, "tune": 465, "reduc": 465, "automat": 466, "differenti": 466, "vector": 466, "index": 467, "differ": 467, "numpi": [467, 469], "In": 467, "place": 467, "lazi": 468, "evalu": 468, "why": 468, "comput": 468, "onli": 468, "what": 468, "you": 468, "when": 468, "convers": 469, "other": 469, "framework": 469, "pytorch": 469, "jax": 469, "tensorflow": 469, "guid": 470, "serial": 471, "format": 471, "unifi": 472, "memori": 472, "A": 472, "specifi": 473}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 60}, "alltitles": {"Operations": [[0, "operations"], [2, "operations"], [438, "operations"]], "Custom Metal Kernels": [[1, "custom-metal-kernels"]], "Simple Example": [[1, "simple-example"]], "Using Shape/Strides": [[1, "using-shape-strides"]], "Complex Example": [[1, "complex-example"]], "Grid Sample VJP": [[1, "grid-sample-vjp"]], "Custom Extensions in MLX": [[2, "custom-extensions-in-mlx"]], "Introducing the Example": [[2, "introducing-the-example"]], "Operations and Primitives": [[2, "operations-and-primitives"]], "Primitives": [[2, "primitives"]], "Using the Primitive": [[2, "using-the-primitive"]], "Implementing the Primitive": [[2, "implementing-the-primitive"]], "Implementing the CPU Back-end": [[2, "implementing-the-cpu-back-end"]], "Implementing the GPU Back-end": [[2, "implementing-the-gpu-back-end"]], "Primitive Transforms": [[2, "primitive-transforms"]], "Building and Binding": [[2, "building-and-binding"]], "Binding to Python": [[2, "binding-to-python"]], "Building with CMake": [[2, "building-with-cmake"]], "Building with setuptools": [[2, "building-with-setuptools"]], "Usage": [[2, "usage"], [7, null]], "Results": [[2, "results"]], "Scripts": [[2, "scripts"], [5, "scripts"]], "Download the code": [[2, null], [5, null]], "Metal Debugger": [[3, "metal-debugger"]], "Xcode Workflow": [[3, "xcode-workflow"]], "Linear Regression": [[4, "linear-regression"]], "LLM inference": [[5, "llm-inference"]], "Implementing the model": [[5, "implementing-the-model"]], "Attention layer": [[5, "attention-layer"]], "Encoder layer": [[5, "encoder-layer"]], "Full model": [[5, "full-model"]], "Generation": [[5, "generation"]], "Putting it all together": [[5, "putting-it-all-together"]], "Converting the weights": [[5, "converting-the-weights"]], "Weight loading and benchmarking": [[5, "weight-loading-and-benchmarking"]], "Multi-Layer Perceptron": [[6, "multi-layer-perceptron"]], "MLX": [[7, "mlx"]], "Install": [[7, null]], "Examples": [[7, null]], "Python API Reference": [[7, null]], "C++ API Reference": [[7, null]], "Further Reading": [[7, null]], "Build and Install": [[8, "build-and-install"]], "Python Installation": [[8, "python-installation"]], "Troubleshooting": [[8, "troubleshooting"], [8, "id2"]], "Build from source": [[8, "build-from-source"]], "Build Requirements": [[8, "build-requirements"]], "Python API": [[8, "python-api"]], "C++ API": [[8, "c-api"]], "Build Options": [[8, "id3"]], "Binary Size Minimization": [[8, "binary-size-minimization"]], "Metal not found": [[8, "metal-not-found"]], "x86 Shell": [[8, "x86-shell"]], "mlx.core.Device": [[9, "mlx-core-device"]], "mlx.core.Dtype": [[10, "mlx-core-dtype"]], "mlx.core.DtypeCategory": [[11, "mlx-core-dtypecategory"]], "mlx.core.abs": [[12, "mlx-core-abs"]], "mlx.core.add": [[13, "mlx-core-add"]], "mlx.core.addmm": [[14, "mlx-core-addmm"]], "mlx.core.all": [[15, "mlx-core-all"]], "mlx.core.allclose": [[16, "mlx-core-allclose"]], "mlx.core.any": [[17, "mlx-core-any"]], "mlx.core.arange": [[18, "mlx-core-arange"]], "mlx.core.arccos": [[19, "mlx-core-arccos"]], "mlx.core.arccosh": [[20, "mlx-core-arccosh"]], "mlx.core.arcsin": [[21, "mlx-core-arcsin"]], "mlx.core.arcsinh": [[22, "mlx-core-arcsinh"]], "mlx.core.arctan": [[23, "mlx-core-arctan"]], "mlx.core.arctan2": [[24, "mlx-core-arctan2"]], "mlx.core.arctanh": [[25, "mlx-core-arctanh"]], "mlx.core.argmax": [[26, "mlx-core-argmax"]], "mlx.core.argmin": [[27, "mlx-core-argmin"]], "mlx.core.argpartition": [[28, "mlx-core-argpartition"]], "mlx.core.argsort": [[29, "mlx-core-argsort"]], "mlx.core.array": [[30, "mlx-core-array"]], "mlx.core.array.T": [[31, "mlx-core-array-t"]], "mlx.core.array.abs": [[32, "mlx-core-array-abs"]], "mlx.core.array.all": [[33, "mlx-core-array-all"]], "mlx.core.array.any": [[34, "mlx-core-array-any"]], "mlx.core.array.argmax": [[35, "mlx-core-array-argmax"]], "mlx.core.array.argmin": [[36, "mlx-core-array-argmin"]], "mlx.core.array.astype": [[37, "mlx-core-array-astype"]], "mlx.core.array.at": [[38, "mlx-core-array-at"]], "mlx.core.array.conj": [[39, "mlx-core-array-conj"]], "mlx.core.array.cos": [[40, "mlx-core-array-cos"]], "mlx.core.array.cummax": [[41, "mlx-core-array-cummax"]], "mlx.core.array.cummin": [[42, "mlx-core-array-cummin"]], "mlx.core.array.cumprod": [[43, "mlx-core-array-cumprod"]], "mlx.core.array.cumsum": [[44, "mlx-core-array-cumsum"]], "mlx.core.array.diag": [[45, "mlx-core-array-diag"]], "mlx.core.array.diagonal": [[46, "mlx-core-array-diagonal"]], "mlx.core.array.dtype": [[47, "mlx-core-array-dtype"]], "mlx.core.array.exp": [[48, "mlx-core-array-exp"]], "mlx.core.array.flatten": [[49, "mlx-core-array-flatten"]], "mlx.core.array.item": [[50, "mlx-core-array-item"]], "mlx.core.array.itemsize": [[51, "mlx-core-array-itemsize"]], "mlx.core.array.log": [[52, "mlx-core-array-log"]], "mlx.core.array.log10": [[53, "mlx-core-array-log10"]], "mlx.core.array.log1p": [[54, "mlx-core-array-log1p"]], "mlx.core.array.log2": [[55, "mlx-core-array-log2"]], "mlx.core.array.logsumexp": [[56, "mlx-core-array-logsumexp"]], "mlx.core.array.max": [[57, "mlx-core-array-max"]], "mlx.core.array.mean": [[58, "mlx-core-array-mean"]], "mlx.core.array.min": [[59, "mlx-core-array-min"]], "mlx.core.array.moveaxis": [[60, "mlx-core-array-moveaxis"]], "mlx.core.array.nbytes": [[61, "mlx-core-array-nbytes"]], "mlx.core.array.ndim": [[62, "mlx-core-array-ndim"]], "mlx.core.array.prod": [[63, "mlx-core-array-prod"]], "mlx.core.array.reciprocal": [[64, "mlx-core-array-reciprocal"]], "mlx.core.array.reshape": [[65, "mlx-core-array-reshape"]], "mlx.core.array.round": [[66, "mlx-core-array-round"]], "mlx.core.array.rsqrt": [[67, "mlx-core-array-rsqrt"]], "mlx.core.array.shape": [[68, "mlx-core-array-shape"]], "mlx.core.array.sin": [[69, "mlx-core-array-sin"]], "mlx.core.array.size": [[70, "mlx-core-array-size"]], "mlx.core.array.split": [[71, "mlx-core-array-split"]], "mlx.core.array.sqrt": [[72, "mlx-core-array-sqrt"]], "mlx.core.array.square": [[73, "mlx-core-array-square"]], "mlx.core.array.squeeze": [[74, "mlx-core-array-squeeze"]], "mlx.core.array.std": [[75, "mlx-core-array-std"]], "mlx.core.array.sum": [[76, "mlx-core-array-sum"]], "mlx.core.array.swapaxes": [[77, "mlx-core-array-swapaxes"]], "mlx.core.array.tolist": [[78, "mlx-core-array-tolist"]], "mlx.core.array.transpose": [[79, "mlx-core-array-transpose"]], "mlx.core.array.var": [[80, "mlx-core-array-var"]], "mlx.core.array.view": [[81, "mlx-core-array-view"]], "mlx.core.array_equal": [[82, "mlx-core-array-equal"]], "mlx.core.as_strided": [[83, "mlx-core-as-strided"]], "mlx.core.atleast_1d": [[84, "mlx-core-atleast-1d"]], "mlx.core.atleast_2d": [[85, "mlx-core-atleast-2d"]], "mlx.core.atleast_3d": [[86, "mlx-core-atleast-3d"]], "mlx.core.bitwise_and": [[87, "mlx-core-bitwise-and"]], "mlx.core.bitwise_or": [[88, "mlx-core-bitwise-or"]], "mlx.core.bitwise_xor": [[89, "mlx-core-bitwise-xor"]], "mlx.core.block_masked_mm": [[90, "mlx-core-block-masked-mm"]], "mlx.core.broadcast_to": [[91, "mlx-core-broadcast-to"]], "mlx.core.ceil": [[92, "mlx-core-ceil"]], "mlx.core.clip": [[93, "mlx-core-clip"]], "mlx.core.compile": [[94, "mlx-core-compile"]], "mlx.core.concatenate": [[95, "mlx-core-concatenate"]], "mlx.core.conj": [[96, "mlx-core-conj"]], "mlx.core.conjugate": [[97, "mlx-core-conjugate"]], "mlx.core.conv1d": [[98, "mlx-core-conv1d"]], "mlx.core.conv2d": [[99, "mlx-core-conv2d"]], "mlx.core.conv3d": [[100, "mlx-core-conv3d"]], "mlx.core.conv_general": [[101, "mlx-core-conv-general"]], "mlx.core.conv_transpose1d": [[102, "mlx-core-conv-transpose1d"]], "mlx.core.conv_transpose2d": [[103, "mlx-core-conv-transpose2d"]], "mlx.core.conv_transpose3d": [[104, "mlx-core-conv-transpose3d"]], "mlx.core.convolve": [[105, "mlx-core-convolve"]], "mlx.core.cos": [[106, "mlx-core-cos"]], "mlx.core.cosh": [[107, "mlx-core-cosh"]], "mlx.core.cummax": [[108, "mlx-core-cummax"]], "mlx.core.cummin": [[109, "mlx-core-cummin"]], "mlx.core.cumprod": [[110, "mlx-core-cumprod"]], "mlx.core.cumsum": [[111, "mlx-core-cumsum"]], "mlx.core.custom_function": [[112, "mlx-core-custom-function"]], "mlx.core.default_device": [[113, "mlx-core-default-device"]], "mlx.core.default_stream": [[114, "mlx-core-default-stream"]], "mlx.core.degrees": [[115, "mlx-core-degrees"]], "mlx.core.dequantize": [[116, "mlx-core-dequantize"]], "mlx.core.diag": [[117, "mlx-core-diag"]], "mlx.core.diagonal": [[118, "mlx-core-diagonal"]], "mlx.core.disable_compile": [[119, "mlx-core-disable-compile"]], "mlx.core.distributed.Group": [[120, "mlx-core-distributed-group"]], "mlx.core.distributed.all_gather": [[121, "mlx-core-distributed-all-gather"]], "mlx.core.distributed.all_sum": [[122, "mlx-core-distributed-all-sum"]], "mlx.core.distributed.init": [[123, "mlx-core-distributed-init"]], "mlx.core.distributed.is_available": [[124, "mlx-core-distributed-is-available"]], "mlx.core.distributed.recv": [[125, "mlx-core-distributed-recv"]], "mlx.core.distributed.recv_like": [[126, "mlx-core-distributed-recv-like"]], "mlx.core.distributed.send": [[127, "mlx-core-distributed-send"]], "mlx.core.divide": [[128, "mlx-core-divide"]], "mlx.core.divmod": [[129, "mlx-core-divmod"]], "mlx.core.einsum": [[130, "mlx-core-einsum"]], "mlx.core.einsum_path": [[131, "mlx-core-einsum-path"]], "mlx.core.enable_compile": [[132, "mlx-core-enable-compile"]], "mlx.core.equal": [[133, "mlx-core-equal"]], "mlx.core.erf": [[134, "mlx-core-erf"]], "mlx.core.erfinv": [[135, "mlx-core-erfinv"]], "mlx.core.eval": [[136, "mlx-core-eval"]], "mlx.core.exp": [[137, "mlx-core-exp"]], "mlx.core.expand_dims": [[138, "mlx-core-expand-dims"]], "mlx.core.expm1": [[139, "mlx-core-expm1"]], "mlx.core.eye": [[140, "mlx-core-eye"]], "mlx.core.fast.affine_quantize": [[141, "mlx-core-fast-affine-quantize"]], "mlx.core.fast.layer_norm": [[142, "mlx-core-fast-layer-norm"]], "mlx.core.fast.metal_kernel": [[143, "mlx-core-fast-metal-kernel"]], "mlx.core.fast.rms_norm": [[144, "mlx-core-fast-rms-norm"]], "mlx.core.fast.rope": [[145, "mlx-core-fast-rope"]], "mlx.core.fast.scaled_dot_product_attention": [[146, "mlx-core-fast-scaled-dot-product-attention"]], "mlx.core.fft.fft": [[147, "mlx-core-fft-fft"]], "mlx.core.fft.fft2": [[148, "mlx-core-fft-fft2"]], "mlx.core.fft.fftn": [[149, "mlx-core-fft-fftn"]], "mlx.core.fft.ifft": [[150, "mlx-core-fft-ifft"]], "mlx.core.fft.ifft2": [[151, "mlx-core-fft-ifft2"]], "mlx.core.fft.ifftn": [[152, "mlx-core-fft-ifftn"]], "mlx.core.fft.irfft": [[153, "mlx-core-fft-irfft"]], "mlx.core.fft.irfft2": [[154, "mlx-core-fft-irfft2"]], "mlx.core.fft.irfftn": [[155, "mlx-core-fft-irfftn"]], "mlx.core.fft.rfft": [[156, "mlx-core-fft-rfft"]], "mlx.core.fft.rfft2": [[157, "mlx-core-fft-rfft2"]], "mlx.core.fft.rfftn": [[158, "mlx-core-fft-rfftn"]], "mlx.core.flatten": [[159, "mlx-core-flatten"]], "mlx.core.floor": [[160, "mlx-core-floor"]], "mlx.core.floor_divide": [[161, "mlx-core-floor-divide"]], "mlx.core.full": [[162, "mlx-core-full"]], "mlx.core.gather_mm": [[163, "mlx-core-gather-mm"]], "mlx.core.gather_qmm": [[164, "mlx-core-gather-qmm"]], "mlx.core.grad": [[165, "mlx-core-grad"]], "mlx.core.greater": [[166, "mlx-core-greater"]], "mlx.core.greater_equal": [[167, "mlx-core-greater-equal"]], "mlx.core.hadamard_transform": [[168, "mlx-core-hadamard-transform"]], "mlx.core.identity": [[169, "mlx-core-identity"]], "mlx.core.inner": [[170, "mlx-core-inner"]], "mlx.core.isclose": [[171, "mlx-core-isclose"]], "mlx.core.isfinite": [[172, "mlx-core-isfinite"]], "mlx.core.isinf": [[173, "mlx-core-isinf"]], "mlx.core.isnan": [[174, "mlx-core-isnan"]], "mlx.core.isneginf": [[175, "mlx-core-isneginf"]], "mlx.core.isposinf": [[176, "mlx-core-isposinf"]], "mlx.core.issubdtype": [[177, "mlx-core-issubdtype"]], "mlx.core.jvp": [[178, "mlx-core-jvp"]], "mlx.core.left_shift": [[179, "mlx-core-left-shift"]], "mlx.core.less": [[180, "mlx-core-less"]], "mlx.core.less_equal": [[181, "mlx-core-less-equal"]], "mlx.core.linalg.cholesky": [[182, "mlx-core-linalg-cholesky"]], "mlx.core.linalg.cholesky_inv": [[183, "mlx-core-linalg-cholesky-inv"]], "mlx.core.linalg.inv": [[184, "mlx-core-linalg-inv"]], "mlx.core.linalg.norm": [[185, "mlx-core-linalg-norm"]], "mlx.core.linalg.qr": [[186, "mlx-core-linalg-qr"]], "mlx.core.linalg.svd": [[187, "mlx-core-linalg-svd"]], "mlx.core.linalg.tri_inv": [[188, "mlx-core-linalg-tri-inv"]], "mlx.core.linspace": [[189, "mlx-core-linspace"]], "mlx.core.load": [[190, "mlx-core-load"]], "mlx.core.log": [[191, "mlx-core-log"]], "mlx.core.log10": [[192, "mlx-core-log10"]], "mlx.core.log1p": [[193, "mlx-core-log1p"]], "mlx.core.log2": [[194, "mlx-core-log2"]], "mlx.core.logaddexp": [[195, "mlx-core-logaddexp"]], "mlx.core.logical_and": [[196, "mlx-core-logical-and"]], "mlx.core.logical_not": [[197, "mlx-core-logical-not"]], "mlx.core.logical_or": [[198, "mlx-core-logical-or"]], "mlx.core.logsumexp": [[199, "mlx-core-logsumexp"]], "mlx.core.matmul": [[200, "mlx-core-matmul"]], "mlx.core.max": [[201, "mlx-core-max"]], "mlx.core.maximum": [[202, "mlx-core-maximum"]], "mlx.core.mean": [[203, "mlx-core-mean"]], "mlx.core.meshgrid": [[204, "mlx-core-meshgrid"]], "mlx.core.metal.clear_cache": [[205, "mlx-core-metal-clear-cache"]], "mlx.core.metal.device_info": [[206, "mlx-core-metal-device-info"]], "mlx.core.metal.get_active_memory": [[207, "mlx-core-metal-get-active-memory"]], "mlx.core.metal.get_cache_memory": [[208, "mlx-core-metal-get-cache-memory"]], "mlx.core.metal.get_peak_memory": [[209, "mlx-core-metal-get-peak-memory"]], "mlx.core.metal.is_available": [[210, "mlx-core-metal-is-available"]], "mlx.core.metal.reset_peak_memory": [[211, "mlx-core-metal-reset-peak-memory"]], "mlx.core.metal.set_cache_limit": [[212, "mlx-core-metal-set-cache-limit"]], "mlx.core.metal.set_memory_limit": [[213, "mlx-core-metal-set-memory-limit"]], "mlx.core.metal.start_capture": [[214, "mlx-core-metal-start-capture"]], "mlx.core.metal.stop_capture": [[215, "mlx-core-metal-stop-capture"]], "mlx.core.min": [[216, "mlx-core-min"]], "mlx.core.minimum": [[217, "mlx-core-minimum"]], "mlx.core.moveaxis": [[218, "mlx-core-moveaxis"]], "mlx.core.multiply": [[219, "mlx-core-multiply"]], "mlx.core.nan_to_num": [[220, "mlx-core-nan-to-num"]], "mlx.core.negative": [[221, "mlx-core-negative"]], "mlx.core.new_stream": [[222, "mlx-core-new-stream"]], "mlx.core.not_equal": [[223, "mlx-core-not-equal"]], "mlx.core.ones": [[224, "mlx-core-ones"]], "mlx.core.ones_like": [[225, "mlx-core-ones-like"]], "mlx.core.outer": [[226, "mlx-core-outer"]], "mlx.core.pad": [[227, "mlx-core-pad"]], "mlx.core.partition": [[228, "mlx-core-partition"]], "mlx.core.power": [[229, "mlx-core-power"]], "mlx.core.prod": [[230, "mlx-core-prod"]], "mlx.core.quantize": [[231, "mlx-core-quantize"]], "mlx.core.quantized_matmul": [[232, "mlx-core-quantized-matmul"]], "mlx.core.radians": [[233, "mlx-core-radians"]], "mlx.core.random.bernoulli": [[234, "mlx-core-random-bernoulli"]], "mlx.core.random.categorical": [[235, "mlx-core-random-categorical"]], "mlx.core.random.gumbel": [[236, "mlx-core-random-gumbel"]], "mlx.core.random.key": [[237, "mlx-core-random-key"]], "mlx.core.random.laplace": [[238, "mlx-core-random-laplace"]], "mlx.core.random.multivariate_normal": [[239, "mlx-core-random-multivariate-normal"]], "mlx.core.random.normal": [[240, "mlx-core-random-normal"]], "mlx.core.random.randint": [[241, "mlx-core-random-randint"]], "mlx.core.random.seed": [[242, "mlx-core-random-seed"]], "mlx.core.random.split": [[243, "mlx-core-random-split"]], "mlx.core.random.truncated_normal": [[244, "mlx-core-random-truncated-normal"]], "mlx.core.random.uniform": [[245, "mlx-core-random-uniform"]], "mlx.core.reciprocal": [[246, "mlx-core-reciprocal"]], "mlx.core.remainder": [[247, "mlx-core-remainder"]], "mlx.core.repeat": [[248, "mlx-core-repeat"]], "mlx.core.reshape": [[249, "mlx-core-reshape"]], "mlx.core.right_shift": [[250, "mlx-core-right-shift"]], "mlx.core.round": [[251, "mlx-core-round"]], "mlx.core.rsqrt": [[252, "mlx-core-rsqrt"]], "mlx.core.save": [[253, "mlx-core-save"]], "mlx.core.save_gguf": [[254, "mlx-core-save-gguf"]], "mlx.core.save_safetensors": [[255, "mlx-core-save-safetensors"]], "mlx.core.savez": [[256, "mlx-core-savez"]], "mlx.core.savez_compressed": [[257, "mlx-core-savez-compressed"]], "mlx.core.set_default_device": [[258, "mlx-core-set-default-device"]], "mlx.core.set_default_stream": [[259, "mlx-core-set-default-stream"]], "mlx.core.sigmoid": [[260, "mlx-core-sigmoid"]], "mlx.core.sign": [[261, "mlx-core-sign"]], "mlx.core.sin": [[262, "mlx-core-sin"]], "mlx.core.sinh": [[263, "mlx-core-sinh"]], "mlx.core.softmax": [[264, "mlx-core-softmax"]], "mlx.core.sort": [[265, "mlx-core-sort"]], "mlx.core.split": [[266, "mlx-core-split"]], "mlx.core.sqrt": [[267, "mlx-core-sqrt"]], "mlx.core.square": [[268, "mlx-core-square"]], "mlx.core.squeeze": [[269, "mlx-core-squeeze"]], "mlx.core.stack": [[270, "mlx-core-stack"]], "mlx.core.std": [[271, "mlx-core-std"]], "mlx.core.stop_gradient": [[272, "mlx-core-stop-gradient"]], "mlx.core.stream": [[273, "mlx-core-stream"]], "mlx.core.subtract": [[274, "mlx-core-subtract"]], "mlx.core.sum": [[275, "mlx-core-sum"]], "mlx.core.swapaxes": [[276, "mlx-core-swapaxes"]], "mlx.core.synchronize": [[277, "mlx-core-synchronize"]], "mlx.core.take": [[278, "mlx-core-take"]], "mlx.core.take_along_axis": [[279, "mlx-core-take-along-axis"]], "mlx.core.tan": [[280, "mlx-core-tan"]], "mlx.core.tanh": [[281, "mlx-core-tanh"]], "mlx.core.tensordot": [[282, "mlx-core-tensordot"]], "mlx.core.tile": [[283, "mlx-core-tile"]], "mlx.core.topk": [[284, "mlx-core-topk"]], "mlx.core.trace": [[285, "mlx-core-trace"]], "mlx.core.transpose": [[286, "mlx-core-transpose"]], "mlx.core.tri": [[287, "mlx-core-tri"]], "mlx.core.tril": [[288, "mlx-core-tril"]], "mlx.core.triu": [[289, "mlx-core-triu"]], "mlx.core.value_and_grad": [[290, "mlx-core-value-and-grad"]], "mlx.core.var": [[291, "mlx-core-var"]], "mlx.core.view": [[292, "mlx-core-view"]], "mlx.core.vjp": [[293, "mlx-core-vjp"]], "mlx.core.vmap": [[294, "mlx-core-vmap"]], "mlx.core.where": [[295, "mlx-core-where"]], "mlx.core.zeros": [[296, "mlx-core-zeros"]], "mlx.core.zeros_like": [[297, "mlx-core-zeros-like"]], "mlx.nn.quantize": [[298, "mlx-nn-quantize"]], "mlx.nn.value_and_grad": [[299, "mlx-nn-value-and-grad"]], "mlx.optimizers.clip_grad_norm": [[300, "mlx-optimizers-clip-grad-norm"]], "mlx.utils.tree_flatten": [[301, "mlx-utils-tree-flatten"]], "mlx.utils.tree_map": [[302, "mlx-utils-tree-map"]], "mlx.utils.tree_map_with_path": [[303, "mlx-utils-tree-map-with-path"]], "mlx.utils.tree_reduce": [[304, "mlx-utils-tree-reduce"]], "mlx.utils.tree_unflatten": [[305, "mlx-utils-tree-unflatten"]], "mlx.core.Stream": [[306, "mlx-core-stream"]], "Array": [[307, "array"]], "Data Types": [[308, "data-types"]], "Supported Data Types": [[308, "id2"]], "Devices and Streams": [[309, "devices-and-streams"]], "Distributed Communication": [[310, "distributed-communication"], [465, "distributed-communication"]], "Fast": [[311, "fast"]], "FFT": [[312, "fft"]], "Linear Algebra": [[313, "linear-algebra"]], "Metal": [[314, "metal"]], "Neural Networks": [[315, "neural-networks"]], "Quick Start with Neural Networks": [[315, "quick-start-with-neural-networks"]], "The Module Class": [[315, "the-module-class"]], "Parameters": [[315, "parameters"]], "Updating the Parameters": [[315, "updating-the-parameters"]], "Inspecting Modules": [[315, "inspecting-modules"]], "Value and Grad": [[315, "value-and-grad"]], "mlx.nn.ALiBi": [[316, "mlx-nn-alibi"]], "mlx.nn.AvgPool1d": [[317, "mlx-nn-avgpool1d"]], "mlx.nn.AvgPool2d": [[318, "mlx-nn-avgpool2d"]], "mlx.nn.BatchNorm": [[319, "mlx-nn-batchnorm"]], "mlx.nn.Conv1d": [[320, "mlx-nn-conv1d"]], "mlx.nn.Conv2d": [[321, "mlx-nn-conv2d"]], "mlx.nn.Conv3d": [[322, "mlx-nn-conv3d"]], "mlx.nn.ConvTranspose1d": [[323, "mlx-nn-convtranspose1d"]], "mlx.nn.ConvTranspose2d": [[324, "mlx-nn-convtranspose2d"]], "mlx.nn.ConvTranspose3d": [[325, "mlx-nn-convtranspose3d"]], "mlx.nn.Dropout": [[326, "mlx-nn-dropout"]], "mlx.nn.Dropout2d": [[327, "mlx-nn-dropout2d"]], "mlx.nn.Dropout3d": [[328, "mlx-nn-dropout3d"]], "mlx.nn.Embedding": [[329, "mlx-nn-embedding"]], "mlx.nn.GELU": [[330, "mlx-nn-gelu"]], "mlx.nn.GLU": [[331, "mlx-nn-glu"]], "mlx.nn.GRU": [[332, "mlx-nn-gru"]], "mlx.nn.GroupNorm": [[333, "mlx-nn-groupnorm"]], "mlx.nn.HardShrink": [[334, "mlx-nn-hardshrink"]], "mlx.nn.HardTanh": [[335, "mlx-nn-hardtanh"]], "mlx.nn.Hardswish": [[336, "mlx-nn-hardswish"]], "mlx.nn.InstanceNorm": [[337, "mlx-nn-instancenorm"]], "mlx.nn.LSTM": [[338, "mlx-nn-lstm"]], "mlx.nn.LayerNorm": [[339, "mlx-nn-layernorm"]], "mlx.nn.LeakyReLU": [[340, "mlx-nn-leakyrelu"]], "mlx.nn.Linear": [[341, "mlx-nn-linear"]], "mlx.nn.MaxPool1d": [[342, "mlx-nn-maxpool1d"]], "mlx.nn.MaxPool2d": [[343, "mlx-nn-maxpool2d"]], "mlx.nn.Mish": [[344, "mlx-nn-mish"]], "mlx.nn.Module.apply": [[345, "mlx-nn-module-apply"]], "mlx.nn.Module.apply_to_modules": [[346, "mlx-nn-module-apply-to-modules"]], "mlx.nn.Module.children": [[347, "mlx-nn-module-children"]], "mlx.nn.Module.eval": [[348, "mlx-nn-module-eval"]], "mlx.nn.Module.filter_and_map": [[349, "mlx-nn-module-filter-and-map"]], "mlx.nn.Module.freeze": [[350, "mlx-nn-module-freeze"]], "mlx.nn.Module.leaf_modules": [[351, "mlx-nn-module-leaf-modules"]], "mlx.nn.Module.load_weights": [[352, "mlx-nn-module-load-weights"]], "mlx.nn.Module.modules": [[353, "mlx-nn-module-modules"]], "mlx.nn.Module.named_modules": [[354, "mlx-nn-module-named-modules"]], "mlx.nn.Module.parameters": [[355, "mlx-nn-module-parameters"]], "mlx.nn.Module.save_weights": [[356, "mlx-nn-module-save-weights"]], "mlx.nn.Module.set_dtype": [[357, "mlx-nn-module-set-dtype"]], "mlx.nn.Module.state": [[358, "mlx-nn-module-state"]], "mlx.nn.Module.train": [[359, "mlx-nn-module-train"]], "mlx.nn.Module.trainable_parameters": [[360, "mlx-nn-module-trainable-parameters"]], "mlx.nn.Module.training": [[361, "mlx-nn-module-training"]], "mlx.nn.Module.unfreeze": [[362, "mlx-nn-module-unfreeze"]], "mlx.nn.Module.update": [[363, "mlx-nn-module-update"]], "mlx.nn.Module.update_modules": [[364, "mlx-nn-module-update-modules"]], "mlx.nn.MultiHeadAttention": [[365, "mlx-nn-multiheadattention"]], "mlx.nn.PReLU": [[366, "mlx-nn-prelu"]], "mlx.nn.QuantizedEmbedding": [[367, "mlx-nn-quantizedembedding"]], "mlx.nn.QuantizedLinear": [[368, "mlx-nn-quantizedlinear"]], "mlx.nn.RMSNorm": [[369, "mlx-nn-rmsnorm"]], "mlx.nn.RNN": [[370, "mlx-nn-rnn"]], "mlx.nn.ReLU": [[371, "mlx-nn-relu"]], "mlx.nn.ReLU6": [[372, "mlx-nn-relu6"]], "mlx.nn.RoPE": [[373, "mlx-nn-rope"]], "mlx.nn.SELU": [[374, "mlx-nn-selu"]], "mlx.nn.Sequential": [[375, "mlx-nn-sequential"]], "mlx.nn.SiLU": [[376, "mlx-nn-silu"]], "mlx.nn.SinusoidalPositionalEncoding": [[377, "mlx-nn-sinusoidalpositionalencoding"]], "mlx.nn.Softmax": [[378, "mlx-nn-softmax"]], "mlx.nn.Softmin": [[379, "mlx-nn-softmin"]], "mlx.nn.Softplus": [[380, "mlx-nn-softplus"]], "mlx.nn.Softshrink": [[381, "mlx-nn-softshrink"]], "mlx.nn.Softsign": [[382, "mlx-nn-softsign"]], "mlx.nn.Step": [[383, "mlx-nn-step"]], "mlx.nn.Tanh": [[384, "mlx-nn-tanh"]], "mlx.nn.Transformer": [[385, "mlx-nn-transformer"]], "mlx.nn.Upsample": [[386, "mlx-nn-upsample"]], "mlx.nn.init.constant": [[387, "mlx-nn-init-constant"]], "mlx.nn.init.glorot_normal": [[388, "mlx-nn-init-glorot-normal"]], "mlx.nn.init.glorot_uniform": [[389, "mlx-nn-init-glorot-uniform"]], "mlx.nn.init.he_normal": [[390, "mlx-nn-init-he-normal"]], "mlx.nn.init.he_uniform": [[391, "mlx-nn-init-he-uniform"]], "mlx.nn.init.identity": [[392, "mlx-nn-init-identity"]], "mlx.nn.init.normal": [[393, "mlx-nn-init-normal"]], "mlx.nn.init.uniform": [[394, "mlx-nn-init-uniform"]], "mlx.nn.elu": [[395, "mlx-nn-elu"]], "mlx.nn.gelu": [[396, "mlx-nn-gelu"]], "mlx.nn.gelu_approx": [[397, "mlx-nn-gelu-approx"]], "mlx.nn.gelu_fast_approx": [[398, "mlx-nn-gelu-fast-approx"]], "mlx.nn.glu": [[399, "mlx-nn-glu"]], "mlx.nn.hard_shrink": [[400, "mlx-nn-hard-shrink"]], "mlx.nn.hard_tanh": [[401, "mlx-nn-hard-tanh"]], "mlx.nn.hardswish": [[402, "mlx-nn-hardswish"]], "mlx.nn.leaky_relu": [[403, "mlx-nn-leaky-relu"]], "mlx.nn.log_sigmoid": [[404, "mlx-nn-log-sigmoid"]], "mlx.nn.log_softmax": [[405, "mlx-nn-log-softmax"]], "mlx.nn.losses.binary_cross_entropy": [[406, "mlx-nn-losses-binary-cross-entropy"]], "mlx.nn.losses.cosine_similarity_loss": [[407, "mlx-nn-losses-cosine-similarity-loss"]], "mlx.nn.losses.cross_entropy": [[408, "mlx-nn-losses-cross-entropy"]], "mlx.nn.losses.gaussian_nll_loss": [[409, "mlx-nn-losses-gaussian-nll-loss"]], "mlx.nn.losses.hinge_loss": [[410, "mlx-nn-losses-hinge-loss"]], "mlx.nn.losses.huber_loss": [[411, "mlx-nn-losses-huber-loss"]], "mlx.nn.losses.kl_div_loss": [[412, "mlx-nn-losses-kl-div-loss"]], "mlx.nn.losses.l1_loss": [[413, "mlx-nn-losses-l1-loss"]], "mlx.nn.losses.log_cosh_loss": [[414, "mlx-nn-losses-log-cosh-loss"]], "mlx.nn.losses.margin_ranking_loss": [[415, "mlx-nn-losses-margin-ranking-loss"]], "mlx.nn.losses.mse_loss": [[416, "mlx-nn-losses-mse-loss"]], "mlx.nn.losses.nll_loss": [[417, "mlx-nn-losses-nll-loss"]], "mlx.nn.losses.smooth_l1_loss": [[418, "mlx-nn-losses-smooth-l1-loss"]], "mlx.nn.losses.triplet_loss": [[419, "mlx-nn-losses-triplet-loss"]], "mlx.nn.mish": [[420, "mlx-nn-mish"]], "mlx.nn.prelu": [[421, "mlx-nn-prelu"]], "mlx.nn.relu": [[422, "mlx-nn-relu"]], "mlx.nn.relu6": [[423, "mlx-nn-relu6"]], "mlx.nn.selu": [[424, "mlx-nn-selu"]], "mlx.nn.sigmoid": [[425, "mlx-nn-sigmoid"]], "mlx.nn.silu": [[426, "mlx-nn-silu"]], "mlx.nn.softmax": [[427, "mlx-nn-softmax"]], "mlx.nn.softmin": [[428, "mlx-nn-softmin"]], "mlx.nn.softplus": [[429, "mlx-nn-softplus"]], "mlx.nn.softshrink": [[430, "mlx-nn-softshrink"]], "mlx.nn.step": [[431, "mlx-nn-step"]], "mlx.nn.tanh": [[432, "mlx-nn-tanh"]], "Functions": [[433, "functions"]], "Initializers": [[434, "initializers"]], "Layers": [[435, "layers"]], "Loss Functions": [[436, "loss-functions"]], "Module": [[437, "module"]], "Optimizers": [[439, "optimizers"]], "Saving and Loading": [[439, "saving-and-loading"]], "mlx.optimizers.AdaDelta": [[440, "mlx-optimizers-adadelta"]], "mlx.optimizers.Adafactor": [[441, "mlx-optimizers-adafactor"]], "mlx.optimizers.Adagrad": [[442, "mlx-optimizers-adagrad"]], "mlx.optimizers.Adam": [[443, "mlx-optimizers-adam"]], "mlx.optimizers.AdamW": [[444, "mlx-optimizers-adamw"]], "mlx.optimizers.Adamax": [[445, "mlx-optimizers-adamax"]], "mlx.optimizers.Lion": [[446, "mlx-optimizers-lion"]], "mlx.optimizers.Optimizer.apply_gradients": [[447, "mlx-optimizers-optimizer-apply-gradients"]], "mlx.optimizers.Optimizer.init": [[448, "mlx-optimizers-optimizer-init"]], "mlx.optimizers.Optimizer.state": [[449, "mlx-optimizers-optimizer-state"]], "mlx.optimizers.Optimizer.update": [[450, "mlx-optimizers-optimizer-update"]], "mlx.optimizers.RMSprop": [[451, "mlx-optimizers-rmsprop"]], "mlx.optimizers.SGD": [[452, "mlx-optimizers-sgd"]], "mlx.optimizers.cosine_decay": [[453, "mlx-optimizers-cosine-decay"]], "mlx.optimizers.exponential_decay": [[454, "mlx-optimizers-exponential-decay"]], "mlx.optimizers.join_schedules": [[455, "mlx-optimizers-join-schedules"]], "mlx.optimizers.linear_schedule": [[456, "mlx-optimizers-linear-schedule"]], "mlx.optimizers.step_decay": [[457, "mlx-optimizers-step-decay"]], "Common Optimizers": [[458, "common-optimizers"]], "Optimizer": [[459, "optimizer"]], "Schedulers": [[460, "schedulers"]], "Random": [[461, "random"]], "Transforms": [[462, "transforms"]], "Tree Utils": [[463, "tree-utils"]], "Compilation": [[464, "compilation"]], "Basics of Compile": [[464, "basics-of-compile"]], "Example Speedup": [[464, "example-speedup"]], "Debugging": [[464, "debugging"]], "Pure Functions": [[464, "pure-functions"]], "Compiling Training Graphs": [[464, "compiling-training-graphs"]], "Transformations with Compile": [[464, "transformations-with-compile"]], "Getting Started": [[465, "getting-started"]], "Installing MPI": [[465, "installing-mpi"]], "Setting up Remote Hosts": [[465, "setting-up-remote-hosts"]], "Training Example": [[465, "training-example"]], "Tuning All Reduce": [[465, "tuning-all-reduce"]], "Function Transforms": [[466, "function-transforms"]], "Automatic Differentiation": [[466, "automatic-differentiation"]], "Automatic Vectorization": [[466, "automatic-vectorization"]], "Indexing Arrays": [[467, "indexing-arrays"]], "Differences from NumPy": [[467, "differences-from-numpy"]], "In Place Updates": [[467, "in-place-updates"]], "Lazy Evaluation": [[468, "lazy-evaluation"]], "Why Lazy Evaluation": [[468, "why-lazy-evaluation"]], "Transforming Compute Graphs": [[468, "transforming-compute-graphs"]], "Only Compute What You Use": [[468, "only-compute-what-you-use"]], "When to Evaluate": [[468, "when-to-evaluate"]], "Conversion to NumPy and Other Frameworks": [[469, "conversion-to-numpy-and-other-frameworks"]], "PyTorch": [[469, "pytorch"]], "JAX": [[469, "jax"]], "TensorFlow": [[469, "tensorflow"]], "Quick Start Guide": [[470, "quick-start-guide"]], "Basics": [[470, "basics"]], "Function and Graph Transformations": [[470, "function-and-graph-transformations"]], "Saving and Loading Arrays": [[471, "saving-and-loading-arrays"]], "Serialization Formats": [[471, "id1"]], "Unified Memory": [[472, "unified-memory"]], "A Simple Example": [[472, "a-simple-example"]], "Using Streams": [[473, "using-streams"]], "Specifying the Stream": [[473, "specifying-the-stream"]]}, "indexentries": {"abs (c++ function)": [[0, "_CPPv43absRK5array14StreamOrDevice"]], "add (c++ function)": [[0, "_CPPv43addRK5arrayRK5array14StreamOrDevice"]], "addmm (c++ function)": [[0, "_CPPv45addmm5array5array5arrayRKfRKf14StreamOrDevice"]], "all (c++ function)": [[0, "_CPPv43allRK5array14StreamOrDevice"], [0, "_CPPv43allRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv43allRK5arrayb14StreamOrDevice"], [0, "_CPPv43allRK5arrayib14StreamOrDevice"]], "allclose (c++ function)": [[0, "_CPPv48allcloseRK5arrayRK5arrayddb14StreamOrDevice"]], "any (c++ function)": [[0, "_CPPv43anyRK5array14StreamOrDevice"], [0, "_CPPv43anyRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv43anyRK5arrayb14StreamOrDevice"], [0, "_CPPv43anyRK5arrayib14StreamOrDevice"]], "arange (c++ function)": [[0, "_CPPv46aranged14StreamOrDevice"], [0, "_CPPv46aranged5Dtype14StreamOrDevice"], [0, "_CPPv46arangedd14StreamOrDevice"], [0, "_CPPv46arangedd5Dtype14StreamOrDevice"], [0, "_CPPv46arangeddd14StreamOrDevice"], [0, "_CPPv46arangeddd5Dtype14StreamOrDevice"], [0, "_CPPv46arangei14StreamOrDevice"], [0, "_CPPv46arangeii14StreamOrDevice"], [0, "_CPPv46arangeiii14StreamOrDevice"]], "arccos (c++ function)": [[0, "_CPPv46arccosRK5array14StreamOrDevice"]], "arccosh (c++ function)": [[0, "_CPPv47arccoshRK5array14StreamOrDevice"]], "arcsin (c++ function)": [[0, "_CPPv46arcsinRK5array14StreamOrDevice"]], "arcsinh (c++ function)": [[0, "_CPPv47arcsinhRK5array14StreamOrDevice"]], "arctan (c++ function)": [[0, "_CPPv46arctanRK5array14StreamOrDevice"]], "arctan2 (c++ function)": [[0, "_CPPv47arctan2RK5arrayRK5array14StreamOrDevice"]], "arctanh (c++ function)": [[0, "_CPPv47arctanhRK5array14StreamOrDevice"]], "argmax (c++ function)": [[0, "_CPPv46argmaxRK5array14StreamOrDevice"], [0, "_CPPv46argmaxRK5arrayb14StreamOrDevice"], [0, "_CPPv46argmaxRK5arrayib14StreamOrDevice"]], "argmin (c++ function)": [[0, "_CPPv46argminRK5array14StreamOrDevice"], [0, "_CPPv46argminRK5arrayb14StreamOrDevice"], [0, "_CPPv46argminRK5arrayib14StreamOrDevice"]], "argpartition (c++ function)": [[0, "_CPPv412argpartitionRK5arrayi14StreamOrDevice"], [0, "_CPPv412argpartitionRK5arrayii14StreamOrDevice"]], "argsort (c++ function)": [[0, "_CPPv47argsortRK5array14StreamOrDevice"], [0, "_CPPv47argsortRK5arrayi14StreamOrDevice"]], "array_equal (c++ function)": [[0, "_CPPv411array_equalRK5arrayRK5array14StreamOrDevice"], [0, "_CPPv411array_equalRK5arrayRK5arrayb14StreamOrDevice"]], "as_strided (c++ function)": [[0, "_CPPv410as_strided5arrayNSt6vectorIiEENSt6vectorI6size_tEE6size_t14StreamOrDevice"]], "astype (c++ function)": [[0, "_CPPv46astype5array5Dtype14StreamOrDevice"]], "atleast_1d (c++ function)": [[0, "_CPPv410atleast_1dRK5array14StreamOrDevice"], [0, "_CPPv410atleast_1dRKNSt6vectorI5arrayEE14StreamOrDevice"]], "atleast_2d (c++ function)": [[0, "_CPPv410atleast_2dRK5array14StreamOrDevice"], [0, "_CPPv410atleast_2dRKNSt6vectorI5arrayEE14StreamOrDevice"]], "atleast_3d (c++ function)": [[0, "_CPPv410atleast_3dRK5array14StreamOrDevice"], [0, "_CPPv410atleast_3dRKNSt6vectorI5arrayEE14StreamOrDevice"]], "bitwise_and (c++ function)": [[0, "_CPPv411bitwise_andRK5arrayRK5array14StreamOrDevice"]], "bitwise_or (c++ function)": [[0, "_CPPv410bitwise_orRK5arrayRK5array14StreamOrDevice"]], "bitwise_xor (c++ function)": [[0, "_CPPv411bitwise_xorRK5arrayRK5array14StreamOrDevice"]], "block_masked_mm (c++ function)": [[0, "_CPPv415block_masked_mm5array5arrayiNSt8optionalI5arrayEENSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice"]], "broadcast_arrays (c++ function)": [[0, "_CPPv416broadcast_arraysRKNSt6vectorI5arrayEE14StreamOrDevice"]], "broadcast_to (c++ function)": [[0, "_CPPv412broadcast_toRK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "ceil (c++ function)": [[0, "_CPPv44ceilRK5array14StreamOrDevice"]], "clip (c++ function)": [[0, "_CPPv44clipRK5arrayRKNSt8optionalI5arrayEERKNSt8optionalI5arrayEE14StreamOrDevice"]], "concatenate (c++ function)": [[0, "_CPPv411concatenateRKNSt6vectorI5arrayEE14StreamOrDevice"], [0, "_CPPv411concatenateRKNSt6vectorI5arrayEEi14StreamOrDevice"]], "conjugate (c++ function)": [[0, "_CPPv49conjugateRK5array14StreamOrDevice"]], "conv1d (c++ function)": [[0, "_CPPv46conv1dRK5arrayRK5arrayiiii14StreamOrDevice"]], "conv2d (c++ function)": [[0, "_CPPv46conv2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice"]], "conv3d (c++ function)": [[0, "_CPPv46conv3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice"]], "conv_general (c++ function)": [[0, "_CPPv412conv_general5array5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice"], [0, "_CPPv412conv_generalRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEENSt6vectorIiEEib14StreamOrDevice"]], "conv_transpose1d (c++ function)": [[0, "_CPPv416conv_transpose1dRK5arrayRK5arrayiiii14StreamOrDevice"]], "conv_transpose2d (c++ function)": [[0, "_CPPv416conv_transpose2dRK5arrayRK5arrayRKNSt4pairIiiEERKNSt4pairIiiEERKNSt4pairIiiEEi14StreamOrDevice"]], "conv_transpose3d (c++ function)": [[0, "_CPPv416conv_transpose3dRK5arrayRK5arrayRKNSt5tupleIiiiEERKNSt5tupleIiiiEERKNSt5tupleIiiiEEi14StreamOrDevice"]], "copy (c++ function)": [[0, "_CPPv44copy5array14StreamOrDevice"]], "cos (c++ function)": [[0, "_CPPv43cosRK5array14StreamOrDevice"]], "cosh (c++ function)": [[0, "_CPPv44coshRK5array14StreamOrDevice"]], "cummax (c++ function)": [[0, "_CPPv46cummaxRK5arrayibb14StreamOrDevice"]], "cummin (c++ function)": [[0, "_CPPv46cumminRK5arrayibb14StreamOrDevice"]], "cumprod (c++ function)": [[0, "_CPPv47cumprodRK5arrayibb14StreamOrDevice"]], "cumsum (c++ function)": [[0, "_CPPv46cumsumRK5arrayibb14StreamOrDevice"]], "degrees (c++ function)": [[0, "_CPPv47degreesRK5array14StreamOrDevice"]], "depends (c++ function)": [[0, "_CPPv47dependsRKNSt6vectorI5arrayEERKNSt6vectorI5arrayEE"]], "dequantize (c++ function)": [[0, "_CPPv410dequantizeRK5arrayRK5arrayRK5arrayii14StreamOrDevice"]], "diag (c++ function)": [[0, "_CPPv44diagRK5arrayi14StreamOrDevice"]], "diagonal (c++ function)": [[0, "_CPPv48diagonalRK5arrayiii14StreamOrDevice"]], "divide (c++ function)": [[0, "_CPPv46divideRK5arrayRK5array14StreamOrDevice"]], "divmod (c++ function)": [[0, "_CPPv46divmodRK5arrayRK5array14StreamOrDevice"]], "equal (c++ function)": [[0, "_CPPv45equalRK5arrayRK5array14StreamOrDevice"]], "erf (c++ function)": [[0, "_CPPv43erfRK5array14StreamOrDevice"]], "erfinv (c++ function)": [[0, "_CPPv46erfinvRK5array14StreamOrDevice"]], "exp (c++ function)": [[0, "_CPPv43expRK5array14StreamOrDevice"]], "expand_dims (c++ function)": [[0, "_CPPv411expand_dimsRK5arrayRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv411expand_dimsRK5arrayi14StreamOrDevice"]], "expm1 (c++ function)": [[0, "_CPPv45expm1RK5array14StreamOrDevice"]], "eye (c++ function)": [[0, "_CPPv43eyei14StreamOrDevice"], [0, "_CPPv43eyei5Dtype14StreamOrDevice"], [0, "_CPPv43eyeii14StreamOrDevice"], [0, "_CPPv43eyeiii14StreamOrDevice"], [0, "_CPPv43eyeiii5Dtype14StreamOrDevice"]], "flatten (c++ function)": [[0, "_CPPv47flattenRK5array14StreamOrDevice"], [0, "_CPPv47flattenRK5arrayii14StreamOrDevice"]], "floor (c++ function)": [[0, "_CPPv45floorRK5array14StreamOrDevice"]], "floor_divide (c++ function)": [[0, "_CPPv412floor_divideRK5arrayRK5array14StreamOrDevice"]], "full (c++ function)": [[0, "_CPPv44fullNSt6vectorIiEE5array14StreamOrDevice"], [0, "_CPPv44fullNSt6vectorIiEE5array5Dtype14StreamOrDevice"], [0, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T14StreamOrDevice"], [0, "_CPPv4I0E4full5arrayNSt6vectorIiEE1T5Dtype14StreamOrDevice"]], "gather (c++ function)": [[0, "_CPPv46gatherRK5arrayRK5arrayiRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv46gatherRK5arrayRKNSt6vectorI5arrayEERKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice"]], "gather_mm (c++ function)": [[0, "_CPPv49gather_mm5array5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEE14StreamOrDevice"]], "gather_qmm (c++ function)": [[0, "_CPPv410gather_qmmRK5arrayRK5arrayRK5arrayRK5arrayNSt8optionalI5arrayEENSt8optionalI5arrayEEbii14StreamOrDevice"]], "greater (c++ function)": [[0, "_CPPv47greaterRK5arrayRK5array14StreamOrDevice"]], "greater_equal (c++ function)": [[0, "_CPPv413greater_equalRK5arrayRK5array14StreamOrDevice"]], "hadamard_transform (c++ function)": [[0, "_CPPv418hadamard_transformRK5arrayNSt8optionalIfEE14StreamOrDevice"]], "identity (c++ function)": [[0, "_CPPv48identityi14StreamOrDevice"], [0, "_CPPv48identityi5Dtype14StreamOrDevice"]], "inner (c++ function)": [[0, "_CPPv45innerRK5arrayRK5array14StreamOrDevice"]], "isclose (c++ function)": [[0, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice"]], "isfinite (c++ function)": [[0, "_CPPv48isfiniteRK5array14StreamOrDevice"]], "isinf (c++ function)": [[0, "_CPPv45isinfRK5array14StreamOrDevice"]], "isnan (c++ function)": [[0, "_CPPv45isnanRK5array14StreamOrDevice"]], "isneginf (c++ function)": [[0, "_CPPv48isneginfRK5array14StreamOrDevice"]], "isposinf (c++ function)": [[0, "_CPPv48isposinfRK5array14StreamOrDevice"]], "left_shift (c++ function)": [[0, "_CPPv410left_shiftRK5arrayRK5array14StreamOrDevice"]], "less (c++ function)": [[0, "_CPPv44lessRK5arrayRK5array14StreamOrDevice"]], "less_equal (c++ function)": [[0, "_CPPv410less_equalRK5arrayRK5array14StreamOrDevice"]], "linspace (c++ function)": [[0, "_CPPv48linspaceddi5Dtype14StreamOrDevice"]], "log (c++ function)": [[0, "_CPPv43logRK5array14StreamOrDevice"]], "log10 (c++ function)": [[0, "_CPPv45log10RK5array14StreamOrDevice"]], "log1p (c++ function)": [[0, "_CPPv45log1pRK5array14StreamOrDevice"]], "log2 (c++ function)": [[0, "_CPPv44log2RK5array14StreamOrDevice"]], "logaddexp (c++ function)": [[0, "_CPPv49logaddexpRK5arrayRK5array14StreamOrDevice"]], "logical_and (c++ function)": [[0, "_CPPv411logical_andRK5arrayRK5array14StreamOrDevice"]], "logical_not (c++ function)": [[0, "_CPPv411logical_notRK5array14StreamOrDevice"]], "logical_or (c++ function)": [[0, "_CPPv410logical_orRK5arrayRK5array14StreamOrDevice"]], "logsumexp (c++ function)": [[0, "_CPPv49logsumexpRK5array14StreamOrDevice"], [0, "_CPPv49logsumexpRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv49logsumexpRK5arrayb14StreamOrDevice"], [0, "_CPPv49logsumexpRK5arrayib14StreamOrDevice"]], "matmul (c++ function)": [[0, "_CPPv46matmulRK5arrayRK5array14StreamOrDevice"]], "max (c++ function)": [[0, "_CPPv43maxRK5array14StreamOrDevice"], [0, "_CPPv43maxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv43maxRK5arrayb14StreamOrDevice"], [0, "_CPPv43maxRK5arrayib14StreamOrDevice"]], "maximum (c++ function)": [[0, "_CPPv47maximumRK5arrayRK5array14StreamOrDevice"]], "mean (c++ function)": [[0, "_CPPv44meanRK5array14StreamOrDevice"], [0, "_CPPv44meanRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv44meanRK5arrayb14StreamOrDevice"], [0, "_CPPv44meanRK5arrayib14StreamOrDevice"]], "meshgrid (c++ function)": [[0, "_CPPv48meshgridRKNSt6vectorI5arrayEEbNSt6stringE14StreamOrDevice"]], "min (c++ function)": [[0, "_CPPv43minRK5array14StreamOrDevice"], [0, "_CPPv43minRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv43minRK5arrayb14StreamOrDevice"], [0, "_CPPv43minRK5arrayib14StreamOrDevice"]], "minimum (c++ function)": [[0, "_CPPv47minimumRK5arrayRK5array14StreamOrDevice"]], "moveaxis (c++ function)": [[0, "_CPPv48moveaxisRK5arrayii14StreamOrDevice"]], "multiply (c++ function)": [[0, "_CPPv48multiplyRK5arrayRK5array14StreamOrDevice"]], "nan_to_num (c++ function)": [[0, "_CPPv410nan_to_numRK5arrayfKNSt8optionalIfEEKNSt8optionalIfEE14StreamOrDevice"]], "negative (c++ function)": [[0, "_CPPv48negativeRK5array14StreamOrDevice"]], "not_equal (c++ function)": [[0, "_CPPv49not_equalRK5arrayRK5array14StreamOrDevice"]], "number_of_elements (c++ function)": [[0, "_CPPv418number_of_elementsRK5arrayNSt6vectorIiEEb5Dtype14StreamOrDevice"]], "ones (c++ function)": [[0, "_CPPv44onesRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv44onesRKNSt6vectorIiEE5Dtype14StreamOrDevice"]], "ones_like (c++ function)": [[0, "_CPPv49ones_likeRK5array14StreamOrDevice"]], "operator!= (c++ function)": [[0, "_CPPv4I0Ene5array1TRK5array"], [0, "_CPPv4I0Ene5arrayRK5array1T"], [0, "_CPPv4neRK5arrayRK5array"]], "operator% (c++ function)": [[0, "_CPPv4I0Erm5array1TRK5array"], [0, "_CPPv4I0Erm5arrayRK5array1T"], [0, "_CPPv4rmRK5arrayRK5array"]], "operator& (c++ function)": [[0, "_CPPv4anRK5arrayRK5array"]], "operator&& (c++ function)": [[0, "_CPPv4aaRK5arrayRK5array"]], "operator* (c++ function)": [[0, "_CPPv4I0Eml5array1TRK5array"], [0, "_CPPv4I0Eml5arrayRK5array1T"], [0, "_CPPv4mlRK5arrayRK5array"]], "operator+ (c++ function)": [[0, "_CPPv4I0Epl5array1TRK5array"], [0, "_CPPv4I0Epl5arrayRK5array1T"], [0, "_CPPv4plRK5arrayRK5array"]], "operator- (c++ function)": [[0, "_CPPv4I0Emi5array1TRK5array"], [0, "_CPPv4I0Emi5arrayRK5array1T"], [0, "_CPPv4miRK5array"], [0, "_CPPv4miRK5arrayRK5array"]], "operator/ (c++ function)": [[0, "_CPPv4dvRK5arrayRK5array"], [0, "_CPPv4dvRK5arrayd"], [0, "_CPPv4dvdRK5array"]], "operator< (c++ function)": [[0, "_CPPv4I0Elt5array1TRK5array"], [0, "_CPPv4I0Elt5arrayRK5array1T"], [0, "_CPPv4ltRK5arrayRK5array"]], "operator<< (c++ function)": [[0, "_CPPv4lsRK5arrayRK5array"]], "operator<= (c++ function)": [[0, "_CPPv4I0Ele5array1TRK5array"], [0, "_CPPv4I0Ele5arrayRK5array1T"], [0, "_CPPv4leRK5arrayRK5array"]], "operator== (c++ function)": [[0, "_CPPv4I0Eeq5array1TRK5array"], [0, "_CPPv4I0Eeq5arrayRK5array1T"], [0, "_CPPv4eqRK5arrayRK5array"]], "operator> (c++ function)": [[0, "_CPPv4I0Egt5array1TRK5array"], [0, "_CPPv4I0Egt5arrayRK5array1T"], [0, "_CPPv4gtRK5arrayRK5array"]], "operator>= (c++ function)": [[0, "_CPPv4I0Ege5array1TRK5array"], [0, "_CPPv4I0Ege5arrayRK5array1T"], [0, "_CPPv4geRK5arrayRK5array"]], "operator>> (c++ function)": [[0, "_CPPv4rsRK5arrayRK5array"]], "operator^ (c++ function)": [[0, "_CPPv4eoRK5arrayRK5array"]], "operator| (c++ function)": [[0, "_CPPv4orRK5arrayRK5array"]], "operator|| (c++ function)": [[0, "_CPPv4ooRK5arrayRK5array"]], "outer (c++ function)": [[0, "_CPPv45outerRK5arrayRK5array14StreamOrDevice"]], "pad (c++ function)": [[0, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5arrayKNSt6stringE14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5arrayKNSt6stringE14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5arrayKNSt6stringE14StreamOrDevice"], [0, "_CPPv43padRK5arrayiRK5arrayKNSt6stringE14StreamOrDevice"]], "partition (c++ function)": [[0, "_CPPv49partitionRK5arrayi14StreamOrDevice"], [0, "_CPPv49partitionRK5arrayii14StreamOrDevice"]], "power (c++ function)": [[0, "_CPPv45powerRK5arrayRK5array14StreamOrDevice"]], "prod (c++ function)": [[0, "_CPPv44prodRK5array14StreamOrDevice"], [0, "_CPPv44prodRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv44prodRK5arrayb14StreamOrDevice"], [0, "_CPPv44prodRK5arrayib14StreamOrDevice"]], "put_along_axis (c++ function)": [[0, "_CPPv414put_along_axisRK5arrayRK5arrayRK5arrayi14StreamOrDevice"]], "quantize (c++ function)": [[0, "_CPPv48quantizeRK5arrayii14StreamOrDevice"]], "quantized_matmul (c++ function)": [[0, "_CPPv416quantized_matmulRK5arrayRK5arrayRK5arrayRK5arraybii14StreamOrDevice"]], "radians (c++ function)": [[0, "_CPPv47radiansRK5array14StreamOrDevice"]], "reciprocal (c++ function)": [[0, "_CPPv410reciprocalRK5array14StreamOrDevice"]], "remainder (c++ function)": [[0, "_CPPv49remainderRK5arrayRK5array14StreamOrDevice"]], "repeat (c++ function)": [[0, "_CPPv46repeatRK5arrayi14StreamOrDevice"], [0, "_CPPv46repeatRK5arrayii14StreamOrDevice"]], "reshape (c++ function)": [[0, "_CPPv47reshapeRK5arrayNSt6vectorIiEE14StreamOrDevice"]], "right_shift (c++ function)": [[0, "_CPPv411right_shiftRK5arrayRK5array14StreamOrDevice"]], "round (c++ function)": [[0, "_CPPv45roundRK5array14StreamOrDevice"], [0, "_CPPv45roundRK5arrayi14StreamOrDevice"]], "rsqrt (c++ function)": [[0, "_CPPv45rsqrtRK5array14StreamOrDevice"]], "scatter (c++ function)": [[0, "_CPPv47scatterRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv47scatterRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_add (c++ function)": [[0, "_CPPv411scatter_addRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv411scatter_addRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_max (c++ function)": [[0, "_CPPv411scatter_maxRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv411scatter_maxRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_min (c++ function)": [[0, "_CPPv411scatter_minRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv411scatter_minRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "scatter_prod (c++ function)": [[0, "_CPPv412scatter_prodRK5arrayRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv412scatter_prodRK5arrayRKNSt6vectorI5arrayEERK5arrayRKNSt6vectorIiEE14StreamOrDevice"]], "sigmoid (c++ function)": [[0, "_CPPv47sigmoidRK5array14StreamOrDevice"]], "sign (c++ function)": [[0, "_CPPv44signRK5array14StreamOrDevice"]], "sin (c++ function)": [[0, "_CPPv43sinRK5array14StreamOrDevice"]], "sinh (c++ function)": [[0, "_CPPv44sinhRK5array14StreamOrDevice"]], "slice (c++ function)": [[0, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"]], "slice_update (c++ function)": [[0, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv412slice_updateRK5arrayRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice"]], "softmax (c++ function)": [[0, "_CPPv47softmaxRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv47softmaxRK5arrayb14StreamOrDevice"], [0, "_CPPv47softmaxRK5arrayib14StreamOrDevice"]], "sort (c++ function)": [[0, "_CPPv44sortRK5array14StreamOrDevice"], [0, "_CPPv44sortRK5arrayi14StreamOrDevice"]], "split (c++ function)": [[0, "_CPPv45splitRK5arrayRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45splitRK5arrayRKNSt6vectorIiEEi14StreamOrDevice"], [0, "_CPPv45splitRK5arrayi14StreamOrDevice"], [0, "_CPPv45splitRK5arrayii14StreamOrDevice"]], "sqrt (c++ function)": [[0, "_CPPv44sqrtRK5array14StreamOrDevice"]], "square (c++ function)": [[0, "_CPPv46squareRK5array14StreamOrDevice"]], "squeeze (c++ function)": [[0, "_CPPv47squeezeRK5array14StreamOrDevice"], [0, "_CPPv47squeezeRK5arrayRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv47squeezeRK5arrayi14StreamOrDevice"]], "stack (c++ function)": [[0, "_CPPv45stackRKNSt6vectorI5arrayEE14StreamOrDevice"], [0, "_CPPv45stackRKNSt6vectorI5arrayEEi14StreamOrDevice"]], "std (c++ function)": [[0, "_CPPv4StRK5array14StreamOrDevice"], [0, "_CPPv4StRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice"], [0, "_CPPv4StRK5arraybi14StreamOrDevice"], [0, "_CPPv4StRK5arrayibi14StreamOrDevice"]], "stop_gradient (c++ function)": [[0, "_CPPv413stop_gradientRK5array14StreamOrDevice"]], "subtract (c++ function)": [[0, "_CPPv48subtractRK5arrayRK5array14StreamOrDevice"]], "sum (c++ function)": [[0, "_CPPv43sumRK5array14StreamOrDevice"], [0, "_CPPv43sumRK5arrayRKNSt6vectorIiEEb14StreamOrDevice"], [0, "_CPPv43sumRK5arrayb14StreamOrDevice"], [0, "_CPPv43sumRK5arrayib14StreamOrDevice"]], "swapaxes (c++ function)": [[0, "_CPPv48swapaxesRK5arrayii14StreamOrDevice"]], "take (c++ function)": [[0, "_CPPv44takeRK5arrayRK5array14StreamOrDevice"], [0, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice"], [0, "_CPPv44takeRK5arrayi14StreamOrDevice"], [0, "_CPPv44takeRK5arrayii14StreamOrDevice"]], "take_along_axis (c++ function)": [[0, "_CPPv415take_along_axisRK5arrayRK5arrayi14StreamOrDevice"]], "tan (c++ function)": [[0, "_CPPv43tanRK5array14StreamOrDevice"]], "tanh (c++ function)": [[0, "_CPPv44tanhRK5array14StreamOrDevice"]], "tensordot (c++ function)": [[0, "_CPPv49tensordotRK5arrayRK5arrayKi14StreamOrDevice"], [0, "_CPPv49tensordotRK5arrayRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice"]], "tile (c++ function)": [[0, "_CPPv44tileRK5arrayNSt6vectorIiEE14StreamOrDevice"]], "topk (c++ function)": [[0, "_CPPv44topkRK5arrayi14StreamOrDevice"], [0, "_CPPv44topkRK5arrayii14StreamOrDevice"]], "trace (c++ function)": [[0, "_CPPv45traceRK5array14StreamOrDevice"], [0, "_CPPv45traceRK5arrayiii14StreamOrDevice"], [0, "_CPPv45traceRK5arrayiii5Dtype14StreamOrDevice"]], "transpose (c++ function)": [[0, "_CPPv49transposeRK5array14StreamOrDevice"], [0, "_CPPv49transposeRK5arrayNSt16initializer_listIiEE14StreamOrDevice"], [0, "_CPPv49transposeRK5arrayNSt6vectorIiEE14StreamOrDevice"]], "tri (c++ function)": [[0, "_CPPv43trii5Dtype14StreamOrDevice"], [0, "_CPPv43triiii5Dtype14StreamOrDevice"]], "tril (c++ function)": [[0, "_CPPv44tril5arrayi14StreamOrDevice"]], "triu (c++ function)": [[0, "_CPPv44triu5arrayi14StreamOrDevice"]], "var (c++ function)": [[0, "_CPPv43varRK5array14StreamOrDevice"], [0, "_CPPv43varRK5arrayRKNSt6vectorIiEEbi14StreamOrDevice"], [0, "_CPPv43varRK5arraybi14StreamOrDevice"], [0, "_CPPv43varRK5arrayibi14StreamOrDevice"]], "view (c++ function)": [[0, "_CPPv44viewRK5arrayRK5Dtype14StreamOrDevice"]], "where (c++ function)": [[0, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice"]], "zeros (c++ function)": [[0, "_CPPv45zerosRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice"]], "zeros_like (c++ function)": [[0, "_CPPv410zeros_likeRK5array14StreamOrDevice"]], "device (class in mlx.core)": [[9, "mlx.core.Device"]], "__init__() (device method)": [[9, "mlx.core.Device.__init__"]], "dtype (class in mlx.core)": [[10, "mlx.core.Dtype"]], "__init__() (dtype method)": [[10, "mlx.core.Dtype.__init__"]], "dtypecategory (class in mlx.core)": [[11, "mlx.core.DtypeCategory"]], "__init__() (dtypecategory method)": [[11, "mlx.core.DtypeCategory.__init__"]], "abs() (in module mlx.core)": [[12, "mlx.core.abs"]], "add() (in module mlx.core)": [[13, "mlx.core.add"]], "addmm() (in module mlx.core)": [[14, "mlx.core.addmm"]], "all() (in module mlx.core)": [[15, "mlx.core.all"]], "allclose() (in module mlx.core)": [[16, "mlx.core.allclose"]], "any() (in module mlx.core)": [[17, "mlx.core.any"]], "arange() (in module mlx.core)": [[18, "mlx.core.arange"]], "arccos() (in module mlx.core)": [[19, "mlx.core.arccos"]], "arccosh() (in module mlx.core)": [[20, "mlx.core.arccosh"]], "arcsin() (in module mlx.core)": [[21, "mlx.core.arcsin"]], "arcsinh() (in module mlx.core)": [[22, "mlx.core.arcsinh"]], "arctan() (in module mlx.core)": [[23, "mlx.core.arctan"]], "arctan2() (in module mlx.core)": [[24, "mlx.core.arctan2"]], "arctanh() (in module mlx.core)": [[25, "mlx.core.arctanh"]], "argmax() (in module mlx.core)": [[26, "mlx.core.argmax"]], "argmin() (in module mlx.core)": [[27, "mlx.core.argmin"]], "argpartition() (in module mlx.core)": [[28, "mlx.core.argpartition"]], "argsort() (in module mlx.core)": [[29, "mlx.core.argsort"]], "__init__() (array method)": [[30, "mlx.core.array.__init__"]], "array (class in mlx.core)": [[30, "mlx.core.array"]], "t (array property)": [[31, "mlx.core.array.T"]], "abs() (array method)": [[32, "mlx.core.array.abs"]], "all() (array method)": [[33, "mlx.core.array.all"]], "any() (array method)": [[34, "mlx.core.array.any"]], "argmax() (array method)": [[35, "mlx.core.array.argmax"]], "argmin() (array method)": [[36, "mlx.core.array.argmin"]], "astype() (array method)": [[37, "mlx.core.array.astype"]], "at (array property)": [[38, "mlx.core.array.at"]], "conj() (array method)": [[39, "mlx.core.array.conj"]], "cos() (array method)": [[40, "mlx.core.array.cos"]], "cummax() (array method)": [[41, "mlx.core.array.cummax"]], "cummin() (array method)": [[42, "mlx.core.array.cummin"]], "cumprod() (array method)": [[43, "mlx.core.array.cumprod"]], "cumsum() (array method)": [[44, "mlx.core.array.cumsum"]], "diag() (array method)": [[45, "mlx.core.array.diag"]], "diagonal() (array method)": [[46, "mlx.core.array.diagonal"]], "dtype (array property)": [[47, "mlx.core.array.dtype"]], "exp() (array method)": [[48, "mlx.core.array.exp"]], "flatten() (array method)": [[49, "mlx.core.array.flatten"]], "item() (array method)": [[50, "mlx.core.array.item"]], "itemsize (array property)": [[51, "mlx.core.array.itemsize"]], "log() (array method)": [[52, "mlx.core.array.log"]], "log10() (array method)": [[53, "mlx.core.array.log10"]], "log1p() (array method)": [[54, "mlx.core.array.log1p"]], "log2() (array method)": [[55, "mlx.core.array.log2"]], "logsumexp() (array method)": [[56, "mlx.core.array.logsumexp"]], "max() (array method)": [[57, "mlx.core.array.max"]], "mean() (array method)": [[58, "mlx.core.array.mean"]], "min() (array method)": [[59, "mlx.core.array.min"]], "moveaxis() (array method)": [[60, "mlx.core.array.moveaxis"]], "nbytes (array property)": [[61, "mlx.core.array.nbytes"]], "ndim (array property)": [[62, "mlx.core.array.ndim"]], "prod() (array method)": [[63, "mlx.core.array.prod"]], "reciprocal() (array method)": [[64, "mlx.core.array.reciprocal"]], "reshape() (array method)": [[65, "mlx.core.array.reshape"]], "round() (array method)": [[66, "mlx.core.array.round"]], "rsqrt() (array method)": [[67, "mlx.core.array.rsqrt"]], "shape (array property)": [[68, "mlx.core.array.shape"]], "sin() (array method)": [[69, "mlx.core.array.sin"]], "size (array property)": [[70, "mlx.core.array.size"]], "split() (array method)": [[71, "mlx.core.array.split"]], "sqrt() (array method)": [[72, "mlx.core.array.sqrt"]], "square() (array method)": [[73, "mlx.core.array.square"]], "squeeze() (array method)": [[74, "mlx.core.array.squeeze"]], "std() (array method)": [[75, "mlx.core.array.std"]], "sum() (array method)": [[76, "mlx.core.array.sum"]], "swapaxes() (array method)": [[77, "mlx.core.array.swapaxes"]], "tolist() (array method)": [[78, "mlx.core.array.tolist"]], "transpose() (array method)": [[79, "mlx.core.array.transpose"]], "var() (array method)": [[80, "mlx.core.array.var"]], "view() (array method)": [[81, "mlx.core.array.view"]], "array_equal() (in module mlx.core)": [[82, "mlx.core.array_equal"]], "as_strided() (in module mlx.core)": [[83, "mlx.core.as_strided"]], "atleast_1d() (in module mlx.core)": [[84, "mlx.core.atleast_1d"]], "atleast_2d() (in module mlx.core)": [[85, "mlx.core.atleast_2d"]], "atleast_3d() (in module mlx.core)": [[86, "mlx.core.atleast_3d"]], "bitwise_and() (in module mlx.core)": [[87, "mlx.core.bitwise_and"]], "bitwise_or() (in module mlx.core)": [[88, "mlx.core.bitwise_or"]], "bitwise_xor() (in module mlx.core)": [[89, "mlx.core.bitwise_xor"]], "block_masked_mm() (in module mlx.core)": [[90, "mlx.core.block_masked_mm"]], "broadcast_to() (in module mlx.core)": [[91, "mlx.core.broadcast_to"]], "ceil() (in module mlx.core)": [[92, "mlx.core.ceil"]], "clip() (in module mlx.core)": [[93, "mlx.core.clip"]], "compile() (in module mlx.core)": [[94, "mlx.core.compile"]], "concatenate() (in module mlx.core)": [[95, "mlx.core.concatenate"]], "conj() (in module mlx.core)": [[96, "mlx.core.conj"]], "conjugate() (in module mlx.core)": [[97, "mlx.core.conjugate"]], "conv1d() (in module mlx.core)": [[98, "mlx.core.conv1d"]], "conv2d() (in module mlx.core)": [[99, "mlx.core.conv2d"]], "conv3d() (in module mlx.core)": [[100, "mlx.core.conv3d"]], "conv_general() (in module mlx.core)": [[101, "mlx.core.conv_general"]], "conv_transpose1d() (in module mlx.core)": [[102, "mlx.core.conv_transpose1d"]], "conv_transpose2d() (in module mlx.core)": [[103, "mlx.core.conv_transpose2d"]], "conv_transpose3d() (in module mlx.core)": [[104, "mlx.core.conv_transpose3d"]], "convolve() (in module mlx.core)": [[105, "mlx.core.convolve"]], "cos() (in module mlx.core)": [[106, "mlx.core.cos"]], "cosh() (in module mlx.core)": [[107, "mlx.core.cosh"]], "cummax() (in module mlx.core)": [[108, "mlx.core.cummax"]], "cummin() (in module mlx.core)": [[109, "mlx.core.cummin"]], "cumprod() (in module mlx.core)": [[110, "mlx.core.cumprod"]], "cumsum() (in module mlx.core)": [[111, "mlx.core.cumsum"]], "__init__() (custom_function method)": [[112, "mlx.core.custom_function.__init__"]], "custom_function (class in mlx.core)": [[112, "mlx.core.custom_function"]], "default_device() (in module mlx.core)": [[113, "mlx.core.default_device"]], "default_stream() (in module mlx.core)": [[114, "mlx.core.default_stream"]], "degrees() (in module mlx.core)": [[115, "mlx.core.degrees"]], "dequantize() (in module mlx.core)": [[116, "mlx.core.dequantize"]], "diag() (in module mlx.core)": [[117, "mlx.core.diag"]], "diagonal() (in module mlx.core)": [[118, "mlx.core.diagonal"]], "disable_compile() (in module mlx.core)": [[119, "mlx.core.disable_compile"]], "group (class in mlx.core.distributed)": [[120, "mlx.core.distributed.Group"]], "__init__() (group method)": [[120, "mlx.core.distributed.Group.__init__"]], "all_gather() (in module mlx.core.distributed)": [[121, "mlx.core.distributed.all_gather"]], "all_sum() (in module mlx.core.distributed)": [[122, "mlx.core.distributed.all_sum"]], "init() (in module mlx.core.distributed)": [[123, "mlx.core.distributed.init"]], "is_available() (in module mlx.core.distributed)": [[124, "mlx.core.distributed.is_available"]], "recv() (in module mlx.core.distributed)": [[125, "mlx.core.distributed.recv"]], "recv_like() (in module mlx.core.distributed)": [[126, "mlx.core.distributed.recv_like"]], "send() (in module mlx.core.distributed)": [[127, "mlx.core.distributed.send"]], "divide() (in module mlx.core)": [[128, "mlx.core.divide"]], "divmod() (in module mlx.core)": [[129, "mlx.core.divmod"]], "einsum() (in module mlx.core)": [[130, "mlx.core.einsum"]], "einsum_path() (in module mlx.core)": [[131, "mlx.core.einsum_path"]], "enable_compile() (in module mlx.core)": [[132, "mlx.core.enable_compile"]], "equal() (in module mlx.core)": [[133, "mlx.core.equal"]], "erf() (in module mlx.core)": [[134, "mlx.core.erf"]], "erfinv() (in module mlx.core)": [[135, "mlx.core.erfinv"]], "eval() (in module mlx.core)": [[136, "mlx.core.eval"]], "exp() (in module mlx.core)": [[137, "mlx.core.exp"]], "expand_dims() (in module mlx.core)": [[138, "mlx.core.expand_dims"]], "expm1() (in module mlx.core)": [[139, "mlx.core.expm1"]], "eye() (in module mlx.core)": [[140, "mlx.core.eye"]], "affine_quantize() (in module mlx.core.fast)": [[141, "mlx.core.fast.affine_quantize"]], "layer_norm() (in module mlx.core.fast)": [[142, "mlx.core.fast.layer_norm"]], "metal_kernel() (in module mlx.core.fast)": [[143, "mlx.core.fast.metal_kernel"]], "rms_norm() (in module mlx.core.fast)": [[144, "mlx.core.fast.rms_norm"]], "rope() (in module mlx.core.fast)": [[145, "mlx.core.fast.rope"]], "scaled_dot_product_attention() (in module mlx.core.fast)": [[146, "mlx.core.fast.scaled_dot_product_attention"]], "fft() (in module mlx.core.fft)": [[147, "mlx.core.fft.fft"]], "fft2() (in module mlx.core.fft)": [[148, "mlx.core.fft.fft2"]], "fftn() (in module mlx.core.fft)": [[149, "mlx.core.fft.fftn"]], "ifft() (in module mlx.core.fft)": [[150, "mlx.core.fft.ifft"]], "ifft2() (in module mlx.core.fft)": [[151, "mlx.core.fft.ifft2"]], "ifftn() (in module mlx.core.fft)": [[152, "mlx.core.fft.ifftn"]], "irfft() (in module mlx.core.fft)": [[153, "mlx.core.fft.irfft"]], "irfft2() (in module mlx.core.fft)": [[154, "mlx.core.fft.irfft2"]], "irfftn() (in module mlx.core.fft)": [[155, "mlx.core.fft.irfftn"]], "rfft() (in module mlx.core.fft)": [[156, "mlx.core.fft.rfft"]], "rfft2() (in module mlx.core.fft)": [[157, "mlx.core.fft.rfft2"]], "rfftn() (in module mlx.core.fft)": [[158, "mlx.core.fft.rfftn"]], "flatten() (in module mlx.core)": [[159, "mlx.core.flatten"]], "floor() (in module mlx.core)": [[160, "mlx.core.floor"]], "floor_divide() (in module mlx.core)": [[161, "mlx.core.floor_divide"]], "full() (in module mlx.core)": [[162, "mlx.core.full"]], "gather_mm() (in module mlx.core)": [[163, "mlx.core.gather_mm"]], "gather_qmm() (in module mlx.core)": [[164, "mlx.core.gather_qmm"]], "grad() (in module mlx.core)": [[165, "mlx.core.grad"]], "greater() (in module mlx.core)": [[166, "mlx.core.greater"]], "greater_equal() (in module mlx.core)": [[167, "mlx.core.greater_equal"]], "hadamard_transform() (in module mlx.core)": [[168, "mlx.core.hadamard_transform"]], "identity() (in module mlx.core)": [[169, "mlx.core.identity"]], "inner() (in module mlx.core)": [[170, "mlx.core.inner"]], "isclose() (in module mlx.core)": [[171, "mlx.core.isclose"]], "isfinite() (in module mlx.core)": [[172, "mlx.core.isfinite"]], "isinf() (in module mlx.core)": [[173, "mlx.core.isinf"]], "isnan() (in module mlx.core)": [[174, "mlx.core.isnan"]], "isneginf() (in module mlx.core)": [[175, "mlx.core.isneginf"]], "isposinf() (in module mlx.core)": [[176, "mlx.core.isposinf"]], "issubdtype() (in module mlx.core)": [[177, "mlx.core.issubdtype"]], "jvp() (in module mlx.core)": [[178, "mlx.core.jvp"]], "left_shift() (in module mlx.core)": [[179, "mlx.core.left_shift"]], "less() (in module mlx.core)": [[180, "mlx.core.less"]], "less_equal() (in module mlx.core)": [[181, "mlx.core.less_equal"]], "cholesky() (in module mlx.core.linalg)": [[182, "mlx.core.linalg.cholesky"]], "cholesky_inv() (in module mlx.core.linalg)": [[183, "mlx.core.linalg.cholesky_inv"]], "inv() (in module mlx.core.linalg)": [[184, "mlx.core.linalg.inv"]], "norm() (in module mlx.core.linalg)": [[185, "mlx.core.linalg.norm"]], "qr() (in module mlx.core.linalg)": [[186, "mlx.core.linalg.qr"]], "svd() (in module mlx.core.linalg)": [[187, "mlx.core.linalg.svd"]], "tri_inv() (in module mlx.core.linalg)": [[188, "mlx.core.linalg.tri_inv"]], "linspace() (in module mlx.core)": [[189, "mlx.core.linspace"]], "load() (in module mlx.core)": [[190, "mlx.core.load"]], "log() (in module mlx.core)": [[191, "mlx.core.log"]], "log10() (in module mlx.core)": [[192, "mlx.core.log10"]], "log1p() (in module mlx.core)": [[193, "mlx.core.log1p"]], "log2() (in module mlx.core)": [[194, "mlx.core.log2"]], "logaddexp() (in module mlx.core)": [[195, "mlx.core.logaddexp"]], "logical_and() (in module mlx.core)": [[196, "mlx.core.logical_and"]], "logical_not() (in module mlx.core)": [[197, "mlx.core.logical_not"]], "logical_or() (in module mlx.core)": [[198, "mlx.core.logical_or"]], "logsumexp() (in module mlx.core)": [[199, "mlx.core.logsumexp"]], "matmul() (in module mlx.core)": [[200, "mlx.core.matmul"]], "max() (in module mlx.core)": [[201, "mlx.core.max"]], "maximum() (in module mlx.core)": [[202, "mlx.core.maximum"]], "mean() (in module mlx.core)": [[203, "mlx.core.mean"]], "meshgrid() (in module mlx.core)": [[204, "mlx.core.meshgrid"]], "clear_cache() (in module mlx.core.metal)": [[205, "mlx.core.metal.clear_cache"]], "device_info() (in module mlx.core.metal)": [[206, "mlx.core.metal.device_info"]], "get_active_memory() (in module mlx.core.metal)": [[207, "mlx.core.metal.get_active_memory"]], "get_cache_memory() (in module mlx.core.metal)": [[208, "mlx.core.metal.get_cache_memory"]], "get_peak_memory() (in module mlx.core.metal)": [[209, "mlx.core.metal.get_peak_memory"]], "is_available() (in module mlx.core.metal)": [[210, "mlx.core.metal.is_available"]], "reset_peak_memory() (in module mlx.core.metal)": [[211, "mlx.core.metal.reset_peak_memory"]], "set_cache_limit() (in module mlx.core.metal)": [[212, "mlx.core.metal.set_cache_limit"]], "set_memory_limit() (in module mlx.core.metal)": [[213, "mlx.core.metal.set_memory_limit"]], "start_capture() (in module mlx.core.metal)": [[214, "mlx.core.metal.start_capture"]], "stop_capture() (in module mlx.core.metal)": [[215, "mlx.core.metal.stop_capture"]], "min() (in module mlx.core)": [[216, "mlx.core.min"]], "minimum() (in module mlx.core)": [[217, "mlx.core.minimum"]], "moveaxis() (in module mlx.core)": [[218, "mlx.core.moveaxis"]], "multiply() (in module mlx.core)": [[219, "mlx.core.multiply"]], "nan_to_num() (in module mlx.core)": [[220, "mlx.core.nan_to_num"]], "negative() (in module mlx.core)": [[221, "mlx.core.negative"]], "new_stream() (in module mlx.core)": [[222, "mlx.core.new_stream"]], "not_equal() (in module mlx.core)": [[223, "mlx.core.not_equal"]], "ones() (in module mlx.core)": [[224, "mlx.core.ones"]], "ones_like() (in module mlx.core)": [[225, "mlx.core.ones_like"]], "outer() (in module mlx.core)": [[226, "mlx.core.outer"]], "pad() (in module mlx.core)": [[227, "mlx.core.pad"]], "partition() (in module mlx.core)": [[228, "mlx.core.partition"]], "power() (in module mlx.core)": [[229, "mlx.core.power"]], "prod() (in module mlx.core)": [[230, "mlx.core.prod"]], "quantize() (in module mlx.core)": [[231, "mlx.core.quantize"]], "quantized_matmul() (in module mlx.core)": [[232, "mlx.core.quantized_matmul"]], "radians() (in module mlx.core)": [[233, "mlx.core.radians"]], "bernoulli() (in module mlx.core.random)": [[234, "mlx.core.random.bernoulli"]], "categorical() (in module mlx.core.random)": [[235, "mlx.core.random.categorical"]], "gumbel() (in module mlx.core.random)": [[236, "mlx.core.random.gumbel"]], "key() (in module mlx.core.random)": [[237, "mlx.core.random.key"]], "laplace() (in module mlx.core.random)": [[238, "mlx.core.random.laplace"]], "multivariate_normal() (in module mlx.core.random)": [[239, "mlx.core.random.multivariate_normal"]], "normal() (in module mlx.core.random)": [[240, "mlx.core.random.normal"]], "randint() (in module mlx.core.random)": [[241, "mlx.core.random.randint"]], "seed() (in module mlx.core.random)": [[242, "mlx.core.random.seed"]], "split() (in module mlx.core.random)": [[243, "mlx.core.random.split"]], "truncated_normal() (in module mlx.core.random)": [[244, "mlx.core.random.truncated_normal"]], "uniform() (in module mlx.core.random)": [[245, "mlx.core.random.uniform"]], "reciprocal() (in module mlx.core)": [[246, "mlx.core.reciprocal"]], "remainder() (in module mlx.core)": [[247, "mlx.core.remainder"]], "repeat() (in module mlx.core)": [[248, "mlx.core.repeat"]], "reshape() (in module mlx.core)": [[249, "mlx.core.reshape"]], "right_shift() (in module mlx.core)": [[250, "mlx.core.right_shift"]], "round() (in module mlx.core)": [[251, "mlx.core.round"]], "rsqrt() (in module mlx.core)": [[252, "mlx.core.rsqrt"]], "save() (in module mlx.core)": [[253, "mlx.core.save"]], "save_gguf() (in module mlx.core)": [[254, "mlx.core.save_gguf"]], "save_safetensors() (in module mlx.core)": [[255, "mlx.core.save_safetensors"]], "savez() (in module mlx.core)": [[256, "mlx.core.savez"]], "savez_compressed() (in module mlx.core)": [[257, "mlx.core.savez_compressed"]], "set_default_device() (in module mlx.core)": [[258, "mlx.core.set_default_device"]], "set_default_stream() (in module mlx.core)": [[259, "mlx.core.set_default_stream"]], "sigmoid() (in module mlx.core)": [[260, "mlx.core.sigmoid"]], "sign() (in module mlx.core)": [[261, "mlx.core.sign"]], "sin() (in module mlx.core)": [[262, "mlx.core.sin"]], "sinh() (in module mlx.core)": [[263, "mlx.core.sinh"]], "softmax() (in module mlx.core)": [[264, "mlx.core.softmax"]], "sort() (in module mlx.core)": [[265, "mlx.core.sort"]], "split() (in module mlx.core)": [[266, "mlx.core.split"]], "sqrt() (in module mlx.core)": [[267, "mlx.core.sqrt"]], "square() (in module mlx.core)": [[268, "mlx.core.square"]], "squeeze() (in module mlx.core)": [[269, "mlx.core.squeeze"]], "stack() (in module mlx.core)": [[270, "mlx.core.stack"]], "std() (in module mlx.core)": [[271, "mlx.core.std"]], "stop_gradient() (in module mlx.core)": [[272, "mlx.core.stop_gradient"]], "stream() (in module mlx.core)": [[273, "mlx.core.stream"]], "subtract() (in module mlx.core)": [[274, "mlx.core.subtract"]], "sum() (in module mlx.core)": [[275, "mlx.core.sum"]], "swapaxes() (in module mlx.core)": [[276, "mlx.core.swapaxes"]], "synchronize() (in module mlx.core)": [[277, "mlx.core.synchronize"]], "take() (in module mlx.core)": [[278, "mlx.core.take"]], "take_along_axis() (in module mlx.core)": [[279, "mlx.core.take_along_axis"]], "tan() (in module mlx.core)": [[280, "mlx.core.tan"]], "tanh() (in module mlx.core)": [[281, "mlx.core.tanh"]], "tensordot() (in module mlx.core)": [[282, "mlx.core.tensordot"]], "tile() (in module mlx.core)": [[283, "mlx.core.tile"]], "topk() (in module mlx.core)": [[284, "mlx.core.topk"]], "trace() (in module mlx.core)": [[285, "mlx.core.trace"]], "transpose() (in module mlx.core)": [[286, "mlx.core.transpose"]], "tri() (in module mlx.core)": [[287, "mlx.core.tri"]], "tril() (in module mlx.core)": [[288, "mlx.core.tril"]], "triu() (in module mlx.core)": [[289, "mlx.core.triu"]], "value_and_grad() (in module mlx.core)": [[290, "mlx.core.value_and_grad"]], "var() (in module mlx.core)": [[291, "mlx.core.var"]], "view() (in module mlx.core)": [[292, "mlx.core.view"]], "vjp() (in module mlx.core)": [[293, "mlx.core.vjp"]], "vmap() (in module mlx.core)": [[294, "mlx.core.vmap"]], "where() (in module mlx.core)": [[295, "mlx.core.where"]], "zeros() (in module mlx.core)": [[296, "mlx.core.zeros"]], "zeros_like() (in module mlx.core)": [[297, "mlx.core.zeros_like"]], "quantize() (in module mlx.nn)": [[298, "mlx.nn.quantize"]], "value_and_grad() (in module mlx.nn)": [[299, "mlx.nn.value_and_grad"]], "clip_grad_norm() (in module mlx.optimizers)": [[300, "mlx.optimizers.clip_grad_norm"]], "tree_flatten() (in module mlx.utils)": [[301, "mlx.utils.tree_flatten"]], "tree_map() (in module mlx.utils)": [[302, "mlx.utils.tree_map"]], "tree_map_with_path() (in module mlx.utils)": [[303, "mlx.utils.tree_map_with_path"]], "tree_reduce() (in module mlx.utils)": [[304, "mlx.utils.tree_reduce"]], "tree_unflatten() (in module mlx.utils)": [[305, "mlx.utils.tree_unflatten"]], "stream (class in mlx.core)": [[306, "mlx.core.Stream"]], "__init__() (stream method)": [[306, "mlx.core.Stream.__init__"]], "alibi (class in mlx.nn)": [[316, "mlx.nn.ALiBi"]], "avgpool1d (class in mlx.nn)": [[317, "mlx.nn.AvgPool1d"]], "avgpool2d (class in mlx.nn)": [[318, "mlx.nn.AvgPool2d"]], "batchnorm (class in mlx.nn)": [[319, "mlx.nn.BatchNorm"]], "conv1d (class in mlx.nn)": [[320, "mlx.nn.Conv1d"]], "conv2d (class in mlx.nn)": [[321, "mlx.nn.Conv2d"]], "conv3d (class in mlx.nn)": [[322, "mlx.nn.Conv3d"]], "convtranspose1d (class in mlx.nn)": [[323, "mlx.nn.ConvTranspose1d"]], "convtranspose2d (class in mlx.nn)": [[324, "mlx.nn.ConvTranspose2d"]], "convtranspose3d (class in mlx.nn)": [[325, "mlx.nn.ConvTranspose3d"]], "dropout (class in mlx.nn)": [[326, "mlx.nn.Dropout"]], "dropout2d (class in mlx.nn)": [[327, "mlx.nn.Dropout2d"]], "dropout3d (class in mlx.nn)": [[328, "mlx.nn.Dropout3d"]], "embedding (class in mlx.nn)": [[329, "mlx.nn.Embedding"]], "gelu (class in mlx.nn)": [[330, "mlx.nn.GELU"], [396, "mlx.nn.gelu"]], "glu (class in mlx.nn)": [[331, "mlx.nn.GLU"], [399, "mlx.nn.glu"]], "gru (class in mlx.nn)": [[332, "mlx.nn.GRU"]], "groupnorm (class in mlx.nn)": [[333, "mlx.nn.GroupNorm"]], "hardshrink (class in mlx.nn)": [[334, "mlx.nn.HardShrink"]], "hardtanh (class in mlx.nn)": [[335, "mlx.nn.HardTanh"]], "hardswish (class in mlx.nn)": [[336, "mlx.nn.Hardswish"], [402, "mlx.nn.hardswish"]], "instancenorm (class in mlx.nn)": [[337, "mlx.nn.InstanceNorm"]], "lstm (class in mlx.nn)": [[338, "mlx.nn.LSTM"]], "layernorm (class in mlx.nn)": [[339, "mlx.nn.LayerNorm"]], "leakyrelu (class in mlx.nn)": [[340, "mlx.nn.LeakyReLU"]], "linear (class in mlx.nn)": [[341, "mlx.nn.Linear"]], "maxpool1d (class in mlx.nn)": [[342, "mlx.nn.MaxPool1d"]], "maxpool2d (class in mlx.nn)": [[343, "mlx.nn.MaxPool2d"]], "mish (class in mlx.nn)": [[344, "mlx.nn.Mish"], [420, "mlx.nn.mish"]], "apply() (module method)": [[345, "mlx.nn.Module.apply"]], "apply_to_modules() (module method)": [[346, "mlx.nn.Module.apply_to_modules"]], "children() (module method)": [[347, "mlx.nn.Module.children"]], "eval() (module method)": [[348, "mlx.nn.Module.eval"]], "filter_and_map() (module method)": [[349, "mlx.nn.Module.filter_and_map"]], "freeze() (module method)": [[350, "mlx.nn.Module.freeze"]], "leaf_modules() (module method)": [[351, "mlx.nn.Module.leaf_modules"]], "load_weights() (module method)": [[352, "mlx.nn.Module.load_weights"]], "modules() (module method)": [[353, "mlx.nn.Module.modules"]], "named_modules() (module method)": [[354, "mlx.nn.Module.named_modules"]], "parameters() (module method)": [[355, "mlx.nn.Module.parameters"]], "save_weights() (module method)": [[356, "mlx.nn.Module.save_weights"]], "set_dtype() (module method)": [[357, "mlx.nn.Module.set_dtype"]], "state (module property)": [[358, "mlx.nn.Module.state"]], "train() (module method)": [[359, "mlx.nn.Module.train"]], "trainable_parameters() (module method)": [[360, "mlx.nn.Module.trainable_parameters"]], "training (module property)": [[361, "mlx.nn.Module.training"]], "unfreeze() (module method)": [[362, "mlx.nn.Module.unfreeze"]], "update() (module method)": [[363, "mlx.nn.Module.update"]], "update_modules() (module method)": [[364, "mlx.nn.Module.update_modules"]], "multiheadattention (class in mlx.nn)": [[365, "mlx.nn.MultiHeadAttention"]], "prelu (class in mlx.nn)": [[366, "mlx.nn.PReLU"], [421, "mlx.nn.prelu"]], "quantizedembedding (class in mlx.nn)": [[367, "mlx.nn.QuantizedEmbedding"]], "quantizedlinear (class in mlx.nn)": [[368, "mlx.nn.QuantizedLinear"]], "rmsnorm (class in mlx.nn)": [[369, "mlx.nn.RMSNorm"]], "rnn (class in mlx.nn)": [[370, "mlx.nn.RNN"]], "relu (class in mlx.nn)": [[371, "mlx.nn.ReLU"], [422, "mlx.nn.relu"]], "relu6 (class in mlx.nn)": [[372, "mlx.nn.ReLU6"], [423, "mlx.nn.relu6"]], "rope (class in mlx.nn)": [[373, "mlx.nn.RoPE"]], "selu (class in mlx.nn)": [[374, "mlx.nn.SELU"], [424, "mlx.nn.selu"]], "sequential (class in mlx.nn)": [[375, "mlx.nn.Sequential"]], "silu (class in mlx.nn)": [[376, "mlx.nn.SiLU"], [426, "mlx.nn.silu"]], "sinusoidalpositionalencoding (class in mlx.nn)": [[377, "mlx.nn.SinusoidalPositionalEncoding"]], "softmax (class in mlx.nn)": [[378, "mlx.nn.Softmax"], [427, "mlx.nn.softmax"]], "softmin (class in mlx.nn)": [[379, "mlx.nn.Softmin"], [428, "mlx.nn.softmin"]], "softplus (class in mlx.nn)": [[380, "mlx.nn.Softplus"], [429, "mlx.nn.softplus"]], "softshrink (class in mlx.nn)": [[381, "mlx.nn.Softshrink"], [430, "mlx.nn.softshrink"]], "softsign (class in mlx.nn)": [[382, "mlx.nn.Softsign"]], "step (class in mlx.nn)": [[383, "mlx.nn.Step"], [431, "mlx.nn.step"]], "tanh (class in mlx.nn)": [[384, "mlx.nn.Tanh"], [432, "mlx.nn.tanh"]], "transformer (class in mlx.nn)": [[385, "mlx.nn.Transformer"]], "upsample (class in mlx.nn)": [[386, "mlx.nn.Upsample"]], "constant() (in module mlx.nn.init)": [[387, "mlx.nn.init.constant"]], "glorot_normal() (in module mlx.nn.init)": [[388, "mlx.nn.init.glorot_normal"]], "glorot_uniform() (in module mlx.nn.init)": [[389, "mlx.nn.init.glorot_uniform"]], "he_normal() (in module mlx.nn.init)": [[390, "mlx.nn.init.he_normal"]], "he_uniform() (in module mlx.nn.init)": [[391, "mlx.nn.init.he_uniform"]], "identity() (in module mlx.nn.init)": [[392, "mlx.nn.init.identity"]], "normal() (in module mlx.nn.init)": [[393, "mlx.nn.init.normal"]], "uniform() (in module mlx.nn.init)": [[394, "mlx.nn.init.uniform"]], "elu (class in mlx.nn)": [[395, "mlx.nn.elu"]], "gelu_approx (class in mlx.nn)": [[397, "mlx.nn.gelu_approx"]], "gelu_fast_approx (class in mlx.nn)": [[398, "mlx.nn.gelu_fast_approx"]], "hard_shrink (class in mlx.nn)": [[400, "mlx.nn.hard_shrink"]], "hard_tanh (class in mlx.nn)": [[401, "mlx.nn.hard_tanh"]], "leaky_relu (class in mlx.nn)": [[403, "mlx.nn.leaky_relu"]], "log_sigmoid (class in mlx.nn)": [[404, "mlx.nn.log_sigmoid"]], "log_softmax (class in mlx.nn)": [[405, "mlx.nn.log_softmax"]], "binary_cross_entropy (class in mlx.nn.losses)": [[406, "mlx.nn.losses.binary_cross_entropy"]], "cosine_similarity_loss (class in mlx.nn.losses)": [[407, "mlx.nn.losses.cosine_similarity_loss"]], "cross_entropy (class in mlx.nn.losses)": [[408, "mlx.nn.losses.cross_entropy"]], "gaussian_nll_loss (class in mlx.nn.losses)": [[409, "mlx.nn.losses.gaussian_nll_loss"]], "hinge_loss (class in mlx.nn.losses)": [[410, "mlx.nn.losses.hinge_loss"]], "huber_loss (class in mlx.nn.losses)": [[411, "mlx.nn.losses.huber_loss"]], "kl_div_loss (class in mlx.nn.losses)": [[412, "mlx.nn.losses.kl_div_loss"]], "l1_loss (class in mlx.nn.losses)": [[413, "mlx.nn.losses.l1_loss"]], "log_cosh_loss (class in mlx.nn.losses)": [[414, "mlx.nn.losses.log_cosh_loss"]], "margin_ranking_loss (class in mlx.nn.losses)": [[415, "mlx.nn.losses.margin_ranking_loss"]], "mse_loss (class in mlx.nn.losses)": [[416, "mlx.nn.losses.mse_loss"]], "nll_loss (class in mlx.nn.losses)": [[417, "mlx.nn.losses.nll_loss"]], "smooth_l1_loss (class in mlx.nn.losses)": [[418, "mlx.nn.losses.smooth_l1_loss"]], "triplet_loss (class in mlx.nn.losses)": [[419, "mlx.nn.losses.triplet_loss"]], "sigmoid (class in mlx.nn)": [[425, "mlx.nn.sigmoid"]], "module (class in mlx.nn)": [[437, "mlx.nn.Module"]], "adadelta (class in mlx.optimizers)": [[440, "mlx.optimizers.AdaDelta"]], "adafactor (class in mlx.optimizers)": [[441, "mlx.optimizers.Adafactor"]], "adagrad (class in mlx.optimizers)": [[442, "mlx.optimizers.Adagrad"]], "adam (class in mlx.optimizers)": [[443, "mlx.optimizers.Adam"]], "adamw (class in mlx.optimizers)": [[444, "mlx.optimizers.AdamW"]], "adamax (class in mlx.optimizers)": [[445, "mlx.optimizers.Adamax"]], "lion (class in mlx.optimizers)": [[446, "mlx.optimizers.Lion"]], "apply_gradients() (optimizer method)": [[447, "mlx.optimizers.Optimizer.apply_gradients"]], "init() (optimizer method)": [[448, "mlx.optimizers.Optimizer.init"]], "state (optimizer property)": [[449, "mlx.optimizers.Optimizer.state"]], "update() (optimizer method)": [[450, "mlx.optimizers.Optimizer.update"]], "rmsprop (class in mlx.optimizers)": [[451, "mlx.optimizers.RMSprop"]], "sgd (class in mlx.optimizers)": [[452, "mlx.optimizers.SGD"]], "cosine_decay() (in module mlx.optimizers)": [[453, "mlx.optimizers.cosine_decay"]], "exponential_decay() (in module mlx.optimizers)": [[454, "mlx.optimizers.exponential_decay"]], "join_schedules() (in module mlx.optimizers)": [[455, "mlx.optimizers.join_schedules"]], "linear_schedule() (in module mlx.optimizers)": [[456, "mlx.optimizers.linear_schedule"]], "step_decay() (in module mlx.optimizers)": [[457, "mlx.optimizers.step_decay"]], "optimizer (class in mlx.optimizers)": [[459, "mlx.optimizers.Optimizer"]]}}) \ No newline at end of file diff --git a/docs/build/html/sort_8h.html b/docs/build/html/sort_8h.html deleted file mode 100644 index c2abd297..00000000 --- a/docs/build/html/sort_8h.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/sort.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      sort.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - -

      -Classes

      struct  LessThan< T >
       
      struct  ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp >
       
      struct  BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
       
      struct  KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
       
      struct  KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
       
      - - - - - -

      -Macros

      #define MLX_MTL_CONST   static constant constexpr const
       
      #define MLX_MTL_LOOP_UNROLL   _Pragma("clang loop unroll(full)")
       
      - - - - - - - - - - - - - - - - - - - -

      -Functions

      template<typename T >
      METAL_FUNC void thread_swap (thread T &a, thread T &b)
       
      template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      void block_sort (const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, uint3 tid, uint3 lid)
       
      template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      void block_sort_nc (const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &nc_dim, const device int *nc_shape, const device size_t *in_nc_strides, const device size_t *out_nc_strides, uint3 tid, uint3 lid)
       
      template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      void mb_block_sort (const device val_t *inp, device val_t *out_vals, device idx_t *out_idxs, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, const constant int &nc_dim, const device int *nc_shape, const device size_t *nc_strides, uint3 tid, uint3 lid)
       
      template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      void mb_block_partition (device idx_t *block_partitions, const device val_t *dev_vals, const device idx_t *dev_idxs, const constant int &size_sorted_axis, const constant int &merge_tiles, const constant int &n_blocks, uint3 tid, uint3 lid, uint3 tgp_dims)
       
      template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<val_t>>
      void mb_block_merge (const device idx_t *block_partitions, const device val_t *dev_vals_in, const device idx_t *dev_idxs_in, device val_t *dev_vals_out, device idx_t *dev_idxs_out, const constant int &size_sorted_axis, const constant int &merge_tiles, const constant int &num_tiles, uint3 tid, uint3 lid)
       
      - - - -

      -Variables

      constant constexpr const int zero_helper = 0
       
      -

      Macro Definition Documentation

      - -

      ◆ MLX_MTL_CONST

      - -
      -
      - - - - -
      #define MLX_MTL_CONST   static constant constexpr const
      -
      - -
      -
      - -

      ◆ MLX_MTL_LOOP_UNROLL

      - -
      -
      - - - - -
      #define MLX_MTL_LOOP_UNROLL   _Pragma("clang loop unroll(full)")
      -
      - -
      -
      -

      Function Documentation

      - -

      ◆ block_sort()

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void block_sort (const device T * inp,
      device U * out,
      const constant int & size_sorted_axis,
      const constant int & in_stride_sorted_axis,
      const constant int & out_stride_sorted_axis,
      const constant int & in_stride_segment_axis,
      const constant int & out_stride_segment_axis,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      - -

      ◆ block_sort_nc()

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void block_sort_nc (const device T * inp,
      device U * out,
      const constant int & size_sorted_axis,
      const constant int & in_stride_sorted_axis,
      const constant int & out_stride_sorted_axis,
      const constant int & nc_dim,
      const device int * nc_shape,
      const device size_t * in_nc_strides,
      const device size_t * out_nc_strides,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      - -

      ◆ mb_block_merge()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<val_t>>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mb_block_merge (const device idx_t * block_partitions,
      const device val_t * dev_vals_in,
      const device idx_t * dev_idxs_in,
      device val_t * dev_vals_out,
      device idx_t * dev_idxs_out,
      const constant int & size_sorted_axis,
      const constant int & merge_tiles,
      const constant int & num_tiles,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      - -

      ◆ mb_block_partition()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mb_block_partition (device idx_t * block_partitions,
      const device val_t * dev_vals,
      const device idx_t * dev_idxs,
      const constant int & size_sorted_axis,
      const constant int & merge_tiles,
      const constant int & n_blocks,
      uint3 tid,
      uint3 lid,
      uint3 tgp_dims )
      -
      - -
      -
      - -

      ◆ mb_block_sort()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void mb_block_sort (const device val_t * inp,
      device val_t * out_vals,
      device idx_t * out_idxs,
      const constant int & size_sorted_axis,
      const constant int & stride_sorted_axis,
      const constant int & nc_dim,
      const device int * nc_shape,
      const device size_t * nc_strides,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      - -

      ◆ thread_swap()

      - -
      -
      -
      -template<typename T >
      - - - - - - - - - - - -
      METAL_FUNC void thread_swap (thread T & a,
      thread T & b )
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ zero_helper

      - -
      -
      - - - - - -
      - - - - -
      constant constexpr const int zero_helper = 0
      -
      -constexpr
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/sort_8h_source.html b/docs/build/html/sort_8h_source.html deleted file mode 100644 index e550bd76..00000000 --- a/docs/build/html/sort_8h_source.html +++ /dev/null @@ -1,852 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/sort.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      sort.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023-2024 Apple Inc.
      -
      2
      -
      3#define MLX_MTL_CONST static constant constexpr const
      -
      4#define MLX_MTL_LOOP_UNROLL _Pragma("clang loop unroll(full)")
      -
      5
      -
      6using namespace metal;
      -
      7
      -
      8// Based on GPU merge sort algorithm at
      -
      9// https://github.com/NVIDIA/cccl/tree/main/cub/cub
      -
      10
      -
      12// Thread-level sort
      -
      14
      -
      15template <typename T>
      -
      -
      16METAL_FUNC void thread_swap(thread T& a, thread T& b) {
      -
      17 T w = a;
      -
      18 a = b;
      -
      19 b = w;
      -
      20}
      -
      -
      21
      -
      22template <typename T>
      -
      -
      23struct LessThan {
      -
      24 static constexpr constant T init = Limits<T>::max;
      -
      25
      -
      -
      26 METAL_FUNC bool operator()(T a, T b) {
      -
      27 return a < b;
      -
      28 }
      -
      -
      29};
      -
      -
      30
      -
      31template <
      -
      32 typename val_t,
      -
      33 typename idx_t,
      -
      34 bool ARG_SORT,
      -
      35 short N_PER_THREAD,
      -
      36 typename CompareOp>
      -
      -
      37struct ThreadSort {
      -
      -
      38 static METAL_FUNC void sort(
      -
      39 thread val_t (&vals)[N_PER_THREAD],
      -
      40 thread idx_t (&idxs)[N_PER_THREAD]) {
      -
      41 CompareOp op;
      -
      42
      - -
      44 for (short i = 0; i < N_PER_THREAD; ++i) {
      - -
      46 for (short j = i & 1; j < N_PER_THREAD - 1; j += 2) {
      -
      47 if (op(vals[j + 1], vals[j])) {
      -
      48 thread_swap(vals[j + 1], vals[j]);
      -
      49 thread_swap(idxs[j + 1], idxs[j]);
      -
      50 }
      -
      51 }
      -
      52 }
      -
      53 }
      -
      -
      54};
      -
      -
      55
      -
      57// Threadgroup-level sort
      -
      59
      -
      60template <
      -
      61 typename val_t,
      -
      62 typename idx_t,
      -
      63 bool ARG_SORT,
      -
      64 short BLOCK_THREADS,
      -
      65 short N_PER_THREAD,
      -
      66 typename CompareOp>
      -
      - - - -
      -
      70 static METAL_FUNC int merge_partition(
      -
      71 const threadgroup val_t* As,
      -
      72 const threadgroup val_t* Bs,
      -
      73 short A_sz,
      -
      74 short B_sz,
      -
      75 short sort_md) {
      -
      76 CompareOp op;
      -
      77
      -
      78 short A_st = max(0, sort_md - B_sz);
      -
      79 short A_ed = min(sort_md, A_sz);
      -
      80
      -
      81 while (A_st < A_ed) {
      -
      82 short md = A_st + (A_ed - A_st) / 2;
      -
      83 auto a = As[md];
      -
      84 auto b = Bs[sort_md - 1 - md];
      -
      85
      -
      86 if (op(b, a)) {
      -
      87 A_ed = md;
      -
      88 } else {
      -
      89 A_st = md + 1;
      -
      90 }
      -
      91 }
      -
      92
      -
      93 return A_ed;
      -
      94 }
      -
      -
      95
      -
      -
      96 static METAL_FUNC void merge_step(
      -
      97 const threadgroup val_t* As,
      -
      98 const threadgroup val_t* Bs,
      -
      99 const threadgroup idx_t* As_idx,
      -
      100 const threadgroup idx_t* Bs_idx,
      -
      101 short A_sz,
      -
      102 short B_sz,
      -
      103 thread val_t (&vals)[N_PER_THREAD],
      -
      104 thread idx_t (&idxs)[N_PER_THREAD]) {
      -
      105 CompareOp op;
      -
      106 short a_idx = 0;
      -
      107 short b_idx = 0;
      -
      108
      -
      109 for (int i = 0; i < N_PER_THREAD; ++i) {
      -
      110 auto a = As[a_idx];
      -
      111 auto b = Bs[b_idx];
      -
      112 bool pred = (b_idx < B_sz) && (a_idx >= A_sz || op(b, a));
      -
      113
      -
      114 vals[i] = pred ? b : a;
      -
      115 idxs[i] = pred ? Bs_idx[b_idx] : As_idx[a_idx];
      -
      116
      -
      117 b_idx += short(pred);
      -
      118 a_idx += short(!pred);
      -
      119 }
      -
      120 }
      -
      -
      121
      -
      -
      122 static METAL_FUNC void sort(
      -
      123 threadgroup val_t* tgp_vals [[threadgroup(0)]],
      -
      124 threadgroup idx_t* tgp_idxs [[threadgroup(1)]],
      -
      125 int size_sorted_axis,
      -
      126 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      127 // Get thread location
      -
      128 int idx = lid.x * N_PER_THREAD;
      -
      129
      -
      130 // Load from shared memory
      -
      131 thread val_t thread_vals[N_PER_THREAD];
      -
      132 thread idx_t thread_idxs[N_PER_THREAD];
      -
      133 for (int i = 0; i < N_PER_THREAD; ++i) {
      -
      134 thread_vals[i] = tgp_vals[idx + i];
      -
      135 if (ARG_SORT) {
      -
      136 thread_idxs[i] = tgp_idxs[idx + i];
      -
      137 }
      -
      138 }
      -
      139
      -
      140 // Per thread sort
      -
      141 if (idx < size_sorted_axis) {
      -
      142 thread_sort_t::sort(thread_vals, thread_idxs);
      -
      143 }
      -
      144
      -
      145 // Do merges using threadgroup memory
      -
      146 for (int merge_threads = 2; merge_threads <= BLOCK_THREADS;
      -
      147 merge_threads *= 2) {
      -
      148 // Update threadgroup memory
      -
      149 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      150 for (int i = 0; i < N_PER_THREAD; ++i) {
      -
      151 tgp_vals[idx + i] = thread_vals[i];
      -
      152 if (ARG_SORT) {
      -
      153 tgp_idxs[idx + i] = thread_idxs[i];
      -
      154 }
      -
      155 }
      -
      156 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      157
      -
      158 // Find location in merge step
      -
      159 int merge_group = lid.x / merge_threads;
      -
      160 int merge_lane = lid.x % merge_threads;
      -
      161
      -
      162 int sort_sz = N_PER_THREAD * merge_threads;
      -
      163 int sort_st = N_PER_THREAD * merge_threads * merge_group;
      -
      164
      -
      165 // As = tgp_vals[A_st:A_ed] is sorted
      -
      166 // Bs = tgp_vals[B_st:B_ed] is sorted
      -
      167 int A_st = sort_st;
      -
      168 int A_ed = sort_st + sort_sz / 2;
      -
      169 int B_st = sort_st + sort_sz / 2;
      -
      170 int B_ed = sort_st + sort_sz;
      -
      171
      -
      172 const threadgroup val_t* As = tgp_vals + A_st;
      -
      173 const threadgroup val_t* Bs = tgp_vals + B_st;
      -
      174 int A_sz = A_ed - A_st;
      -
      175 int B_sz = B_ed - B_st;
      -
      176
      -
      177 // Find a partition of merge elements
      -
      178 // Ci = merge(As[partition:], Bs[sort_md - partition:])
      -
      179 // of size N_PER_THREAD for each merge lane i
      -
      180 // C = [Ci] is sorted
      -
      181 int sort_md = N_PER_THREAD * merge_lane;
      -
      182 int partition = merge_partition(As, Bs, A_sz, B_sz, sort_md);
      -
      183
      -
      184 As += partition;
      -
      185 Bs += sort_md - partition;
      -
      186
      -
      187 A_sz -= partition;
      -
      188 B_sz -= sort_md - partition;
      -
      189
      -
      190 const threadgroup idx_t* As_idx =
      -
      191 ARG_SORT ? tgp_idxs + A_st + partition : nullptr;
      -
      192 const threadgroup idx_t* Bs_idx =
      -
      193 ARG_SORT ? tgp_idxs + B_st + sort_md - partition : nullptr;
      -
      194
      -
      195 // Merge starting at the partition and store results in thread registers
      -
      196 merge_step(As, Bs, As_idx, Bs_idx, A_sz, B_sz, thread_vals, thread_idxs);
      -
      197 }
      -
      198
      -
      199 // Write out to shared memory
      -
      200 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      201 for (int i = 0; i < N_PER_THREAD; ++i) {
      -
      202 tgp_vals[idx + i] = thread_vals[i];
      -
      203 if (ARG_SORT) {
      -
      204 tgp_idxs[idx + i] = thread_idxs[i];
      -
      205 }
      -
      206 }
      -
      207 }
      -
      -
      208};
      -
      -
      209
      -
      211// Kernel sort
      -
      213
      -
      214template <
      -
      215 typename T,
      -
      216 typename U,
      -
      217 bool ARG_SORT,
      -
      218 short BLOCK_THREADS,
      -
      219 short N_PER_THREAD,
      -
      220 typename CompareOp = LessThan<T>>
      -
      - -
      222 using val_t = T;
      -
      223 using idx_t = uint;
      - -
      225 val_t,
      -
      226 idx_t,
      -
      227 ARG_SORT,
      -
      228 BLOCK_THREADS,
      -
      229 N_PER_THREAD,
      -
      230 CompareOp>;
      -
      231
      -
      232 MLX_MTL_CONST short N_PER_BLOCK = BLOCK_THREADS * N_PER_THREAD;
      -
      233
      -
      -
      234 static METAL_FUNC void block_sort(
      -
      235 const device T* inp,
      -
      236 device U* out,
      -
      237 const constant int& size_sorted_axis,
      -
      238 const constant int& in_stride_sorted_axis,
      -
      239 const constant int& out_stride_sorted_axis,
      -
      240 const constant int& in_stride_segment_axis,
      -
      241 const constant int& out_stride_segment_axis,
      -
      242 threadgroup val_t* tgp_vals,
      -
      243 threadgroup idx_t* tgp_idxs,
      -
      244 uint3 tid [[threadgroup_position_in_grid]],
      -
      245 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      246 // tid.y tells us the segment index
      -
      247 inp += tid.y * in_stride_segment_axis;
      -
      248 out += tid.y * out_stride_segment_axis;
      -
      249
      -
      250 // Copy into threadgroup memory
      -
      251 for (short i = lid.x; i < N_PER_BLOCK; i += BLOCK_THREADS) {
      -
      252 tgp_vals[i] = i < size_sorted_axis ? inp[i * in_stride_sorted_axis]
      -
      253 : val_t(CompareOp::init);
      -
      254 if (ARG_SORT) {
      -
      255 tgp_idxs[i] = i;
      -
      256 }
      -
      257 }
      -
      258
      -
      259 // Sort elements within the block
      -
      260 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      261
      -
      262 block_merge_sort_t::sort(tgp_vals, tgp_idxs, size_sorted_axis, lid);
      -
      263
      -
      264 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      265
      -
      266 // Write output
      -
      267 for (int i = lid.x; i < size_sorted_axis; i += BLOCK_THREADS) {
      -
      268 if (ARG_SORT) {
      -
      269 out[i * out_stride_sorted_axis] = tgp_idxs[i];
      -
      270 } else {
      -
      271 out[i * out_stride_sorted_axis] = tgp_vals[i];
      -
      272 }
      -
      273 }
      -
      274 }
      -
      -
      275};
      -
      -
      276
      -
      277template <
      -
      278 typename T,
      -
      279 typename U,
      -
      280 bool ARG_SORT,
      -
      281 short BLOCK_THREADS,
      -
      282 short N_PER_THREAD>
      -
      -
      283[[kernel, max_total_threads_per_threadgroup(BLOCK_THREADS)]] void block_sort(
      -
      284 const device T* inp [[buffer(0)]],
      -
      285 device U* out [[buffer(1)]],
      -
      286 const constant int& size_sorted_axis [[buffer(2)]],
      -
      287 const constant int& in_stride_sorted_axis [[buffer(3)]],
      -
      288 const constant int& out_stride_sorted_axis [[buffer(4)]],
      -
      289 const constant int& in_stride_segment_axis [[buffer(5)]],
      -
      290 const constant int& out_stride_segment_axis [[buffer(6)]],
      -
      291 uint3 tid [[threadgroup_position_in_grid]],
      -
      292 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      293 using sort_kernel =
      - -
      295 using val_t = typename sort_kernel::val_t;
      -
      296 using idx_t = typename sort_kernel::idx_t;
      -
      297
      -
      298 if (ARG_SORT) {
      -
      299 threadgroup val_t tgp_vals[sort_kernel::N_PER_BLOCK];
      -
      300 threadgroup idx_t tgp_idxs[sort_kernel::N_PER_BLOCK];
      -
      301 sort_kernel::block_sort(
      -
      302 inp,
      -
      303 out,
      -
      304 size_sorted_axis,
      -
      305 in_stride_sorted_axis,
      -
      306 out_stride_sorted_axis,
      -
      307 in_stride_segment_axis,
      -
      308 out_stride_segment_axis,
      -
      309 tgp_vals,
      -
      310 tgp_idxs,
      -
      311 tid,
      -
      312 lid);
      -
      313 } else {
      -
      314 threadgroup val_t tgp_vals[sort_kernel::N_PER_BLOCK];
      -
      315 sort_kernel::block_sort(
      -
      316 inp,
      -
      317 out,
      -
      318 size_sorted_axis,
      -
      319 in_stride_sorted_axis,
      -
      320 out_stride_sorted_axis,
      -
      321 in_stride_segment_axis,
      -
      322 out_stride_segment_axis,
      -
      323 tgp_vals,
      -
      324 nullptr,
      -
      325 tid,
      -
      326 lid);
      -
      327 }
      -
      328}
      -
      -
      329
      -
      330constant constexpr const int zero_helper = 0;
      -
      331
      -
      332template <
      -
      333 typename T,
      -
      334 typename U,
      -
      335 bool ARG_SORT,
      -
      336 short BLOCK_THREADS,
      -
      337 short N_PER_THREAD>
      -
      -
      338[[kernel, max_total_threads_per_threadgroup(BLOCK_THREADS)]] void block_sort_nc(
      -
      339 const device T* inp [[buffer(0)]],
      -
      340 device U* out [[buffer(1)]],
      -
      341 const constant int& size_sorted_axis [[buffer(2)]],
      -
      342 const constant int& in_stride_sorted_axis [[buffer(3)]],
      -
      343 const constant int& out_stride_sorted_axis [[buffer(4)]],
      -
      344 const constant int& nc_dim [[buffer(5)]],
      -
      345 const device int* nc_shape [[buffer(6)]],
      -
      346 const device size_t* in_nc_strides [[buffer(7)]],
      -
      347 const device size_t* out_nc_strides [[buffer(8)]],
      -
      348 uint3 tid [[threadgroup_position_in_grid]],
      -
      349 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      350 using sort_kernel =
      - -
      352 using val_t = typename sort_kernel::val_t;
      -
      353 using idx_t = typename sort_kernel::idx_t;
      -
      354
      -
      355 auto in_block_idx = elem_to_loc(tid.y, nc_shape, in_nc_strides, nc_dim);
      -
      356 auto out_block_idx = elem_to_loc(tid.y, nc_shape, out_nc_strides, nc_dim);
      -
      357 inp += in_block_idx;
      -
      358 out += out_block_idx;
      -
      359
      -
      360 if (ARG_SORT) {
      -
      361 threadgroup val_t tgp_vals[sort_kernel::N_PER_BLOCK];
      -
      362 threadgroup idx_t tgp_idxs[sort_kernel::N_PER_BLOCK];
      -
      363 sort_kernel::block_sort(
      -
      364 inp,
      -
      365 out,
      -
      366 size_sorted_axis,
      -
      367 in_stride_sorted_axis,
      -
      368 out_stride_sorted_axis,
      - - -
      371 tgp_vals,
      -
      372 tgp_idxs,
      -
      373 tid,
      -
      374 lid);
      -
      375 } else {
      -
      376 threadgroup val_t tgp_vals[sort_kernel::N_PER_BLOCK];
      -
      377 sort_kernel::block_sort(
      -
      378 inp,
      -
      379 out,
      -
      380 size_sorted_axis,
      -
      381 in_stride_sorted_axis,
      -
      382 out_stride_sorted_axis,
      - - -
      385 tgp_vals,
      -
      386 nullptr,
      -
      387 tid,
      -
      388 lid);
      -
      389 }
      -
      390}
      -
      -
      391
      -
      392template <
      -
      393 typename val_t,
      -
      394 typename idx_t,
      -
      395 bool ARG_SORT,
      -
      396 short BLOCK_THREADS,
      -
      397 short N_PER_THREAD,
      -
      398 typename CompareOp = LessThan<val_t>>
      -
      - - -
      401 val_t,
      -
      402 idx_t,
      -
      403 ARG_SORT,
      -
      404 BLOCK_THREADS,
      -
      405 N_PER_THREAD,
      -
      406 CompareOp>;
      -
      407
      -
      408 MLX_MTL_CONST short N_PER_BLOCK = BLOCK_THREADS * N_PER_THREAD;
      -
      409
      -
      -
      410 static METAL_FUNC void block_sort(
      -
      411 const device val_t* inp,
      -
      412 device val_t* out_vals,
      -
      413 device idx_t* out_idxs,
      -
      414 const constant int& size_sorted_axis,
      -
      415 const constant int& stride_sorted_axis,
      -
      416 threadgroup val_t* tgp_vals,
      -
      417 threadgroup idx_t* tgp_idxs,
      -
      418 uint3 tid [[threadgroup_position_in_grid]],
      -
      419 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      420 // tid.y tells us the segment index
      -
      421 int base_idx = tid.x * N_PER_BLOCK;
      -
      422
      -
      423 // Copy into threadgroup memory
      -
      424 for (short i = lid.x; i < N_PER_BLOCK; i += BLOCK_THREADS) {
      -
      425 int idx = base_idx + i;
      -
      426 tgp_vals[i] = idx < size_sorted_axis ? inp[idx * stride_sorted_axis]
      -
      427 : val_t(CompareOp::init);
      -
      428 tgp_idxs[i] = idx;
      -
      429 }
      -
      430
      -
      431 // Sort elements within the block
      -
      432 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      433
      -
      434 block_merge_sort_t::sort(tgp_vals, tgp_idxs, size_sorted_axis, lid);
      -
      435
      -
      436 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      437
      -
      438 // Write output
      -
      439 for (int i = lid.x; i < N_PER_BLOCK; i += BLOCK_THREADS) {
      -
      440 int idx = base_idx + i;
      -
      441 if (idx < size_sorted_axis) {
      -
      442 out_vals[idx] = tgp_vals[i];
      -
      443 out_idxs[idx] = tgp_idxs[i];
      -
      444 }
      -
      445 }
      -
      446 }
      -
      -
      447
      -
      -
      448 static METAL_FUNC int merge_partition(
      -
      449 const device val_t* As,
      -
      450 const device val_t* Bs,
      -
      451 int A_sz,
      -
      452 int B_sz,
      -
      453 int sort_md) {
      -
      454 CompareOp op;
      -
      455
      -
      456 int A_st = max(0, sort_md - B_sz);
      -
      457 int A_ed = min(sort_md, A_sz);
      -
      458
      -
      459 while (A_st < A_ed) {
      -
      460 int md = A_st + (A_ed - A_st) / 2;
      -
      461 auto a = As[md];
      -
      462 auto b = Bs[sort_md - 1 - md];
      -
      463
      -
      464 if (op(b, a)) {
      -
      465 A_ed = md;
      -
      466 } else {
      -
      467 A_st = md + 1;
      -
      468 }
      -
      469 }
      -
      470
      -
      471 return A_ed;
      -
      472 }
      -
      -
      473};
      -
      -
      474
      -
      475template <
      -
      476 typename val_t,
      -
      477 typename idx_t,
      -
      478 bool ARG_SORT,
      -
      479 short BLOCK_THREADS,
      -
      480 short N_PER_THREAD>
      -
      -
      481[[kernel, max_total_threads_per_threadgroup(BLOCK_THREADS)]] void mb_block_sort(
      -
      482 const device val_t* inp [[buffer(0)]],
      -
      483 device val_t* out_vals [[buffer(1)]],
      -
      484 device idx_t* out_idxs [[buffer(2)]],
      -
      485 const constant int& size_sorted_axis [[buffer(3)]],
      -
      486 const constant int& stride_sorted_axis [[buffer(4)]],
      -
      487 const constant int& nc_dim [[buffer(5)]],
      -
      488 const device int* nc_shape [[buffer(6)]],
      -
      489 const device size_t* nc_strides [[buffer(7)]],
      -
      490 uint3 tid [[threadgroup_position_in_grid]],
      -
      491 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      492 using sort_kernel = KernelMultiBlockMergeSort<
      -
      493 val_t,
      -
      494 idx_t,
      -
      495 ARG_SORT,
      -
      496 BLOCK_THREADS,
      -
      497 N_PER_THREAD>;
      -
      498
      -
      499 auto block_idx = elem_to_loc(tid.y, nc_shape, nc_strides, nc_dim);
      -
      500 inp += block_idx;
      -
      501 out_vals += tid.y * size_sorted_axis;
      -
      502 out_idxs += tid.y * size_sorted_axis;
      -
      503
      -
      504 threadgroup val_t tgp_vals[sort_kernel::N_PER_BLOCK];
      -
      505 threadgroup idx_t tgp_idxs[sort_kernel::N_PER_BLOCK];
      -
      506
      -
      507 sort_kernel::block_sort(
      -
      508 inp,
      -
      509 out_vals,
      -
      510 out_idxs,
      -
      511 size_sorted_axis,
      -
      512 stride_sorted_axis,
      -
      513 tgp_vals,
      -
      514 tgp_idxs,
      -
      515 tid,
      -
      516 lid);
      -
      517}
      -
      -
      518
      -
      519template <
      -
      520 typename val_t,
      -
      521 typename idx_t,
      -
      522 bool ARG_SORT,
      -
      523 short BLOCK_THREADS,
      -
      524 short N_PER_THREAD>
      -
      -
      525[[kernel]] void mb_block_partition(
      -
      526 device idx_t* block_partitions [[buffer(0)]],
      -
      527 const device val_t* dev_vals [[buffer(1)]],
      -
      528 const device idx_t* dev_idxs [[buffer(2)]],
      -
      529 const constant int& size_sorted_axis [[buffer(3)]],
      -
      530 const constant int& merge_tiles [[buffer(4)]],
      -
      531 const constant int& n_blocks [[buffer(5)]],
      -
      532 uint3 tid [[threadgroup_position_in_grid]],
      -
      533 uint3 lid [[thread_position_in_threadgroup]],
      -
      534 uint3 tgp_dims [[threads_per_threadgroup]]) {
      -
      535 using sort_kernel = KernelMultiBlockMergeSort<
      -
      536 val_t,
      -
      537 idx_t,
      -
      538 ARG_SORT,
      -
      539 BLOCK_THREADS,
      -
      540 N_PER_THREAD>;
      -
      541
      -
      542 block_partitions += tid.y * tgp_dims.x;
      -
      543 dev_vals += tid.y * size_sorted_axis;
      -
      544 dev_idxs += tid.y * size_sorted_axis;
      -
      545
      -
      546 for (int i = lid.x; i <= n_blocks; i += tgp_dims.x) {
      -
      547 // Find location in merge step
      -
      548 int merge_group = i / merge_tiles;
      -
      549 int merge_lane = i % merge_tiles;
      -
      550
      -
      551 int sort_sz = sort_kernel::N_PER_BLOCK * merge_tiles;
      -
      552 int sort_st = sort_kernel::N_PER_BLOCK * merge_tiles * merge_group;
      -
      553
      -
      554 int A_st = min(size_sorted_axis, sort_st);
      -
      555 int A_ed = min(size_sorted_axis, sort_st + sort_sz / 2);
      -
      556 int B_st = A_ed;
      -
      557 int B_ed = min(size_sorted_axis, B_st + sort_sz / 2);
      -
      558
      -
      559 int partition_at = min(B_ed - A_st, sort_kernel::N_PER_BLOCK * merge_lane);
      -
      560 int partition = sort_kernel::merge_partition(
      -
      561 dev_vals + A_st,
      -
      562 dev_vals + B_st,
      -
      563 A_ed - A_st,
      -
      564 B_ed - B_st,
      -
      565 partition_at);
      -
      566
      -
      567 block_partitions[i] = A_st + partition;
      -
      568 }
      -
      569}
      -
      -
      570
      -
      571template <
      -
      572 typename val_t,
      -
      573 typename idx_t,
      -
      574 bool ARG_SORT,
      -
      575 short BLOCK_THREADS,
      -
      576 short N_PER_THREAD,
      -
      577 typename CompareOp = LessThan<val_t>>
      -
      578[[kernel, max_total_threads_per_threadgroup(BLOCK_THREADS)]] void
      -
      - -
      580 const device idx_t* block_partitions [[buffer(0)]],
      -
      581 const device val_t* dev_vals_in [[buffer(1)]],
      -
      582 const device idx_t* dev_idxs_in [[buffer(2)]],
      -
      583 device val_t* dev_vals_out [[buffer(3)]],
      -
      584 device idx_t* dev_idxs_out [[buffer(4)]],
      -
      585 const constant int& size_sorted_axis [[buffer(5)]],
      -
      586 const constant int& merge_tiles [[buffer(6)]],
      -
      587 const constant int& num_tiles [[buffer(7)]],
      -
      588 uint3 tid [[threadgroup_position_in_grid]],
      -
      589 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      590 using sort_kernel = KernelMultiBlockMergeSort<
      -
      591 val_t,
      -
      592 idx_t,
      -
      593 ARG_SORT,
      -
      594 BLOCK_THREADS,
      -
      595 N_PER_THREAD,
      -
      596 CompareOp>;
      -
      597
      -
      598 using block_sort_t = typename sort_kernel::block_merge_sort_t;
      -
      599
      -
      600 block_partitions += tid.y * (num_tiles + 1);
      -
      601 dev_vals_in += tid.y * size_sorted_axis;
      -
      602 dev_idxs_in += tid.y * size_sorted_axis;
      -
      603 dev_vals_out += tid.y * size_sorted_axis;
      -
      604 dev_idxs_out += tid.y * size_sorted_axis;
      -
      605
      -
      606 int block_idx = tid.x;
      -
      607 int merge_group = block_idx / merge_tiles;
      -
      608 int sort_st = sort_kernel::N_PER_BLOCK * merge_tiles * merge_group;
      -
      609 int sort_sz = sort_kernel::N_PER_BLOCK * merge_tiles;
      -
      610 int sort_md = sort_kernel::N_PER_BLOCK * block_idx - sort_st;
      -
      611
      -
      612 int A_st = block_partitions[block_idx + 0];
      -
      613 int A_ed = block_partitions[block_idx + 1];
      -
      614 int B_st = min(size_sorted_axis, 2 * sort_st + sort_sz / 2 + sort_md - A_st);
      -
      615 int B_ed = min(
      -
      616 size_sorted_axis,
      -
      617 2 * sort_st + sort_sz / 2 + sort_md + sort_kernel::N_PER_BLOCK - A_ed);
      -
      618
      -
      619 if ((block_idx % merge_tiles) == merge_tiles - 1) {
      -
      620 A_ed = min(size_sorted_axis, sort_st + sort_sz / 2);
      -
      621 B_ed = min(size_sorted_axis, sort_st + sort_sz);
      -
      622 }
      -
      623
      -
      624 int A_sz = A_ed - A_st;
      -
      625 int B_sz = B_ed - B_st;
      -
      626
      -
      627 // Load from global memory
      -
      628 thread val_t thread_vals[N_PER_THREAD];
      -
      629 thread idx_t thread_idxs[N_PER_THREAD];
      -
      630 for (int i = 0; i < N_PER_THREAD; i++) {
      -
      631 int idx = BLOCK_THREADS * i + lid.x;
      -
      632 if (idx < (A_sz + B_sz)) {
      -
      633 thread_vals[i] = (idx < A_sz) ? dev_vals_in[A_st + idx]
      -
      634 : dev_vals_in[B_st + idx - A_sz];
      -
      635 thread_idxs[i] = (idx < A_sz) ? dev_idxs_in[A_st + idx]
      -
      636 : dev_idxs_in[B_st + idx - A_sz];
      -
      637 } else {
      -
      638 thread_vals[i] = CompareOp::init;
      -
      639 thread_idxs[i] = 0;
      -
      640 }
      -
      641 }
      -
      642
      -
      643 // Write to shared memory
      -
      644 threadgroup val_t tgp_vals[sort_kernel::N_PER_BLOCK];
      -
      645 threadgroup idx_t tgp_idxs[sort_kernel::N_PER_BLOCK];
      -
      646 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      647 for (int i = 0; i < N_PER_THREAD; i++) {
      -
      648 int idx = BLOCK_THREADS * i + lid.x;
      -
      649 tgp_vals[idx] = thread_vals[i];
      -
      650 tgp_idxs[idx] = thread_idxs[i];
      -
      651 }
      -
      652 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      653
      -
      654 // Merge
      -
      655 int sort_md_local = min(A_sz + B_sz, N_PER_THREAD * int(lid.x));
      -
      656
      -
      657 int A_st_local = block_sort_t::merge_partition(
      -
      658 tgp_vals, tgp_vals + A_sz, A_sz, B_sz, sort_md_local);
      -
      659 int A_ed_local = A_sz;
      -
      660
      -
      661 int B_st_local = sort_md_local - A_st_local;
      -
      662 int B_ed_local = B_sz;
      -
      663
      -
      664 int A_sz_local = A_ed_local - A_st_local;
      -
      665 int B_sz_local = B_ed_local - B_st_local;
      -
      666
      -
      667 // Do merge
      -
      668 block_sort_t::merge_step(
      -
      669 tgp_vals + A_st_local,
      -
      670 tgp_vals + A_ed_local + B_st_local,
      -
      671 tgp_idxs + A_st_local,
      -
      672 tgp_idxs + A_ed_local + B_st_local,
      -
      673 A_sz_local,
      -
      674 B_sz_local,
      -
      675 thread_vals,
      -
      676 thread_idxs);
      -
      677
      -
      678 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      679 for (int i = 0; i < N_PER_THREAD; ++i) {
      -
      680 int idx = lid.x * N_PER_THREAD;
      -
      681 tgp_vals[idx + i] = thread_vals[i];
      -
      682 tgp_idxs[idx + i] = thread_idxs[i];
      -
      683 }
      -
      684
      -
      685 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      686 // Write output
      -
      687 int base_idx = tid.x * sort_kernel::N_PER_BLOCK;
      -
      688 for (int i = lid.x; i < sort_kernel::N_PER_BLOCK; i += BLOCK_THREADS) {
      -
      689 int idx = base_idx + i;
      -
      690 if (idx < size_sorted_axis) {
      -
      691 dev_vals_out[idx] = tgp_vals[i];
      -
      692 dev_idxs_out[idx] = tgp_idxs[i];
      -
      693 }
      -
      694 }
      -
      695}
      -
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Op op
      Definition binary.h:141
      -
      Definition bf16.h:265
      -
      METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      -
      METAL_FUNC bfloat16_t max(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      -
      #define MLX_MTL_CONST
      Definition sort.h:3
      -
      void block_sort_nc(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &nc_dim, const device int *nc_shape, const device size_t *in_nc_strides, const device size_t *out_nc_strides, uint3 tid, uint3 lid)
      Definition sort.h:338
      -
      void mb_block_sort(const device val_t *inp, device val_t *out_vals, device idx_t *out_idxs, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, const constant int &nc_dim, const device int *nc_shape, const device size_t *nc_strides, uint3 tid, uint3 lid)
      Definition sort.h:481
      -
      void mb_block_partition(device idx_t *block_partitions, const device val_t *dev_vals, const device idx_t *dev_idxs, const constant int &size_sorted_axis, const constant int &merge_tiles, const constant int &n_blocks, uint3 tid, uint3 lid, uint3 tgp_dims)
      Definition sort.h:525
      -
      METAL_FUNC void thread_swap(thread T &a, thread T &b)
      Definition sort.h:16
      -
      void block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, uint3 tid, uint3 lid)
      Definition sort.h:283
      -
      void mb_block_merge(const device idx_t *block_partitions, const device val_t *dev_vals_in, const device idx_t *dev_idxs_in, device val_t *dev_vals_out, device idx_t *dev_idxs_out, const constant int &size_sorted_axis, const constant int &merge_tiles, const constant int &num_tiles, uint3 tid, uint3 lid)
      Definition sort.h:579
      -
      constant constexpr const int zero_helper
      Definition sort.h:330
      -
      #define MLX_MTL_LOOP_UNROLL
      Definition sort.h:4
      -
      Definition sort.h:67
      -
      static METAL_FUNC int merge_partition(const threadgroup val_t *As, const threadgroup val_t *Bs, short A_sz, short B_sz, short sort_md)
      Definition sort.h:70
      -
      static METAL_FUNC void merge_step(const threadgroup val_t *As, const threadgroup val_t *Bs, const threadgroup idx_t *As_idx, const threadgroup idx_t *Bs_idx, short A_sz, short B_sz, thread val_t(&vals)[N_PER_THREAD], thread idx_t(&idxs)[N_PER_THREAD])
      Definition sort.h:96
      -
      static METAL_FUNC void sort(threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, int size_sorted_axis, uint3 lid)
      Definition sort.h:122
      -
      Definition sort.h:221
      -
      uint idx_t
      Definition sort.h:223
      -
      T val_t
      Definition sort.h:222
      -
      static METAL_FUNC void block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, uint3 tid, uint3 lid)
      Definition sort.h:234
      -
      static constant constexpr const short N_PER_BLOCK
      Definition sort.h:232
      -
      Definition sort.h:399
      -
      static METAL_FUNC void block_sort(const device val_t *inp, device val_t *out_vals, device idx_t *out_idxs, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, uint3 tid, uint3 lid)
      Definition sort.h:410
      -
      static METAL_FUNC int merge_partition(const device val_t *As, const device val_t *Bs, int A_sz, int B_sz, int sort_md)
      Definition sort.h:448
      -
      static constant constexpr const short N_PER_BLOCK
      Definition sort.h:408
      -
      Definition sort.h:23
      -
      METAL_FUNC bool operator()(T a, T b)
      Definition sort.h:26
      -
      static constexpr constant T init
      Definition sort.h:24
      -
      Definition utils.h:17
      -
      Definition sort.h:37
      -
      static METAL_FUNC void sort(thread val_t(&vals)[N_PER_THREAD], thread idx_t(&idxs)[N_PER_THREAD])
      Definition sort.h:38
      -
      - - - - diff --git a/docs/build/html/splitbar.png b/docs/build/html/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/docs/build/html/splitbard.png b/docs/build/html/splitbard.png deleted file mode 100644 index 8367416d757fd7b6dc4272b6432dc75a75abd068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? diff --git a/docs/build/html/steel_2defines_8h.html b/docs/build/html/steel_2defines_8h.html deleted file mode 100644 index 99cbcfad..00000000 --- a/docs/build/html/steel_2defines_8h.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/defines.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      defines.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Macros

      #define STEEL_CONST   static constant constexpr const
       
      #define STEEL_PRAGMA_UNROLL   _Pragma("clang loop unroll(full)")
       
      -

      Macro Definition Documentation

      - -

      ◆ STEEL_CONST

      - -
      -
      - - - - -
      #define STEEL_CONST   static constant constexpr const
      -
      - -
      -
      - -

      ◆ STEEL_PRAGMA_UNROLL

      - -
      -
      - - - - -
      #define STEEL_PRAGMA_UNROLL   _Pragma("clang loop unroll(full)")
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/steel_2defines_8h_source.html b/docs/build/html/steel_2defines_8h_source.html deleted file mode 100644 index 0afe753c..00000000 --- a/docs/build/html/steel_2defines_8h_source.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/defines.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      defines.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3#define STEEL_CONST static constant constexpr const
      -
      4#define STEEL_PRAGMA_UNROLL _Pragma("clang loop unroll(full)")
      -
      - - - - diff --git a/docs/build/html/steel__conv__general_8h.html b/docs/build/html/steel__conv__general_8h.html deleted file mode 100644 index db213f6c..00000000 --- a/docs/build/html/steel__conv__general_8h.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/kernels/steel_conv_general.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_conv_general.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - -

      -Functions

      template<typename T , int BM, int BN, int BK, int WM, int WN, typename AccumType = float, typename Epilogue = TransformNone<T, AccumType>>
      void implicit_gemm_conv_2d_general (const device T *A, const device T *B, device T *C, const constant MLXConvParams< 2 > *params, const constant ImplicitGemmConv2DParams *gemm_params, const constant Conv2DGeneralJumpParams *jump_params, const constant Conv2DGeneralBaseInfo *base_h, const constant Conv2DGeneralBaseInfo *base_w, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
       
      -

      Function Documentation

      - -

      ◆ implicit_gemm_conv_2d_general()

      - -
      -
      -
      -template<typename T , int BM, int BN, int BK, int WM, int WN, typename AccumType = float, typename Epilogue = TransformNone<T, AccumType>>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void implicit_gemm_conv_2d_general (const device T * A,
      const device T * B,
      device T * C,
      const constant MLXConvParams< 2 > * params,
      const constant ImplicitGemmConv2DParams * gemm_params,
      const constant Conv2DGeneralJumpParams * jump_params,
      const constant Conv2DGeneralBaseInfo * base_h,
      const constant Conv2DGeneralBaseInfo * base_w,
      uint3 tid,
      uint3 lid,
      uint simd_gid,
      uint simd_lid )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/steel__conv__general_8h_source.html b/docs/build/html/steel__conv__general_8h_source.html deleted file mode 100644 index fcf09a41..00000000 --- a/docs/build/html/steel__conv__general_8h_source.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/conv/kernels/steel_conv_general.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_conv_general.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      - -
      4
      -
      5template <
      -
      6 typename T,
      -
      7 int BM,
      -
      8 int BN,
      -
      9 int BK,
      -
      10 int WM,
      -
      11 int WN,
      -
      12 typename AccumType = float,
      -
      13 typename Epilogue = TransformNone<T, AccumType>>
      -
      14[[kernel, max_total_threads_per_threadgroup(WM* WN * 32)]] void
      -
      - -
      16 const device T* A [[buffer(0)]],
      -
      17 const device T* B [[buffer(1)]],
      -
      18 device T* C [[buffer(2)]],
      -
      19 const constant MLXConvParams<2>* params [[buffer(3)]],
      -
      20 const constant ImplicitGemmConv2DParams* gemm_params [[buffer(4)]],
      -
      21 const constant Conv2DGeneralJumpParams* jump_params [[buffer(5)]],
      -
      22 const constant Conv2DGeneralBaseInfo* base_h [[buffer(6)]],
      -
      23 const constant Conv2DGeneralBaseInfo* base_w [[buffer(7)]],
      -
      24 uint3 tid [[threadgroup_position_in_grid]],
      -
      25 uint3 lid [[thread_position_in_threadgroup]],
      -
      26 uint simd_gid [[simdgroup_index_in_threadgroup]],
      -
      27 uint simd_lid [[thread_index_in_simdgroup]]) {
      -
      28 (void)lid;
      -
      29
      -
      30 constexpr bool transpose_a = false;
      -
      31 constexpr bool transpose_b = true;
      -
      32 constexpr short tgp_padding_a = 16 / sizeof(T);
      -
      33 constexpr short tgp_padding_b = 16 / sizeof(T);
      -
      34
      -
      35 constexpr short shape_a_cols = (transpose_a ? BM : BK) + tgp_padding_a;
      -
      36 constexpr short shape_b_cols = (transpose_b ? BK : BN) + tgp_padding_b;
      -
      37 constexpr short shape_a_rows = (transpose_a ? BK : BM);
      -
      38 constexpr short shape_b_rows = (transpose_b ? BN : BK);
      -
      39 constexpr short tgp_mem_size_a = shape_a_cols * shape_a_rows;
      -
      40 constexpr short tgp_mem_size_b = shape_b_cols * shape_b_rows;
      -
      41
      -
      42 constexpr short tgp_size = WM * WN * 32;
      -
      43
      -
      44 // Input loader
      -
      45 using loader_a_t =
      -
      46 Conv2DInputBlockLoaderGeneral<T, BM, BN, BK, tgp_size, tgp_padding_a>;
      -
      47
      -
      48 // Weight loader
      -
      49 using loader_b_t =
      -
      50 Conv2DWeightBlockLoaderGeneral<T, BM, BN, BK, tgp_size, tgp_padding_b>;
      -
      51
      -
      52 using mma_t = BlockMMA<
      -
      53 T,
      -
      54 T,
      -
      55 BM,
      -
      56 BN,
      -
      57 BK,
      -
      58 WM,
      -
      59 WN,
      -
      60 transpose_a,
      -
      61 transpose_b,
      -
      62 shape_a_cols,
      -
      63 shape_b_cols>;
      -
      64
      -
      65 threadgroup T As[tgp_mem_size_a];
      -
      66 threadgroup T Bs[tgp_mem_size_b];
      -
      67
      -
      68 const int tid_y = ((tid.y) << gemm_params->swizzle_log) +
      -
      69 ((tid.x) & ((1 << gemm_params->swizzle_log) - 1));
      -
      70 const int tid_x = (tid.x) >> gemm_params->swizzle_log;
      -
      71
      -
      72 if (gemm_params->tiles_n <= tid_x || gemm_params->tiles_m <= tid_y) {
      -
      73 return;
      -
      74 }
      -
      75
      -
      76 const int tid_z = tid.z;
      -
      77
      -
      78 const int base_oh = tid_z / jump_params->f_out_jump_w;
      -
      79 const int base_ow = tid_z % jump_params->f_out_jump_w;
      -
      80
      -
      81 const int base_wh = base_h[base_oh].weight_base;
      -
      82 const int base_ww = base_w[base_ow].weight_base;
      -
      83
      -
      84 const int base_wh_size = base_h[base_oh].weight_size;
      -
      85 const int base_ww_size = base_w[base_ow].weight_size;
      -
      86
      -
      87 const int c_row = tid_y * BM;
      -
      88 const int c_col = tid_x * BN;
      -
      89 const int K = gemm_params->K;
      -
      90
      -
      91 B += c_col * K;
      -
      92
      -
      93 const int4 offsets_a(0, c_row, base_oh, base_ow);
      -
      94 const int2 offsets_b(0, c_col);
      -
      95
      -
      96 // Prepare threadgroup loading operations
      -
      97 loader_a_t loader_a(
      -
      98 A,
      -
      99 As,
      -
      100 offsets_a,
      -
      101 params,
      -
      102 jump_params,
      -
      103 base_wh,
      -
      104 base_ww,
      -
      105 simd_gid,
      -
      106 simd_lid);
      -
      107 loader_b_t loader_b(
      -
      108 B,
      -
      109 Bs,
      -
      110 offsets_b,
      -
      111 params,
      -
      112 jump_params,
      -
      113 base_wh,
      -
      114 base_ww,
      -
      115 simd_gid,
      -
      116 simd_lid);
      -
      117
      -
      118 // Prepare threadgroup mma operation
      -
      119 mma_t mma_op(simd_gid, simd_lid);
      -
      120
      -
      121 int gemm_k_iterations =
      -
      122 base_wh_size * base_ww_size * gemm_params->gemm_k_iterations;
      -
      123
      -
      124 for (int k = 0; k < gemm_k_iterations; k++) {
      -
      125 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      126 // Load elements into threadgroup
      -
      127 loader_a.load_unsafe();
      -
      128 loader_b.load_unsafe();
      -
      129
      -
      130 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      131
      -
      132 // Multiply and accumulate threadgroup elements
      -
      133 mma_op.mma(As, Bs);
      -
      134
      -
      135 // Prepare for next iteration
      -
      136 loader_a.next();
      -
      137 loader_b.next();
      -
      138 }
      -
      139
      -
      140 threadgroup_barrier(mem_flags::mem_none);
      -
      141
      -
      142 // Store results to device memory
      -
      143 {
      -
      144 // Adjust for simdgroup and thread locatio
      -
      145 int offset_m = c_row + mma_op.sm + mma_op.tm;
      -
      146 int offset_n = c_col + mma_op.sn + mma_op.tn;
      -
      147 C += offset_n;
      -
      148
      -
      149 if (offset_n >= gemm_params->N)
      -
      150 return;
      -
      151
      -
      152 short diff = gemm_params->N - offset_n;
      -
      153
      - -
      155 for (int i = 0; i < mma_t::TM; i++) {
      -
      156 int cm = offset_m + i * mma_t::TM_stride;
      -
      157
      -
      158 int n = cm / jump_params->adj_out_hw;
      -
      159 int hw = cm % jump_params->adj_out_hw;
      -
      160 int oh =
      -
      161 (hw / jump_params->adj_out_w) * jump_params->f_out_jump_h + base_oh;
      -
      162 int ow =
      -
      163 (hw % jump_params->adj_out_w) * jump_params->f_out_jump_w + base_ow;
      -
      164
      -
      165 if (n < params->N && oh < params->oS[0] && ow < params->oS[1]) {
      -
      166 int offset_cm = n * params->out_strides[0] +
      -
      167 oh * params->out_strides[1] + ow * params->out_strides[2];
      -
      168
      - -
      170 for (int j = 0; j < mma_t::TN; j++) {
      -
      171 // Get accumulated result and associated offset in C
      -
      172 thread const auto& accum =
      -
      173 mma_op.results[i * mma_t::TN + j].thread_elements();
      -
      174 int offset = offset_cm + (j * mma_t::TN_stride);
      -
      175
      -
      176 // Apply epilogue and output C
      -
      177 if (j * mma_t::TN_stride < diff) {
      -
      178 C[offset] = Epilogue::apply(accum[0]);
      -
      179 }
      -
      180
      -
      181 if (j * mma_t::TN_stride + 1 < diff) {
      -
      182 C[offset + 1] = Epilogue::apply(accum[1]);
      -
      183 }
      -
      184 }
      -
      185 }
      -
      186 }
      -
      187 }
      -
      188}
      -
      - -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      void implicit_gemm_conv_2d_general(const device T *A, const device T *B, device T *C, const constant MLXConvParams< 2 > *params, const constant ImplicitGemmConv2DParams *gemm_params, const constant Conv2DGeneralJumpParams *jump_params, const constant Conv2DGeneralBaseInfo *base_h, const constant Conv2DGeneralBaseInfo *base_w, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
      Definition steel_conv_general.h:15
      -
      Definition params.h:6
      -
      - - - - diff --git a/docs/build/html/steel__gemm_8h.html b/docs/build/html/steel__gemm_8h.html deleted file mode 100644 index 9e982170..00000000 --- a/docs/build/html/steel__gemm_8h.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/steel_gemm.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_gemm.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - - -

      -Variables

      constexpr std::string_view steel_gemm_fused_kernels
       
      constexpr std::string_view steel_gemm_masked_kernels
       
      constexpr std::string_view steel_gemm_splitk_kernels
       
      constexpr std::string_view steel_gemm_splitk_accum_kernels
       
      constexpr std::string_view steel_gemm_splitk_accum_axbpy_kernels
       
      -

      Variable Documentation

      - -

      ◆ steel_gemm_fused_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_gemm_fused_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]]
      -
      [[kernel]] void gemm<{itype}, {bm}, {bn}, {bk}, {wm}, {wn}, {trans_a}, {trans_b}, float>(
      -
      const device {itype} *A [[buffer(0)]],
      -
      const device {itype} *B [[buffer(1)]],
      -
      const device {itype} *C [[buffer(2), function_constant(use_out_source)]],
      -
      device {itype} *D [[buffer(3)]],
      -
      const constant GEMMParams* params [[buffer(4)]],
      -
      const constant GEMMAddMMParams* addmm_params [[buffer(5), function_constant(use_out_source)]],
      -
      const constant int* batch_shape [[buffer(6)]],
      -
      const constant size_t* batch_strides [[buffer(7)]],
      -
      const constant uint32_t* lhs_indices [[buffer(10), function_constant(do_gather)]],
      -
      const constant uint32_t* rhs_indices [[buffer(11), function_constant(do_gather)]],
      -
      const constant uint32_t* C_indices [[buffer(12), function_constant(gather_bias)]],
      -
      const constant int* operand_shape [[buffer(13), function_constant(do_gather)]],
      -
      const constant size_t* operand_strides [[buffer(14), function_constant(do_gather)]],
      -
      const constant packed_int3& operand_batch_ndim [[buffer(15), function_constant(do_gather)]],
      -
      uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      uint3 tid [[threadgroup_position_in_grid]],
      -
      uint3 lid [[thread_position_in_threadgroup]]);
      -
      )"
      -
      -
      -
      - -

      ◆ steel_gemm_masked_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_gemm_masked_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      block_masked_gemm<
      -
      {itype},
      -
      {outmasktype},
      -
      {opmasktype},
      -
      {bm},
      -
      {bn},
      -
      {bk},
      -
      {wm},
      -
      {wn},
      -
      {trans_a},
      -
      {trans_b},
      -
      {mn_aligned},
      -
      {k_aligned}>(
      -
      const device {itype}* A [[buffer(0)]],
      -
      const device {itype}* B [[buffer(1)]],
      -
      device {itype}* D [[buffer(3)]],
      -
      const constant GEMMParams* params [[buffer(4)]],
      -
      const constant int* batch_shape [[buffer(6)]],
      -
      const constant size_t* batch_strides [[buffer(7)]],
      -
      const device {outmasktype}* out_mask [[buffer(10)]],
      -
      const device {opmasktype}* lhs_mask [[buffer(11)]],
      -
      const device {opmasktype}* rhs_mask [[buffer(12)]],
      -
      const constant int* mask_strides [[buffer(13)]],
      -
      uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      uint3 tid [[threadgroup_position_in_grid]],
      -
      uint3 lid [[thread_position_in_threadgroup]]);
      -
      )"
      -
      -
      -
      - -

      ◆ steel_gemm_splitk_accum_axbpy_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_gemm_splitk_accum_axbpy_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      gemm_splitk_accum_axpby<{atype}, {otype}>(
      -
      const device {atype}* C_split [[buffer(0)]],
      -
      device {otype}* D [[buffer(1)]],
      -
      const constant int& k_partitions [[buffer(2)]],
      -
      const constant int& partition_stride [[buffer(3)]],
      -
      const constant int& ldd [[buffer(4)]],
      -
      const device {otype}* C [[buffer(5)]],
      -
      const constant int& ldc [[buffer(6)]],
      -
      const constant int& fdc [[buffer(7)]],
      -
      const constant float& alpha [[buffer(8)]],
      -
      const constant float& beta [[buffer(9)]],
      -
      uint2 gid [[thread_position_in_grid]]);
      -
      )"
      -
      -
      -
      - -

      ◆ steel_gemm_splitk_accum_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_gemm_splitk_accum_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      gemm_splitk_accum<{atype}, {otype}>(
      -
      const device {atype}* C_split [[buffer(0)]],
      -
      device {otype}* D [[buffer(1)]],
      -
      const constant int& k_partitions [[buffer(2)]],
      -
      const constant int& partition_stride [[buffer(3)]],
      -
      const constant int& ldd [[buffer(4)]],
      -
      uint2 gid [[thread_position_in_grid]]);
      -
      )"
      -
      -
      -
      - -

      ◆ steel_gemm_splitk_kernels

      - -
      -
      - - - - - -
      - - - - -
      constexpr std::string_view steel_gemm_splitk_kernels
      -
      -constexpr
      -
      -Initial value:
      = R"(
      -
      template [[host_name("{name}")]] [[kernel]] void
      -
      gemm_splitk<
      -
      {itype},
      -
      {otype},
      -
      {bm},
      -
      {bn},
      -
      {bk},
      -
      {wm},
      -
      {wn},
      -
      {trans_a},
      -
      {trans_b},
      -
      {mn_aligned},
      -
      {k_aligned}>(
      -
      const device {itype}* A [[buffer(0)]],
      -
      const device {itype}* B [[buffer(1)]],
      -
      device {otype}* C [[buffer(2)]],
      -
      const constant GEMMSpiltKParams* params [[buffer(3)]],
      -
      uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      uint3 tid [[threadgroup_position_in_grid]],
      -
      uint3 lid [[thread_position_in_threadgroup]]);
      -
      )"
      -
      -
      -
      -
      - - - - diff --git a/docs/build/html/steel__gemm_8h_source.html b/docs/build/html/steel__gemm_8h_source.html deleted file mode 100644 index 5252b0e1..00000000 --- a/docs/build/html/steel__gemm_8h_source.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/jit/steel_gemm.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_gemm.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3constexpr std::string_view steel_gemm_fused_kernels = R"(
      -
      4template [[host_name("{name}")]]
      -
      5[[kernel]] void gemm<{itype}, {bm}, {bn}, {bk}, {wm}, {wn}, {trans_a}, {trans_b}, float>(
      -
      6 const device {itype} *A [[buffer(0)]],
      -
      7 const device {itype} *B [[buffer(1)]],
      -
      8 const device {itype} *C [[buffer(2), function_constant(use_out_source)]],
      -
      9 device {itype} *D [[buffer(3)]],
      -
      10 const constant GEMMParams* params [[buffer(4)]],
      -
      11 const constant GEMMAddMMParams* addmm_params [[buffer(5), function_constant(use_out_source)]],
      -
      12 const constant int* batch_shape [[buffer(6)]],
      -
      13 const constant size_t* batch_strides [[buffer(7)]],
      -
      14 const constant uint32_t* lhs_indices [[buffer(10), function_constant(do_gather)]],
      -
      15 const constant uint32_t* rhs_indices [[buffer(11), function_constant(do_gather)]],
      -
      16 const constant uint32_t* C_indices [[buffer(12), function_constant(gather_bias)]],
      -
      17 const constant int* operand_shape [[buffer(13), function_constant(do_gather)]],
      -
      18 const constant size_t* operand_strides [[buffer(14), function_constant(do_gather)]],
      -
      19 const constant packed_int3& operand_batch_ndim [[buffer(15), function_constant(do_gather)]],
      -
      20 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      21 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      22 uint3 tid [[threadgroup_position_in_grid]],
      -
      23 uint3 lid [[thread_position_in_threadgroup]]);
      -
      24)";
      -
      25
      -
      26constexpr std::string_view steel_gemm_masked_kernels = R"(
      -
      27template [[host_name("{name}")]] [[kernel]] void
      -
      28block_masked_gemm<
      -
      29 {itype},
      -
      30 {outmasktype},
      -
      31 {opmasktype},
      -
      32 {bm},
      -
      33 {bn},
      -
      34 {bk},
      -
      35 {wm},
      -
      36 {wn},
      -
      37 {trans_a},
      -
      38 {trans_b},
      -
      39 {mn_aligned},
      -
      40 {k_aligned}>(
      -
      41 const device {itype}* A [[buffer(0)]],
      -
      42 const device {itype}* B [[buffer(1)]],
      -
      43 device {itype}* D [[buffer(3)]],
      -
      44 const constant GEMMParams* params [[buffer(4)]],
      -
      45 const constant int* batch_shape [[buffer(6)]],
      -
      46 const constant size_t* batch_strides [[buffer(7)]],
      -
      47 const device {outmasktype}* out_mask [[buffer(10)]],
      -
      48 const device {opmasktype}* lhs_mask [[buffer(11)]],
      -
      49 const device {opmasktype}* rhs_mask [[buffer(12)]],
      -
      50 const constant int* mask_strides [[buffer(13)]],
      -
      51 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      52 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      53 uint3 tid [[threadgroup_position_in_grid]],
      -
      54 uint3 lid [[thread_position_in_threadgroup]]);
      -
      55)";
      -
      56
      -
      57constexpr std::string_view steel_gemm_splitk_kernels = R"(
      -
      58template [[host_name("{name}")]] [[kernel]] void
      -
      59gemm_splitk<
      -
      60 {itype},
      -
      61 {otype},
      -
      62 {bm},
      -
      63 {bn},
      -
      64 {bk},
      -
      65 {wm},
      -
      66 {wn},
      -
      67 {trans_a},
      -
      68 {trans_b},
      -
      69 {mn_aligned},
      -
      70 {k_aligned}>(
      -
      71 const device {itype}* A [[buffer(0)]],
      -
      72 const device {itype}* B [[buffer(1)]],
      -
      73 device {otype}* C [[buffer(2)]],
      -
      74 const constant GEMMSpiltKParams* params [[buffer(3)]],
      -
      75 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      76 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      77 uint3 tid [[threadgroup_position_in_grid]],
      -
      78 uint3 lid [[thread_position_in_threadgroup]]);
      -
      79)";
      -
      80
      -
      81constexpr std::string_view steel_gemm_splitk_accum_kernels = R"(
      -
      82template [[host_name("{name}")]] [[kernel]] void
      -
      83gemm_splitk_accum<{atype}, {otype}>(
      -
      84 const device {atype}* C_split [[buffer(0)]],
      -
      85 device {otype}* D [[buffer(1)]],
      -
      86 const constant int& k_partitions [[buffer(2)]],
      -
      87 const constant int& partition_stride [[buffer(3)]],
      -
      88 const constant int& ldd [[buffer(4)]],
      -
      89 uint2 gid [[thread_position_in_grid]]);
      -
      90)";
      -
      91
      -
      92constexpr std::string_view steel_gemm_splitk_accum_axbpy_kernels = R"(
      -
      93template [[host_name("{name}")]] [[kernel]] void
      -
      94gemm_splitk_accum_axpby<{atype}, {otype}>(
      -
      95 const device {atype}* C_split [[buffer(0)]],
      -
      96 device {otype}* D [[buffer(1)]],
      -
      97 const constant int& k_partitions [[buffer(2)]],
      -
      98 const constant int& partition_stride [[buffer(3)]],
      -
      99 const constant int& ldd [[buffer(4)]],
      -
      100 const device {otype}* C [[buffer(5)]],
      -
      101 const constant int& ldc [[buffer(6)]],
      -
      102 const constant int& fdc [[buffer(7)]],
      -
      103 const constant float& alpha [[buffer(8)]],
      -
      104 const constant float& beta [[buffer(9)]],
      -
      105 uint2 gid [[thread_position_in_grid]]);
      -
      106)";
      -
      constexpr std::string_view steel_gemm_splitk_accum_kernels
      Definition steel_gemm.h:81
      -
      constexpr std::string_view steel_gemm_splitk_accum_axbpy_kernels
      Definition steel_gemm.h:92
      -
      constexpr std::string_view steel_gemm_fused_kernels
      Definition steel_gemm.h:3
      -
      constexpr std::string_view steel_gemm_masked_kernels
      Definition steel_gemm.h:26
      -
      constexpr std::string_view steel_gemm_splitk_kernels
      Definition steel_gemm.h:57
      -
      - - - - diff --git a/docs/build/html/steel__gemm__fused_8h.html b/docs/build/html/steel__gemm__fused_8h.html deleted file mode 100644 index 6a7fbe89..00000000 --- a/docs/build/html/steel__gemm__fused_8h.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels/steel_gemm_fused.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_gemm_fused.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - -

      -Functions

      template<typename T , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, typename AccumType = float>
      void gemm (const device T *A, const device T *B, const device T *C, device T *D, const constant GEMMParams *params, const constant GEMMAddMMParams *addmm_params, const constant int *batch_shape, const constant size_t *batch_strides, const constant uint32_t *lhs_indices, const constant uint32_t *rhs_indices, const constant uint32_t *C_indices, const constant int *operand_shape, const constant size_t *operand_strides, const constant packed_int3 &operand_batch_ndim, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
       
      - - - - - - - - - - - - - - - - - -

      -Variables

      constant bool has_batch
       
      constant bool use_out_source
       
      constant bool do_axpby
       
      constant bool align_M
       
      constant bool align_N
       
      constant bool align_K
       
      constant bool do_gather
       
      constant bool gather_bias = do_gather && use_out_source
       
      -

      Function Documentation

      - -

      ◆ gemm()

      - -
      -
      -
      -template<typename T , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, typename AccumType = float>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void gemm (const device T * A,
      const device T * B,
      const device T * C,
      device T * D,
      const constant GEMMParams * params,
      const constant GEMMAddMMParams * addmm_params,
      const constant int * batch_shape,
      const constant size_t * batch_strides,
      const constant uint32_t * lhs_indices,
      const constant uint32_t * rhs_indices,
      const constant uint32_t * C_indices,
      const constant int * operand_shape,
      const constant size_t * operand_strides,
      const constant packed_int3 & operand_batch_ndim,
      uint simd_lane_id,
      uint simd_group_id,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      -

      Variable Documentation

      - -

      ◆ align_K

      - -
      -
      - - - - -
      constant bool align_K
      -
      - -
      -
      - -

      ◆ align_M

      - -
      -
      - - - - -
      constant bool align_M
      -
      - -
      -
      - -

      ◆ align_N

      - -
      -
      - - - - -
      constant bool align_N
      -
      - -
      -
      - -

      ◆ do_axpby

      - -
      -
      - - - - -
      constant bool do_axpby
      -
      - -
      -
      - -

      ◆ do_gather

      - -
      -
      - - - - -
      constant bool do_gather
      -
      - -
      -
      - -

      ◆ gather_bias

      - -
      -
      - - - - -
      constant bool gather_bias = do_gather && use_out_source
      -
      - -
      -
      - -

      ◆ has_batch

      - -
      -
      - - - - -
      constant bool has_batch
      -
      - -
      -
      - -

      ◆ use_out_source

      - -
      -
      - - - - -
      constant bool use_out_source
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/steel__gemm__fused_8h_source.html b/docs/build/html/steel__gemm__fused_8h_source.html deleted file mode 100644 index 2a420b24..00000000 --- a/docs/build/html/steel__gemm__fused_8h_source.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels/steel_gemm_fused.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_gemm_fused.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3using namespace mlx::steel;
      -
      4
      -
      6// GEMM kernels
      -
      8
      -
      9constant bool has_batch [[function_constant(10)]];
      -
      10
      -
      11constant bool use_out_source [[function_constant(100)]];
      -
      12constant bool do_axpby [[function_constant(110)]];
      -
      13
      -
      14constant bool align_M [[function_constant(200)]];
      -
      15constant bool align_N [[function_constant(201)]];
      -
      16constant bool align_K [[function_constant(202)]];
      -
      17
      -
      18constant bool do_gather [[function_constant(300)]];
      -
      19
      - -
      21
      -
      22// clang-format off
      -
      23template <
      -
      24 typename T,
      -
      25 int BM,
      -
      26 int BN,
      -
      27 int BK,
      -
      28 int WM,
      -
      29 int WN,
      -
      30 bool transpose_a,
      -
      31 bool transpose_b,
      -
      32 typename AccumType = float>
      -
      -
      33[[kernel, max_total_threads_per_threadgroup(WM* WN * 32)]] void gemm(
      -
      34 const device T* A [[buffer(0)]],
      -
      35 const device T* B [[buffer(1)]],
      -
      36 const device T* C [[buffer(2), function_constant(use_out_source)]],
      -
      37 device T* D [[buffer(3)]],
      -
      38 const constant GEMMParams* params [[buffer(4)]],
      -
      39 const constant GEMMAddMMParams* addmm_params [[buffer(5), function_constant(use_out_source)]],
      -
      40 const constant int* batch_shape [[buffer(6)]],
      -
      41 const constant size_t* batch_strides [[buffer(7)]],
      -
      42 const constant uint32_t* lhs_indices [[buffer(10), function_constant(do_gather)]],
      -
      43 const constant uint32_t* rhs_indices [[buffer(11), function_constant(do_gather)]],
      -
      44 const constant uint32_t* C_indices [[buffer(12), function_constant(gather_bias)]],
      -
      45 const constant int* operand_shape [[buffer(13), function_constant(do_gather)]],
      -
      46 const constant size_t* operand_strides [[buffer(14), function_constant(do_gather)]],
      -
      47 const constant packed_int3& operand_batch_ndim [[buffer(15), function_constant(do_gather)]],
      -
      48 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      49 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      50 uint3 tid [[threadgroup_position_in_grid]],
      -
      51 uint3 lid [[thread_position_in_threadgroup]]) { // clang-format on
      -
      52 // Pacifying compiler
      -
      53 (void)lid;
      -
      54
      -
      55 using gemm_kernel = GEMMKernel<
      -
      56 T,
      -
      57 T,
      -
      58 BM,
      -
      59 BN,
      -
      60 BK,
      -
      61 WM,
      -
      62 WN,
      -
      63 transpose_a,
      -
      64 transpose_b,
      -
      65 true,
      -
      66 true,
      -
      67 AccumType>;
      -
      68
      -
      69 using loader_a_t = typename gemm_kernel::loader_a_t;
      -
      70 using loader_b_t = typename gemm_kernel::loader_b_t;
      -
      71 using mma_t = typename gemm_kernel::mma_t;
      -
      72
      -
      73 // Find block
      -
      74 const int tid_y = ((tid.y) << params->swizzle_log) +
      -
      75 ((tid.x) & ((1 << params->swizzle_log) - 1));
      -
      76 const int tid_x = (tid.x) >> params->swizzle_log;
      -
      77
      -
      78 // Exit early if out of bounds
      -
      79 if (params->tiles_n <= tid_x || params->tiles_m <= tid_y) {
      -
      80 return;
      -
      81 }
      -
      82
      -
      83 // Adjust for batch
      -
      84
      -
      85 // Handle gather
      -
      86 if (do_gather) {
      -
      87 // Read indices
      -
      88 uint32_t indx_A, indx_B, indx_C;
      -
      89
      -
      90 if (has_batch) {
      -
      91 const constant size_t* indx_A_bstrides = batch_strides;
      -
      92 const constant size_t* indx_B_bstrides =
      -
      93 batch_strides + params->batch_ndim;
      -
      94
      -
      95 ulong2 indx_offsets = elem_to_loc_broadcast(
      -
      96 tid.z,
      -
      97 batch_shape,
      -
      98 indx_A_bstrides,
      -
      99 indx_B_bstrides,
      -
      100 params->batch_ndim);
      -
      101 indx_A = lhs_indices[indx_offsets.x];
      -
      102 indx_B = rhs_indices[indx_offsets.y];
      -
      103
      -
      104 if (use_out_source) {
      -
      105 const constant size_t* indx_C_bstrides =
      -
      106 indx_B_bstrides + params->batch_ndim;
      -
      107 auto indx_offset_C = elem_to_loc(
      -
      108 tid.z, batch_shape, indx_C_bstrides, params->batch_ndim);
      -
      109 indx_C = C_indices[indx_offset_C];
      -
      110 }
      -
      111 } else {
      -
      112 indx_A = lhs_indices[params->batch_stride_a * tid.z];
      -
      113 indx_B = rhs_indices[params->batch_stride_b * tid.z];
      -
      114
      -
      115 if (use_out_source) {
      -
      116 indx_C = C_indices[addmm_params->batch_stride_c * tid.z];
      -
      117 }
      -
      118 }
      -
      119
      -
      120 // Translate indices to offsets
      -
      121 int batch_ndim_A = operand_batch_ndim.x;
      -
      122 const constant int* batch_shape_A = operand_shape;
      -
      123 const constant size_t* batch_strides_A = operand_strides;
      -
      124 A += elem_to_loc(indx_A, batch_shape_A, batch_strides_A, batch_ndim_A);
      -
      125
      -
      126 int batch_ndim_B = operand_batch_ndim.y;
      -
      127 const constant int* batch_shape_B = batch_shape_A + batch_ndim_A;
      -
      128 const constant size_t* batch_strides_B = batch_strides_A + batch_ndim_A;
      -
      129 B += elem_to_loc(indx_B, batch_shape_B, batch_strides_B, batch_ndim_B);
      -
      130
      -
      131 if (use_out_source) {
      -
      132 int batch_ndim_C = operand_batch_ndim.z;
      -
      133 const constant int* batch_shape_C = batch_shape_B + batch_ndim_B;
      -
      134 const constant size_t* batch_strides_C = batch_strides_B + batch_ndim_B;
      -
      135 C += elem_to_loc(indx_C, batch_shape_C, batch_strides_C, batch_ndim_C);
      -
      136 }
      -
      137
      -
      138 }
      -
      139
      -
      140 // Handle regular batch
      -
      141 else {
      -
      142 if (has_batch) {
      -
      143 const constant size_t* A_bstrides = batch_strides;
      -
      144 const constant size_t* B_bstrides = batch_strides + params->batch_ndim;
      -
      145
      -
      146 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      147 tid.z, batch_shape, A_bstrides, B_bstrides, params->batch_ndim);
      -
      148
      -
      149 A += batch_offsets.x;
      -
      150 B += batch_offsets.y;
      -
      151
      -
      152 if (use_out_source) {
      -
      153 const constant size_t* C_bstrides = B_bstrides + params->batch_ndim;
      -
      154 C += elem_to_loc(tid.z, batch_shape, C_bstrides, params->batch_ndim);
      -
      155 }
      -
      156 } else {
      -
      157 A += params->batch_stride_a * tid.z;
      -
      158 B += params->batch_stride_b * tid.z;
      -
      159
      -
      160 if (use_out_source) {
      -
      161 C += addmm_params->batch_stride_c * tid.z;
      -
      162 }
      -
      163 }
      -
      164 }
      -
      165
      -
      166 D += params->batch_stride_d * tid.z;
      -
      167
      -
      168 // Prepare threadgroup memory
      -
      169 threadgroup T As[gemm_kernel::tgp_mem_size_a];
      -
      170 threadgroup T Bs[gemm_kernel::tgp_mem_size_b];
      -
      171
      -
      172 threadgroup_barrier(mem_flags::mem_none);
      -
      173
      -
      174 // Find block in A, B, C
      -
      175 const int c_row = tid_y * BM;
      -
      176 const int c_col = tid_x * BN;
      -
      177 const size_t c_row_long = size_t(c_row);
      -
      178 const size_t c_col_long = size_t(c_col);
      -
      179
      -
      180 A += transpose_a ? c_row_long : c_row_long * params->lda;
      -
      181 B += transpose_b ? c_col_long * params->ldb : c_col_long;
      -
      182 D += c_row_long * params->ldd + c_col_long;
      -
      183
      -
      184 if (use_out_source) {
      -
      185 C += c_row_long * addmm_params->ldc + c_col_long * addmm_params->fdc;
      -
      186 }
      -
      187
      -
      188 // Prepare threadgroup mma operation
      -
      189 thread mma_t mma_op(simd_group_id, simd_lane_id);
      -
      190
      -
      191 // Prepare threadgroup loading operations
      -
      192 thread loader_a_t loader_a(A, params->lda, As, simd_group_id, simd_lane_id);
      -
      193 thread loader_b_t loader_b(B, params->ldb, Bs, simd_group_id, simd_lane_id);
      -
      194
      -
      195 // Prepare threadgroup bounds
      -
      196 const short tgp_bm = align_M ? BM : short(min(BM, params->M - c_row));
      -
      197 const short tgp_bn = align_N ? BN : short(min(BN, params->N - c_col));
      -
      198
      -
      199 // Prepare iterations
      -
      200 int gemm_k_iterations = params->gemm_k_iterations_aligned;
      -
      201
      -
      202 // Do unaligned K iterations first
      -
      203 if (!align_K) {
      -
      204 const int k_last = params->gemm_k_iterations_aligned * BK;
      -
      205 const int k_remain = params->K - k_last;
      -
      206 const size_t k_jump_a =
      -
      207 transpose_a ? params->lda * size_t(k_last) : size_t(k_last);
      -
      208 const size_t k_jump_b =
      -
      209 transpose_b ? size_t(k_last) : params->ldb * size_t(k_last);
      -
      210
      -
      211 // Move loader source ahead to end
      -
      212 loader_a.src += k_jump_a;
      -
      213 loader_b.src += k_jump_b;
      -
      214
      -
      215 // Load tile
      -
      216 const short2 tile_dims_A =
      -
      217 transpose_a ? short2(tgp_bm, k_remain) : short2(k_remain, tgp_bm);
      -
      218 const short2 tile_dims_B =
      -
      219 transpose_b ? short2(k_remain, tgp_bn) : short2(tgp_bn, k_remain);
      -
      220
      -
      221 loader_a.load_safe(tile_dims_A);
      -
      222 loader_b.load_safe(tile_dims_B);
      -
      223
      -
      224 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      225
      -
      226 // Do matmul
      -
      227 mma_op.mma(As, Bs);
      -
      228
      -
      229 // Reset source back to start
      -
      230 loader_a.src -= k_jump_a;
      -
      231 loader_b.src -= k_jump_b;
      -
      232 }
      -
      233
      -
      234 const TransformAdd<AccumType, AccumType> epilogue_op_add(
      -
      235 addmm_params->alpha, addmm_params->beta);
      -
      236 const TransformAxpby<AccumType, AccumType> epilogue_op_axpby(
      -
      237 addmm_params->alpha, addmm_params->beta);
      -
      238
      -
      240 // MNK aligned loop
      -
      241 if (align_M && align_N) {
      -
      242 // Do gemm
      -
      243 for (int k = 0; k < gemm_k_iterations; k++) {
      -
      244 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      245 // Load elements into threadgroup
      -
      246 loader_a.load_unsafe();
      -
      247 loader_b.load_unsafe();
      -
      248
      -
      249 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      250
      -
      251 // Multiply and accumulate threadgroup elements
      -
      252 mma_op.mma(As, Bs);
      -
      253
      -
      254 // Prepare for next iteration
      -
      255 loader_a.next();
      -
      256 loader_b.next();
      -
      257 }
      -
      258
      -
      259 threadgroup_barrier(mem_flags::mem_none);
      -
      260
      -
      261 // Do epilogue
      -
      262 if (use_out_source) {
      -
      263 if (do_axpby) {
      -
      264 mma_op.apply_epilogue(
      -
      265 C, addmm_params->ldc, addmm_params->fdc, epilogue_op_axpby);
      -
      266 } else {
      -
      267 mma_op.apply_epilogue(
      -
      268 C, addmm_params->ldc, addmm_params->fdc, epilogue_op_add);
      -
      269 }
      -
      270 }
      -
      271
      -
      272 // Store results to device memory
      -
      273 return mma_op.store_result(D, params->ldd);
      -
      274
      -
      275 }
      -
      277 // MN unaligned loop
      -
      278 else { // Loop over K - unaligned case
      -
      279 const int leftover_bk = 0;
      -
      280
      -
      281 if ((align_M || tgp_bm == BM) && (align_N || tgp_bn == BN)) {
      -
      282 // Do gemm
      -
      283 gemm_kernel::gemm_loop(
      -
      284 As,
      -
      285 Bs,
      -
      286 gemm_k_iterations,
      -
      287 loader_a,
      -
      288 loader_b,
      -
      289 mma_op,
      -
      290 tgp_bm,
      -
      291 tgp_bn,
      -
      292 leftover_bk,
      - -
      294
      -
      295 // Do epilogue
      -
      296 if (use_out_source) {
      -
      297 if (do_axpby) {
      -
      298 mma_op.apply_epilogue(
      -
      299 C, addmm_params->ldc, addmm_params->fdc, epilogue_op_axpby);
      -
      300 } else {
      -
      301 mma_op.apply_epilogue(
      -
      302 C, addmm_params->ldc, addmm_params->fdc, epilogue_op_add);
      -
      303 }
      -
      304 }
      -
      305
      -
      306 // Store results to device memory
      -
      307 return mma_op.store_result(D, params->ldd);
      -
      308
      -
      309 } else if (align_N || tgp_bn == BN) {
      -
      310 gemm_kernel::gemm_loop(
      -
      311 As,
      -
      312 Bs,
      -
      313 gemm_k_iterations,
      -
      314 loader_a,
      -
      315 loader_b,
      -
      316 mma_op,
      -
      317 tgp_bm,
      -
      318 tgp_bn,
      -
      319 leftover_bk,
      - -
      321
      -
      322 // Do epilogue
      -
      323 if (use_out_source) {
      -
      324 if (do_axpby) {
      -
      325 mma_op.apply_epilogue_safe(
      -
      326 C,
      -
      327 addmm_params->ldc,
      -
      328 addmm_params->fdc,
      -
      329 short2(tgp_bn, tgp_bm),
      -
      330 epilogue_op_axpby);
      -
      331 } else {
      -
      332 mma_op.apply_epilogue_safe(
      -
      333 C,
      -
      334 addmm_params->ldc,
      -
      335 addmm_params->fdc,
      -
      336 short2(tgp_bn, tgp_bm),
      -
      337 epilogue_op_add);
      -
      338 }
      -
      339 }
      -
      340
      -
      341 // Store results to device memory
      -
      342 return mma_op.store_result_safe(D, params->ldd, short2(tgp_bn, tgp_bm));
      -
      343
      -
      344 } else if (align_M || tgp_bm == BM) {
      -
      345 gemm_kernel::gemm_loop(
      -
      346 As,
      -
      347 Bs,
      -
      348 gemm_k_iterations,
      -
      349 loader_a,
      -
      350 loader_b,
      -
      351 mma_op,
      -
      352 tgp_bm,
      -
      353 tgp_bn,
      -
      354 leftover_bk,
      - -
      356
      -
      357 // Do epilogue
      -
      358 if (use_out_source) {
      -
      359 if (do_axpby) {
      -
      360 mma_op.apply_epilogue_safe(
      -
      361 C,
      -
      362 addmm_params->ldc,
      -
      363 addmm_params->fdc,
      -
      364 short2(tgp_bn, tgp_bm),
      -
      365 epilogue_op_axpby);
      -
      366 } else {
      -
      367 mma_op.apply_epilogue_safe(
      -
      368 C,
      -
      369 addmm_params->ldc,
      -
      370 addmm_params->fdc,
      -
      371 short2(tgp_bn, tgp_bm),
      -
      372 epilogue_op_add);
      -
      373 }
      -
      374 }
      -
      375
      -
      376 // Store results to device memory
      -
      377 return mma_op.store_result_safe(D, params->ldd, short2(tgp_bn, tgp_bm));
      -
      378
      -
      379 } else {
      -
      380 gemm_kernel::gemm_loop(
      -
      381 As,
      -
      382 Bs,
      -
      383 gemm_k_iterations,
      -
      384 loader_a,
      -
      385 loader_b,
      -
      386 mma_op,
      -
      387 tgp_bm,
      -
      388 tgp_bn,
      -
      389 leftover_bk,
      - -
      391
      -
      392 // Do epilogue
      -
      393 if (use_out_source) {
      -
      394 if (do_axpby) {
      -
      395 mma_op.apply_epilogue_safe(
      -
      396 C,
      -
      397 addmm_params->ldc,
      -
      398 addmm_params->fdc,
      -
      399 short2(tgp_bn, tgp_bm),
      -
      400 epilogue_op_axpby);
      -
      401 } else {
      -
      402 mma_op.apply_epilogue_safe(
      -
      403 C,
      -
      404 addmm_params->ldc,
      -
      405 addmm_params->fdc,
      -
      406 short2(tgp_bn, tgp_bm),
      -
      407 epilogue_op_add);
      -
      408 }
      -
      409 }
      -
      410
      -
      411 // Store results to device memory
      -
      412 return mma_op.store_result_safe(D, params->ldd, short2(tgp_bn, tgp_bm));
      -
      413 }
      -
      414 }
      -
      415}
      -
      -
      METAL_FUNC ulong2 elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
      Definition utils.h:7
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Definition loader_channel_l.h:14
      -
      constant bool use_out_source
      Definition steel_gemm_fused.h:11
      -
      constant bool align_M
      Definition steel_gemm_fused.h:14
      -
      constant bool do_gather
      Definition steel_gemm_fused.h:18
      -
      constant bool do_axpby
      Definition steel_gemm_fused.h:12
      -
      constant bool align_K
      Definition steel_gemm_fused.h:16
      -
      constant bool align_N
      Definition steel_gemm_fused.h:15
      -
      void gemm(const device T *A, const device T *B, const device T *C, device T *D, const constant GEMMParams *params, const constant GEMMAddMMParams *addmm_params, const constant int *batch_shape, const constant size_t *batch_strides, const constant uint32_t *lhs_indices, const constant uint32_t *rhs_indices, const constant uint32_t *C_indices, const constant int *operand_shape, const constant size_t *operand_strides, const constant packed_int3 &operand_batch_ndim, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
      Definition steel_gemm_fused.h:33
      -
      constant bool gather_bias
      Definition steel_gemm_fused.h:20
      -
      constant bool has_batch
      Definition steel_gemm_fused.h:9
      -
      Definition params.h:53
      -
      Definition gemm.h:37
      -
      Definition params.h:12
      -
      Definition gemm.h:21
      -
      Definition transforms.h:26
      -
      Definition transforms.h:39
      -
      - - - - diff --git a/docs/build/html/steel__gemm__masked_8h.html b/docs/build/html/steel__gemm__masked_8h.html deleted file mode 100644 index 357b4e7d..00000000 --- a/docs/build/html/steel__gemm__masked_8h.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels/steel_gemm_masked.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_gemm_masked.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - -

      -Classes

      struct  _NoMask
       
      struct  ScaleOp< OutT, InT >
       
      - - - -

      -Typedefs

      typedef struct _NoMask nomask_t
       
      - - - - - - - -

      -Functions

      template<typename T , typename out_mask_t , typename op_mask_t , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned>
      void block_masked_gemm (const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device out_mask_t *out_mask, const device op_mask_t *lhs_mask, const device op_mask_t *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
       
      template<typename T , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, bool has_operand_mask = false>
      void block_masked_gemm (const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device bool *out_mask, const device bool *lhs_mask, const device bool *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
       
      -

      Typedef Documentation

      - -

      ◆ nomask_t

      - -
      -
      - - - - -
      typedef struct _NoMask nomask_t
      -
      - -
      -
      -

      Function Documentation

      - -

      ◆ block_masked_gemm() [1/2]

      - -
      -
      -
      -template<typename T , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, bool has_operand_mask = false>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void block_masked_gemm (const device T * A,
      const device T * B,
      device T * D,
      const constant GEMMParams * params,
      const constant int * batch_shape,
      const constant size_t * batch_strides,
      const device bool * out_mask,
      const device bool * lhs_mask,
      const device bool * rhs_mask,
      const constant int * mask_strides,
      uint simd_lane_id,
      uint simd_group_id,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      - -

      ◆ block_masked_gemm() [2/2]

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void block_masked_gemm (const device T * A,
      const device T * B,
      device T * D,
      const constant GEMMParams * params,
      const constant int * batch_shape,
      const constant size_t * batch_strides,
      const device out_mask_t * out_mask,
      const device op_mask_t * lhs_mask,
      const device op_mask_t * rhs_mask,
      const constant int * mask_strides,
      uint simd_lane_id,
      uint simd_group_id,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/steel__gemm__masked_8h_source.html b/docs/build/html/steel__gemm__masked_8h_source.html deleted file mode 100644 index 833b206e..00000000 --- a/docs/build/html/steel__gemm__masked_8h_source.html +++ /dev/null @@ -1,833 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels/steel_gemm_masked.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_gemm_masked.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      - -
      4using namespace metal;
      -
      5using namespace mlx::steel;
      -
      6
      -
      8// GEMM kernels
      -
      10
      -
      11struct _NoMask {
      -
      12 char x;
      -
      13
      -
      -
      14 constexpr METAL_FUNC operator bool() {
      -
      15 return true;
      -
      16 }
      -
      -
      -
      17 constexpr METAL_FUNC operator bool() const threadgroup {
      -
      18 return true;
      -
      19 }
      -
      -
      -
      20 constexpr METAL_FUNC operator bool() const device {
      -
      21 return true;
      -
      22 }
      -
      -
      -
      23 constexpr METAL_FUNC operator bool() const constant {
      -
      24 return true;
      -
      25 }
      -
      -
      26};
      -
      27
      -
      28template <typename OutT, typename InT = OutT>
      -
      29struct ScaleOp {
      -
      30 OutT scale;
      -
      31
      -
      -
      32 METAL_FUNC OutT apply(InT x) const {
      -
      33 return static_cast<OutT>(x) * scale;
      -
      34 }
      -
      -
      35};
      -
      36
      -
      37typedef struct _NoMask nomask_t;
      -
      38
      -
      39template <
      -
      40 typename T,
      -
      41 typename out_mask_t,
      -
      42 typename op_mask_t,
      -
      43 int BM,
      -
      44 int BN,
      -
      45 int BK,
      -
      46 int WM,
      -
      47 int WN,
      -
      48 bool transpose_a,
      -
      49 bool transpose_b,
      -
      50 bool MN_aligned,
      -
      51 bool K_aligned>
      -
      52[[kernel, max_total_threads_per_threadgroup(WM* WN * 32)]] void
      -
      - -
      54 const device T* A [[buffer(0)]],
      -
      55 const device T* B [[buffer(1)]],
      -
      56 device T* D [[buffer(3)]],
      -
      57 const constant GEMMParams* params [[buffer(4)]],
      -
      58 const constant int* batch_shape [[buffer(6)]],
      -
      59 const constant size_t* batch_strides [[buffer(7)]],
      -
      60 const device out_mask_t* out_mask [[buffer(10)]],
      -
      61 const device op_mask_t* lhs_mask [[buffer(11)]],
      -
      62 const device op_mask_t* rhs_mask [[buffer(12)]],
      -
      63 const constant int* mask_strides [[buffer(13)]],
      -
      64 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      65 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      66 uint3 tid [[threadgroup_position_in_grid]],
      -
      67 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      68 // Appease the compiler
      -
      69 (void)lid;
      -
      70
      -
      71 static_assert(
      -
      72 BM == BN,
      -
      73 "block_masked_gemm must have the same block M and block N size");
      -
      74 static_assert(BM % BK == 0, "block_masked_gemm must have BM % BK == 0");
      -
      75
      -
      76 constexpr bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>;
      -
      77 constexpr bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>;
      -
      78
      -
      79 constexpr bool has_mul_operand_mask =
      -
      80 has_operand_mask && !metal::is_same_v<op_mask_t, bool>;
      -
      81 constexpr bool has_mul_output_mask =
      -
      82 has_output_mask && !metal::is_same_v<out_mask_t, bool>;
      -
      83
      -
      84 constexpr short k_mask_factor = short(BM / BK);
      -
      85
      -
      86 using gemm_kernel = GEMMKernel<
      -
      87 T,
      -
      88 T,
      -
      89 BM,
      -
      90 BN,
      -
      91 BK,
      -
      92 WM,
      -
      93 WN,
      -
      94 transpose_a,
      -
      95 transpose_b,
      -
      96 MN_aligned,
      -
      97 K_aligned>;
      -
      98
      -
      99 const int tid_y = ((tid.y) << params->swizzle_log) +
      -
      100 ((tid.x) & ((1 << params->swizzle_log) - 1));
      -
      101 const int tid_x = (tid.x) >> params->swizzle_log;
      -
      102
      -
      103 if (params->tiles_n <= tid_x || params->tiles_m <= tid_y) {
      -
      104 return;
      -
      105 }
      -
      106
      -
      107 const constant size_t* mask_batch_strides =
      -
      108 batch_strides + 2 * params->batch_ndim;
      -
      109
      -
      110 if (params->batch_ndim > 1) {
      -
      111 if (has_output_mask) {
      -
      112 out_mask += elem_to_loc(
      -
      113 tid.z, batch_shape, mask_batch_strides, params->batch_ndim);
      -
      114
      -
      115 mask_batch_strides += params->batch_ndim;
      -
      116 }
      -
      117
      -
      118 if (has_operand_mask) {
      -
      119 const constant size_t* mask_strides_lhs = mask_batch_strides;
      -
      120 const constant size_t* mask_strides_rhs =
      -
      121 mask_strides_lhs + params->batch_ndim;
      -
      122
      -
      123 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      124 tid.z,
      -
      125 batch_shape,
      -
      126 mask_strides_lhs,
      -
      127 mask_strides_rhs,
      -
      128 params->batch_ndim);
      -
      129
      -
      130 lhs_mask += batch_offsets.x;
      -
      131 rhs_mask += batch_offsets.y;
      -
      132 }
      -
      133 } else {
      -
      134 if (has_output_mask) {
      -
      135 out_mask += tid.z * mask_batch_strides[0];
      -
      136 mask_batch_strides += params->batch_ndim;
      -
      137 }
      -
      138
      -
      139 if (has_operand_mask) {
      -
      140 lhs_mask += tid.z * mask_batch_strides[0];
      -
      141 rhs_mask += tid.z * mask_batch_strides[params->batch_ndim];
      -
      142 }
      -
      143 }
      -
      144
      -
      145 // Adjust for batch
      -
      146 if (params->batch_ndim > 1) {
      -
      147 const constant size_t* A_bstrides = batch_strides;
      -
      148 const constant size_t* B_bstrides = batch_strides + params->batch_ndim;
      -
      149
      -
      150 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      151 tid.z, batch_shape, A_bstrides, B_bstrides, params->batch_ndim);
      -
      152
      -
      153 A += batch_offsets.x;
      -
      154 B += batch_offsets.y;
      -
      155
      -
      156 } else {
      -
      157 A += params->batch_stride_a * tid.z;
      -
      158 B += params->batch_stride_b * tid.z;
      -
      159 }
      -
      160
      -
      161 D += params->batch_stride_d * tid.z;
      -
      162
      -
      163 // Find block in A, B, C
      -
      164 const int c_row = tid_y * BM;
      -
      165 const int c_col = tid_x * BN;
      -
      166 const size_t c_row_long = size_t(c_row);
      -
      167 const size_t c_col_long = size_t(c_col);
      -
      168
      -
      169 A += transpose_a ? c_row_long : c_row_long * params->lda;
      -
      170 B += transpose_b ? c_col_long * params->ldb : c_col_long;
      -
      171 D += c_row_long * params->ldd + c_col_long;
      -
      172
      -
      173 const constant int* out_mask_strides = mask_strides;
      -
      174 const constant int* lhs_mask_strides =
      -
      175 mask_strides + (has_output_mask ? 2 : 0);
      -
      176 const constant int* rhs_mask_strides =
      -
      177 lhs_mask_strides + (has_operand_mask ? 2 : 0);
      -
      178
      -
      179 const int out_mask_offset = !has_output_mask
      -
      180 ? 0
      -
      181 : tid_y * out_mask_strides[1] + tid_x * out_mask_strides[0];
      -
      182 int lhs_mask_offset = !has_operand_mask ? 0 : tid_y * lhs_mask_strides[1];
      -
      183 int rhs_mask_offset = !has_operand_mask ? 0 : tid_x * rhs_mask_strides[0];
      -
      184 const int lhs_mask_step = !has_operand_mask ? 0 : lhs_mask_strides[0];
      -
      185 const int rhs_mask_step = !has_operand_mask ? 0 : rhs_mask_strides[1];
      -
      186 short k_factor_cnt = k_mask_factor;
      -
      187
      -
      188 ScaleOp<float> out_mask_op;
      -
      189 ScaleOp<T> lhs_mask_op;
      -
      190 ScaleOp<T> rhs_mask_op;
      -
      191
      -
      192 if (has_output_mask) {
      -
      193 auto mask_out = out_mask[out_mask_offset];
      -
      194
      -
      195 if (has_mul_output_mask) {
      -
      196 out_mask_op.scale = float(mask_out);
      -
      197 }
      -
      198
      -
      199 // Write zeros and return
      -
      200 if (!mask_out) {
      -
      201 constexpr short tgp_size = WM * WN * 32;
      -
      202 constexpr short vec_size = 4;
      -
      203
      -
      204 // Tile threads in threadgroup
      -
      205 constexpr short TN = BN / vec_size;
      -
      206 constexpr short TM = tgp_size / TN;
      -
      207
      -
      208 const short thread_idx = simd_group_id * 32 + simd_lane_id;
      -
      209 const short bi = thread_idx / TN;
      -
      210 const short bj = vec_size * (thread_idx % TN);
      -
      211
      -
      212 D += bi * params->ldd + bj;
      -
      213
      -
      214 short tgp_bm = min(BM, params->M - c_row);
      -
      215 short tgp_bn = min(BN, params->N - c_col);
      -
      216
      -
      217 if (MN_aligned || (tgp_bm == BM && tgp_bn == BN)) {
      -
      218 for (short ti = 0; ti < BM; ti += TM) {
      - -
      220 for (short j = 0; j < vec_size; j++) {
      -
      221 D[ti * params->ldd + j] = T(0.);
      -
      222 }
      -
      223 }
      -
      224 } else {
      -
      225 short jmax = tgp_bn - bj;
      -
      226 jmax = jmax < vec_size ? jmax : vec_size;
      -
      227 for (short ti = 0; (bi + ti) < tgp_bm; ti += TM) {
      -
      228 for (short j = 0; j < jmax; j++) {
      -
      229 D[ti * params->ldd + j] = T(0.);
      -
      230 }
      -
      231 }
      -
      232 }
      -
      233
      -
      234 return;
      -
      235 }
      -
      236 }
      -
      237
      -
      238 threadgroup_barrier(mem_flags::mem_none);
      -
      239
      -
      240 // Prepare threadgroup mma operation
      -
      241 thread typename gemm_kernel::mma_t mma_op(simd_group_id, simd_lane_id);
      -
      242
      -
      243 threadgroup T As[gemm_kernel::tgp_mem_size_a];
      -
      244 threadgroup T Bs[gemm_kernel::tgp_mem_size_b];
      -
      245
      -
      246 // Prepare threadgroup loading operations
      -
      247 thread typename gemm_kernel::loader_a_t loader_a(
      -
      248 A, params->lda, As, simd_group_id, simd_lane_id);
      -
      249 thread typename gemm_kernel::loader_b_t loader_b(
      -
      250 B, params->ldb, Bs, simd_group_id, simd_lane_id);
      -
      251
      -
      252 // Prepare threadgroup bounds
      -
      253 const short tgp_bm =
      -
      254 MN_aligned ? short(BM) : short(min(BM, params->M - c_row));
      -
      255 const short tgp_bn =
      -
      256 MN_aligned ? short(BN) : short(min(BN, params->N - c_col));
      -
      257
      -
      258 int gemm_k_iterations = params->gemm_k_iterations_aligned;
      -
      259
      -
      261 // Do unaligned K iterations first
      -
      262 if (!K_aligned) {
      -
      263 const int k_last = params->gemm_k_iterations_aligned * BK;
      -
      264 const int mask_idx_last = k_last / BM;
      -
      265
      -
      266 if (!has_operand_mask ||
      -
      267 (bool(lhs_mask[lhs_mask_offset + mask_idx_last * lhs_mask_step]) &&
      -
      268 bool(rhs_mask[rhs_mask_offset + mask_idx_last * rhs_mask_step]))) {
      -
      269 if (has_mul_operand_mask) {
      -
      270 lhs_mask_op.scale =
      -
      271 lhs_mask[lhs_mask_offset + mask_idx_last * lhs_mask_step];
      -
      272 rhs_mask_op.scale =
      -
      273 rhs_mask[rhs_mask_offset + mask_idx_last * rhs_mask_step];
      -
      274 }
      -
      275
      -
      276 // Move loader source ahead to end
      -
      277 const int k_remain = params->K - k_last;
      -
      278 const size_t k_jump_a =
      -
      279 transpose_a ? params->lda * size_t(k_last) : size_t(k_last);
      -
      280 const size_t k_jump_b =
      -
      281 transpose_b ? size_t(k_last) : params->ldb * size_t(k_last);
      -
      282
      -
      283 loader_a.src += k_jump_a;
      -
      284 loader_b.src += k_jump_b;
      -
      285
      -
      286 // Load tile
      -
      287 const short2 tile_dims_A =
      -
      288 transpose_a ? short2(tgp_bm, k_remain) : short2(k_remain, tgp_bm);
      -
      289 const short2 tile_dims_B =
      -
      290 transpose_b ? short2(k_remain, tgp_bn) : short2(tgp_bn, k_remain);
      -
      291
      -
      292 loader_a.load_safe(tile_dims_A);
      -
      293 loader_b.load_safe(tile_dims_B);
      -
      294
      -
      295 if (has_mul_operand_mask) {
      -
      296 loader_a.apply_inplace_op(lhs_mask_op);
      -
      297 loader_b.apply_inplace_op(rhs_mask_op);
      -
      298 }
      -
      299
      -
      300 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      301
      -
      302 // Do matmul
      -
      303 mma_op.mma(As, Bs);
      -
      304
      -
      305 // Reset source back to start
      -
      306 loader_a.src -= k_jump_a;
      -
      307 loader_b.src -= k_jump_b;
      -
      308 }
      -
      309 }
      -
      310
      -
      312 // MNK aligned loop
      -
      313 if (MN_aligned) {
      -
      314 for (; gemm_k_iterations > 0; gemm_k_iterations--) {
      -
      315 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      316
      -
      317 if (!has_operand_mask ||
      -
      318 (bool(lhs_mask[lhs_mask_offset]) &&
      -
      319 bool(rhs_mask[rhs_mask_offset]))) {
      -
      320 if (has_mul_operand_mask) {
      -
      321 lhs_mask_op.scale = lhs_mask[lhs_mask_offset];
      -
      322 rhs_mask_op.scale = rhs_mask[rhs_mask_offset];
      -
      323 }
      -
      324
      -
      325 // Load elements into threadgroup
      -
      326 loader_a.load_unsafe();
      -
      327 loader_b.load_unsafe();
      -
      328
      -
      329 if (has_mul_operand_mask) {
      -
      330 loader_a.apply_inplace_op(lhs_mask_op);
      -
      331 loader_b.apply_inplace_op(rhs_mask_op);
      -
      332 }
      -
      333
      -
      334 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      335
      -
      336 // Multiply and accumulate threadgroup elements
      -
      337 mma_op.mma(As, Bs);
      -
      338 }
      -
      339
      -
      340 // Prepare for next iteration
      -
      341 loader_a.next();
      -
      342 loader_b.next();
      -
      343
      -
      344 k_factor_cnt--;
      -
      345 lhs_mask_offset += k_factor_cnt == 0 ? lhs_mask_step : 0;
      -
      346 rhs_mask_offset += k_factor_cnt == 0 ? rhs_mask_step : 0;
      -
      347 k_factor_cnt = k_factor_cnt == 0 ? k_mask_factor : k_factor_cnt;
      -
      348 }
      -
      349
      -
      350 if (has_mul_output_mask) {
      -
      351 mma_op.apply_epilogue(out_mask_op);
      -
      352 }
      -
      353
      -
      354 // Store results to device memory
      -
      355 mma_op.store_result(D, params->ldd);
      -
      356 return;
      -
      357
      -
      358 }
      -
      360 // MN unaligned loop
      -
      361 else {
      -
      362 const bool M_aligned = (tgp_bm == BM);
      -
      363 const bool N_aligned = (tgp_bn == BN);
      -
      364
      -
      365 const short2 tile_dims_A =
      -
      366 transpose_a ? short2(tgp_bm, BK) : short2(BK, tgp_bm);
      -
      367 const short2 tile_dims_B =
      -
      368 transpose_b ? short2(BK, tgp_bn) : short2(tgp_bn, BK);
      -
      369
      -
      370 for (; gemm_k_iterations > 0; gemm_k_iterations--) {
      -
      371 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      372 if (!has_operand_mask ||
      -
      373 (bool(lhs_mask[lhs_mask_offset]) &&
      -
      374 bool(rhs_mask[rhs_mask_offset]))) {
      -
      375 if (has_mul_operand_mask) {
      -
      376 lhs_mask_op.scale = lhs_mask[lhs_mask_offset];
      -
      377 rhs_mask_op.scale = rhs_mask[rhs_mask_offset];
      -
      378 }
      -
      379
      -
      380 // Load elements into threadgroup
      -
      381 if (M_aligned) {
      -
      382 loader_a.load_unsafe();
      -
      383 } else {
      -
      384 loader_a.load_safe(tile_dims_A);
      -
      385 }
      -
      386
      -
      387 if (N_aligned) {
      -
      388 loader_b.load_unsafe();
      -
      389 } else {
      -
      390 loader_b.load_safe(tile_dims_B);
      -
      391 }
      -
      392
      -
      393 if (has_mul_operand_mask) {
      -
      394 loader_a.apply_inplace_op(lhs_mask_op);
      -
      395 loader_b.apply_inplace_op(rhs_mask_op);
      -
      396 }
      -
      397
      -
      398 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      399
      -
      400 // Multiply and accumulate threadgroup elements
      -
      401 mma_op.mma(As, Bs);
      -
      402 }
      -
      403
      -
      404 // Prepare for next iteration
      -
      405 loader_a.next();
      -
      406 loader_b.next();
      -
      407
      -
      408 k_factor_cnt--;
      -
      409 lhs_mask_offset += k_factor_cnt == 0 ? lhs_mask_step : 0;
      -
      410 rhs_mask_offset += k_factor_cnt == 0 ? rhs_mask_step : 0;
      -
      411 k_factor_cnt = k_factor_cnt == 0 ? k_mask_factor : k_factor_cnt;
      -
      412 }
      -
      413
      -
      414 if (has_mul_output_mask) {
      -
      415 mma_op.apply_epilogue(out_mask_op);
      -
      416 }
      -
      417
      -
      418 if (M_aligned && N_aligned) {
      -
      419 mma_op.store_result(D, params->ldd);
      -
      420 } else {
      -
      421 mma_op.store_result_safe(D, params->ldd, short2(tgp_bn, tgp_bm));
      -
      422 }
      -
      423 }
      -
      424}
      -
      -
      425
      -
      426template <
      -
      427 typename T,
      -
      428 int BM,
      -
      429 int BN,
      -
      430 int BK,
      -
      431 int WM,
      -
      432 int WN,
      -
      433 bool transpose_a,
      -
      434 bool transpose_b,
      -
      435 bool MN_aligned,
      -
      436 bool K_aligned,
      -
      437 bool has_operand_mask = false>
      -
      438[[kernel, max_total_threads_per_threadgroup(WM* WN * 32)]] void
      -
      - -
      440 const device T* A [[buffer(0)]],
      -
      441 const device T* B [[buffer(1)]],
      -
      442 device T* D [[buffer(3)]],
      -
      443 const constant GEMMParams* params [[buffer(4)]],
      -
      444 const constant int* batch_shape [[buffer(6)]],
      -
      445 const constant size_t* batch_strides [[buffer(7)]],
      -
      446 const device bool* out_mask [[buffer(10)]],
      -
      447 const device bool* lhs_mask [[buffer(11)]],
      -
      448 const device bool* rhs_mask [[buffer(12)]],
      -
      449 const constant int* mask_strides [[buffer(13)]],
      -
      450 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      451 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      452 uint3 tid [[threadgroup_position_in_grid]],
      -
      453 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      454 // Appease the compiler
      -
      455 (void)lid;
      -
      456
      -
      457 using gemm_kernel = GEMMKernel<
      -
      458 T,
      -
      459 T,
      -
      460 BM,
      -
      461 BN,
      -
      462 BK,
      -
      463 WM,
      -
      464 WN,
      -
      465 transpose_a,
      -
      466 transpose_b,
      -
      467 MN_aligned,
      -
      468 K_aligned>;
      -
      469
      -
      470 const int tid_y = ((tid.y) << params->swizzle_log) +
      -
      471 ((tid.x) & ((1 << params->swizzle_log) - 1));
      -
      472 const int tid_x = (tid.x) >> params->swizzle_log;
      -
      473
      -
      474 if (params->tiles_n <= tid_x || params->tiles_m <= tid_y) {
      -
      475 return;
      -
      476 }
      -
      477
      -
      478 if (params->batch_ndim > 1) {
      -
      479 const constant size_t* mask_batch_strides =
      -
      480 batch_strides + 2 * params->batch_ndim;
      -
      481 out_mask +=
      -
      482 elem_to_loc(tid.z, batch_shape, mask_batch_strides, params->batch_ndim);
      -
      483
      -
      484 if (has_operand_mask) {
      -
      485 const constant size_t* mask_strides_lhs =
      -
      486 mask_batch_strides + params->batch_ndim;
      -
      487 const constant size_t* mask_strides_rhs =
      -
      488 mask_strides_lhs + params->batch_ndim;
      -
      489
      -
      490 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      491 tid.z,
      -
      492 batch_shape,
      -
      493 mask_strides_lhs,
      -
      494 mask_strides_rhs,
      -
      495 params->batch_ndim);
      -
      496
      -
      497 lhs_mask += batch_offsets.x;
      -
      498 rhs_mask += batch_offsets.y;
      -
      499 }
      -
      500 } else {
      -
      501 out_mask += tid.z * batch_strides[2 * params->batch_ndim];
      -
      502 if (has_operand_mask) {
      -
      503 lhs_mask += tid.z * batch_strides[3 * params->batch_ndim];
      -
      504 rhs_mask += tid.z * batch_strides[4 * params->batch_ndim];
      -
      505 }
      -
      506 }
      -
      507
      -
      508 // Adjust for batch
      -
      509 if (params->batch_ndim > 1) {
      -
      510 const constant size_t* A_bstrides = batch_strides;
      -
      511 const constant size_t* B_bstrides = batch_strides + params->batch_ndim;
      -
      512
      -
      513 ulong2 batch_offsets = elem_to_loc_broadcast(
      -
      514 tid.z, batch_shape, A_bstrides, B_bstrides, params->batch_ndim);
      -
      515
      -
      516 A += batch_offsets.x;
      -
      517 B += batch_offsets.y;
      -
      518
      -
      519 } else {
      -
      520 A += params->batch_stride_a * tid.z;
      -
      521 B += params->batch_stride_b * tid.z;
      -
      522 }
      -
      523
      -
      524 D += params->batch_stride_d * tid.z;
      -
      525
      -
      526 // Find block in A, B, C
      -
      527 const int c_row = tid_y * BM;
      -
      528 const int c_col = tid_x * BN;
      -
      529 const size_t c_row_long = size_t(c_row);
      -
      530 const size_t c_col_long = size_t(c_col);
      -
      531
      -
      532 A += transpose_a ? c_row_long : c_row_long * params->lda;
      -
      533 B += transpose_b ? c_col_long * params->ldb : c_col_long;
      -
      534 D += c_row_long * params->ldd + c_col_long;
      -
      535
      -
      536 bool mask_out = out_mask[tid_y * mask_strides[1] + tid_x * mask_strides[0]];
      -
      537
      -
      538 // Write zeros and return
      -
      539 if (!mask_out) {
      -
      540 constexpr short tgp_size = WM * WN * 32;
      -
      541 constexpr short vec_size = 4;
      -
      542
      -
      543 // Tile threads in threadgroup
      -
      544 constexpr short TN = BN / vec_size;
      -
      545 constexpr short TM = tgp_size / TN;
      -
      546
      -
      547 const short thread_idx = simd_group_id * 32 + simd_lane_id;
      -
      548 const short bi = thread_idx / TN;
      -
      549 const short bj = vec_size * (thread_idx % TN);
      -
      550
      -
      551 D += bi * params->ldd + bj;
      -
      552
      -
      553 short tgp_bm = min(BM, params->M - c_row);
      -
      554 short tgp_bn = min(BN, params->N - c_col);
      -
      555
      -
      556 if (MN_aligned || (tgp_bm == BM && tgp_bn == BN)) {
      -
      557 for (short ti = 0; ti < BM; ti += TM) {
      - -
      559 for (short j = 0; j < vec_size; j++) {
      -
      560 D[ti * params->ldd + j] = T(0.);
      -
      561 }
      -
      562 }
      -
      563 } else {
      -
      564 short jmax = tgp_bn - bj;
      -
      565 jmax = jmax < vec_size ? jmax : vec_size;
      -
      566 for (short ti = 0; (bi + ti) < tgp_bm; ti += TM) {
      -
      567 for (short j = 0; j < jmax; j++) {
      -
      568 D[ti * params->ldd + j] = T(0.);
      -
      569 }
      -
      570 }
      -
      571 }
      -
      572
      -
      573 return;
      -
      574 }
      -
      575
      -
      576 threadgroup_barrier(mem_flags::mem_none);
      -
      577
      -
      578 // Prepare threadgroup mma operation
      -
      579 thread typename gemm_kernel::mma_t mma_op(simd_group_id, simd_lane_id);
      -
      580
      -
      581 int gemm_k_iterations = params->gemm_k_iterations_aligned;
      -
      582
      -
      583 threadgroup T As[gemm_kernel::tgp_mem_size_a];
      -
      584 threadgroup T Bs[gemm_kernel::tgp_mem_size_b];
      -
      585
      -
      586 // Prepare threadgroup loading operations
      -
      587 thread typename gemm_kernel::loader_a_t loader_a(
      -
      588 A, params->lda, As, simd_group_id, simd_lane_id);
      -
      589 thread typename gemm_kernel::loader_b_t loader_b(
      -
      590 B, params->ldb, Bs, simd_group_id, simd_lane_id);
      -
      591
      -
      593 // MNK aligned loop
      -
      594 if (MN_aligned) {
      -
      595 for (int k = 0; k < gemm_k_iterations; k++) {
      -
      596 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      597
      -
      598 if (!has_operand_mask ||
      -
      599 (lhs_mask
      -
      600 [tid_y * mask_strides[3] + ((k * BK) / BM) * mask_strides[2]] &&
      -
      601 rhs_mask
      -
      602 [((k * BK) / BM) * mask_strides[5] + tid_x * mask_strides[4]])) {
      -
      603 // Load elements into threadgroup
      -
      604 loader_a.load_unsafe();
      -
      605 loader_b.load_unsafe();
      -
      606
      -
      607 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      608
      -
      609 // Multiply and accumulate threadgroup elements
      -
      610 mma_op.mma(As, Bs);
      -
      611 }
      -
      612
      -
      613 // Prepare for next iteration
      -
      614 loader_a.next();
      -
      615 loader_b.next();
      -
      616 }
      -
      617
      -
      618 threadgroup_barrier(mem_flags::mem_none);
      -
      619
      -
      620 // Loop tail
      -
      621 if (!K_aligned) {
      -
      622 if (!has_operand_mask ||
      -
      623 (lhs_mask
      -
      624 [tid_y * mask_strides[3] + (params->K / BM) * mask_strides[2]] &&
      -
      625 rhs_mask
      -
      626 [(params->K / BM) * mask_strides[5] +
      -
      627 tid_x * mask_strides[4]])) {
      -
      628 int lbk = params->K - params->gemm_k_iterations_aligned * BK;
      -
      629 short2 tile_dims_A = transpose_a ? short2(BM, lbk) : short2(lbk, BM);
      -
      630 short2 tile_dims_B = transpose_b ? short2(lbk, BN) : short2(BN, lbk);
      -
      631
      -
      632 loader_a.load_safe(tile_dims_A);
      -
      633 loader_b.load_safe(tile_dims_B);
      -
      634
      -
      635 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      636
      -
      637 mma_op.mma(As, Bs);
      -
      638 }
      -
      639 }
      -
      640
      -
      641 // Store results to device memory
      -
      642 mma_op.store_result(D, params->ldd);
      -
      643 return;
      -
      644
      -
      645 }
      -
      647 // MN unaligned loop
      -
      648 else { // Loop over K - unaligned case
      -
      649 short tgp_bm = min(BM, params->M - c_row);
      -
      650 short tgp_bn = min(BN, params->N - c_col);
      -
      651 short lbk = params->K - params->gemm_k_iterations_aligned * BK;
      -
      652
      -
      653 bool M_aligned = (tgp_bm == BM);
      -
      654 bool N_aligned = (tgp_bn == BN);
      -
      655
      -
      656 short2 tile_dims_A = transpose_a ? short2(tgp_bm, BK) : short2(BK, tgp_bm);
      -
      657 short2 tile_dims_B = transpose_b ? short2(BK, tgp_bn) : short2(tgp_bn, BK);
      -
      658
      -
      659 for (int k = 0; k < gemm_k_iterations; k++) {
      -
      660 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      661 if (!has_operand_mask ||
      -
      662 (lhs_mask
      -
      663 [tid_y * mask_strides[3] + ((k * BK) / BM) * mask_strides[2]] &&
      -
      664 rhs_mask
      -
      665 [((k * BK) / BM) * mask_strides[5] + tid_x * mask_strides[4]])) {
      -
      666 // Load elements into threadgroup
      -
      667 if (M_aligned) {
      -
      668 loader_a.load_unsafe();
      -
      669 } else {
      -
      670 loader_a.load_safe(tile_dims_A);
      -
      671 }
      -
      672
      -
      673 if (N_aligned) {
      -
      674 loader_b.load_unsafe();
      -
      675 } else {
      -
      676 loader_b.load_safe(tile_dims_B);
      -
      677 }
      -
      678
      -
      679 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      680
      -
      681 // Multiply and accumulate threadgroup elements
      -
      682 mma_op.mma(As, Bs);
      -
      683 }
      -
      684
      -
      685 // Prepare for next iteration
      -
      686 loader_a.next();
      -
      687 loader_b.next();
      -
      688 }
      -
      689
      -
      690 if (!K_aligned) {
      -
      691 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      692
      -
      693 if (!has_operand_mask ||
      -
      694 (lhs_mask
      -
      695 [tid_y * mask_strides[3] + (params->K / BM) * mask_strides[2]] &&
      -
      696 rhs_mask
      -
      697 [(params->K / BM) * mask_strides[5] +
      -
      698 tid_x * mask_strides[4]])) {
      -
      699 short2 tile_dims_A_last =
      -
      700 transpose_a ? short2(tgp_bm, lbk) : short2(lbk, tgp_bm);
      -
      701 short2 tile_dims_B_last =
      -
      702 transpose_b ? short2(lbk, tgp_bn) : short2(tgp_bn, lbk);
      -
      703
      -
      704 loader_a.load_safe(tile_dims_A_last);
      -
      705 loader_b.load_safe(tile_dims_B_last);
      -
      706
      -
      707 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      708
      -
      709 mma_op.mma(As, Bs);
      -
      710 }
      -
      711 }
      -
      712
      -
      713 if (M_aligned && N_aligned) {
      -
      714 mma_op.store_result(D, params->ldd);
      -
      715 } else {
      -
      716 mma_op.store_result_safe(D, params->ldd, short2(tgp_bn, tgp_bm));
      -
      717 }
      -
      718 }
      -
      719}
      -
      -
      METAL_FUNC ulong2 elem_to_loc_broadcast(uint elem, constant const int *shape, constant const size_t *a_strides, constant const size_t *b_strides, int ndim)
      Definition utils.h:7
      -
      METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
      Definition utils.h:87
      -
      Definition bf16.h:265
      -
      METAL_FUNC bfloat16_t min(bfloat16_t x, bfloat16_t y)
      Definition bf16_math.h:234
      -
      Definition loader_channel_l.h:14
      - -
      #define STEEL_PRAGMA_UNROLL
      Definition defines.h:4
      -
      void block_masked_gemm(const device T *A, const device T *B, device T *D, const constant GEMMParams *params, const constant int *batch_shape, const constant size_t *batch_strides, const device out_mask_t *out_mask, const device op_mask_t *lhs_mask, const device op_mask_t *rhs_mask, const constant int *mask_strides, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
      Definition steel_gemm_masked.h:53
      -
      Definition gemv_masked.h:10
      -
      char x
      Definition gemv_masked.h:11
      -
      Definition gemv_masked.h:30
      -
      OutT scale
      Definition gemv_masked.h:31
      -
      METAL_FUNC OutT apply(InT x) const
      Definition steel_gemm_masked.h:32
      -
      Definition gemm.h:37
      -
      Definition params.h:12
      -
      - - - - diff --git a/docs/build/html/steel__gemm__splitk_8h.html b/docs/build/html/steel__gemm__splitk_8h.html deleted file mode 100644 index 00d82ec6..00000000 --- a/docs/build/html/steel__gemm__splitk_8h.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels/steel_gemm_splitk.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      steel_gemm_splitk.h File Reference
      -
      -
      - -

      Go to the source code of this file.

      - - - - - - - - - - - -

      -Functions

      template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned>
      void gemm_splitk (const device T *A, const device T *B, device U *C, const constant GEMMSpiltKParams *params, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
       
      template<typename AccT , typename OutT , typename Epilogue = TransformNone<OutT, AccT>>
      void gemm_splitk_accum (const device AccT *C_split, device OutT *D, const constant int &k_partitions, const constant int &partition_stride, const constant int &ldd, uint2 gid)
       
      template<typename AccT , typename OutT , typename Epilogue = TransformAxpby<OutT, AccT>>
      void gemm_splitk_accum_axpby (const device AccT *C_split, device OutT *D, const constant int &k_partitions, const constant int &partition_stride, const constant int &ldd, const device OutT *C, const constant int &ldc, const constant int &fdc, const constant float &alpha, const constant float &beta, uint2 gid)
       
      -

      Function Documentation

      - -

      ◆ gemm_splitk()

      - -
      -
      -
      -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void gemm_splitk (const device T * A,
      const device T * B,
      device U * C,
      const constant GEMMSpiltKParams * params,
      uint simd_lane_id,
      uint simd_group_id,
      uint3 tid,
      uint3 lid )
      -
      - -
      -
      - -

      ◆ gemm_splitk_accum()

      - -
      -
      -
      -template<typename AccT , typename OutT , typename Epilogue = TransformNone<OutT, AccT>>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void gemm_splitk_accum (const device AccT * C_split,
      device OutT * D,
      const constant int & k_partitions,
      const constant int & partition_stride,
      const constant int & ldd,
      uint2 gid )
      -
      - -
      -
      - -

      ◆ gemm_splitk_accum_axpby()

      - -
      -
      -
      -template<typename AccT , typename OutT , typename Epilogue = TransformAxpby<OutT, AccT>>
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      void gemm_splitk_accum_axpby (const device AccT * C_split,
      device OutT * D,
      const constant int & k_partitions,
      const constant int & partition_stride,
      const constant int & ldd,
      const device OutT * C,
      const constant int & ldc,
      const constant int & fdc,
      const constant float & alpha,
      const constant float & beta,
      uint2 gid )
      -
      - -
      -
      -
      - - - - diff --git a/docs/build/html/steel__gemm__splitk_8h_source.html b/docs/build/html/steel__gemm__splitk_8h_source.html deleted file mode 100644 index 138cd8b0..00000000 --- a/docs/build/html/steel__gemm__splitk_8h_source.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/steel/gemm/kernels/steel_gemm_splitk.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      steel_gemm_splitk.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2024 Apple Inc.
      -
      2
      -
      3using namespace mlx::steel;
      -
      4
      -
      6// GEMM kernels
      -
      8
      -
      9template <
      -
      10 typename T,
      -
      11 typename U,
      -
      12 int BM,
      -
      13 int BN,
      -
      14 int BK,
      -
      15 int WM,
      -
      16 int WN,
      -
      17 bool transpose_a,
      -
      18 bool transpose_b,
      -
      19 bool MN_aligned,
      -
      20 bool K_aligned>
      -
      -
      21[[kernel, max_total_threads_per_threadgroup(WM* WN * 32)]] void gemm_splitk(
      -
      22 const device T* A [[buffer(0)]],
      -
      23 const device T* B [[buffer(1)]],
      -
      24 device U* C [[buffer(2)]],
      -
      25 const constant GEMMSpiltKParams* params [[buffer(3)]],
      -
      26 uint simd_lane_id [[thread_index_in_simdgroup]],
      -
      27 uint simd_group_id [[simdgroup_index_in_threadgroup]],
      -
      28 uint3 tid [[threadgroup_position_in_grid]],
      -
      29 uint3 lid [[thread_position_in_threadgroup]]) {
      -
      30 (void)lid;
      -
      31
      -
      32 using gemm_kernel = GEMMKernel<
      -
      33 T,
      -
      34 U,
      -
      35 BM,
      -
      36 BN,
      -
      37 BK,
      -
      38 WM,
      -
      39 WN,
      -
      40 transpose_a,
      -
      41 transpose_b,
      -
      42 MN_aligned,
      -
      43 K_aligned>;
      -
      44 using loader_a_t = typename gemm_kernel::loader_a_t;
      -
      45 using loader_b_t = typename gemm_kernel::loader_b_t;
      -
      46 using mma_t = typename gemm_kernel::mma_t;
      -
      47
      -
      48 threadgroup T As[gemm_kernel::tgp_mem_size_a];
      -
      49 threadgroup T Bs[gemm_kernel::tgp_mem_size_b];
      -
      50
      -
      51 const int tid_x = tid.x;
      -
      52 const int tid_y = tid.y;
      -
      53 const int tid_z = tid.z;
      -
      54
      -
      55 if (params->tiles_n <= tid_x || params->tiles_m <= tid_y) {
      -
      56 return;
      -
      57 }
      -
      58
      -
      59 // Find block in A, B, C
      -
      60 const int c_row = tid_y * BM;
      -
      61 const int c_col = tid_x * BN;
      -
      62 const int k_start = params->split_k_partition_size * tid_z;
      -
      63
      -
      64 const size_t c_row_long = size_t(c_row);
      -
      65 const size_t c_col_long = size_t(c_col);
      -
      66 const size_t k_start_long = size_t(k_start);
      -
      67
      -
      68 A += transpose_a ? (c_row_long + k_start_long * params->lda)
      -
      69 : (k_start_long + c_row_long * params->lda);
      -
      70 B += transpose_b ? (k_start_long + c_col_long * params->ldb)
      -
      71 : (c_col_long + k_start_long * params->ldb);
      -
      72 C += (size_t(params->split_k_partition_stride) * tid_z) +
      -
      73 (c_row_long * params->ldc + c_col_long);
      -
      74
      -
      75 // Prepare threadgroup loading operations
      -
      76 thread loader_a_t loader_a(A, params->lda, As, simd_group_id, simd_lane_id);
      -
      77 thread loader_b_t loader_b(B, params->ldb, Bs, simd_group_id, simd_lane_id);
      -
      78
      -
      79 // Prepare threadgroup mma operation
      -
      80 thread mma_t mma_op(simd_group_id, simd_lane_id);
      -
      81
      -
      82 int gemm_k_iterations = params->gemm_k_iterations_aligned;
      -
      83
      -
      84 short tgp_bm = min(BM, params->M - c_row);
      -
      85 short tgp_bn = min(BN, params->N - c_col);
      -
      86 short leftover_bk = params->K % BK;
      -
      87
      -
      88 if (MN_aligned || (tgp_bm == BM && tgp_bn == BN)) {
      -
      89 gemm_kernel::gemm_loop(
      -
      90 As,
      -
      91 Bs,
      -
      92 gemm_k_iterations,
      -
      93 loader_a,
      -
      94 loader_b,
      -
      95 mma_op,
      -
      96 tgp_bm,
      -
      97 tgp_bn,
      -
      98 leftover_bk,
      - -
      100 } else if (tgp_bn == BN) {
      -
      101 gemm_kernel::gemm_loop(
      -
      102 As,
      -
      103 Bs,
      -
      104 gemm_k_iterations,
      -
      105 loader_a,
      -
      106 loader_b,
      -
      107 mma_op,
      -
      108 tgp_bm,
      -
      109 tgp_bn,
      -
      110 leftover_bk,
      - -
      112 } else if (tgp_bm == BM) {
      -
      113 gemm_kernel::gemm_loop(
      -
      114 As,
      -
      115 Bs,
      -
      116 gemm_k_iterations,
      -
      117 loader_a,
      -
      118 loader_b,
      -
      119 mma_op,
      -
      120 tgp_bm,
      -
      121 tgp_bn,
      -
      122 leftover_bk,
      - -
      124 } else {
      -
      125 gemm_kernel::gemm_loop(
      -
      126 As,
      -
      127 Bs,
      -
      128 gemm_k_iterations,
      -
      129 loader_a,
      -
      130 loader_b,
      -
      131 mma_op,
      -
      132 tgp_bm,
      -
      133 tgp_bn,
      -
      134 leftover_bk,
      - -
      136 }
      -
      137
      -
      138 threadgroup_barrier(mem_flags::mem_threadgroup);
      -
      139
      -
      140 if ((tid_z + 1) == (params->split_k_partitions)) {
      -
      141 int gemm_k_iter_remaining =
      -
      142 (params->K - (k_start + params->split_k_partition_size)) / BK;
      -
      143 if (!K_aligned || gemm_k_iter_remaining > 0)
      -
      144 gemm_kernel::gemm_loop(
      -
      145 As,
      -
      146 Bs,
      -
      147 gemm_k_iter_remaining,
      -
      148 loader_a,
      -
      149 loader_b,
      -
      150 mma_op,
      -
      151 tgp_bm,
      -
      152 tgp_bn,
      -
      153 leftover_bk,
      - -
      155 }
      -
      156
      -
      157 if (MN_aligned || (tgp_bm == BM && tgp_bn == BN)) {
      -
      158 mma_op.store_result(C, params->ldc);
      -
      159 } else {
      -
      160 mma_op.store_result_safe(C, params->ldc, short2(tgp_bn, tgp_bm));
      -
      161 }
      -
      162}
      -
      -
      163
      -
      165// Split k accumulation kernel
      -
      167
      -
      168template <
      -
      169 typename AccT,
      -
      170 typename OutT,
      -
      171 typename Epilogue = TransformNone<OutT, AccT>>
      -
      -
      172[[kernel]] void gemm_splitk_accum(
      -
      173 const device AccT* C_split [[buffer(0)]],
      -
      174 device OutT* D [[buffer(1)]],
      -
      175 const constant int& k_partitions [[buffer(2)]],
      -
      176 const constant int& partition_stride [[buffer(3)]],
      -
      177 const constant int& ldd [[buffer(4)]],
      -
      178 uint2 gid [[thread_position_in_grid]]) {
      -
      179 // Ajust D and C
      -
      180 D += gid.x + gid.y * size_t(ldd);
      -
      181 C_split += gid.x + gid.y * size_t(ldd);
      -
      182
      -
      183 size_t offset = 0;
      -
      184 AccT out = 0;
      -
      185
      -
      186 for (int i = 0; i < k_partitions; i++) {
      -
      187 out += C_split[offset];
      -
      188 offset += partition_stride;
      -
      189 }
      -
      190
      -
      191 // Write output
      -
      192 D[0] = Epilogue::apply(out);
      -
      193}
      -
      -
      194
      -
      195template <
      -
      196 typename AccT,
      -
      197 typename OutT,
      -
      198 typename Epilogue = TransformAxpby<OutT, AccT>>
      -
      - -
      200 const device AccT* C_split [[buffer(0)]],
      -
      201 device OutT* D [[buffer(1)]],
      -
      202 const constant int& k_partitions [[buffer(2)]],
      -
      203 const constant int& partition_stride [[buffer(3)]],
      -
      204 const constant int& ldd [[buffer(4)]],
      -
      205 const device OutT* C [[buffer(5)]],
      -
      206 const constant int& ldc [[buffer(6)]],
      -
      207 const constant int& fdc [[buffer(7)]],
      -
      208 const constant float& alpha [[buffer(8)]],
      -
      209 const constant float& beta [[buffer(9)]],
      -
      210 uint2 gid [[thread_position_in_grid]]) {
      -
      211 // Ajust D and C
      -
      212 C += gid.x * size_t(fdc) + gid.y * size_t(ldc);
      -
      213 D += gid.x + gid.y * size_t(ldd);
      -
      214 C_split += gid.x + gid.y * size_t(ldd);
      -
      215
      -
      216 size_t offset = 0;
      -
      217 AccT out = 0;
      -
      218
      -
      219 for (int i = 0; i < k_partitions; i++) {
      -
      220 out += C_split[offset];
      -
      221 offset += partition_stride;
      -
      222 }
      -
      223
      -
      224 // Write output
      -
      225 Epilogue op(alpha, beta);
      -
      226 D[0] = op.apply(out, *C);
      -
      227}
      -
      -
      Op op
      Definition binary.h:141
      -
      Definition loader_channel_l.h:14
      -
      void gemm_splitk(const device T *A, const device T *B, device U *C, const constant GEMMSpiltKParams *params, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
      Definition steel_gemm_splitk.h:21
      -
      void gemm_splitk_accum(const device AccT *C_split, device OutT *D, const constant int &k_partitions, const constant int &partition_stride, const constant int &ldd, uint2 gid)
      Definition steel_gemm_splitk.h:172
      -
      void gemm_splitk_accum_axpby(const device AccT *C_split, device OutT *D, const constant int &k_partitions, const constant int &partition_stride, const constant int &ldd, const device OutT *C, const constant int &ldc, const constant int &fdc, const constant float &alpha, const constant float &beta, uint2 gid)
      Definition steel_gemm_splitk.h:199
      -
      Definition gemm.h:37
      -
      Definition params.h:34
      -
      Definition gemm.h:21
      -
      Definition transforms.h:39
      -
      Definition transforms.h:15
      -
      - - - - diff --git a/docs/build/html/stream_8h.html b/docs/build/html/stream_8h.html deleted file mode 100644 index edda7883..00000000 --- a/docs/build/html/stream_8h.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -MLX: mlx/stream.h File Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      stream.h File Reference
      -
      -
      -
      #include "mlx/device.h"
      -
      -

      Go to the source code of this file.

      - - - - -

      -Classes

      struct  mlx::core::Stream
       
      - - - - - -

      -Namespaces

      namespace  mlx
       
      namespace  mlx::core
       
      - - - - - - - - - - - - - - - - - - -

      -Functions

      Stream mlx::core::default_stream (Device d)
       Get the default stream for the given device.
       
      void mlx::core::set_default_stream (Stream s)
       Make the stream the default for its device.
       
      Stream mlx::core::new_stream (Device d)
       Make a new stream on the given device.
       
      bool mlx::core::operator== (const Stream &lhs, const Stream &rhs)
       
      bool mlx::core::operator!= (const Stream &lhs, const Stream &rhs)
       
      void mlx::core::synchronize ()
       
      void mlx::core::synchronize (Stream)
       
      -
      - - - - diff --git a/docs/build/html/stream_8h_source.html b/docs/build/html/stream_8h_source.html deleted file mode 100644 index 1e296032..00000000 --- a/docs/build/html/stream_8h_source.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - -MLX: mlx/stream.h Source File - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      stream.h
      -
      -
      -Go to the documentation of this file.
      1// Copyright © 2023 Apple Inc.
      -
      2
      -
      3#pragma once
      -
      4
      -
      5#include "mlx/device.h"
      -
      6
      -
      7namespace mlx::core {
      -
      8
      -
      -
      9struct Stream {
      -
      10 int index;
      - - -
      13};
      -
      -
      14
      - -
      17
      - -
      20
      - -
      23
      -
      -
      24inline bool operator==(const Stream& lhs, const Stream& rhs) {
      -
      25 return lhs.index == rhs.index;
      -
      26}
      -
      -
      27
      -
      -
      28inline bool operator!=(const Stream& lhs, const Stream& rhs) {
      -
      29 return !(lhs == rhs);
      -
      30}
      -
      -
      31
      -
      32/* Synchronize with the default stream. */
      - -
      34
      -
      35/* Synchronize with the provided stream. */
      - -
      37
      -
      38} // namespace mlx::core
      - -
      Definition allocator.h:7
      -
      void synchronize()
      -
      Stream new_stream(Device d)
      Make a new stream on the given device.
      -
      bool operator==(const Device &lhs, const Device &rhs)
      -
      bool operator!=(const Device &lhs, const Device &rhs)
      -
      Stream default_stream(Device d)
      Get the default stream for the given device.
      -
      void set_default_stream(Stream s)
      Make the stream the default for its device.
      -
      Definition device.h:7
      -
      Definition stream.h:9
      -
      Device device
      Definition stream.h:11
      -
      Stream(int index, Device device)
      Definition stream.h:12
      -
      int index
      Definition stream.h:10
      -
      - - - - diff --git a/docs/build/html/struct___m_l_x___b_float16-members.html b/docs/build/html/struct___m_l_x___b_float16-members.html deleted file mode 100644 index 6c43afe9..00000000 --- a/docs/build/html/struct___m_l_x___b_float16-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      _MLX_BFloat16 Member List
      -
      -
      - -

      This is the complete list of members for _MLX_BFloat16, including all inherited members.

      - - - - - - - - - - - - - - - - -
      _MLX_BFloat16() thread=default_MLX_BFloat16
      _MLX_BFloat16() threadgroup=default_MLX_BFloat16
      _MLX_BFloat16() device=default_MLX_BFloat16
      _MLX_BFloat16() const ant=default_MLX_BFloat16
      _MLX_BFloat16(uint16_t bits, bits_to_bfloat_struct)_MLX_BFloat16inline
      _MLX_BFloat16(T x) thread_MLX_BFloat16inline
      _MLX_BFloat16(T x) threadgroup_MLX_BFloat16inline
      _MLX_BFloat16(T x) device_MLX_BFloat16inline
      _MLX_BFloat16(T x) const ant_MLX_BFloat16inline
      bits__MLX_BFloat16
      bits_to_bfloat()_MLX_BFloat16inlinestatic
      operator T() const thread_MLX_BFloat16inline
      operator T() const threadgroup_MLX_BFloat16inline
      operator T() const device_MLX_BFloat16inline
      operator T() const constant_MLX_BFloat16inline
      - - - - diff --git a/docs/build/html/struct___m_l_x___b_float16.html b/docs/build/html/struct___m_l_x___b_float16.html deleted file mode 100644 index 9fecd978..00000000 --- a/docs/build/html/struct___m_l_x___b_float16.html +++ /dev/null @@ -1,534 +0,0 @@ - - - - - - - -MLX: _MLX_BFloat16 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      - -
      - -

      #include <bf16.h>

      - - - - -

      -Classes

      struct  bits_to_bfloat_struct
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

       _MLX_BFloat16 () thread=default
       
       _MLX_BFloat16 () threadgroup=default
       
       _MLX_BFloat16 () device=default
       
       _MLX_BFloat16 () const ant=default
       
      constexpr METAL_FUNC _MLX_BFloat16 (uint16_t bits, bits_to_bfloat_struct)
       
      template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      constexpr METAL_FUNC _MLX_BFloat16 (T x) thread
       
      template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      constexpr METAL_FUNC _MLX_BFloat16 (T x) threadgroup
       
      template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      constexpr METAL_FUNC _MLX_BFloat16 (T x) device
       
      template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      constexpr METAL_FUNC _MLX_BFloat16 (T x) const ant
       
      template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      constexpr METAL_FUNC operator T () const thread
       
      template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      constexpr METAL_FUNC operator T () const threadgroup
       
      template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      constexpr METAL_FUNC operator T () const device
       
      template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      constexpr METAL_FUNC operator T () const constant
       
      - - - -

      -Static Public Member Functions

      static constexpr METAL_FUNC bits_to_bfloat_struct bits_to_bfloat ()
       
      - - - -

      -Public Attributes

      uint16_t bits_
       
      -

      Constructor & Destructor Documentation

      - -

      ◆ _MLX_BFloat16() [1/9]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16::_MLX_BFloat16 ()
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [2/9]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16::_MLX_BFloat16 ()
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [3/9]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16::_MLX_BFloat16 ()
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [4/9]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16::_MLX_BFloat16 () const
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [5/9]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::_MLX_BFloat16 (uint16_t bits,
      bits_to_bfloat_struct  )
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [6/9]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::_MLX_BFloat16 (T x)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [7/9]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::_MLX_BFloat16 (T x)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [8/9]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::_MLX_BFloat16 (T x)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [9/9]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::_MLX_BFloat16 (T x) const
      -
      -inlineconstexpr
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ bits_to_bfloat()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr METAL_FUNC bits_to_bfloat_struct _MLX_BFloat16::bits_to_bfloat ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [1/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [2/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [3/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [4/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_bfloat<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _MLX_BFloat16::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ bits_

      - -
      -
      - - - - -
      uint16_t _MLX_BFloat16::bits_
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/bf16.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html b/docs/build/html/struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html deleted file mode 100644 index 910c3946..00000000 --- a/docs/build/html/struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: _MLX_BFloat16::bits_to_bfloat_struct Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      _MLX_BFloat16::bits_to_bfloat_struct Struct Reference
      -
      -
      - -

      #include <bf16.h>

      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/bf16.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct___no_mask-members.html b/docs/build/html/struct___no_mask-members.html deleted file mode 100644 index 10abc05d..00000000 --- a/docs/build/html/struct___no_mask-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      _NoMask Member List
      -
      -
      - -

      This is the complete list of members for _NoMask, including all inherited members.

      - - - - - - - - - - -
      operator bool()_NoMaskinline
      operator bool() const threadgroup_NoMaskinline
      operator bool() const device_NoMaskinline
      operator bool() const constant_NoMaskinline
      operator bool()_NoMaskinline
      operator bool() const threadgroup_NoMaskinline
      operator bool() const device_NoMaskinline
      operator bool() const constant_NoMaskinline
      x_NoMask
      - - - - diff --git a/docs/build/html/struct___no_mask.html b/docs/build/html/struct___no_mask.html deleted file mode 100644 index 5b5114dc..00000000 --- a/docs/build/html/struct___no_mask.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - - -MLX: _NoMask Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      _NoMask Struct Reference
      -
      -
      - -

      #include <gemv_masked.h>

      - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      constexpr METAL_FUNC operator bool ()
       
      constexpr METAL_FUNC operator bool () const threadgroup
       
      constexpr METAL_FUNC operator bool () const device
       
      constexpr METAL_FUNC operator bool () const constant
       
      constexpr METAL_FUNC operator bool ()
       
      constexpr METAL_FUNC operator bool () const threadgroup
       
      constexpr METAL_FUNC operator bool () const device
       
      constexpr METAL_FUNC operator bool () const constant
       
      - - - -

      -Public Attributes

      char x
       
      -

      Member Function Documentation

      - -

      ◆ operator bool() [1/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool ()
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [2/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool ()
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [3/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [4/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [5/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [6/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [7/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator bool() [8/8]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr METAL_FUNC _NoMask::operator bool () const
      -
      -inlineconstexpr
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ x

      - -
      -
      - - - - -
      char _NoMask::x
      -
      - -
      -
      -
      The documentation for this struct was generated from the following files: -
      - - - - diff --git a/docs/build/html/struct_abs-members.html b/docs/build/html/struct_abs-members.html deleted file mode 100644 index 5f98f24c..00000000 --- a/docs/build/html/struct_abs-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Abs Member List
      -
      -
      - -

      This is the complete list of members for Abs, including all inherited members.

      - - - - - - - - -
      operator()(T x)Absinline
      operator()(uint8_t x)Absinline
      operator()(uint16_t x)Absinline
      operator()(uint32_t x)Absinline
      operator()(uint64_t x)Absinline
      operator()(bool x)Absinline
      operator()(complex64_t x)Absinline
      - - - - diff --git a/docs/build/html/struct_abs.html b/docs/build/html/struct_abs.html deleted file mode 100644 index 4bf68a71..00000000 --- a/docs/build/html/struct_abs.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - -MLX: Abs Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Abs Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      uint8_t operator() (uint8_t x)
       
      template<>
      uint16_t operator() (uint16_t x)
       
      template<>
      uint32_t operator() (uint32_t x)
       
      template<>
      uint64_t operator() (uint64_t x)
       
      template<>
      bool operator() (bool x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/7]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      bool Abs::operator() (bool x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/7]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Abs::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/7]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Abs::operator() (T x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [4/7]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint16_t Abs::operator() (uint16_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [5/7]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint32_t Abs::operator() (uint32_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [6/7]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint64_t Abs::operator() (uint64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [7/7]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint8_t Abs::operator() (uint8_t x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_add-members.html b/docs/build/html/struct_add-members.html deleted file mode 100644 index 030c5be6..00000000 --- a/docs/build/html/struct_add-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Add Member List
      -
      -
      - -

      This is the complete list of members for Add, including all inherited members.

      - - -
      operator()(T x, T y)Addinline
      - - - - diff --git a/docs/build/html/struct_add.html b/docs/build/html/struct_add.html deleted file mode 100644 index 37367c17..00000000 --- a/docs/build/html/struct_add.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Add Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Add Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T Add::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_and.html b/docs/build/html/struct_and.html deleted file mode 100644 index f78d4158..00000000 --- a/docs/build/html/struct_and.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: And< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      And< U > Struct Template Reference
      -
      -
      - -

      #include <ops.h>

      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_arc_cos-members.html b/docs/build/html/struct_arc_cos-members.html deleted file mode 100644 index 87c2a068..00000000 --- a/docs/build/html/struct_arc_cos-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcCos Member List
      -
      -
      - -

      This is the complete list of members for ArcCos, including all inherited members.

      - - -
      operator()(T x)ArcCosinline
      - - - - diff --git a/docs/build/html/struct_arc_cos.html b/docs/build/html/struct_arc_cos.html deleted file mode 100644 index 7e4fbb9b..00000000 --- a/docs/build/html/struct_arc_cos.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ArcCos Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcCos Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ArcCos::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_arc_cosh-members.html b/docs/build/html/struct_arc_cosh-members.html deleted file mode 100644 index add1b07d..00000000 --- a/docs/build/html/struct_arc_cosh-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcCosh Member List
      -
      -
      - -

      This is the complete list of members for ArcCosh, including all inherited members.

      - - -
      operator()(T x)ArcCoshinline
      - - - - diff --git a/docs/build/html/struct_arc_cosh.html b/docs/build/html/struct_arc_cosh.html deleted file mode 100644 index 4ef975c2..00000000 --- a/docs/build/html/struct_arc_cosh.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ArcCosh Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcCosh Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ArcCosh::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_arc_sin-members.html b/docs/build/html/struct_arc_sin-members.html deleted file mode 100644 index e642e48f..00000000 --- a/docs/build/html/struct_arc_sin-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcSin Member List
      -
      -
      - -

      This is the complete list of members for ArcSin, including all inherited members.

      - - -
      operator()(T x)ArcSininline
      - - - - diff --git a/docs/build/html/struct_arc_sin.html b/docs/build/html/struct_arc_sin.html deleted file mode 100644 index cb1261da..00000000 --- a/docs/build/html/struct_arc_sin.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ArcSin Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcSin Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ArcSin::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_arc_sinh-members.html b/docs/build/html/struct_arc_sinh-members.html deleted file mode 100644 index 44ea6f25..00000000 --- a/docs/build/html/struct_arc_sinh-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcSinh Member List
      -
      -
      - -

      This is the complete list of members for ArcSinh, including all inherited members.

      - - -
      operator()(T x)ArcSinhinline
      - - - - diff --git a/docs/build/html/struct_arc_sinh.html b/docs/build/html/struct_arc_sinh.html deleted file mode 100644 index cbef2f91..00000000 --- a/docs/build/html/struct_arc_sinh.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ArcSinh Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcSinh Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ArcSinh::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_arc_tan-members.html b/docs/build/html/struct_arc_tan-members.html deleted file mode 100644 index 2064b5aa..00000000 --- a/docs/build/html/struct_arc_tan-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcTan Member List
      -
      -
      - -

      This is the complete list of members for ArcTan, including all inherited members.

      - - -
      operator()(T x)ArcTaninline
      - - - - diff --git a/docs/build/html/struct_arc_tan.html b/docs/build/html/struct_arc_tan.html deleted file mode 100644 index 73d5aa51..00000000 --- a/docs/build/html/struct_arc_tan.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ArcTan Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcTan Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ArcTan::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_arc_tan2-members.html b/docs/build/html/struct_arc_tan2-members.html deleted file mode 100644 index dd320f26..00000000 --- a/docs/build/html/struct_arc_tan2-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcTan2 Member List
      -
      -
      - -

      This is the complete list of members for ArcTan2, including all inherited members.

      - - -
      operator()(T y, T x)ArcTan2inline
      - - - - diff --git a/docs/build/html/struct_arc_tan2.html b/docs/build/html/struct_arc_tan2.html deleted file mode 100644 index 5d66c9d5..00000000 --- a/docs/build/html/struct_arc_tan2.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: ArcTan2 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcTan2 Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T y, T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T ArcTan2::operator() (T y,
      T x )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_arc_tanh-members.html b/docs/build/html/struct_arc_tanh-members.html deleted file mode 100644 index 9476519c..00000000 --- a/docs/build/html/struct_arc_tanh-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ArcTanh Member List
      -
      -
      - -

      This is the complete list of members for ArcTanh, including all inherited members.

      - - -
      operator()(T x)ArcTanhinline
      - - - - diff --git a/docs/build/html/struct_arc_tanh.html b/docs/build/html/struct_arc_tanh.html deleted file mode 100644 index e09a5fab..00000000 --- a/docs/build/html/struct_arc_tanh.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ArcTanh Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ArcTanh Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ArcTanh::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_bitwise_and-members.html b/docs/build/html/struct_bitwise_and-members.html deleted file mode 100644 index cefb0373..00000000 --- a/docs/build/html/struct_bitwise_and-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      BitwiseAnd Member List
      -
      -
      - -

      This is the complete list of members for BitwiseAnd, including all inherited members.

      - - -
      operator()(T x, T y)BitwiseAndinline
      - - - - diff --git a/docs/build/html/struct_bitwise_and.html b/docs/build/html/struct_bitwise_and.html deleted file mode 100644 index 4be0b6d0..00000000 --- a/docs/build/html/struct_bitwise_and.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: BitwiseAnd Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      BitwiseAnd Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T BitwiseAnd::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_bitwise_or-members.html b/docs/build/html/struct_bitwise_or-members.html deleted file mode 100644 index ded8bc9d..00000000 --- a/docs/build/html/struct_bitwise_or-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      BitwiseOr Member List
      -
      -
      - -

      This is the complete list of members for BitwiseOr, including all inherited members.

      - - -
      operator()(T x, T y)BitwiseOrinline
      - - - - diff --git a/docs/build/html/struct_bitwise_or.html b/docs/build/html/struct_bitwise_or.html deleted file mode 100644 index b3baf6d6..00000000 --- a/docs/build/html/struct_bitwise_or.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: BitwiseOr Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      BitwiseOr Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T BitwiseOr::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_bitwise_xor-members.html b/docs/build/html/struct_bitwise_xor-members.html deleted file mode 100644 index b2c048e1..00000000 --- a/docs/build/html/struct_bitwise_xor-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      BitwiseXor Member List
      -
      -
      - -

      This is the complete list of members for BitwiseXor, including all inherited members.

      - - -
      operator()(T x, T y)BitwiseXorinline
      - - - - diff --git a/docs/build/html/struct_bitwise_xor.html b/docs/build/html/struct_bitwise_xor.html deleted file mode 100644 index 2bef9b53..00000000 --- a/docs/build/html/struct_bitwise_xor.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: BitwiseXor Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      BitwiseXor Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T BitwiseXor::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_block_merge_sort-members.html b/docs/build/html/struct_block_merge_sort-members.html deleted file mode 100644 index c009166b..00000000 --- a/docs/build/html/struct_block_merge_sort-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Member List
      -
      -
      - -

      This is the complete list of members for BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >, including all inherited members.

      - - - - - -
      merge_partition(const threadgroup val_t *As, const threadgroup val_t *Bs, short A_sz, short B_sz, short sort_md)BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >inlinestatic
      merge_step(const threadgroup val_t *As, const threadgroup val_t *Bs, const threadgroup idx_t *As_idx, const threadgroup idx_t *Bs_idx, short A_sz, short B_sz, thread val_t(&vals)[N_PER_THREAD], thread idx_t(&idxs)[N_PER_THREAD])BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >inlinestatic
      sort(threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, int size_sorted_axis, uint3 lid)BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >inlinestatic
      thread_sort_t typedefBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
      - - - - diff --git a/docs/build/html/struct_block_merge_sort.html b/docs/build/html/struct_block_merge_sort.html deleted file mode 100644 index d966f232..00000000 --- a/docs/build/html/struct_block_merge_sort.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - -MLX: BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Struct Template Reference
      -
      -
      - -

      #include <sort.h>

      - - - - -

      -Public Types

      using thread_sort_t
       
      - - - - - - - -

      -Static Public Member Functions

      static METAL_FUNC int merge_partition (const threadgroup val_t *As, const threadgroup val_t *Bs, short A_sz, short B_sz, short sort_md)
       
      static METAL_FUNC void merge_step (const threadgroup val_t *As, const threadgroup val_t *Bs, const threadgroup idx_t *As_idx, const threadgroup idx_t *Bs_idx, short A_sz, short B_sz, thread val_t(&vals)[N_PER_THREAD], thread idx_t(&idxs)[N_PER_THREAD])
       
      static METAL_FUNC void sort (threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, int size_sorted_axis, uint3 lid)
       
      -

      Member Typedef Documentation

      - -

      ◆ thread_sort_t

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp >
      - - - - -
      using BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::thread_sort_t
      -
      -
      -

      Member Function Documentation

      - -

      ◆ merge_partition()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC int BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::merge_partition (const threadgroup val_t * As,
      const threadgroup val_t * Bs,
      short A_sz,
      short B_sz,
      short sort_md )
      -
      -inlinestatic
      -
      - -
      -
      - -

      ◆ merge_step()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::merge_step (const threadgroup val_t * As,
      const threadgroup val_t * Bs,
      const threadgroup idx_t * As_idx,
      const threadgroup idx_t * Bs_idx,
      short A_sz,
      short B_sz,
      thread val_t(&) vals[N_PER_THREAD],
      thread idx_t(&) idxs[N_PER_THREAD] )
      -
      -inlinestatic
      -
      - -
      -
      - -

      ◆ sort()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void BlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::sort (threadgroup val_t * tgp_vals,
      threadgroup idx_t * tgp_idxs,
      int size_sorted_axis,
      uint3 lid )
      -
      -inlinestatic
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/sort.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_ceil-members.html b/docs/build/html/struct_ceil-members.html deleted file mode 100644 index 518c090c..00000000 --- a/docs/build/html/struct_ceil-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Ceil Member List
      -
      -
      - -

      This is the complete list of members for Ceil, including all inherited members.

      - - - - - - - - - - - -
      operator()(T x)Ceilinline
      operator()(int8_t x)Ceilinline
      operator()(int16_t x)Ceilinline
      operator()(int32_t x)Ceilinline
      operator()(int64_t x)Ceilinline
      operator()(uint8_t x)Ceilinline
      operator()(uint16_t x)Ceilinline
      operator()(uint32_t x)Ceilinline
      operator()(uint64_t x)Ceilinline
      operator()(bool x)Ceilinline
      - - - - diff --git a/docs/build/html/struct_ceil.html b/docs/build/html/struct_ceil.html deleted file mode 100644 index a1776344..00000000 --- a/docs/build/html/struct_ceil.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - -MLX: Ceil Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Ceil Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      int8_t operator() (int8_t x)
       
      template<>
      int16_t operator() (int16_t x)
       
      template<>
      int32_t operator() (int32_t x)
       
      template<>
      int64_t operator() (int64_t x)
       
      template<>
      uint8_t operator() (uint8_t x)
       
      template<>
      uint16_t operator() (uint16_t x)
       
      template<>
      uint32_t operator() (uint32_t x)
       
      template<>
      uint64_t operator() (uint64_t x)
       
      template<>
      bool operator() (bool x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      bool Ceil::operator() (bool x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int16_t Ceil::operator() (int16_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int32_t Ceil::operator() (int32_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [4/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int64_t Ceil::operator() (int64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [5/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int8_t Ceil::operator() (int8_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [6/10]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Ceil::operator() (T x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [7/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint16_t Ceil::operator() (uint16_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [8/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint32_t Ceil::operator() (uint32_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [9/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint64_t Ceil::operator() (uint64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [10/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint8_t Ceil::operator() (uint8_t x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_conjugate-members.html b/docs/build/html/struct_conjugate-members.html deleted file mode 100644 index de57c3c0..00000000 --- a/docs/build/html/struct_conjugate-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Conjugate Member List
      -
      -
      - -

      This is the complete list of members for Conjugate, including all inherited members.

      - - -
      operator()(complex64_t x)Conjugateinline
      - - - - diff --git a/docs/build/html/struct_conjugate.html b/docs/build/html/struct_conjugate.html deleted file mode 100644 index 2f1f2e5f..00000000 --- a/docs/build/html/struct_conjugate.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -MLX: Conjugate Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Conjugate Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - -

      -Public Member Functions

      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      - - - - - -
      - - - - - - - -
      complex64_t Conjugate::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_cos-members.html b/docs/build/html/struct_cos-members.html deleted file mode 100644 index 9bd3741d..00000000 --- a/docs/build/html/struct_cos-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Cos Member List
      -
      -
      - -

      This is the complete list of members for Cos, including all inherited members.

      - - - -
      operator()(T x)Cosinline
      operator()(complex64_t x)Cosinline
      - - - - diff --git a/docs/build/html/struct_cos.html b/docs/build/html/struct_cos.html deleted file mode 100644 index 0dbdfab3..00000000 --- a/docs/build/html/struct_cos.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Cos Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Cos Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Cos::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Cos::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_cosh-members.html b/docs/build/html/struct_cosh-members.html deleted file mode 100644 index 7390af41..00000000 --- a/docs/build/html/struct_cosh-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Cosh Member List
      -
      -
      - -

      This is the complete list of members for Cosh, including all inherited members.

      - - - -
      operator()(T x)Coshinline
      operator()(complex64_t x)Coshinline
      - - - - diff --git a/docs/build/html/struct_cosh.html b/docs/build/html/struct_cosh.html deleted file mode 100644 index 9d5dfc9b..00000000 --- a/docs/build/html/struct_cosh.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Cosh Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Cosh Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Cosh::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Cosh::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_cum_max-members.html b/docs/build/html/struct_cum_max-members.html deleted file mode 100644 index bab13230..00000000 --- a/docs/build/html/struct_cum_max-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      CumMax< U > Member List
      -
      -
      - -

      This is the complete list of members for CumMax< U >, including all inherited members.

      - - - - - -
      initCumMax< U >static
      operator()(U a, T b)CumMax< U >inline
      simd_exclusive_scan(U x)CumMax< U >inline
      simd_scan(U x)CumMax< U >inline
      - - - - diff --git a/docs/build/html/struct_cum_max.html b/docs/build/html/struct_cum_max.html deleted file mode 100644 index ddc6bc06..00000000 --- a/docs/build/html/struct_cum_max.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -MLX: CumMax< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      CumMax< U > Struct Template Reference
      -
      -
      - -

      #include <scan.h>

      - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (U a, T b)
       
      simd_scan (U x)
       
      simd_exclusive_scan (U x)
       
      - - - -

      -Static Public Attributes

      static constexpr constant U init = Limits<U>::min
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename U >
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      U CumMax< U >::operator() (U a,
      T b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_exclusive_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumMax< U >::simd_exclusive_scan (U x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumMax< U >::simd_scan (U x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ init

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      constexpr constant U CumMax< U >::init = Limits<U>::min
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/scan.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_cum_min-members.html b/docs/build/html/struct_cum_min-members.html deleted file mode 100644 index 7c22c8bd..00000000 --- a/docs/build/html/struct_cum_min-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      CumMin< U > Member List
      -
      -
      - -

      This is the complete list of members for CumMin< U >, including all inherited members.

      - - - - - -
      initCumMin< U >static
      operator()(U a, T b)CumMin< U >inline
      simd_exclusive_scan(U x)CumMin< U >inline
      simd_scan(U x)CumMin< U >inline
      - - - - diff --git a/docs/build/html/struct_cum_min.html b/docs/build/html/struct_cum_min.html deleted file mode 100644 index c5a09f9a..00000000 --- a/docs/build/html/struct_cum_min.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -MLX: CumMin< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      CumMin< U > Struct Template Reference
      -
      -
      - -

      #include <scan.h>

      - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (U a, T b)
       
      simd_scan (U x)
       
      simd_exclusive_scan (U x)
       
      - - - -

      -Static Public Attributes

      static constexpr constant U init = Limits<U>::max
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename U >
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      U CumMin< U >::operator() (U a,
      T b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_exclusive_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumMin< U >::simd_exclusive_scan (U x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumMin< U >::simd_scan (U x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ init

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      constexpr constant U CumMin< U >::init = Limits<U>::max
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/scan.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_cum_prod-members.html b/docs/build/html/struct_cum_prod-members.html deleted file mode 100644 index b7dab63e..00000000 --- a/docs/build/html/struct_cum_prod-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      CumProd< U > Member List
      -
      -
      - -

      This is the complete list of members for CumProd< U >, including all inherited members.

      - - - - - -
      initCumProd< U >static
      operator()(U a, T b)CumProd< U >inline
      simd_exclusive_scan(U x)CumProd< U >inline
      simd_scan(U x)CumProd< U >inline
      - - - - diff --git a/docs/build/html/struct_cum_prod.html b/docs/build/html/struct_cum_prod.html deleted file mode 100644 index 67c16d44..00000000 --- a/docs/build/html/struct_cum_prod.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -MLX: CumProd< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      CumProd< U > Struct Template Reference
      -
      -
      - -

      #include <scan.h>

      - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (U a, T b)
       
      simd_scan (U x)
       
      simd_exclusive_scan (U x)
       
      - - - -

      -Static Public Attributes

      static constexpr constant U init = static_cast<U>(1.0f)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename U >
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      U CumProd< U >::operator() (U a,
      T b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_exclusive_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumProd< U >::simd_exclusive_scan (U x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumProd< U >::simd_scan (U x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ init

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      constexpr constant U CumProd< U >::init = static_cast<U>(1.0f)
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/scan.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_cum_prod_3_01bool_01_4-members.html b/docs/build/html/struct_cum_prod_3_01bool_01_4-members.html deleted file mode 100644 index c2e680d1..00000000 --- a/docs/build/html/struct_cum_prod_3_01bool_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      CumProd< bool > Member List
      -
      -
      - -

      This is the complete list of members for CumProd< bool >, including all inherited members.

      - - - - - -
      initCumProd< bool >static
      operator()(bool a, T b)CumProd< bool >inline
      simd_exclusive_scan(bool x)CumProd< bool >inline
      simd_scan(bool x)CumProd< bool >inline
      - - - - diff --git a/docs/build/html/struct_cum_prod_3_01bool_01_4.html b/docs/build/html/struct_cum_prod_3_01bool_01_4.html deleted file mode 100644 index 42e0fd34..00000000 --- a/docs/build/html/struct_cum_prod_3_01bool_01_4.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - -MLX: CumProd< bool > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      CumProd< bool > Struct Reference
      -
      -
      - -

      #include <scan.h>

      - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (bool a, T b)
       
      bool simd_scan (bool x)
       
      bool simd_exclusive_scan (bool x)
       
      - - - -

      -Static Public Attributes

      static constexpr constant bool init = true
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool CumProd< bool >::operator() (bool a,
      T b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_exclusive_scan()

      - -
      -
      - - - - - -
      - - - - - - - -
      bool CumProd< bool >::simd_exclusive_scan (bool x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_scan()

      - -
      -
      - - - - - -
      - - - - - - - -
      bool CumProd< bool >::simd_scan (bool x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ init

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bool CumProd< bool >::init = true
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/scan.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_cum_sum-members.html b/docs/build/html/struct_cum_sum-members.html deleted file mode 100644 index 08707a02..00000000 --- a/docs/build/html/struct_cum_sum-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      CumSum< U > Member List
      -
      -
      - -

      This is the complete list of members for CumSum< U >, including all inherited members.

      - - - - - -
      initCumSum< U >static
      operator()(U a, T b)CumSum< U >inline
      simd_exclusive_scan(U x)CumSum< U >inline
      simd_scan(U x)CumSum< U >inline
      - - - - diff --git a/docs/build/html/struct_cum_sum.html b/docs/build/html/struct_cum_sum.html deleted file mode 100644 index 54c70c2b..00000000 --- a/docs/build/html/struct_cum_sum.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -MLX: CumSum< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      CumSum< U > Struct Template Reference
      -
      -
      - -

      #include <scan.h>

      - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (U a, T b)
       
      simd_scan (U x)
       
      simd_exclusive_scan (U x)
       
      - - - -

      -Static Public Attributes

      static constexpr constant U init = static_cast<U>(0)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename U >
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      U CumSum< U >::operator() (U a,
      T b )
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_exclusive_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumSum< U >::simd_exclusive_scan (U x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ simd_scan()

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - - - - -
      U CumSum< U >::simd_scan (U x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ init

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      constexpr constant U CumSum< U >::init = static_cast<U>(0)
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/scan.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_div_mod-members.html b/docs/build/html/struct_div_mod-members.html deleted file mode 100644 index 385f383e..00000000 --- a/docs/build/html/struct_div_mod-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      DivMod Member List
      -
      -
      - -

      This is the complete list of members for DivMod, including all inherited members.

      - - -
      operator()(T x, T y)DivModinline
      - - - - diff --git a/docs/build/html/struct_div_mod.html b/docs/build/html/struct_div_mod.html deleted file mode 100644 index b34c9a3f..00000000 --- a/docs/build/html/struct_div_mod.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: DivMod Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      DivMod Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      metal::array< T, 2 > operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::array< T, 2 > DivMod::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_divide-members.html b/docs/build/html/struct_divide-members.html deleted file mode 100644 index dbb769e7..00000000 --- a/docs/build/html/struct_divide-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Divide Member List
      -
      -
      - -

      This is the complete list of members for Divide, including all inherited members.

      - - -
      operator()(T x, T y)Divideinline
      - - - - diff --git a/docs/build/html/struct_divide.html b/docs/build/html/struct_divide.html deleted file mode 100644 index 97ad18cb..00000000 --- a/docs/build/html/struct_divide.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Divide Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Divide Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T Divide::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_equal-members.html b/docs/build/html/struct_equal-members.html deleted file mode 100644 index 8385afa6..00000000 --- a/docs/build/html/struct_equal-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Equal Member List
      -
      -
      - -

      This is the complete list of members for Equal, including all inherited members.

      - - -
      operator()(T x, T y)Equalinline
      - - - - diff --git a/docs/build/html/struct_equal.html b/docs/build/html/struct_equal.html deleted file mode 100644 index dede2a37..00000000 --- a/docs/build/html/struct_equal.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Equal Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Equal Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool Equal::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_erf-members.html b/docs/build/html/struct_erf-members.html deleted file mode 100644 index c248af46..00000000 --- a/docs/build/html/struct_erf-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Erf Member List
      -
      -
      - -

      This is the complete list of members for Erf, including all inherited members.

      - - -
      operator()(T x)Erfinline
      - - - - diff --git a/docs/build/html/struct_erf.html b/docs/build/html/struct_erf.html deleted file mode 100644 index 767df36f..00000000 --- a/docs/build/html/struct_erf.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Erf Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Erf Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Erf::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_erf_inv-members.html b/docs/build/html/struct_erf_inv-members.html deleted file mode 100644 index a9521d3b..00000000 --- a/docs/build/html/struct_erf_inv-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ErfInv Member List
      -
      -
      - -

      This is the complete list of members for ErfInv, including all inherited members.

      - - -
      operator()(T x)ErfInvinline
      - - - - diff --git a/docs/build/html/struct_erf_inv.html b/docs/build/html/struct_erf_inv.html deleted file mode 100644 index dc680a6c..00000000 --- a/docs/build/html/struct_erf_inv.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: ErfInv Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ErfInv Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T ErfInv::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_exp-members.html b/docs/build/html/struct_exp-members.html deleted file mode 100644 index 2b6b30ba..00000000 --- a/docs/build/html/struct_exp-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Exp Member List
      -
      -
      - -

      This is the complete list of members for Exp, including all inherited members.

      - - - -
      operator()(T x)Expinline
      operator()(complex64_t x)Expinline
      - - - - diff --git a/docs/build/html/struct_exp.html b/docs/build/html/struct_exp.html deleted file mode 100644 index 9cef1130..00000000 --- a/docs/build/html/struct_exp.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Exp Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Exp Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Exp::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Exp::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_expm1-members.html b/docs/build/html/struct_expm1-members.html deleted file mode 100644 index 3179cc01..00000000 --- a/docs/build/html/struct_expm1-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Expm1 Member List
      -
      -
      - -

      This is the complete list of members for Expm1, including all inherited members.

      - - -
      operator()(T x)Expm1inline
      - - - - diff --git a/docs/build/html/struct_expm1.html b/docs/build/html/struct_expm1.html deleted file mode 100644 index 47c2d006..00000000 --- a/docs/build/html/struct_expm1.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Expm1 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Expm1 Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Expm1::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_floor-members.html b/docs/build/html/struct_floor-members.html deleted file mode 100644 index 695aff71..00000000 --- a/docs/build/html/struct_floor-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Floor Member List
      -
      -
      - -

      This is the complete list of members for Floor, including all inherited members.

      - - - - - - - - - - - -
      operator()(T x)Floorinline
      operator()(int8_t x)Floorinline
      operator()(int16_t x)Floorinline
      operator()(int32_t x)Floorinline
      operator()(int64_t x)Floorinline
      operator()(uint8_t x)Floorinline
      operator()(uint16_t x)Floorinline
      operator()(uint32_t x)Floorinline
      operator()(uint64_t x)Floorinline
      operator()(bool x)Floorinline
      - - - - diff --git a/docs/build/html/struct_floor.html b/docs/build/html/struct_floor.html deleted file mode 100644 index af866ec6..00000000 --- a/docs/build/html/struct_floor.html +++ /dev/null @@ -1,396 +0,0 @@ - - - - - - - -MLX: Floor Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Floor Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      int8_t operator() (int8_t x)
       
      template<>
      int16_t operator() (int16_t x)
       
      template<>
      int32_t operator() (int32_t x)
       
      template<>
      int64_t operator() (int64_t x)
       
      template<>
      uint8_t operator() (uint8_t x)
       
      template<>
      uint16_t operator() (uint16_t x)
       
      template<>
      uint32_t operator() (uint32_t x)
       
      template<>
      uint64_t operator() (uint64_t x)
       
      template<>
      bool operator() (bool x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      bool Floor::operator() (bool x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int16_t Floor::operator() (int16_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int32_t Floor::operator() (int32_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [4/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int64_t Floor::operator() (int64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [5/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      int8_t Floor::operator() (int8_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [6/10]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Floor::operator() (T x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [7/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint16_t Floor::operator() (uint16_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [8/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint32_t Floor::operator() (uint32_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [9/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint64_t Floor::operator() (uint64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [10/10]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint8_t Floor::operator() (uint8_t x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_floor_divide-members.html b/docs/build/html/struct_floor_divide-members.html deleted file mode 100644 index 14a01010..00000000 --- a/docs/build/html/struct_floor_divide-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      FloorDivide Member List
      -
      -
      - -

      This is the complete list of members for FloorDivide, including all inherited members.

      - - - - - -
      operator()(T x, T y)FloorDivideinline
      operator()(float x, float y)FloorDivideinline
      operator()(half x, half y)FloorDivideinline
      operator()(bfloat16_t x, bfloat16_t y)FloorDivideinline
      - - - - diff --git a/docs/build/html/struct_floor_divide.html b/docs/build/html/struct_floor_divide.html deleted file mode 100644 index 56063d54..00000000 --- a/docs/build/html/struct_floor_divide.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -MLX: FloorDivide Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      FloorDivide Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      template<>
      float operator() (float x, float y)
       
      template<>
      half operator() (half x, half y)
       
      template<>
      bfloat16_t operator() (bfloat16_t x, bfloat16_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/4]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      bfloat16_t FloorDivide::operator() (bfloat16_t x,
      bfloat16_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/4]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      float FloorDivide::operator() (float x,
      float y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/4]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      half FloorDivide::operator() (half x,
      half y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [4/4]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T FloorDivide::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_g_e_m_v_kernel-members.html b/docs/build/html/struct_g_e_m_v_kernel-members.html deleted file mode 100644 index c860c0a6..00000000 --- a/docs/build/html/struct_g_e_m_v_kernel-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN > Member List
      -
      -
      - -

      This is the complete list of members for GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >, including all inherited members.

      - - - - - - - - - - - - - - -
      blockMGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      blockNGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      has_mul_operand_maskGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      has_mul_output_maskGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      has_operand_maskGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      has_output_maskGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      load_safe(const device T *src, thread T dst[TN], const int src_offset=0, const int src_size=TN)GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >inlinestatic
      load_unsafe(const device T *src, thread T dst[TN], const int src_offset=0)GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >inlinestatic
      needs_tgp_reductionGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      run(const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &matrix_ld, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, threadgroup T *tgp_memory, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >inlinestatic
      tgp_mem_sizeGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      threadsMGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      threadsNGEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >static
      - - - - diff --git a/docs/build/html/struct_g_e_m_v_kernel.html b/docs/build/html/struct_g_e_m_v_kernel.html deleted file mode 100644 index 7cb06ffc..00000000 --- a/docs/build/html/struct_g_e_m_v_kernel.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - -MLX: GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN > Struct Template Reference
      -
      -
      - -

      #include <gemv_masked.h>

      - - - - - - - - -

      -Static Public Member Functions

      static METAL_FUNC void load_unsafe (const device T *src, thread T dst[TN], const int src_offset=0)
       
      static METAL_FUNC void load_safe (const device T *src, thread T dst[TN], const int src_offset=0, const int src_size=TN)
       
      static METAL_FUNC void run (const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &matrix_ld, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, threadgroup T *tgp_memory, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
       
      - - - - - - - - - - - - - - - - - - - - - -

      -Static Public Attributes

      static constant constexpr const int threadsM = BM * SM
       
      static constant constexpr const int threadsN = BN * SN
       
      static constant constexpr const int blockM = threadsM * TM
       
      static constant constexpr const int blockN = threadsN * TN
       
      static constant constexpr const bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>
       
      static constant constexpr const bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>
       
      static constant constexpr const bool has_mul_operand_mask
       
      static constant constexpr const bool has_mul_output_mask
       
      static constant constexpr const short tgp_mem_size = BN > 1 ? BN*(blockM + TM) : 0
       
      static constant constexpr const bool needs_tgp_reduction = BN > 1
       
      -

      Member Function Documentation

      - -

      ◆ load_safe()

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::load_safe (const device T * src,
      thread T dst[TN],
      const int src_offset = 0,
      const int src_size = TN )
      -
      -inlinestatic
      -
      - -
      -
      - -

      ◆ load_unsafe()

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - - - - - - - - - - - - - -
      static METAL_FUNC void GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::load_unsafe (const device T * src,
      thread T dst[TN],
      const int src_offset = 0 )
      -
      -inlinestatic
      -
      - -
      -
      - -

      ◆ run()

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::run (const device T * mat,
      const device T * in_vec,
      device T * out_vec,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & matrix_ld,
      const device out_mask_t * out_mask,
      const device op_mask_t * mat_mask,
      const device op_mask_t * vec_mask,
      const constant int * mask_strides,
      threadgroup T * tgp_memory,
      uint3 tid,
      uint3 lid,
      uint simd_gid,
      uint simd_lid )
      -
      -inlinestatic
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ blockM

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::blockM = threadsM * TM
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ blockN

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::blockN = threadsN * TN
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ has_mul_operand_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_mul_operand_mask
      -
      -staticconstexpr
      -
      -Initial value:
      =
      -
      has_operand_mask && !metal::is_same_v<op_mask_t, bool>
      -
      static constant constexpr const bool has_operand_mask
      Definition gemv_masked.h:63
      -
      -
      -
      - -

      ◆ has_mul_output_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_mul_output_mask
      -
      -staticconstexpr
      -
      -Initial value:
      =
      -
      has_output_mask && !metal::is_same_v<out_mask_t, bool>
      -
      static constant constexpr const bool has_output_mask
      Definition gemv_masked.h:64
      -
      -
      -
      - -

      ◆ has_operand_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ has_output_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ needs_tgp_reduction

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::needs_tgp_reduction = BN > 1
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ tgp_mem_size

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const short GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::tgp_mem_size = BN > 1 ? BN*(blockM + TM) : 0
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ threadsM

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::threadsM = BM * SM
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ threadsN

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::threadsN = BN * SN
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_g_e_m_v_t_kernel-members.html b/docs/build/html/struct_g_e_m_v_t_kernel-members.html deleted file mode 100644 index 2a1e4e91..00000000 --- a/docs/build/html/struct_g_e_m_v_t_kernel-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN > Member List
      -
      - - - - - diff --git a/docs/build/html/struct_g_e_m_v_t_kernel.html b/docs/build/html/struct_g_e_m_v_t_kernel.html deleted file mode 100644 index 03bbbcf2..00000000 --- a/docs/build/html/struct_g_e_m_v_t_kernel.html +++ /dev/null @@ -1,471 +0,0 @@ - - - - - - - -MLX: GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN > Struct Template Reference
      -
      -
      - -

      Vector matrix multiplication. - More...

      - -

      #include <gemv_masked.h>

      - - - - -

      -Static Public Member Functions

      static METAL_FUNC void run (const device T *mat, const device T *in_vec, device T *out_vec, const constant int &in_vec_size, const constant int &out_vec_size, const constant int &marix_ld, const device out_mask_t *out_mask, const device op_mask_t *mat_mask, const device op_mask_t *vec_mask, const constant int *mask_strides, threadgroup T *tgp_memory, uint3 tid, uint3 lid, uint simd_gid, uint simd_lid)
       
      - - - - - - - - - - - - - - - - - - - - - -

      -Static Public Attributes

      static constant constexpr const int threadsM = BM * SM
       
      static constant constexpr const int threadsN = BN * SN
       
      static constant constexpr const int blockM = threadsM * TM
       
      static constant constexpr const int blockN = threadsN * TN
       
      static constant constexpr const bool has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>
       
      static constant constexpr const bool has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>
       
      static constant constexpr const bool has_mul_operand_mask
       
      static constant constexpr const bool has_mul_output_mask
       
      static constant constexpr const short tgp_mem_size = BM > 1 ? BM*(blockN + TN) : 0
       
      static constant constexpr const bool needs_tgp_reduction = BM > 1
       
      -

      Detailed Description

      -
      template<typename T, typename out_mask_t, typename op_mask_t, const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      -struct GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >

      Vector matrix multiplication.

      -

      Member Function Documentation

      - -

      ◆ run()

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::run (const device T * mat,
      const device T * in_vec,
      device T * out_vec,
      const constant int & in_vec_size,
      const constant int & out_vec_size,
      const constant int & marix_ld,
      const device out_mask_t * out_mask,
      const device op_mask_t * mat_mask,
      const device op_mask_t * vec_mask,
      const constant int * mask_strides,
      threadgroup T * tgp_memory,
      uint3 tid,
      uint3 lid,
      uint simd_gid,
      uint simd_lid )
      -
      -inlinestatic
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ blockM

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::blockM = threadsM * TM
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ blockN

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::blockN = threadsN * TN
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ has_mul_operand_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_mul_operand_mask
      -
      -staticconstexpr
      -
      -Initial value:
      =
      -
      has_operand_mask && !metal::is_same_v<op_mask_t, bool>
      -
      static constant constexpr const bool has_operand_mask
      Definition gemv_masked.h:367
      -
      -
      -
      - -

      ◆ has_mul_output_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_mul_output_mask
      -
      -staticconstexpr
      -
      -Initial value:
      =
      -
      has_output_mask && !metal::is_same_v<out_mask_t, bool>
      -
      static constant constexpr const bool has_output_mask
      Definition gemv_masked.h:368
      -
      -
      -
      - -

      ◆ has_operand_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_operand_mask = !metal::is_same_v<op_mask_t, nomask_t>
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ has_output_mask

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::has_output_mask = !metal::is_same_v<out_mask_t, nomask_t>
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ needs_tgp_reduction

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const bool GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::needs_tgp_reduction = BM > 1
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ tgp_mem_size

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const short GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::tgp_mem_size = BM > 1 ? BM*(blockN + TN) : 0
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ threadsM

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::threadsM = BM * SM
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ threadsN

      - -
      -
      -
      -template<typename T , typename out_mask_t , typename op_mask_t , const int BM, const int BN, const int SM, const int SN, const int TM, const int TN>
      - - - - - -
      - - - - -
      constant constexpr const int GEMVTKernel< T, out_mask_t, op_mask_t, BM, BN, SM, SN, TM, TN >::threadsN = BN * SN
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_greater-members.html b/docs/build/html/struct_greater-members.html deleted file mode 100644 index b6bb8897..00000000 --- a/docs/build/html/struct_greater-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Greater Member List
      -
      -
      - -

      This is the complete list of members for Greater, including all inherited members.

      - - -
      operator()(T x, T y)Greaterinline
      - - - - diff --git a/docs/build/html/struct_greater.html b/docs/build/html/struct_greater.html deleted file mode 100644 index 1d3547b9..00000000 --- a/docs/build/html/struct_greater.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Greater Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Greater Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool Greater::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_greater_equal-members.html b/docs/build/html/struct_greater_equal-members.html deleted file mode 100644 index cac73db1..00000000 --- a/docs/build/html/struct_greater_equal-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      GreaterEqual Member List
      -
      -
      - -

      This is the complete list of members for GreaterEqual, including all inherited members.

      - - -
      operator()(T x, T y)GreaterEqualinline
      - - - - diff --git a/docs/build/html/struct_greater_equal.html b/docs/build/html/struct_greater_equal.html deleted file mode 100644 index 031a0148..00000000 --- a/docs/build/html/struct_greater_equal.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: GreaterEqual Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      GreaterEqual Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool GreaterEqual::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_indices-members.html b/docs/build/html/struct_indices-members.html deleted file mode 100644 index 606c2168..00000000 --- a/docs/build/html/struct_indices-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Indices< IdxT, NIDX > Member List
      -
      -
      - -

      This is the complete list of members for Indices< IdxT, NIDX >, including all inherited members.

      - - - - - -
      buffersIndices< IdxT, NIDX >
      ndimIndices< IdxT, NIDX >
      shapesIndices< IdxT, NIDX >
      stridesIndices< IdxT, NIDX >
      - - - - diff --git a/docs/build/html/struct_indices.html b/docs/build/html/struct_indices.html deleted file mode 100644 index 939c10a6..00000000 --- a/docs/build/html/struct_indices.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -MLX: Indices< IdxT, NIDX > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Indices< IdxT, NIDX > Struct Template Reference
      -
      -
      - -

      #include <indexing.h>

      - - - - - - - - - - -

      -Public Attributes

      const array< const device IdxT *, NIDX > buffers
       
      const constant int * shapes
       
      const constant size_t * strides
       
      const int ndim
       
      -

      Member Data Documentation

      - -

      ◆ buffers

      - -
      -
      -
      -template<typename IdxT , int NIDX>
      - - - - -
      const array<const device IdxT*, NIDX> Indices< IdxT, NIDX >::buffers
      -
      - -
      -
      - -

      ◆ ndim

      - -
      -
      -
      -template<typename IdxT , int NIDX>
      - - - - -
      const int Indices< IdxT, NIDX >::ndim
      -
      - -
      -
      - -

      ◆ shapes

      - -
      -
      -
      -template<typename IdxT , int NIDX>
      - - - - -
      const constant int* Indices< IdxT, NIDX >::shapes
      -
      - -
      -
      - -

      ◆ strides

      - -
      -
      -
      -template<typename IdxT , int NIDX>
      - - - - -
      const constant size_t* Indices< IdxT, NIDX >::strides
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_kernel_merge_sort-members.html b/docs/build/html/struct_kernel_merge_sort-members.html deleted file mode 100644 index b81cba57..00000000 --- a/docs/build/html/struct_kernel_merge_sort-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Member List
      -
      -
      - -

      This is the complete list of members for KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >, including all inherited members.

      - - - - - - -
      block_merge_sort_t typedefKernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
      block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, uint3 tid, uint3 lid)KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >inlinestatic
      idx_t typedefKernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
      N_PER_BLOCKKernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >static
      val_t typedefKernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
      - - - - diff --git a/docs/build/html/struct_kernel_merge_sort.html b/docs/build/html/struct_kernel_merge_sort.html deleted file mode 100644 index f25dd2e3..00000000 --- a/docs/build/html/struct_kernel_merge_sort.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - -MLX: KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Struct Template Reference
      -
      -
      - -

      #include <sort.h>

      - - - - - - - - -

      -Public Types

      using val_t = T
       
      using idx_t = uint
       
      using block_merge_sort_t
       
      - - - -

      -Static Public Member Functions

      static METAL_FUNC void block_sort (const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &in_stride_sorted_axis, const constant int &out_stride_sorted_axis, const constant int &in_stride_segment_axis, const constant int &out_stride_segment_axis, threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, uint3 tid, uint3 lid)
       
      - - - -

      -Static Public Attributes

      static constant constexpr const short N_PER_BLOCK = BLOCK_THREADS * N_PER_THREAD
       
      -

      Member Typedef Documentation

      - -

      ◆ block_merge_sort_t

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<T>>
      - - - - -
      using KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::block_merge_sort_t
      -
      -Initial value:
      - - -
      ARG_SORT,
      -
      BLOCK_THREADS,
      -
      N_PER_THREAD,
      -
      CompareOp>
      -
      Definition sort.h:67
      -
      uint idx_t
      Definition sort.h:223
      -
      T val_t
      Definition sort.h:222
      -
      -
      -
      - -

      ◆ idx_t

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<T>>
      - - - - -
      using KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::idx_t = uint
      -
      - -
      -
      - -

      ◆ val_t

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<T>>
      - - - - -
      using KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::val_t = T
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ block_sort()

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<T>>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::block_sort (const device T * inp,
      device U * out,
      const constant int & size_sorted_axis,
      const constant int & in_stride_sorted_axis,
      const constant int & out_stride_sorted_axis,
      const constant int & in_stride_segment_axis,
      const constant int & out_stride_segment_axis,
      threadgroup val_t * tgp_vals,
      threadgroup idx_t * tgp_idxs,
      uint3 tid,
      uint3 lid )
      -
      -inlinestatic
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ N_PER_BLOCK

      - -
      -
      -
      -template<typename T , typename U , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<T>>
      - - - - - -
      - - - - -
      constant constexpr const short KernelMergeSort< T, U, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::N_PER_BLOCK = BLOCK_THREADS * N_PER_THREAD
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/sort.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_kernel_multi_block_merge_sort-members.html b/docs/build/html/struct_kernel_multi_block_merge_sort-members.html deleted file mode 100644 index 6c6bcb02..00000000 --- a/docs/build/html/struct_kernel_multi_block_merge_sort-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Member List
      -
      -
      - -

      This is the complete list of members for KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >, including all inherited members.

      - - - - - -
      block_merge_sort_t typedefKernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >
      block_sort(const device val_t *inp, device val_t *out_vals, device idx_t *out_idxs, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, uint3 tid, uint3 lid)KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >inlinestatic
      merge_partition(const device val_t *As, const device val_t *Bs, int A_sz, int B_sz, int sort_md)KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >inlinestatic
      N_PER_BLOCKKernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >static
      - - - - diff --git a/docs/build/html/struct_kernel_multi_block_merge_sort.html b/docs/build/html/struct_kernel_multi_block_merge_sort.html deleted file mode 100644 index 2ae0a06c..00000000 --- a/docs/build/html/struct_kernel_multi_block_merge_sort.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - -MLX: KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp > Struct Template Reference
      -
      -
      - -

      #include <sort.h>

      - - - - -

      -Public Types

      using block_merge_sort_t
       
      - - - - - -

      -Static Public Member Functions

      static METAL_FUNC void block_sort (const device val_t *inp, device val_t *out_vals, device idx_t *out_idxs, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, threadgroup val_t *tgp_vals, threadgroup idx_t *tgp_idxs, uint3 tid, uint3 lid)
       
      static METAL_FUNC int merge_partition (const device val_t *As, const device val_t *Bs, int A_sz, int B_sz, int sort_md)
       
      - - - -

      -Static Public Attributes

      static constant constexpr const short N_PER_BLOCK = BLOCK_THREADS * N_PER_THREAD
       
      -

      Member Typedef Documentation

      - -

      ◆ block_merge_sort_t

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<val_t>>
      - - - - -
      using KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::block_merge_sort_t
      -
      -Initial value:
      -
      val_t,
      -
      idx_t,
      -
      ARG_SORT,
      -
      BLOCK_THREADS,
      -
      N_PER_THREAD,
      -
      CompareOp>
      -
      Definition sort.h:67
      -
      -
      -
      -

      Member Function Documentation

      - -

      ◆ block_sort()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<val_t>>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC void KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::block_sort (const device val_t * inp,
      device val_t * out_vals,
      device idx_t * out_idxs,
      const constant int & size_sorted_axis,
      const constant int & stride_sorted_axis,
      threadgroup val_t * tgp_vals,
      threadgroup idx_t * tgp_idxs,
      uint3 tid,
      uint3 lid )
      -
      -inlinestatic
      -
      - -
      -
      - -

      ◆ merge_partition()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<val_t>>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      static METAL_FUNC int KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::merge_partition (const device val_t * As,
      const device val_t * Bs,
      int A_sz,
      int B_sz,
      int sort_md )
      -
      -inlinestatic
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ N_PER_BLOCK

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short BLOCK_THREADS, short N_PER_THREAD, typename CompareOp = LessThan<val_t>>
      - - - - - -
      - - - - -
      constant constexpr const short KernelMultiBlockMergeSort< val_t, idx_t, ARG_SORT, BLOCK_THREADS, N_PER_THREAD, CompareOp >::N_PER_BLOCK = BLOCK_THREADS * N_PER_THREAD
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/sort.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_left_shift-members.html b/docs/build/html/struct_left_shift-members.html deleted file mode 100644 index 4273004e..00000000 --- a/docs/build/html/struct_left_shift-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LeftShift Member List
      -
      -
      - -

      This is the complete list of members for LeftShift, including all inherited members.

      - - -
      operator()(T x, T y)LeftShiftinline
      - - - - diff --git a/docs/build/html/struct_left_shift.html b/docs/build/html/struct_left_shift.html deleted file mode 100644 index 95f5d220..00000000 --- a/docs/build/html/struct_left_shift.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: LeftShift Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LeftShift Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T LeftShift::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_less-members.html b/docs/build/html/struct_less-members.html deleted file mode 100644 index 9b24d8fa..00000000 --- a/docs/build/html/struct_less-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Less Member List
      -
      -
      - -

      This is the complete list of members for Less, including all inherited members.

      - - -
      operator()(T x, T y)Lessinline
      - - - - diff --git a/docs/build/html/struct_less.html b/docs/build/html/struct_less.html deleted file mode 100644 index 18a06a00..00000000 --- a/docs/build/html/struct_less.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Less Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Less Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool Less::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_less_equal-members.html b/docs/build/html/struct_less_equal-members.html deleted file mode 100644 index f55a6f76..00000000 --- a/docs/build/html/struct_less_equal-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LessEqual Member List
      -
      -
      - -

      This is the complete list of members for LessEqual, including all inherited members.

      - - -
      operator()(T x, T y)LessEqualinline
      - - - - diff --git a/docs/build/html/struct_less_equal.html b/docs/build/html/struct_less_equal.html deleted file mode 100644 index bf17e3fe..00000000 --- a/docs/build/html/struct_less_equal.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: LessEqual Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LessEqual Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool LessEqual::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_less_than-members.html b/docs/build/html/struct_less_than-members.html deleted file mode 100644 index 07583654..00000000 --- a/docs/build/html/struct_less_than-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LessThan< T > Member List
      -
      -
      - -

      This is the complete list of members for LessThan< T >, including all inherited members.

      - - - -
      initLessThan< T >static
      operator()(T a, T b)LessThan< T >inline
      - - - - diff --git a/docs/build/html/struct_less_than.html b/docs/build/html/struct_less_than.html deleted file mode 100644 index 813e3c23..00000000 --- a/docs/build/html/struct_less_than.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -MLX: LessThan< T > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LessThan< T > Struct Template Reference
      -
      -
      - -

      #include <sort.h>

      - - - - -

      -Public Member Functions

      METAL_FUNC bool operator() (T a, T b)
       
      - - - -

      -Static Public Attributes

      static constexpr constant T init = Limits<T>::max
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC bool LessThan< T >::operator() (T a,
      T b )
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ init

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - -
      constexpr constant T LessThan< T >::init = Limits<T>::max
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/sort.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits-members.html b/docs/build/html/struct_limits-members.html deleted file mode 100644 index a28547f0..00000000 --- a/docs/build/html/struct_limits-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< U > Member List
      -
      -
      - -

      This is the complete list of members for Limits< U >, including all inherited members.

      - - - - - -
      finite_maxLimits< U >static
      finite_minLimits< U >static
      maxLimits< U >static
      minLimits< U >static
      - - - - diff --git a/docs/build/html/struct_limits.html b/docs/build/html/struct_limits.html deleted file mode 100644 index 6f4964d4..00000000 --- a/docs/build/html/struct_limits.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -MLX: Limits< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< U > Struct Template Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static const constant U max = metal::numeric_limits<U>::max()
       
      static const constant U min = metal::numeric_limits<U>::min()
       
      static const constant U finite_max = metal::numeric_limits<U>::max()
       
      static const constant U finite_min = metal::numeric_limits<U>::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      const constant U Limits< U >::finite_max = metal::numeric_limits<U>::max()
      -
      -static
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      const constant U Limits< U >::finite_min = metal::numeric_limits<U>::min()
      -
      -static
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      const constant U Limits< U >::max = metal::numeric_limits<U>::max()
      -
      -static
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      -
      -template<typename U >
      - - - - - -
      - - - - -
      const constant U Limits< U >::min = metal::numeric_limits<U>::min()
      -
      -static
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01bfloat16__t_01_4-members.html b/docs/build/html/struct_limits_3_01bfloat16__t_01_4-members.html deleted file mode 100644 index a69ced20..00000000 --- a/docs/build/html/struct_limits_3_01bfloat16__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< bfloat16_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< bfloat16_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< bfloat16_t >static
      finite_minLimits< bfloat16_t >static
      maxLimits< bfloat16_t >static
      minLimits< bfloat16_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01bfloat16__t_01_4.html b/docs/build/html/struct_limits_3_01bfloat16__t_01_4.html deleted file mode 100644 index a043367a..00000000 --- a/docs/build/html/struct_limits_3_01bfloat16__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< bfloat16_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< bfloat16_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant bfloat16_t max = metal::numeric_limits< bfloat16_t >::infinity()
       
      static constexpr constant bfloat16_t min = -metal::numeric_limits< bfloat16_t >::infinity()
       
      static constexpr constant bfloat16_t finite_max = metal::numeric_limits< bfloat16_t >::max()
       
      static constexpr constant bfloat16_t finite_min = -metal::numeric_limits< bfloat16_t >::max()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bfloat16_t Limits< bfloat16_t >::finite_max = metal::numeric_limits< bfloat16_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bfloat16_t Limits< bfloat16_t >::finite_min = -metal::numeric_limits< bfloat16_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bfloat16_t Limits< bfloat16_t >::max = metal::numeric_limits< bfloat16_t >::infinity()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bfloat16_t Limits< bfloat16_t >::min = -metal::numeric_limits< bfloat16_t >::infinity()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01bool_01_4-members.html b/docs/build/html/struct_limits_3_01bool_01_4-members.html deleted file mode 100644 index 8ef0e552..00000000 --- a/docs/build/html/struct_limits_3_01bool_01_4-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< bool > Member List
      -
      -
      - -

      This is the complete list of members for Limits< bool >, including all inherited members.

      - - - -
      maxLimits< bool >static
      minLimits< bool >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01bool_01_4.html b/docs/build/html/struct_limits_3_01bool_01_4.html deleted file mode 100644 index 67522fc0..00000000 --- a/docs/build/html/struct_limits_3_01bool_01_4.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -MLX: Limits< bool > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< bool > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - -

      -Static Public Attributes

      static constexpr constant bool max = true
       
      static constexpr constant bool min = false
       
      -

      Member Data Documentation

      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bool Limits< bool >::max = true
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant bool Limits< bool >::min = false
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01complex64__t_01_4-members.html b/docs/build/html/struct_limits_3_01complex64__t_01_4-members.html deleted file mode 100644 index 669783b5..00000000 --- a/docs/build/html/struct_limits_3_01complex64__t_01_4-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< complex64_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< complex64_t >, including all inherited members.

      - - - -
      maxLimits< complex64_t >static
      minLimits< complex64_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01complex64__t_01_4.html b/docs/build/html/struct_limits_3_01complex64__t_01_4.html deleted file mode 100644 index 87ee1e2e..00000000 --- a/docs/build/html/struct_limits_3_01complex64__t_01_4.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -MLX: Limits< complex64_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< complex64_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - -

      -Static Public Attributes

      static constexpr constant complex64_t max
       
      static constexpr constant complex64_t min
       
      -

      Member Data Documentation

      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant complex64_t Limits< complex64_t >::max
      -
      -staticconstexpr
      -
      -Initial value:
      -
      metal::numeric_limits<float>::infinity(),
      -
      metal::numeric_limits<float>::infinity())
      -
      Definition complex.h:20
      -
      -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant complex64_t Limits< complex64_t >::min
      -
      -staticconstexpr
      -
      -Initial value:
      -
      -metal::numeric_limits<float>::infinity(),
      -
      -metal::numeric_limits<float>::infinity())
      -
      -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01float_01_4-members.html b/docs/build/html/struct_limits_3_01float_01_4-members.html deleted file mode 100644 index 9334f6a0..00000000 --- a/docs/build/html/struct_limits_3_01float_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< float > Member List
      -
      -
      - -

      This is the complete list of members for Limits< float >, including all inherited members.

      - - - - - -
      finite_maxLimits< float >static
      finite_minLimits< float >static
      maxLimits< float >static
      minLimits< float >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01float_01_4.html b/docs/build/html/struct_limits_3_01float_01_4.html deleted file mode 100644 index 61a12360..00000000 --- a/docs/build/html/struct_limits_3_01float_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< float > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< float > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant float max = metal::numeric_limits< float >::infinity()
       
      static constexpr constant float min = -metal::numeric_limits< float >::infinity()
       
      static constexpr constant float finite_max = metal::numeric_limits< float >::max()
       
      static constexpr constant float finite_min = -metal::numeric_limits< float >::max()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant float Limits< float >::finite_max = metal::numeric_limits< float >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant float Limits< float >::finite_min = -metal::numeric_limits< float >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant float Limits< float >::max = metal::numeric_limits< float >::infinity()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant float Limits< float >::min = -metal::numeric_limits< float >::infinity()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01half_01_4-members.html b/docs/build/html/struct_limits_3_01half_01_4-members.html deleted file mode 100644 index 8fd0e4a0..00000000 --- a/docs/build/html/struct_limits_3_01half_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< half > Member List
      -
      -
      - -

      This is the complete list of members for Limits< half >, including all inherited members.

      - - - - - -
      finite_maxLimits< half >static
      finite_minLimits< half >static
      maxLimits< half >static
      minLimits< half >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01half_01_4.html b/docs/build/html/struct_limits_3_01half_01_4.html deleted file mode 100644 index 605cdb9c..00000000 --- a/docs/build/html/struct_limits_3_01half_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< half > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< half > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant half max = metal::numeric_limits< half >::infinity()
       
      static constexpr constant half min = -metal::numeric_limits< half >::infinity()
       
      static constexpr constant half finite_max = metal::numeric_limits< half >::max()
       
      static constexpr constant half finite_min = -metal::numeric_limits< half >::max()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant half Limits< half >::finite_max = metal::numeric_limits< half >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant half Limits< half >::finite_min = -metal::numeric_limits< half >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant half Limits< half >::max = metal::numeric_limits< half >::infinity()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant half Limits< half >::min = -metal::numeric_limits< half >::infinity()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01int16__t_01_4-members.html b/docs/build/html/struct_limits_3_01int16__t_01_4-members.html deleted file mode 100644 index adb5e23b..00000000 --- a/docs/build/html/struct_limits_3_01int16__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< int16_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< int16_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< int16_t >static
      finite_minLimits< int16_t >static
      maxLimits< int16_t >static
      minLimits< int16_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01int16__t_01_4.html b/docs/build/html/struct_limits_3_01int16__t_01_4.html deleted file mode 100644 index 605055f0..00000000 --- a/docs/build/html/struct_limits_3_01int16__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< int16_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< int16_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant int16_t max = metal::numeric_limits< int16_t >::max()
       
      static constexpr constant int16_t min = metal::numeric_limits< int16_t >::min()
       
      static constexpr constant int16_t finite_max = metal::numeric_limits< int16_t >::max()
       
      static constexpr constant int16_t finite_min = metal::numeric_limits< int16_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int16_t Limits< int16_t >::finite_max = metal::numeric_limits< int16_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int16_t Limits< int16_t >::finite_min = metal::numeric_limits< int16_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int16_t Limits< int16_t >::max = metal::numeric_limits< int16_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int16_t Limits< int16_t >::min = metal::numeric_limits< int16_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01int32__t_01_4-members.html b/docs/build/html/struct_limits_3_01int32__t_01_4-members.html deleted file mode 100644 index 2e202cd6..00000000 --- a/docs/build/html/struct_limits_3_01int32__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< int32_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< int32_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< int32_t >static
      finite_minLimits< int32_t >static
      maxLimits< int32_t >static
      minLimits< int32_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01int32__t_01_4.html b/docs/build/html/struct_limits_3_01int32__t_01_4.html deleted file mode 100644 index 91361e22..00000000 --- a/docs/build/html/struct_limits_3_01int32__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< int32_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< int32_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant int32_t max = metal::numeric_limits< int32_t >::max()
       
      static constexpr constant int32_t min = metal::numeric_limits< int32_t >::min()
       
      static constexpr constant int32_t finite_max = metal::numeric_limits< int32_t >::max()
       
      static constexpr constant int32_t finite_min = metal::numeric_limits< int32_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int32_t Limits< int32_t >::finite_max = metal::numeric_limits< int32_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int32_t Limits< int32_t >::finite_min = metal::numeric_limits< int32_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int32_t Limits< int32_t >::max = metal::numeric_limits< int32_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int32_t Limits< int32_t >::min = metal::numeric_limits< int32_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01int64__t_01_4-members.html b/docs/build/html/struct_limits_3_01int64__t_01_4-members.html deleted file mode 100644 index 9540858c..00000000 --- a/docs/build/html/struct_limits_3_01int64__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< int64_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< int64_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< int64_t >static
      finite_minLimits< int64_t >static
      maxLimits< int64_t >static
      minLimits< int64_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01int64__t_01_4.html b/docs/build/html/struct_limits_3_01int64__t_01_4.html deleted file mode 100644 index 025a0a1d..00000000 --- a/docs/build/html/struct_limits_3_01int64__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< int64_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< int64_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant int64_t max = metal::numeric_limits< int64_t >::max()
       
      static constexpr constant int64_t min = metal::numeric_limits< int64_t >::min()
       
      static constexpr constant int64_t finite_max = metal::numeric_limits< int64_t >::max()
       
      static constexpr constant int64_t finite_min = metal::numeric_limits< int64_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int64_t Limits< int64_t >::finite_max = metal::numeric_limits< int64_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int64_t Limits< int64_t >::finite_min = metal::numeric_limits< int64_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int64_t Limits< int64_t >::max = metal::numeric_limits< int64_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int64_t Limits< int64_t >::min = metal::numeric_limits< int64_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01int8__t_01_4-members.html b/docs/build/html/struct_limits_3_01int8__t_01_4-members.html deleted file mode 100644 index 5f9bfe7f..00000000 --- a/docs/build/html/struct_limits_3_01int8__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< int8_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< int8_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< int8_t >static
      finite_minLimits< int8_t >static
      maxLimits< int8_t >static
      minLimits< int8_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01int8__t_01_4.html b/docs/build/html/struct_limits_3_01int8__t_01_4.html deleted file mode 100644 index 10d9eca2..00000000 --- a/docs/build/html/struct_limits_3_01int8__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< int8_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< int8_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant int8_t max = metal::numeric_limits< int8_t >::max()
       
      static constexpr constant int8_t min = metal::numeric_limits< int8_t >::min()
       
      static constexpr constant int8_t finite_max = metal::numeric_limits< int8_t >::max()
       
      static constexpr constant int8_t finite_min = metal::numeric_limits< int8_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int8_t Limits< int8_t >::finite_max = metal::numeric_limits< int8_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int8_t Limits< int8_t >::finite_min = metal::numeric_limits< int8_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int8_t Limits< int8_t >::max = metal::numeric_limits< int8_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int8_t Limits< int8_t >::min = metal::numeric_limits< int8_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint16__t_01_4-members.html b/docs/build/html/struct_limits_3_01uint16__t_01_4-members.html deleted file mode 100644 index dedf223a..00000000 --- a/docs/build/html/struct_limits_3_01uint16__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< uint16_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< uint16_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< uint16_t >static
      finite_minLimits< uint16_t >static
      maxLimits< uint16_t >static
      minLimits< uint16_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint16__t_01_4.html b/docs/build/html/struct_limits_3_01uint16__t_01_4.html deleted file mode 100644 index 97fa8ae3..00000000 --- a/docs/build/html/struct_limits_3_01uint16__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< uint16_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< uint16_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant uint16_t max = metal::numeric_limits< uint16_t >::max()
       
      static constexpr constant uint16_t min = metal::numeric_limits< uint16_t >::min()
       
      static constexpr constant uint16_t finite_max = metal::numeric_limits< uint16_t >::max()
       
      static constexpr constant uint16_t finite_min = metal::numeric_limits< uint16_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint16_t Limits< uint16_t >::finite_max = metal::numeric_limits< uint16_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint16_t Limits< uint16_t >::finite_min = metal::numeric_limits< uint16_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint16_t Limits< uint16_t >::max = metal::numeric_limits< uint16_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint16_t Limits< uint16_t >::min = metal::numeric_limits< uint16_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint32__t_01_4-members.html b/docs/build/html/struct_limits_3_01uint32__t_01_4-members.html deleted file mode 100644 index 2a40eb8f..00000000 --- a/docs/build/html/struct_limits_3_01uint32__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< uint32_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< uint32_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< uint32_t >static
      finite_minLimits< uint32_t >static
      maxLimits< uint32_t >static
      minLimits< uint32_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint32__t_01_4.html b/docs/build/html/struct_limits_3_01uint32__t_01_4.html deleted file mode 100644 index 8215590f..00000000 --- a/docs/build/html/struct_limits_3_01uint32__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< uint32_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< uint32_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant uint32_t max = metal::numeric_limits< uint32_t >::max()
       
      static constexpr constant uint32_t min = metal::numeric_limits< uint32_t >::min()
       
      static constexpr constant uint32_t finite_max = metal::numeric_limits< uint32_t >::max()
       
      static constexpr constant uint32_t finite_min = metal::numeric_limits< uint32_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint32_t Limits< uint32_t >::finite_max = metal::numeric_limits< uint32_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint32_t Limits< uint32_t >::finite_min = metal::numeric_limits< uint32_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint32_t Limits< uint32_t >::max = metal::numeric_limits< uint32_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint32_t Limits< uint32_t >::min = metal::numeric_limits< uint32_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint64__t_01_4-members.html b/docs/build/html/struct_limits_3_01uint64__t_01_4-members.html deleted file mode 100644 index ba2629ad..00000000 --- a/docs/build/html/struct_limits_3_01uint64__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< uint64_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< uint64_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< uint64_t >static
      finite_minLimits< uint64_t >static
      maxLimits< uint64_t >static
      minLimits< uint64_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint64__t_01_4.html b/docs/build/html/struct_limits_3_01uint64__t_01_4.html deleted file mode 100644 index c4183bb9..00000000 --- a/docs/build/html/struct_limits_3_01uint64__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< uint64_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< uint64_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant uint64_t max = metal::numeric_limits< uint64_t >::max()
       
      static constexpr constant uint64_t min = metal::numeric_limits< uint64_t >::min()
       
      static constexpr constant uint64_t finite_max = metal::numeric_limits< uint64_t >::max()
       
      static constexpr constant uint64_t finite_min = metal::numeric_limits< uint64_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint64_t Limits< uint64_t >::finite_max = metal::numeric_limits< uint64_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint64_t Limits< uint64_t >::finite_min = metal::numeric_limits< uint64_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint64_t Limits< uint64_t >::max = metal::numeric_limits< uint64_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint64_t Limits< uint64_t >::min = metal::numeric_limits< uint64_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint8__t_01_4-members.html b/docs/build/html/struct_limits_3_01uint8__t_01_4-members.html deleted file mode 100644 index 7f89e16d..00000000 --- a/docs/build/html/struct_limits_3_01uint8__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Limits< uint8_t > Member List
      -
      -
      - -

      This is the complete list of members for Limits< uint8_t >, including all inherited members.

      - - - - - -
      finite_maxLimits< uint8_t >static
      finite_minLimits< uint8_t >static
      maxLimits< uint8_t >static
      minLimits< uint8_t >static
      - - - - diff --git a/docs/build/html/struct_limits_3_01uint8__t_01_4.html b/docs/build/html/struct_limits_3_01uint8__t_01_4.html deleted file mode 100644 index 377515a9..00000000 --- a/docs/build/html/struct_limits_3_01uint8__t_01_4.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - -MLX: Limits< uint8_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Limits< uint8_t > Struct Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant uint8_t max = metal::numeric_limits< uint8_t >::max()
       
      static constexpr constant uint8_t min = metal::numeric_limits< uint8_t >::min()
       
      static constexpr constant uint8_t finite_max = metal::numeric_limits< uint8_t >::max()
       
      static constexpr constant uint8_t finite_min = metal::numeric_limits< uint8_t >::min()
       
      -

      Member Data Documentation

      - -

      ◆ finite_max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint8_t Limits< uint8_t >::finite_max = metal::numeric_limits< uint8_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ finite_min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint8_t Limits< uint8_t >::finite_min = metal::numeric_limits< uint8_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint8_t Limits< uint8_t >::max = metal::numeric_limits< uint8_t >::max()
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant uint8_t Limits< uint8_t >::min = metal::numeric_limits< uint8_t >::min()
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_log-members.html b/docs/build/html/struct_log-members.html deleted file mode 100644 index 2a658e9b..00000000 --- a/docs/build/html/struct_log-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Log Member List
      -
      -
      - -

      This is the complete list of members for Log, including all inherited members.

      - - -
      operator()(T x)Loginline
      - - - - diff --git a/docs/build/html/struct_log.html b/docs/build/html/struct_log.html deleted file mode 100644 index ea79e837..00000000 --- a/docs/build/html/struct_log.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Log Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Log Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Log::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_log10-members.html b/docs/build/html/struct_log10-members.html deleted file mode 100644 index 5ee4d512..00000000 --- a/docs/build/html/struct_log10-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Log10 Member List
      -
      -
      - -

      This is the complete list of members for Log10, including all inherited members.

      - - -
      operator()(T x)Log10inline
      - - - - diff --git a/docs/build/html/struct_log10.html b/docs/build/html/struct_log10.html deleted file mode 100644 index adf5383f..00000000 --- a/docs/build/html/struct_log10.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Log10 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Log10 Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Log10::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_log1p-members.html b/docs/build/html/struct_log1p-members.html deleted file mode 100644 index b23db32b..00000000 --- a/docs/build/html/struct_log1p-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Log1p Member List
      -
      -
      - -

      This is the complete list of members for Log1p, including all inherited members.

      - - -
      operator()(T x)Log1pinline
      - - - - diff --git a/docs/build/html/struct_log1p.html b/docs/build/html/struct_log1p.html deleted file mode 100644 index 45ea5612..00000000 --- a/docs/build/html/struct_log1p.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Log1p Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Log1p Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Log1p::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_log2-members.html b/docs/build/html/struct_log2-members.html deleted file mode 100644 index fcabc5e5..00000000 --- a/docs/build/html/struct_log2-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Log2 Member List
      -
      -
      - -

      This is the complete list of members for Log2, including all inherited members.

      - - -
      operator()(T x)Log2inline
      - - - - diff --git a/docs/build/html/struct_log2.html b/docs/build/html/struct_log2.html deleted file mode 100644 index 3f03e825..00000000 --- a/docs/build/html/struct_log2.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Log2 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Log2 Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Log2::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_log_add_exp-members.html b/docs/build/html/struct_log_add_exp-members.html deleted file mode 100644 index 9832687c..00000000 --- a/docs/build/html/struct_log_add_exp-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LogAddExp Member List
      -
      -
      - -

      This is the complete list of members for LogAddExp, including all inherited members.

      - - -
      operator()(T x, T y)LogAddExpinline
      - - - - diff --git a/docs/build/html/struct_log_add_exp.html b/docs/build/html/struct_log_add_exp.html deleted file mode 100644 index b068b78d..00000000 --- a/docs/build/html/struct_log_add_exp.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: LogAddExp Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LogAddExp Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T LogAddExp::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_logical_and-members.html b/docs/build/html/struct_logical_and-members.html deleted file mode 100644 index bf1f9b81..00000000 --- a/docs/build/html/struct_logical_and-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LogicalAnd Member List
      -
      -
      - -

      This is the complete list of members for LogicalAnd, including all inherited members.

      - - -
      operator()(T x, T y)LogicalAndinline
      - - - - diff --git a/docs/build/html/struct_logical_and.html b/docs/build/html/struct_logical_and.html deleted file mode 100644 index dc9b3820..00000000 --- a/docs/build/html/struct_logical_and.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: LogicalAnd Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LogicalAnd Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T LogicalAnd::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_logical_not-members.html b/docs/build/html/struct_logical_not-members.html deleted file mode 100644 index 639881e7..00000000 --- a/docs/build/html/struct_logical_not-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LogicalNot Member List
      -
      -
      - -

      This is the complete list of members for LogicalNot, including all inherited members.

      - - -
      operator()(T x)LogicalNotinline
      - - - - diff --git a/docs/build/html/struct_logical_not.html b/docs/build/html/struct_logical_not.html deleted file mode 100644 index 680e280c..00000000 --- a/docs/build/html/struct_logical_not.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: LogicalNot Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LogicalNot Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T LogicalNot::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_logical_or-members.html b/docs/build/html/struct_logical_or-members.html deleted file mode 100644 index 869506b1..00000000 --- a/docs/build/html/struct_logical_or-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      LogicalOr Member List
      -
      -
      - -

      This is the complete list of members for LogicalOr, including all inherited members.

      - - -
      operator()(T x, T y)LogicalOrinline
      - - - - diff --git a/docs/build/html/struct_logical_or.html b/docs/build/html/struct_logical_or.html deleted file mode 100644 index c448dd39..00000000 --- a/docs/build/html/struct_logical_or.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: LogicalOr Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      LogicalOr Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T LogicalOr::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_m_l_x_conv_params-members.html b/docs/build/html/struct_m_l_x_conv_params-members.html deleted file mode 100644 index da198f4d..00000000 --- a/docs/build/html/struct_m_l_x_conv_params-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      MLXConvParams< NDIM > Member List
      -
      - - - - - diff --git a/docs/build/html/struct_m_l_x_conv_params.html b/docs/build/html/struct_m_l_x_conv_params.html deleted file mode 100644 index bb91fcda..00000000 --- a/docs/build/html/struct_m_l_x_conv_params.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - -MLX: MLXConvParams< NDIM > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      MLXConvParams< NDIM > Struct Template Reference
      -
      -
      - -

      #include <params.h>

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Attributes

      const int N
       
      const int C
       
      const int O
       
      const int iS [NDIM]
       
      const int wS [NDIM]
       
      const int oS [NDIM]
       
      const int str [NDIM]
       
      const int pad [NDIM]
       
      const int kdil [NDIM]
       
      const int idil [NDIM]
       
      const size_t in_strides [NDIM+2]
       
      const size_t wt_strides [NDIM+2]
       
      const size_t out_strides [NDIM+2]
       
      const int groups
       
      const bool flip
       
      -

      Member Data Documentation

      - -

      ◆ C

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::C
      -
      - -
      -
      - -

      ◆ flip

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const bool MLXConvParams< NDIM >::flip
      -
      - -
      -
      - -

      ◆ groups

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::groups
      -
      - -
      -
      - -

      ◆ idil

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::idil[NDIM]
      -
      - -
      -
      - -

      ◆ in_strides

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const size_t MLXConvParams< NDIM >::in_strides[NDIM+2]
      -
      - -
      -
      - -

      ◆ iS

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::iS[NDIM]
      -
      - -
      -
      - -

      ◆ kdil

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::kdil[NDIM]
      -
      - -
      -
      - -

      ◆ N

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::N
      -
      - -
      -
      - -

      ◆ O

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::O
      -
      - -
      -
      - -

      ◆ oS

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::oS[NDIM]
      -
      - -
      -
      - -

      ◆ out_strides

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const size_t MLXConvParams< NDIM >::out_strides[NDIM+2]
      -
      - -
      -
      - -

      ◆ pad

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::pad[NDIM]
      -
      - -
      -
      - -

      ◆ str

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::str[NDIM]
      -
      - -
      -
      - -

      ◆ wS

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const int MLXConvParams< NDIM >::wS[NDIM]
      -
      - -
      -
      - -

      ◆ wt_strides

      - -
      -
      -
      -template<int NDIM>
      - - - - -
      const size_t MLXConvParams< NDIM >::wt_strides[NDIM+2]
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/steel/conv/params.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_m_l_x_fast_attention_params-members.html b/docs/build/html/struct_m_l_x_fast_attention_params-members.html deleted file mode 100644 index 4369a778..00000000 --- a/docs/build/html/struct_m_l_x_fast_attention_params-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      MLXFastAttentionParams Member List
      -
      - - - - - diff --git a/docs/build/html/struct_m_l_x_fast_attention_params.html b/docs/build/html/struct_m_l_x_fast_attention_params.html deleted file mode 100644 index fe5c8024..00000000 --- a/docs/build/html/struct_m_l_x_fast_attention_params.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - - - - -MLX: MLXFastAttentionParams Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      MLXFastAttentionParams Struct Reference
      -
      -
      - -

      #include <scaled_dot_product_attention_params.h>

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Attributes

      const int M
       
      const int N
       
      const int K
       
      const int ldq
       
      const int ldk
       
      const int ldv
       
      const int lds
       
      const int ldo
       
      const int tiles_n
       
      const int tiles_m
       
      const int batch_stride_q
       
      const int batch_stride_k
       
      const int batch_stride_v
       
      const int batch_stride_o
       
      const int swizzle_log
       
      const int gemm_n_iterations_aligned
       
      const int gemm_k_iterations_aligned
       
      const int gemm_sv_m_block_iterations
       
      const int batch_ndim
       
      const float alpha
       
      -

      Member Data Documentation

      - -

      ◆ alpha

      - -
      -
      - - - - -
      const float MLXFastAttentionParams::alpha
      -
      - -
      -
      - -

      ◆ batch_ndim

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::batch_ndim
      -
      - -
      -
      - -

      ◆ batch_stride_k

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::batch_stride_k
      -
      - -
      -
      - -

      ◆ batch_stride_o

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::batch_stride_o
      -
      - -
      -
      - -

      ◆ batch_stride_q

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::batch_stride_q
      -
      - -
      -
      - -

      ◆ batch_stride_v

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::batch_stride_v
      -
      - -
      -
      - -

      ◆ gemm_k_iterations_aligned

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::gemm_k_iterations_aligned
      -
      - -
      -
      - -

      ◆ gemm_n_iterations_aligned

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::gemm_n_iterations_aligned
      -
      - -
      -
      - -

      ◆ gemm_sv_m_block_iterations

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::gemm_sv_m_block_iterations
      -
      - -
      -
      - -

      ◆ K

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::K
      -
      - -
      -
      - -

      ◆ ldk

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::ldk
      -
      - -
      -
      - -

      ◆ ldo

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::ldo
      -
      - -
      -
      - -

      ◆ ldq

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::ldq
      -
      - -
      -
      - -

      ◆ lds

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::lds
      -
      - -
      -
      - -

      ◆ ldv

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::ldv
      -
      - -
      -
      - -

      ◆ M

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::M
      -
      - -
      -
      - -

      ◆ N

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::N
      -
      - -
      -
      - -

      ◆ swizzle_log

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::swizzle_log
      -
      - -
      -
      - -

      ◆ tiles_m

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::tiles_m
      -
      - -
      -
      - -

      ◆ tiles_n

      - -
      -
      - - - - -
      const int MLXFastAttentionParams::tiles_n
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params-members.html b/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params-members.html deleted file mode 100644 index 25a21057..00000000 --- a/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      MLXScaledDotProductAttentionParams Member List
      -
      - - - - - diff --git a/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params.html b/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params.html deleted file mode 100644 index 5c110a5a..00000000 --- a/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -MLX: MLXScaledDotProductAttentionParams Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      MLXScaledDotProductAttentionParams Struct Reference
      -
      -
      - -

      #include <scaled_dot_product_attention_params.h>

      - - - - - - - - - - - - -

      -Public Attributes

      const uint QUERY_SEQUENCE_LENGTH = 1
       
      const uint N_Q_HEADS = 32
       
      const uint N_KV_HEADS = 32
       
      const uint KV_TILES = 1
       
      const float INV_ALPHA = 0.08838834764831843f
       
      -

      Member Data Documentation

      - -

      ◆ INV_ALPHA

      - -
      -
      - - - - -
      const float MLXScaledDotProductAttentionParams::INV_ALPHA = 0.08838834764831843f
      -
      - -
      -
      - -

      ◆ KV_TILES

      - -
      -
      - - - - -
      const uint MLXScaledDotProductAttentionParams::KV_TILES = 1
      -
      - -
      -
      - -

      ◆ N_KV_HEADS

      - -
      -
      - - - - -
      const uint MLXScaledDotProductAttentionParams::N_KV_HEADS = 32
      -
      - -
      -
      - -

      ◆ N_Q_HEADS

      - -
      -
      - - - - -
      const uint MLXScaledDotProductAttentionParams::N_Q_HEADS = 32
      -
      - -
      -
      - -

      ◆ QUERY_SEQUENCE_LENGTH

      - -
      -
      - - - - -
      const uint MLXScaledDotProductAttentionParams::QUERY_SEQUENCE_LENGTH = 1
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_max-members.html b/docs/build/html/struct_max-members.html deleted file mode 100644 index bdfb7ba6..00000000 --- a/docs/build/html/struct_max-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Max< U > Member List
      -
      -
      - -

      This is the complete list of members for Max< U >, including all inherited members.

      - - -
      aMax< U >
      - - - - diff --git a/docs/build/html/struct_max.html b/docs/build/html/struct_max.html deleted file mode 100644 index f48db31e..00000000 --- a/docs/build/html/struct_max.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -MLX: Max< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Max< U > Struct Template Reference
      -
      -
      - -

      #include <ops.h>

      - - - - - -

      -Public Attributes

      template<typename T >
      a: b
       
      -

      Member Data Documentation

      - -

      ◆ a

      - -
      -
      -
      -template<typename U >
      -
      -template<typename T >
      - - - - -
      b Max< U >::a
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_maximum-members.html b/docs/build/html/struct_maximum-members.html deleted file mode 100644 index c93d8c5b..00000000 --- a/docs/build/html/struct_maximum-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Maximum Member List
      -
      -
      - -

      This is the complete list of members for Maximum, including all inherited members.

      - - - - -
      operator()(T x, T y)Maximuminline
      operator()(T x, T y)Maximuminline
      operator()(complex64_t x, complex64_t y)Maximuminline
      - - - - diff --git a/docs/build/html/struct_maximum.html b/docs/build/html/struct_maximum.html deleted file mode 100644 index 4d5db1cd..00000000 --- a/docs/build/html/struct_maximum.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - -MLX: Maximum Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Maximum Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      metal::enable_if_t< metal::is_integral_v< T >, T > operator() (T x, T y)
       
      template<typename T >
      metal::enable_if_t<!metal::is_integral_v< T >, T > operator() (T x, T y)
       
      template<>
      complex64_t operator() (complex64_t x, complex64_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/3]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      complex64_t Maximum::operator() (complex64_t x,
      complex64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t< metal::is_integral_v< T >, T > Maximum::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t<!metal::is_integral_v< T >, T > Maximum::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_min.html b/docs/build/html/struct_min.html deleted file mode 100644 index 721dadbf..00000000 --- a/docs/build/html/struct_min.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Min< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Min< U > Struct Template Reference
      -
      -
      - -

      #include <ops.h>

      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_minimum-members.html b/docs/build/html/struct_minimum-members.html deleted file mode 100644 index 00e09b6a..00000000 --- a/docs/build/html/struct_minimum-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Minimum Member List
      -
      -
      - -

      This is the complete list of members for Minimum, including all inherited members.

      - - - - -
      operator()(T x, T y)Minimuminline
      operator()(T x, T y)Minimuminline
      operator()(complex64_t x, complex64_t y)Minimuminline
      - - - - diff --git a/docs/build/html/struct_minimum.html b/docs/build/html/struct_minimum.html deleted file mode 100644 index e4305430..00000000 --- a/docs/build/html/struct_minimum.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - -MLX: Minimum Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Minimum Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      metal::enable_if_t< metal::is_integral_v< T >, T > operator() (T x, T y)
       
      template<typename T >
      metal::enable_if_t<!metal::is_integral_v< T >, T > operator() (T x, T y)
       
      template<>
      complex64_t operator() (complex64_t x, complex64_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/3]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      complex64_t Minimum::operator() (complex64_t x,
      complex64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t< metal::is_integral_v< T >, T > Minimum::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t<!metal::is_integral_v< T >, T > Minimum::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_multiply-members.html b/docs/build/html/struct_multiply-members.html deleted file mode 100644 index 3f767202..00000000 --- a/docs/build/html/struct_multiply-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Multiply Member List
      -
      -
      - -

      This is the complete list of members for Multiply, including all inherited members.

      - - -
      operator()(T x, T y)Multiplyinline
      - - - - diff --git a/docs/build/html/struct_multiply.html b/docs/build/html/struct_multiply.html deleted file mode 100644 index 5d9c6805..00000000 --- a/docs/build/html/struct_multiply.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Multiply Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Multiply Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T Multiply::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_na_n_equal-members.html b/docs/build/html/struct_na_n_equal-members.html deleted file mode 100644 index f202b590..00000000 --- a/docs/build/html/struct_na_n_equal-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      NaNEqual Member List
      -
      -
      - -

      This is the complete list of members for NaNEqual, including all inherited members.

      - - - -
      operator()(T x, T y)NaNEqualinline
      operator()(complex64_t x, complex64_t y)NaNEqualinline
      - - - - diff --git a/docs/build/html/struct_na_n_equal.html b/docs/build/html/struct_na_n_equal.html deleted file mode 100644 index 73c3cab9..00000000 --- a/docs/build/html/struct_na_n_equal.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -MLX: NaNEqual Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      NaNEqual Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      template<>
      bool operator() (complex64_t x, complex64_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      bool NaNEqual::operator() (complex64_t x,
      complex64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool NaNEqual::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_negative-members.html b/docs/build/html/struct_negative-members.html deleted file mode 100644 index 851d7d8b..00000000 --- a/docs/build/html/struct_negative-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Negative Member List
      -
      -
      - -

      This is the complete list of members for Negative, including all inherited members.

      - - -
      operator()(T x)Negativeinline
      - - - - diff --git a/docs/build/html/struct_negative.html b/docs/build/html/struct_negative.html deleted file mode 100644 index 2da802ba..00000000 --- a/docs/build/html/struct_negative.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Negative Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Negative Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Negative::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_none-members.html b/docs/build/html/struct_none-members.html deleted file mode 100644 index 6ac6aa72..00000000 --- a/docs/build/html/struct_none-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      None Member List
      -
      -
      - -

      This is the complete list of members for None, including all inherited members.

      - - -
      atomic_update(device mlx_atomic< T > *out, T val, size_t offset=0)Noneinline
      - - - - diff --git a/docs/build/html/struct_none.html b/docs/build/html/struct_none.html deleted file mode 100644 index 846aac8c..00000000 --- a/docs/build/html/struct_none.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -MLX: None Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      None Struct Reference
      -
      -
      - -

      #include <ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      void atomic_update (device mlx_atomic< T > *out, T val, size_t offset=0)
       
      -

      Member Function Documentation

      - -

      ◆ atomic_update()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - - - - - - -
      void None::atomic_update (device mlx_atomic< T > * out,
      T val,
      size_t offset = 0 )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_not_equal-members.html b/docs/build/html/struct_not_equal-members.html deleted file mode 100644 index d4225ca8..00000000 --- a/docs/build/html/struct_not_equal-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      NotEqual Member List
      -
      -
      - -

      This is the complete list of members for NotEqual, including all inherited members.

      - - - -
      operator()(T x, T y)NotEqualinline
      operator()(complex64_t x, complex64_t y)NotEqualinline
      - - - - diff --git a/docs/build/html/struct_not_equal.html b/docs/build/html/struct_not_equal.html deleted file mode 100644 index a42ee7fb..00000000 --- a/docs/build/html/struct_not_equal.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - -MLX: NotEqual Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      NotEqual Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      bool operator() (T x, T y)
       
      template<>
      bool operator() (complex64_t x, complex64_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      bool NotEqual::operator() (complex64_t x,
      complex64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      bool NotEqual::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_or.html b/docs/build/html/struct_or.html deleted file mode 100644 index 04675c0c..00000000 --- a/docs/build/html/struct_or.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Or< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Or< U > Struct Template Reference
      -
      -
      - -

      #include <ops.h>

      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_power-members.html b/docs/build/html/struct_power-members.html deleted file mode 100644 index cf025f59..00000000 --- a/docs/build/html/struct_power-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Power Member List
      -
      -
      - -

      This is the complete list of members for Power, including all inherited members.

      - - - - -
      operator()(T base, T exp)Powerinline
      operator()(T base, T exp)Powerinline
      operator()(complex64_t x, complex64_t y)Powerinline
      - - - - diff --git a/docs/build/html/struct_power.html b/docs/build/html/struct_power.html deleted file mode 100644 index 2c357b12..00000000 --- a/docs/build/html/struct_power.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - -MLX: Power Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Power Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      metal::enable_if_t<!metal::is_integral_v< T >, T > operator() (T base, T exp)
       
      template<typename T >
      metal::enable_if_t< metal::is_integral_v< T >, T > operator() (T base, T exp)
       
      template<>
      complex64_t operator() (complex64_t x, complex64_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/3]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      complex64_t Power::operator() (complex64_t x,
      complex64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t<!metal::is_integral_v< T >, T > Power::operator() (T base,
      T exp )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t< metal::is_integral_v< T >, T > Power::operator() (T base,
      T exp )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_prod.html b/docs/build/html/struct_prod.html deleted file mode 100644 index 9c1f14a3..00000000 --- a/docs/build/html/struct_prod.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Prod< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Prod< U > Struct Template Reference
      -
      -
      - -

      #include <ops.h>

      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_quantized_block_loader-members.html b/docs/build/html/struct_quantized_block_loader-members.html deleted file mode 100644 index ccb28f61..00000000 --- a/docs/build/html/struct_quantized_block_loader-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits > Member List
      -
      -
      - -

      This is the complete list of members for QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >, including all inherited members.

      - - - - - - - - - - - - - - - - - - - - -
      BCOLS_PACKEDQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >static
      biQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      biasesQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      bjQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      dstQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      group_step_cntQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      group_stepsQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >static
      group_strideQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      load_safe(short2 src_tile_dim) constQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >inline
      load_unsafe() constQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >inline
      n_readsQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >static
      next()QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >inline
      pack_factorQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >static
      QuantizedBlockLoader(const device uint32_t *src_, const device T *scales_, const device T *biases_, const int src_ld_, threadgroup T *dst_, ushort simd_group_id, ushort simd_lane_id)QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >inline
      scalesQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      srcQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      src_ldQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      thread_idxQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      tile_strideQuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >
      - - - - diff --git a/docs/build/html/struct_quantized_block_loader.html b/docs/build/html/struct_quantized_block_loader.html deleted file mode 100644 index 471d9057..00000000 --- a/docs/build/html/struct_quantized_block_loader.html +++ /dev/null @@ -1,556 +0,0 @@ - - - - - - - -MLX: QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits > Struct Template Reference
      -
      -
      - -

      #include <quantized.h>

      - - - - - - - - - - -

      -Public Member Functions

       QuantizedBlockLoader (const device uint32_t *src_, const device T *scales_, const device T *biases_, const int src_ld_, threadgroup T *dst_, ushort simd_group_id, ushort simd_lane_id)
       
      void load_unsafe () const
       
      void load_safe (short2 src_tile_dim) const
       
      void next ()
       
      - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Attributes

      const int src_ld
       
      const int tile_stride
       
      short group_step_cnt
       
      const int group_stride
       
      const short thread_idx
       
      const short bi
       
      const short bj
       
      threadgroup T * dst
       
      const device uint32_t * src
       
      const device T * scales
       
      const device T * biases
       
      - - - - - - - - - -

      -Static Public Attributes

      static constant constexpr const short pack_factor = 32 / bits
       
      static constant constexpr const short BCOLS_PACKED = BCOLS / pack_factor
       
      static constant constexpr const short n_reads
       
      static constant constexpr const short group_steps = group_size / BCOLS
       
      -

      Constructor & Destructor Documentation

      - -

      ◆ QuantizedBlockLoader()

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::QuantizedBlockLoader (const device uint32_t * src_,
      const device T * scales_,
      const device T * biases_,
      const int src_ld_,
      threadgroup T * dst_,
      ushort simd_group_id,
      ushort simd_lane_id )
      -
      -inline
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ load_safe()

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - - - - -
      void QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::load_safe (short2 src_tile_dim) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ load_unsafe()

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - - - - -
      void QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::load_unsafe () const
      -
      -inline
      -
      - -
      -
      - -

      ◆ next()

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - - - - -
      void QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::next ()
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ BCOLS_PACKED

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - -
      constant constexpr const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::BCOLS_PACKED = BCOLS / pack_factor
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ bi

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::bi
      -
      - -
      -
      - -

      ◆ biases

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const device T* QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::biases
      -
      - -
      -
      - -

      ◆ bj

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::bj
      -
      - -
      -
      - -

      ◆ dst

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      threadgroup T* QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::dst
      -
      - -
      -
      - -

      ◆ group_step_cnt

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::group_step_cnt
      -
      - -
      -
      - -

      ◆ group_steps

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - -
      constant constexpr const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::group_steps = group_size / BCOLS
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ group_stride

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const int QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::group_stride
      -
      - -
      -
      - -

      ◆ n_reads

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - -
      constant constexpr const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::n_reads
      -
      -staticconstexpr
      -
      -Initial value:
      =
      -
      (BCOLS_PACKED * BROWS < tgp_size) ? 1 : (BCOLS_PACKED * BROWS) / tgp_size
      -
      static constant constexpr const short BCOLS_PACKED
      Definition quantized.h:273
      -
      -
      -
      - -

      ◆ pack_factor

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - - -
      - - - - -
      constant constexpr const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::pack_factor = 32 / bits
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ scales

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const device T* QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::scales
      -
      - -
      -
      - -

      ◆ src

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const device uint32_t* QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::src
      -
      - -
      -
      - -

      ◆ src_ld

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const int QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::src_ld
      -
      - -
      -
      - -

      ◆ thread_idx

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const short QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::thread_idx
      -
      - -
      -
      - -

      ◆ tile_stride

      - -
      -
      -
      -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short group_size, short bits>
      - - - - -
      const int QuantizedBlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, group_size, bits >::tile_stride
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_read_writer-members.html b/docs/build/html/struct_read_writer-members.html deleted file mode 100644 index 804db775..00000000 --- a/docs/build/html/struct_read_writer-members.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ReadWriter< in_T, out_T, step, four_step_real > Member List
      -
      -
      - -

      This is the complete list of members for ReadWriter< in_T, out_T, step, four_step_real >, including all inherited members.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      batch_sizeReadWriter< in_T, out_T, step, four_step_real >
      bufReadWriter< in_T, out_T, step, four_step_real >
      compute_strided_indices(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >inline
      elemReadWriter< in_T, out_T, step, four_step_real >
      elems_per_threadReadWriter< in_T, out_T, step, four_step_real >
      gridReadWriter< in_T, out_T, step, four_step_real >
      inReadWriter< in_T, out_T, step, four_step_real >
      invReadWriter< in_T, out_T, step, four_step_real >
      load() constReadWriter< in_T, out_T, step, four_step_real >inline
      load() constReadWriter< in_T, out_T, step, four_step_real >
      load() constReadWriter< in_T, out_T, step, four_step_real >
      load_padded(int length, const device float2 *w_k) constReadWriter< in_T, out_T, step, four_step_real >inline
      load_padded(int length, const device float2 *w_k) constReadWriter< in_T, out_T, step, four_step_real >
      load_padded(int length, const device float2 *w_k) constReadWriter< in_T, out_T, step, four_step_real >
      load_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >inline
      load_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      load_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      load_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      load_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      nReadWriter< in_T, out_T, step, four_step_real >
      outReadWriter< in_T, out_T, step, four_step_real >
      out_of_bounds() constReadWriter< in_T, out_T, step, four_step_real >inline
      out_of_bounds() constReadWriter< in_T, out_T, step, four_step_real >
      out_of_bounds() constReadWriter< in_T, out_T, step, four_step_real >
      post_in(float2 elem) constReadWriter< in_T, out_T, step, four_step_real >inline
      post_in(float elem) constReadWriter< in_T, out_T, step, four_step_real >inline
      pre_out(float2 elem) constReadWriter< in_T, out_T, step, four_step_real >inline
      pre_out(float2 elem, int length) constReadWriter< in_T, out_T, step, four_step_real >inline
      ReadWriter(const device in_T *in_, threadgroup float2 *buf_, device out_T *out_, const short n_, const int batch_size_, const short elems_per_thread_, const uint3 elem_, const uint3 grid_, const bool inv_)ReadWriter< in_T, out_T, step, four_step_real >inline
      strided_device_idxReadWriter< in_T, out_T, step, four_step_real >
      strided_shared_idxReadWriter< in_T, out_T, step, four_step_real >
      threads_per_tgReadWriter< in_T, out_T, step, four_step_real >
      write() constReadWriter< in_T, out_T, step, four_step_real >inline
      write() constReadWriter< in_T, out_T, step, four_step_real >
      write() constReadWriter< in_T, out_T, step, four_step_real >
      write_padded(int length, const device float2 *w_k) constReadWriter< in_T, out_T, step, four_step_real >inline
      write_padded(int length, const device float2 *w_k) constReadWriter< in_T, out_T, step, four_step_real >
      write_padded(int length, const device float2 *w_k) constReadWriter< in_T, out_T, step, four_step_real >
      write_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >inline
      write_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      write_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      write_strided(int stride, int overall_n)ReadWriter< in_T, out_T, step, four_step_real >
      - - - - diff --git a/docs/build/html/struct_read_writer.html b/docs/build/html/struct_read_writer.html deleted file mode 100644 index 80848d6c..00000000 --- a/docs/build/html/struct_read_writer.html +++ /dev/null @@ -1,1125 +0,0 @@ - - - - - - - -MLX: ReadWriter< in_T, out_T, step, four_step_real > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ReadWriter< in_T, out_T, step, four_step_real > Struct Template Reference
      -
      -
      - -

      #include <readwrite.h>

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      METAL_FUNC ReadWriter (const device in_T *in_, threadgroup float2 *buf_, device out_T *out_, const short n_, const int batch_size_, const short elems_per_thread_, const uint3 elem_, const uint3 grid_, const bool inv_)
       
      METAL_FUNC float2 post_in (float2 elem) const
       
      METAL_FUNC float2 post_in (float elem) const
       
      METAL_FUNC float2 pre_out (float2 elem) const
       
      METAL_FUNC float2 pre_out (float2 elem, int length) const
       
      METAL_FUNC bool out_of_bounds () const
       
      METAL_FUNC void load () const
       
      METAL_FUNC void write () const
       
      METAL_FUNC void load_padded (int length, const device float2 *w_k) const
       
      METAL_FUNC void write_padded (int length, const device float2 *w_k) const
       
      METAL_FUNC void compute_strided_indices (int stride, int overall_n)
       
      METAL_FUNC void load_strided (int stride, int overall_n)
       
      METAL_FUNC void write_strided (int stride, int overall_n)
       
      METAL_FUNC void load_strided (int stride, int overall_n)
       
      METAL_FUNC void write_strided (int stride, int overall_n)
       
      METAL_FUNC bool out_of_bounds () const
       
      METAL_FUNC void load () const
       
      METAL_FUNC void write () const
       
      METAL_FUNC void load_padded (int length, const device float2 *w_k) const
       
      METAL_FUNC void write_padded (int length, const device float2 *w_k) const
       
      METAL_FUNC bool out_of_bounds () const
       
      METAL_FUNC void load () const
       
      METAL_FUNC void write () const
       
      METAL_FUNC void load_padded (int length, const device float2 *w_k) const
       
      METAL_FUNC void write_padded (int length, const device float2 *w_k) const
       
      METAL_FUNC void load_strided (int stride, int overall_n)
       
      METAL_FUNC void write_strided (int stride, int overall_n)
       
      METAL_FUNC void load_strided (int stride, int overall_n)
       
      METAL_FUNC void load_strided (int stride, int overall_n)
       
      METAL_FUNC void write_strided (int stride, int overall_n)
       
      - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Attributes

      const device in_T * in
       
      threadgroup float2 * buf
       
      device out_T * out
       
      int n
       
      int batch_size
       
      int elems_per_thread
       
      uint3 elem
       
      uint3 grid
       
      int threads_per_tg
       
      bool inv
       
      int strided_device_idx = 0
       
      int strided_shared_idx = 0
       
      -

      Constructor & Destructor Documentation

      - -

      ◆ ReadWriter()

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      METAL_FUNC ReadWriter< in_T, out_T, step, four_step_real >::ReadWriter (const device in_T * in_,
      threadgroup float2 * buf_,
      device out_T * out_,
      const short n_,
      const int batch_size_,
      const short elems_per_thread_,
      const uint3 elem_,
      const uint3 grid_,
      const bool inv_ )
      -
      -inline
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ compute_strided_indices()

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::compute_strided_indices (int stride,
      int overall_n )
      -
      -inline
      -
      - -
      -
      - -

      ◆ load() [1/3]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::load () const
      -
      -inline
      -
      - -
      -
      - -

      ◆ load() [2/3]

      - -
      -
      - - - - - - - -
      METAL_FUNC void ReadWriter< float, float2 >::load () const
      -
      - -
      -
      - -

      ◆ load() [3/3]

      - -
      -
      - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float >::load () const
      -
      - -
      -
      - -

      ◆ load_padded() [1/3]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::load_padded (int length,
      const device float2 * w_k ) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ load_padded() [2/3]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float, float2 >::load_padded (int length,
      const device float2 * w_k ) const
      -
      - -
      -
      - -

      ◆ load_padded() [3/3]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float >::load_padded (int length,
      const device float2 * w_k ) const
      -
      - -
      -
      - -

      ◆ load_strided() [1/5]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::load_strided (int stride,
      int overall_n )
      -
      -inline
      -
      - -
      -
      - -

      ◆ load_strided() [2/5]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float2, 1 >::load_strided (int stride,
      int overall_n )
      -
      - -
      -
      - -

      ◆ load_strided() [3/5]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float2, 1, true >::load_strided (int stride,
      int overall_n )
      -
      - -
      -
      - -

      ◆ load_strided() [4/5]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float2, 0, true >::load_strided (int stride,
      int overall_n )
      -
      - -
      -
      - -

      ◆ load_strided() [5/5]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float, 1, true >::load_strided (int stride,
      int overall_n )
      -
      - -
      -
      - -

      ◆ out_of_bounds() [1/3]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - -
      METAL_FUNC bool ReadWriter< in_T, out_T, step, four_step_real >::out_of_bounds () const
      -
      -inline
      -
      - -
      -
      - -

      ◆ out_of_bounds() [2/3]

      - -
      -
      - - - - - - - -
      METAL_FUNC bool ReadWriter< float, float2 >::out_of_bounds () const
      -
      - -
      -
      - -

      ◆ out_of_bounds() [3/3]

      - -
      -
      - - - - - - - -
      METAL_FUNC bool ReadWriter< float2, float >::out_of_bounds () const
      -
      - -
      -
      - -

      ◆ post_in() [1/2]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - -
      METAL_FUNC float2 ReadWriter< in_T, out_T, step, four_step_real >::post_in (float elem) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ post_in() [2/2]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - -
      METAL_FUNC float2 ReadWriter< in_T, out_T, step, four_step_real >::post_in (float2 elem) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ pre_out() [1/2]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - -
      METAL_FUNC float2 ReadWriter< in_T, out_T, step, four_step_real >::pre_out (float2 elem) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ pre_out() [2/2]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC float2 ReadWriter< in_T, out_T, step, four_step_real >::pre_out (float2 elem,
      int length ) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ write() [1/3]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::write () const
      -
      -inline
      -
      - -
      -
      - -

      ◆ write() [2/3]

      - -
      -
      - - - - - - - -
      METAL_FUNC void ReadWriter< float, float2 >::write () const
      -
      - -
      -
      - -

      ◆ write() [3/3]

      - -
      -
      - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float >::write () const
      -
      - -
      -
      - -

      ◆ write_padded() [1/3]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::write_padded (int length,
      const device float2 * w_k ) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ write_padded() [2/3]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float, float2 >::write_padded (int length,
      const device float2 * w_k ) const
      -
      - -
      -
      - -

      ◆ write_padded() [3/3]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float >::write_padded (int length,
      const device float2 * w_k ) const
      -
      - -
      -
      - -

      ◆ write_strided() [1/4]

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - - -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< in_T, out_T, step, four_step_real >::write_strided (int stride,
      int overall_n )
      -
      -inline
      -
      - -
      -
      - -

      ◆ write_strided() [2/4]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float2, 1 >::write_strided (int stride,
      int overall_n )
      -
      - -
      -
      - -

      ◆ write_strided() [3/4]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float2, 1, true >::write_strided (int stride,
      int overall_n )
      -
      - -
      -
      - -

      ◆ write_strided() [4/4]

      - -
      -
      - - - - - - - - - - - -
      METAL_FUNC void ReadWriter< float2, float, 1, true >::write_strided (int stride,
      int overall_n )
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ batch_size

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      int ReadWriter< in_T, out_T, step, four_step_real >::batch_size
      -
      - -
      -
      - -

      ◆ buf

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      threadgroup float2* ReadWriter< in_T, out_T, step, four_step_real >::buf
      -
      - -
      -
      - -

      ◆ elem

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      uint3 ReadWriter< in_T, out_T, step, four_step_real >::elem
      -
      - -
      -
      - -

      ◆ elems_per_thread

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      int ReadWriter< in_T, out_T, step, four_step_real >::elems_per_thread
      -
      - -
      -
      - -

      ◆ grid

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      uint3 ReadWriter< in_T, out_T, step, four_step_real >::grid
      -
      - -
      -
      - -

      ◆ in

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      const device in_T* ReadWriter< in_T, out_T, step, four_step_real >::in
      -
      - -
      -
      - -

      ◆ inv

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      bool ReadWriter< in_T, out_T, step, four_step_real >::inv
      -
      - -
      -
      - -

      ◆ n

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      int ReadWriter< in_T, out_T, step, four_step_real >::n
      -
      - -
      -
      - -

      ◆ out

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      device out_T* ReadWriter< in_T, out_T, step, four_step_real >::out
      -
      - -
      -
      - -

      ◆ strided_device_idx

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      int ReadWriter< in_T, out_T, step, four_step_real >::strided_device_idx = 0
      -
      - -
      -
      - -

      ◆ strided_shared_idx

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      int ReadWriter< in_T, out_T, step, four_step_real >::strided_shared_idx = 0
      -
      - -
      -
      - -

      ◆ threads_per_tg

      - -
      -
      -
      -template<typename in_T , typename out_T , int step = 0, bool four_step_real = false>
      - - - - -
      int ReadWriter< in_T, out_T, step, four_step_real >::threads_per_tg
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_remainder-members.html b/docs/build/html/struct_remainder-members.html deleted file mode 100644 index b0fbe1e6..00000000 --- a/docs/build/html/struct_remainder-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Remainder Member List
      -
      -
      - -

      This is the complete list of members for Remainder, including all inherited members.

      - - - - - -
      operator()(T x, T y)Remainderinline
      operator()(T x, T y)Remainderinline
      operator()(T x, T y)Remainderinline
      operator()(complex64_t x, complex64_t y)Remainderinline
      - - - - diff --git a/docs/build/html/struct_remainder.html b/docs/build/html/struct_remainder.html deleted file mode 100644 index 9c66c279..00000000 --- a/docs/build/html/struct_remainder.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -MLX: Remainder Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Remainder Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      metal::enable_if_t< metal::is_integral_v< T > &!metal::is_signed_v< T >, T > operator() (T x, T y)
       
      template<typename T >
      metal::enable_if_t< metal::is_integral_v< T > &metal::is_signed_v< T >, T > operator() (T x, T y)
       
      template<typename T >
      metal::enable_if_t<!metal::is_integral_v< T >, T > operator() (T x, T y)
       
      template<>
      complex64_t operator() (complex64_t x, complex64_t y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/4]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - - - - - -
      complex64_t Remainder::operator() (complex64_t x,
      complex64_t y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/4]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t< metal::is_integral_v< T > &!metal::is_signed_v< T >, T > Remainder::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/4]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t< metal::is_integral_v< T > &metal::is_signed_v< T >, T > Remainder::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [4/4]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      metal::enable_if_t<!metal::is_integral_v< T >, T > Remainder::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_right_shift-members.html b/docs/build/html/struct_right_shift-members.html deleted file mode 100644 index 84ba3248..00000000 --- a/docs/build/html/struct_right_shift-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      RightShift Member List
      -
      -
      - -

      This is the complete list of members for RightShift, including all inherited members.

      - - -
      operator()(T x, T y)RightShiftinline
      - - - - diff --git a/docs/build/html/struct_right_shift.html b/docs/build/html/struct_right_shift.html deleted file mode 100644 index e650eb89..00000000 --- a/docs/build/html/struct_right_shift.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: RightShift Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      RightShift Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T RightShift::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_round-members.html b/docs/build/html/struct_round-members.html deleted file mode 100644 index 642f5531..00000000 --- a/docs/build/html/struct_round-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Round Member List
      -
      -
      - -

      This is the complete list of members for Round, including all inherited members.

      - - - -
      operator()(T x)Roundinline
      operator()(complex64_t x)Roundinline
      - - - - diff --git a/docs/build/html/struct_round.html b/docs/build/html/struct_round.html deleted file mode 100644 index 32658035..00000000 --- a/docs/build/html/struct_round.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Round Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Round Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Round::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Round::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_rsqrt-members.html b/docs/build/html/struct_rsqrt-members.html deleted file mode 100644 index 75773683..00000000 --- a/docs/build/html/struct_rsqrt-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Rsqrt Member List
      -
      -
      - -

      This is the complete list of members for Rsqrt, including all inherited members.

      - - -
      operator()(T x)Rsqrtinline
      - - - - diff --git a/docs/build/html/struct_rsqrt.html b/docs/build/html/struct_rsqrt.html deleted file mode 100644 index 15a34b57..00000000 --- a/docs/build/html/struct_rsqrt.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Rsqrt Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Rsqrt Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Rsqrt::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_scale_op-members.html b/docs/build/html/struct_scale_op-members.html deleted file mode 100644 index b1602d9c..00000000 --- a/docs/build/html/struct_scale_op-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ScaleOp< OutT, InT > Member List
      -
      -
      - -

      This is the complete list of members for ScaleOp< OutT, InT >, including all inherited members.

      - - - - -
      apply(InT x) constScaleOp< OutT, InT >inline
      apply(InT x) constScaleOp< OutT, InT >inline
      scaleScaleOp< OutT, InT >
      - - - - diff --git a/docs/build/html/struct_scale_op.html b/docs/build/html/struct_scale_op.html deleted file mode 100644 index 3fe27132..00000000 --- a/docs/build/html/struct_scale_op.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -MLX: ScaleOp< OutT, InT > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ScaleOp< OutT, InT > Struct Template Reference
      -
      -
      - -

      #include <gemv_masked.h>

      - - - - - - -

      -Public Member Functions

      METAL_FUNC OutT apply (InT x) const
       
      METAL_FUNC OutT apply (InT x) const
       
      - - - -

      -Public Attributes

      OutT scale
       
      -

      Member Function Documentation

      - -

      ◆ apply() [1/2]

      - -
      -
      -
      -template<typename OutT , typename InT = OutT>
      - - - - - -
      - - - - - - - -
      METAL_FUNC OutT ScaleOp< OutT, InT >::apply (InT x) const
      -
      -inline
      -
      - -
      -
      - -

      ◆ apply() [2/2]

      - -
      -
      -
      -template<typename OutT , typename InT = OutT>
      - - - - - -
      - - - - - - - -
      METAL_FUNC OutT ScaleOp< OutT, InT >::apply (InT x) const
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ scale

      - -
      -
      -
      -template<typename OutT , typename InT = OutT>
      - - - - -
      OutT ScaleOp< OutT, InT >::scale
      -
      - -
      -
      -
      The documentation for this struct was generated from the following files: -
      - - - - diff --git a/docs/build/html/struct_select-members.html b/docs/build/html/struct_select-members.html deleted file mode 100644 index 3d7529a6..00000000 --- a/docs/build/html/struct_select-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Select Member List
      -
      -
      - -

      This is the complete list of members for Select, including all inherited members.

      - - -
      operator()(bool condition, T x, T y)Selectinline
      - - - - diff --git a/docs/build/html/struct_select.html b/docs/build/html/struct_select.html deleted file mode 100644 index 8617f8a5..00000000 --- a/docs/build/html/struct_select.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -MLX: Select Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Select Struct Reference
      -
      -
      - -

      #include <ternary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (bool condition, T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - - - - - - -
      T Select::operator() (bool condition,
      T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_sigmoid-members.html b/docs/build/html/struct_sigmoid-members.html deleted file mode 100644 index 72ce85ec..00000000 --- a/docs/build/html/struct_sigmoid-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Sigmoid Member List
      -
      -
      - -

      This is the complete list of members for Sigmoid, including all inherited members.

      - - -
      operator()(T x)Sigmoidinline
      - - - - diff --git a/docs/build/html/struct_sigmoid.html b/docs/build/html/struct_sigmoid.html deleted file mode 100644 index e36e860d..00000000 --- a/docs/build/html/struct_sigmoid.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Sigmoid Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Sigmoid Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Sigmoid::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_sign-members.html b/docs/build/html/struct_sign-members.html deleted file mode 100644 index 0ea78034..00000000 --- a/docs/build/html/struct_sign-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Sign Member List
      -
      -
      - -

      This is the complete list of members for Sign, including all inherited members.

      - - - - -
      operator()(T x)Signinline
      operator()(uint32_t x)Signinline
      operator()(complex64_t x)Signinline
      - - - - diff --git a/docs/build/html/struct_sign.html b/docs/build/html/struct_sign.html deleted file mode 100644 index de1ba51b..00000000 --- a/docs/build/html/struct_sign.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -MLX: Sign Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Sign Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      uint32_t operator() (uint32_t x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/3]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Sign::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/3]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Sign::operator() (T x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [3/3]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      uint32_t Sign::operator() (uint32_t x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_sin-members.html b/docs/build/html/struct_sin-members.html deleted file mode 100644 index 6a8d092a..00000000 --- a/docs/build/html/struct_sin-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Sin Member List
      -
      -
      - -

      This is the complete list of members for Sin, including all inherited members.

      - - - -
      operator()(T x)Sininline
      operator()(complex64_t x)Sininline
      - - - - diff --git a/docs/build/html/struct_sin.html b/docs/build/html/struct_sin.html deleted file mode 100644 index 05fef869..00000000 --- a/docs/build/html/struct_sin.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Sin Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Sin Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Sin::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Sin::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_sinh-members.html b/docs/build/html/struct_sinh-members.html deleted file mode 100644 index ce39c71d..00000000 --- a/docs/build/html/struct_sinh-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Sinh Member List
      -
      -
      - -

      This is the complete list of members for Sinh, including all inherited members.

      - - - -
      operator()(T x)Sinhinline
      operator()(complex64_t x)Sinhinline
      - - - - diff --git a/docs/build/html/struct_sinh.html b/docs/build/html/struct_sinh.html deleted file mode 100644 index c69bd524..00000000 --- a/docs/build/html/struct_sinh.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Sinh Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Sinh Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Sinh::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Sinh::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_sqrt-members.html b/docs/build/html/struct_sqrt-members.html deleted file mode 100644 index fd90f2f0..00000000 --- a/docs/build/html/struct_sqrt-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Sqrt Member List
      -
      -
      - -

      This is the complete list of members for Sqrt, including all inherited members.

      - - -
      operator()(T x)Sqrtinline
      - - - - diff --git a/docs/build/html/struct_sqrt.html b/docs/build/html/struct_sqrt.html deleted file mode 100644 index 5e85abe3..00000000 --- a/docs/build/html/struct_sqrt.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Sqrt Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Sqrt Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Sqrt::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_square-members.html b/docs/build/html/struct_square-members.html deleted file mode 100644 index 37ce4bf0..00000000 --- a/docs/build/html/struct_square-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Square Member List
      -
      -
      - -

      This is the complete list of members for Square, including all inherited members.

      - - -
      operator()(T x)Squareinline
      - - - - diff --git a/docs/build/html/struct_square.html b/docs/build/html/struct_square.html deleted file mode 100644 index 532bda68..00000000 --- a/docs/build/html/struct_square.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: Square Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Square Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Square::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_subtract-members.html b/docs/build/html/struct_subtract-members.html deleted file mode 100644 index e59cc944..00000000 --- a/docs/build/html/struct_subtract-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Subtract Member List
      -
      -
      - -

      This is the complete list of members for Subtract, including all inherited members.

      - - -
      operator()(T x, T y)Subtractinline
      - - - - diff --git a/docs/build/html/struct_subtract.html b/docs/build/html/struct_subtract.html deleted file mode 100644 index 49b5c049..00000000 --- a/docs/build/html/struct_subtract.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: Subtract Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Subtract Struct Reference
      -
      -
      - -

      #include <binary_ops.h>

      - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x, T y)
       
      -

      Member Function Documentation

      - -

      ◆ operator()()

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - - - - - -
      T Subtract::operator() (T x,
      T y )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_sum.html b/docs/build/html/struct_sum.html deleted file mode 100644 index 386f3607..00000000 --- a/docs/build/html/struct_sum.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Sum< U > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Sum< U > Struct Template Reference
      -
      -
      - -

      #include <ops.h>

      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/reduction/ops.h
      • -
      -
      - - - - diff --git a/docs/build/html/struct_tan-members.html b/docs/build/html/struct_tan-members.html deleted file mode 100644 index b2dd2a62..00000000 --- a/docs/build/html/struct_tan-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Tan Member List
      -
      -
      - -

      This is the complete list of members for Tan, including all inherited members.

      - - - -
      operator()(T x)Taninline
      operator()(complex64_t x)Taninline
      - - - - diff --git a/docs/build/html/struct_tan.html b/docs/build/html/struct_tan.html deleted file mode 100644 index aa17f6ee..00000000 --- a/docs/build/html/struct_tan.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Tan Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Tan Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Tan::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Tan::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_tanh-members.html b/docs/build/html/struct_tanh-members.html deleted file mode 100644 index 59b936e4..00000000 --- a/docs/build/html/struct_tanh-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      Tanh Member List
      -
      -
      - -

      This is the complete list of members for Tanh, including all inherited members.

      - - - -
      operator()(T x)Tanhinline
      operator()(complex64_t x)Tanhinline
      - - - - diff --git a/docs/build/html/struct_tanh.html b/docs/build/html/struct_tanh.html deleted file mode 100644 index a23af806..00000000 --- a/docs/build/html/struct_tanh.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -MLX: Tanh Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      Tanh Struct Reference
      -
      -
      - -

      #include <unary_ops.h>

      - - - - - - - - -

      -Public Member Functions

      template<typename T >
      operator() (T x)
       
      template<>
      complex64_t operator() (complex64_t x)
       
      -

      Member Function Documentation

      - -

      ◆ operator()() [1/2]

      - -
      -
      -
      -template<>
      - - - - - -
      - - - - - - - -
      complex64_t Tanh::operator() (complex64_t x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator()() [2/2]

      - -
      -
      -
      -template<typename T >
      - - - - - -
      - - - - - - - -
      T Tanh::operator() (T x)
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/struct_thread_sort-members.html b/docs/build/html/struct_thread_sort-members.html deleted file mode 100644 index 1673f695..00000000 --- a/docs/build/html/struct_thread_sort-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp > Member List
      -
      -
      - -

      This is the complete list of members for ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp >, including all inherited members.

      - - -
      sort(thread val_t(&vals)[N_PER_THREAD], thread idx_t(&idxs)[N_PER_THREAD])ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp >inlinestatic
      - - - - diff --git a/docs/build/html/struct_thread_sort.html b/docs/build/html/struct_thread_sort.html deleted file mode 100644 index b08467b2..00000000 --- a/docs/build/html/struct_thread_sort.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -MLX: ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp > Struct Template Reference
      -
      -
      - -

      #include <sort.h>

      - - - - -

      -Static Public Member Functions

      static METAL_FUNC void sort (thread val_t(&vals)[N_PER_THREAD], thread idx_t(&idxs)[N_PER_THREAD])
       
      -

      Member Function Documentation

      - -

      ◆ sort()

      - -
      -
      -
      -template<typename val_t , typename idx_t , bool ARG_SORT, short N_PER_THREAD, typename CompareOp >
      - - - - - -
      - - - - - - - - - - - -
      static METAL_FUNC void ThreadSort< val_t, idx_t, ARG_SORT, N_PER_THREAD, CompareOp >::sort (thread val_t(&) vals[N_PER_THREAD],
      thread idx_t(&) idxs[N_PER_THREAD] )
      -
      -inlinestatic
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/sort.h
      • -
      -
      - - - - diff --git a/docs/build/html/structcomplex64__t-members.html b/docs/build/html/structcomplex64__t-members.html deleted file mode 100644 index bc6cdac7..00000000 --- a/docs/build/html/structcomplex64__t-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      complex64_t Member List
      -
      -
      - -

      This is the complete list of members for complex64_t, including all inherited members.

      - - - - - - - - - - - - - - -
      complex64_t(float real, float imag)complex64_tinline
      complex64_t()complex64_tinline
      complex64_t() threadgroupcomplex64_tinline
      complex64_t(T x) threadcomplex64_tinline
      complex64_t(T x) threadgroupcomplex64_tinline
      complex64_t(T x) devicecomplex64_tinline
      complex64_t(T x) const antcomplex64_tinline
      imagcomplex64_t
      operator T() const threadcomplex64_tinline
      operator T() const threadgroupcomplex64_tinline
      operator T() const devicecomplex64_tinline
      operator T() const constantcomplex64_tinline
      realcomplex64_t
      - - - - diff --git a/docs/build/html/structcomplex64__t.html b/docs/build/html/structcomplex64__t.html deleted file mode 100644 index 637ec292..00000000 --- a/docs/build/html/structcomplex64__t.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - -MLX: complex64_t Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      complex64_t Struct Reference
      -
      -
      - -

      #include <complex.h>

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      constexpr complex64_t (float real, float imag)
       
      constexpr complex64_t ()
       
      constexpr complex64_t () threadgroup
       
      template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      constexpr complex64_t (T x) thread
       
      template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      constexpr complex64_t (T x) threadgroup
       
      template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      constexpr complex64_t (T x) device
       
      template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      constexpr complex64_t (T x) const ant
       
      template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      constexpr operator T () const thread
       
      template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      constexpr operator T () const threadgroup
       
      template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      constexpr operator T () const device
       
      template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      constexpr operator T () const constant
       
      - - - - - -

      -Public Attributes

      float real
       
      float imag
       
      -

      Constructor & Destructor Documentation

      - -

      ◆ complex64_t() [1/7]

      - -
      -
      - - - - - -
      - - - - - - - - - - - -
      constexpr complex64_t::complex64_t (float real,
      float imag )
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complex64_t() [2/7]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::complex64_t ()
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complex64_t() [3/7]

      - -
      -
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::complex64_t ()
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complex64_t() [4/7]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::complex64_t (T x)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complex64_t() [5/7]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::complex64_t (T x)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complex64_t() [6/7]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::complex64_t (T x)
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ complex64_t() [7/7]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::complex64_t (T x) const
      -
      -inlineconstexpr
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ operator T() [1/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [2/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [3/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      - -

      ◆ operator T() [4/4]

      - -
      -
      -
      -template<typename T , typename = typename enable_if<can_convert_from_complex64<T>>::type>
      - - - - - -
      - - - - - - - -
      constexpr complex64_t::operator T () const
      -
      -inlineconstexpr
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ imag

      - -
      -
      - - - - -
      float complex64_t::imag
      -
      - -
      -
      - -

      ◆ real

      - -
      -
      - - - - -
      float complex64_t::real
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/structlooped__elem__to__loc-members.html b/docs/build/html/structlooped__elem__to__loc-members.html deleted file mode 100644 index 10337ed0..00000000 --- a/docs/build/html/structlooped__elem__to__loc-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      looped_elem_to_loc< dim, offset_t > Member List
      -
      -
      - -

      This is the complete list of members for looped_elem_to_loc< dim, offset_t >, including all inherited members.

      - - - - - - - -
      indexlooped_elem_to_loc< dim, offset_t >
      inner_looperlooped_elem_to_loc< dim, offset_t >
      location(offset_t, const constant int *, const constant size_t *, int)looped_elem_to_loc< dim, offset_t >inline
      next(const constant int *shape, const constant size_t *strides)looped_elem_to_loc< dim, offset_t >inline
      next(int n, const constant int *shape, const constant size_t *strides)looped_elem_to_loc< dim, offset_t >inline
      offsetlooped_elem_to_loc< dim, offset_t >
      - - - - diff --git a/docs/build/html/structlooped__elem__to__loc.html b/docs/build/html/structlooped__elem__to__loc.html deleted file mode 100644 index 45ea787e..00000000 --- a/docs/build/html/structlooped__elem__to__loc.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - -MLX: looped_elem_to_loc< dim, offset_t > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      looped_elem_to_loc< dim, offset_t > Struct Template Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - -

      -Public Member Functions

      void next (const constant int *shape, const constant size_t *strides)
       
      void next (int n, const constant int *shape, const constant size_t *strides)
       
      offset_t location (offset_t, const constant int *, const constant size_t *, int)
       
      - - - - - - - -

      -Public Attributes

      looped_elem_to_loc< dim - 1, offset_t > inner_looper
       
      offset_t offset {0}
       
      int index {0}
       
      -

      Member Function Documentation

      - -

      ◆ location()

      - -
      -
      -
      -template<int dim, typename offset_t = size_t>
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      offset_t looped_elem_to_loc< dim, offset_t >::location (offset_t ,
      const constant int * ,
      const constant size_t * ,
      int  )
      -
      -inline
      -
      - -
      -
      - -

      ◆ next() [1/2]

      - -
      -
      -
      -template<int dim, typename offset_t = size_t>
      - - - - - -
      - - - - - - - - - - - -
      void looped_elem_to_loc< dim, offset_t >::next (const constant int * shape,
      const constant size_t * strides )
      -
      -inline
      -
      - -
      -
      - -

      ◆ next() [2/2]

      - -
      -
      -
      -template<int dim, typename offset_t = size_t>
      - - - - - -
      - - - - - - - - - - - - - - - - -
      void looped_elem_to_loc< dim, offset_t >::next (int n,
      const constant int * shape,
      const constant size_t * strides )
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ index

      - -
      -
      -
      -template<int dim, typename offset_t = size_t>
      - - - - -
      int looped_elem_to_loc< dim, offset_t >::index {0}
      -
      - -
      -
      - -

      ◆ inner_looper

      - -
      -
      -
      -template<int dim, typename offset_t = size_t>
      - - - - -
      looped_elem_to_loc<dim - 1, offset_t> looped_elem_to_loc< dim, offset_t >::inner_looper
      -
      - -
      -
      - -

      ◆ offset

      - -
      -
      -
      -template<int dim, typename offset_t = size_t>
      - - - - -
      offset_t looped_elem_to_loc< dim, offset_t >::offset {0}
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4-members.html b/docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4-members.html deleted file mode 100644 index 42fc5ef9..00000000 --- a/docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      looped_elem_to_loc< 0, offset_t > Member List
      -
      -
      - -

      This is the complete list of members for looped_elem_to_loc< 0, offset_t >, including all inherited members.

      - - - - -
      location(offset_t idx, const constant int *shape, const constant size_t *strides, int ndim)looped_elem_to_loc< 0, offset_t >inline
      next(const constant int *, const constant size_t *)looped_elem_to_loc< 0, offset_t >inline
      next(int, const constant int *, const constant size_t *)looped_elem_to_loc< 0, offset_t >inline
      - - - - diff --git a/docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html b/docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html deleted file mode 100644 index 01d59bc4..00000000 --- a/docs/build/html/structlooped__elem__to__loc_3_010_00_01offset__t_01_4.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -MLX: looped_elem_to_loc< 0, offset_t > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      looped_elem_to_loc< 0, offset_t > Struct Template Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - -

      -Public Member Functions

      void next (const constant int *, const constant size_t *)
       
      void next (int, const constant int *, const constant size_t *)
       
      offset_t location (offset_t idx, const constant int *shape, const constant size_t *strides, int ndim)
       
      -

      Member Function Documentation

      - -

      ◆ location()

      - -
      -
      -
      -template<typename offset_t >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      offset_t looped_elem_to_loc< 0, offset_t >::location (offset_t idx,
      const constant int * shape,
      const constant size_t * strides,
      int ndim )
      -
      -inline
      -
      - -
      -
      - -

      ◆ next() [1/2]

      - -
      -
      -
      -template<typename offset_t >
      - - - - - -
      - - - - - - - - - - - -
      void looped_elem_to_loc< 0, offset_t >::next (const constant int * ,
      const constant size_t *  )
      -
      -inline
      -
      - -
      -
      - -

      ◆ next() [2/2]

      - -
      -
      -
      -template<typename offset_t >
      - - - - - -
      - - - - - - - - - - - - - - - - -
      void looped_elem_to_loc< 0, offset_t >::next (int ,
      const constant int * ,
      const constant size_t *  )
      -
      -inline
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4-members.html b/docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4-members.html deleted file mode 100644 index a743e2f1..00000000 --- a/docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      -
      looped_elem_to_loc< 1, offset_t > Member List
      -
      -
      - -

      This is the complete list of members for looped_elem_to_loc< 1, offset_t >, including all inherited members.

      - - - - - -
      location(offset_t, const constant int *, const constant size_t *, int)looped_elem_to_loc< 1, offset_t >inline
      next(const constant int *, const constant size_t *strides)looped_elem_to_loc< 1, offset_t >inline
      next(int n, const constant int *, const constant size_t *strides)looped_elem_to_loc< 1, offset_t >inline
      offsetlooped_elem_to_loc< 1, offset_t >
      - - - - diff --git a/docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html b/docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html deleted file mode 100644 index 5fb8720b..00000000 --- a/docs/build/html/structlooped__elem__to__loc_3_011_00_01offset__t_01_4.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -MLX: looped_elem_to_loc< 1, offset_t > Struct Template Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - -
      -
      - -
      looped_elem_to_loc< 1, offset_t > Struct Template Reference
      -
      -
      - -

      #include <utils.h>

      - - - - - - - - -

      -Public Member Functions

      void next (const constant int *, const constant size_t *strides)
       
      void next (int n, const constant int *, const constant size_t *strides)
       
      offset_t location (offset_t, const constant int *, const constant size_t *, int)
       
      - - - -

      -Public Attributes

      offset_t offset {0}
       
      -

      Member Function Documentation

      - -

      ◆ location()

      - -
      -
      -
      -template<typename offset_t >
      - - - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      offset_t looped_elem_to_loc< 1, offset_t >::location (offset_t ,
      const constant int * ,
      const constant size_t * ,
      int  )
      -
      -inline
      -
      - -
      -
      - -

      ◆ next() [1/2]

      - -
      -
      -
      -template<typename offset_t >
      - - - - - -
      - - - - - - - - - - - -
      void looped_elem_to_loc< 1, offset_t >::next (const constant int * ,
      const constant size_t * strides )
      -
      -inline
      -
      - -
      -
      - -

      ◆ next() [2/2]

      - -
      -
      -
      -template<typename offset_t >
      - - - - - -
      - - - - - - - - - - - - - - - - -
      void looped_elem_to_loc< 1, offset_t >::next (int n,
      const constant int * ,
      const constant size_t * strides )
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ offset

      - -
      -
      -
      -template<typename offset_t >
      - - - - -
      offset_t looped_elem_to_loc< 1, offset_t >::offset {0}
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/utils.h
      • -
      -
      - - - - diff --git a/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4-members.html b/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4-members.html deleted file mode 100644 index eab663d9..00000000 --- a/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      metal::_numeric_limits_impl< bfloat16_t > Member List
      -
      - - - - - diff --git a/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html b/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html deleted file mode 100644 index 4e8f982b..00000000 --- a/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - -MLX: metal::_numeric_limits_impl< bfloat16_t > Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      metal::_numeric_limits_impl< bfloat16_t > Struct Reference
      -
      -
      - -

      #include <bf16.h>

      -
      -Inheritance diagram for metal::_numeric_limits_impl< bfloat16_t >:
      -
      -
      - -
      - - - - - - - - - - - - - - - - - - - - -

      -Static Public Member Functions

      static constexpr bfloat16_t min ()
       
      static constexpr bfloat16_t lowest ()
       
      static constexpr bfloat16_t max ()
       
      static constexpr bfloat16_t epsilon ()
       
      static constexpr bfloat16_t round_error ()
       
      static constexpr bfloat16_t infinity ()
       
      static constexpr bfloat16_t quiet_NaN ()
       
      static constexpr bfloat16_t signaling_NaN ()
       
      static constexpr bfloat16_t denorm_min ()
       
      - - - - - - - - - - - - - - - - - -

      -Static Public Attributes

      static constexpr constant int digits = 8
       
      static constexpr constant int digits10 = 2
       
      static constexpr constant int max_digits10 = 4
       
      static constexpr constant int radix = 2
       
      static constexpr constant int min_exponent = -125
       
      static constexpr constant int min_exponent10 = -37
       
      static constexpr constant int max_exponent = 128
       
      static constexpr constant int max_exponent10 = 38
       
      -

      Member Function Documentation

      - -

      ◆ denorm_min()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::denorm_min ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ epsilon()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::epsilon ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ infinity()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::infinity ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ lowest()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::lowest ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ max()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::max ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ min()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::min ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ quiet_NaN()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::quiet_NaN ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ round_error()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::round_error ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      - -

      ◆ signaling_NaN()

      - -
      -
      - - - - - -
      - - - - - - - -
      static constexpr bfloat16_t metal::_numeric_limits_impl< bfloat16_t >::signaling_NaN ()
      -
      -inlinestaticconstexpr
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ digits

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::digits = 8
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ digits10

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::digits10 = 2
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max_digits10

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::max_digits10 = 4
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max_exponent

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::max_exponent = 128
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ max_exponent10

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::max_exponent10 = 38
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min_exponent

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::min_exponent = -125
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ min_exponent10

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::min_exponent10 = -37
      -
      -staticconstexpr
      -
      - -
      -
      - -

      ◆ radix

      - -
      -
      - - - - - -
      - - - - -
      constexpr constant int metal::_numeric_limits_impl< bfloat16_t >::radix = 2
      -
      -staticconstexpr
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file:
        -
      • mlx/backend/metal/kernels/bf16.h
      • -
      -
      - - - - diff --git a/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.png b/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.png deleted file mode 100644 index 9f08792582e297b8ea349fddb10ec596511d9057..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 833 zcmeAS@N?(olHy`uVBq!ia0vp^AAvZ4gBeKv4^1urQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B+XJY5_^Dj46+y?yPq0!K^x zY`*vZk61rfNb<`q|G%^>b=Inex~?x`N=m+*PLp_73QtbC`|5~Ft9wlnQUwEc;>BTKeuh!XlfUIn|Jw27MPE zM!a+Rp$%^yeafx!_|$c-R;hdK*A%ZwK3C7rPK2JJ zm@IwP5x@T0gxSh+4bske{X4E_F|3H4E5Yz8Or5O(sGM;@UTG4;ifCele%K2MW_k&P zUTwS585#<-Ff4R!wCkh2zYk7J(Q|HpTYUDA&bsW}u9lDC%?qXE-T!iJT$Q!R=2+_r z!;e3>%1hLI+xt6~_s*_$yZ%?(qIYd|k>{UheVJ$8Zrv*D?DKJMt7Kot_tu#&?>GrB zPvMpPC{i%n=y&QjUD?vQJPTE`ZIL0?IqchAcUNw{{!27<>r3PGIfZg}b|l!J+4($f zk(8Zl_uHvy8EskDcg(4rbM^PJr$-*Ad(V+RviU3TBb(K>g_EWjZj5|<(l)N?X!@M= zGh3lia^Lo`!s_?)3k&)~OY3_YSKK - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      mlx::core::_MLX_BFloat16 Member List
      -
      -
      - -

      This is the complete list of members for mlx::core::_MLX_BFloat16, including all inherited members.

      - - - - - - - - -
      _MLX_BFloat16()=defaultmlx::core::_MLX_BFloat16
      _MLX_BFloat16(_MLX_BFloat16 const &)=defaultmlx::core::_MLX_BFloat16
      _MLX_BFloat16(const float &x)mlx::core::_MLX_BFloat16inline
      bits_mlx::core::_MLX_BFloat16
      operator float() constmlx::core::_MLX_BFloat16inline
      operator=(std::vector< bool >::reference x)mlx::core::_MLX_BFloat16inline
      operator=(const float &x)mlx::core::_MLX_BFloat16inline
      - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16.html b/docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16.html deleted file mode 100644 index 91d4aa69..00000000 --- a/docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - -MLX: mlx::core::_MLX_BFloat16 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::_MLX_BFloat16 Struct Reference
      -
      -
      - -

      #include <bf16.h>

      - - - - - - - - - - - - - - -

      -Public Member Functions

       _MLX_BFloat16 ()=default
       
       _MLX_BFloat16 (_MLX_BFloat16 const &)=default
       
      _MLX_BFloat16operator= (std::vector< bool >::reference x)
       
      _MLX_BFloat16operator= (const float &x)
       
       _MLX_BFloat16 (const float &x)
       
       operator float () const
       
      - - - -

      -Public Attributes

      uint16_t bits_
       
      -

      Constructor & Destructor Documentation

      - -

      ◆ _MLX_BFloat16() [1/3]

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_BFloat16::_MLX_BFloat16 ()
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [2/3]

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_BFloat16::_MLX_BFloat16 (_MLX_BFloat16 const & )
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_BFloat16() [3/3]

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_BFloat16::_MLX_BFloat16 (const float & x)
      -
      -inline
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ operator float()

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_BFloat16::operator float () const
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator=() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16 & mlx::core::_MLX_BFloat16::operator= (const float & x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator=() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_BFloat16 & mlx::core::_MLX_BFloat16::operator= (std::vector< bool >::reference x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ bits_

      - -
      -
      - - - - -
      uint16_t mlx::core::_MLX_BFloat16::bits_
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16-members.html b/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16-members.html deleted file mode 100644 index 3077ec4f..00000000 --- a/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      -
      mlx::core::_MLX_Float16 Member List
      -
      -
      - -

      This is the complete list of members for mlx::core::_MLX_Float16, including all inherited members.

      - - - - - - - - -
      _MLX_Float16()=defaultmlx::core::_MLX_Float16
      _MLX_Float16(_MLX_Float16 const &)=defaultmlx::core::_MLX_Float16
      _MLX_Float16(const float &x)mlx::core::_MLX_Float16inline
      bits_mlx::core::_MLX_Float16
      operator float() constmlx::core::_MLX_Float16inline
      operator=(std::vector< bool >::reference x)mlx::core::_MLX_Float16inline
      operator=(const float &x)mlx::core::_MLX_Float16inline
      - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16.html b/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16.html deleted file mode 100644 index 2ab72ea0..00000000 --- a/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - - -MLX: mlx::core::_MLX_Float16 Struct Reference - - - - - - - - - - - -
      -
      - - - - - - -
      -
      MLX -
      -
      -
      - - - - - - - - -
      -
      - - -
      -
      -
      -
      -
      -
      Loading...
      -
      Searching...
      -
      No Matches
      -
      -
      -
      -
      - - -
      -
      - -
      mlx::core::_MLX_Float16 Struct Reference
      -
      -
      - -

      #include <fp16.h>

      - - - - - - - - - - - - - - -

      -Public Member Functions

       _MLX_Float16 ()=default
       
       _MLX_Float16 (_MLX_Float16 const &)=default
       
      _MLX_Float16operator= (std::vector< bool >::reference x)
       
      _MLX_Float16operator= (const float &x)
       
       _MLX_Float16 (const float &x)
       
       operator float () const
       
      - - - -

      -Public Attributes

      uint16_t bits_
       
      -

      Constructor & Destructor Documentation

      - -

      ◆ _MLX_Float16() [1/3]

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_Float16::_MLX_Float16 ()
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_Float16() [2/3]

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_Float16::_MLX_Float16 (_MLX_Float16 const & )
      -
      -default
      -
      - -
      -
      - -

      ◆ _MLX_Float16() [3/3]

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_Float16::_MLX_Float16 (const float & x)
      -
      -inline
      -
      - -
      -
      -

      Member Function Documentation

      - -

      ◆ operator float()

      - -
      -
      - - - - - -
      - - - - - - - -
      mlx::core::_MLX_Float16::operator float () const
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator=() [1/2]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_Float16 & mlx::core::_MLX_Float16::operator= (const float & x)
      -
      -inline
      -
      - -
      -
      - -

      ◆ operator=() [2/2]

      - -
      -
      - - - - - -
      - - - - - - - -
      _MLX_Float16 & mlx::core::_MLX_Float16::operator= (std::vector< bool >::reference x)
      -
      -inline
      -
      - -
      -
      -

      Member Data Documentation

      - -

      ◆ bits_

      - -
      -
      - - - - -
      uint16_t mlx::core::_MLX_Float16::bits_
      -
      - -
      -
      -
      The documentation for this struct was generated from the following file: -
      - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_stream-members.html b/docs/build/html/structmlx_1_1core_1_1_contiguous_iterator-members.html similarity index 72% rename from docs/build/html/structmlx_1_1core_1_1_stream-members.html rename to docs/build/html/structmlx_1_1core_1_1_contiguous_iterator-members.html index 4db1279c..0b2a5134 100644 --- a/docs/build/html/structmlx_1_1core_1_1_stream-members.html +++ b/docs/build/html/structmlx_1_1core_1_1_contiguous_iterator-members.html @@ -71,19 +71,19 @@ $(function() {
    -
    mlx::core::Stream Member List
    +
    mlx::core::ContiguousIterator< StrideT > Member List
    -

    This is the complete list of members for mlx::core::Stream, including all inherited members.

    +

    This is the complete list of members for mlx::core::ContiguousIterator< StrideT >, including all inherited members.

    - - - + + +
    devicemlx::core::Stream
    indexmlx::core::Stream
    Stream(int index, Device device)mlx::core::Streaminlineexplicit
    ContiguousIterator(const std::vector< int > &shape, const std::vector< StrideT > &strides, int dims)mlx::core::ContiguousIterator< StrideT >inlineexplicit
    locmlx::core::ContiguousIterator< StrideT >
    step()mlx::core::ContiguousIterator< StrideT >inline
  • -
    mlx::core::DefaultContiguousReduce< T, U, Op > Struct Template Reference
    +List of all members
    +
    mlx::core::ContiguousIterator< StrideT > Struct Template Reference
    -

    #include <reduce.h>

    +

    #include <utils.h>

    - - - - + + + +

    Public Member Functions

     DefaultContiguousReduce (Op op_)
     
    void operator() (const T *x, U *accumulator, int size)
     
    void step ()
     
     ContiguousIterator (const std::vector< int > &shape, const std::vector< StrideT > &strides, int dims)
     
    - - + +

    Public Attributes

    Op op
     
    StrideT loc {0}
     

    Constructor & Destructor Documentation

    - -

    ◆ DefaultContiguousReduce()

    + +

    ◆ ContiguousIterator()

    -template<typename T , typename U , typename Op >
    +template<typename StrideT >
    +inlineexplicit
    - + - + + + + + + + + + +
    mlx::core::DefaultContiguousReduce< T, U, Op >::DefaultContiguousReduce mlx::core::ContiguousIterator< StrideT >::ContiguousIterator (Op op_)const std::vector< int > & shape,
    const std::vector< StrideT > & strides,
    int dims )
    -inline
    @@ -126,31 +135,22 @@ template<typename T , typename U , typename Op >

    Member Function Documentation

    - -

    ◆ operator()()

    + +

    ◆ step()

    -template<typename T , typename U , typename Op >
    +template<typename StrideT >
    @@ -163,16 +163,16 @@ template<typename T , typename U , typename Op >

    Member Data Documentation

    - -

    ◆ op

    + +

    ◆ loc

    -template<typename T , typename U , typename Op >
    +template<typename StrideT >
    - + - - - - + - - - - - -
    void mlx::core::DefaultContiguousReduce< T, U, Op >::operator() void mlx::core::ContiguousIterator< StrideT >::step (const T * x,
    ) U * accumulator,
    int size )
    - +
    Op mlx::core::DefaultContiguousReduce< T, U, Op >::opStrideT mlx::core::ContiguousIterator< StrideT >::loc {0}
    @@ -180,7 +180,7 @@ template<typename T , typename U , typename Op >

    The documentation for this struct was generated from the following file: diff --git a/docs/build/html/structmlx_1_1core_1_1_default_contiguous_reduce-members.html b/docs/build/html/structmlx_1_1core_1_1_default_contiguous_reduce-members.html deleted file mode 100644 index 970f5cf7..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_default_contiguous_reduce-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::DefaultContiguousReduce< T, U, Op > Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::DefaultContiguousReduce< T, U, Op >, including all inherited members.

    - - - - -
    DefaultContiguousReduce(Op op_)mlx::core::DefaultContiguousReduce< T, U, Op >inline
    opmlx::core::DefaultContiguousReduce< T, U, Op >
    operator()(const T *x, U *accumulator, int size)mlx::core::DefaultContiguousReduce< T, U, Op >inline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_default_strided_reduce-members.html b/docs/build/html/structmlx_1_1core_1_1_default_strided_reduce-members.html deleted file mode 100644 index 356bd5d1..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_default_strided_reduce-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::DefaultStridedReduce< T, U, Op > Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::DefaultStridedReduce< T, U, Op >, including all inherited members.

    - - - - -
    DefaultStridedReduce(Op op_)mlx::core::DefaultStridedReduce< T, U, Op >inline
    opmlx::core::DefaultStridedReduce< T, U, Op >
    operator()(const T *x, U *accumulator, int size, size_t stride)mlx::core::DefaultStridedReduce< T, U, Op >inline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_default_strided_reduce.html b/docs/build/html/structmlx_1_1core_1_1_default_strided_reduce.html deleted file mode 100644 index b001281e..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_default_strided_reduce.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - -MLX: mlx::core::DefaultStridedReduce< T, U, Op > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::DefaultStridedReduce< T, U, Op > Struct Template Reference
    -
    -
    - -

    #include <reduce.h>

    - - - - - - -

    -Public Member Functions

     DefaultStridedReduce (Op op_)
     
    void operator() (const T *x, U *accumulator, int size, size_t stride)
     
    - - - -

    -Public Attributes

    Op op
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ DefaultStridedReduce()

    - -
    -
    -
    -template<typename T , typename U , typename Op >
    - - - - - -
    - - - - - - - -
    mlx::core::DefaultStridedReduce< T, U, Op >::DefaultStridedReduce (Op op_)
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T , typename U , typename Op >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    void mlx::core::DefaultStridedReduce< T, U, Op >::operator() (const T * x,
    U * accumulator,
    int size,
    size_t stride )
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ op

    - -
    -
    -
    -template<typename T , typename U , typename Op >
    - - - - -
    Op mlx::core::DefaultStridedReduce< T, U, Op >::op
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_device-members.html b/docs/build/html/structmlx_1_1core_1_1_device-members.html deleted file mode 100644 index 8b888c8d..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_device-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::Device Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::Device, including all inherited members.

    - - - - - - - -
    cpumlx::core::Devicestatic
    Device(DeviceType type, int index=0)mlx::core::Deviceinline
    DeviceType enum namemlx::core::Device
    gpumlx::core::Devicestatic
    indexmlx::core::Device
    typemlx::core::Device
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_device.html b/docs/build/html/structmlx_1_1core_1_1_device.html deleted file mode 100644 index c9ca5ea2..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_device.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - -MLX: mlx::core::Device Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    - -
    - -

    #include <device.h>

    - - - - -

    -Public Types

    enum class  DeviceType { cpu -, gpu - }
     
    - - - -

    -Public Member Functions

     Device (DeviceType type, int index=0)
     
    - - - - - -

    -Public Attributes

    DeviceType type
     
    int index
     
    - - - - - -

    -Static Public Attributes

    static constexpr DeviceType cpu = DeviceType::cpu
     
    static constexpr DeviceType gpu = DeviceType::gpu
     
    -

    Member Enumeration Documentation

    - -

    ◆ DeviceType

    - -
    -
    - - - - - -
    - - - - -
    enum class mlx::core::Device::DeviceType
    -
    -strong
    -
    - - - -
    Enumerator
    cpu 
    gpu 
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ Device()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    mlx::core::Device::Device (DeviceType type,
    int index = 0 )
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ cpu

    - -
    -
    - - - - - -
    - - - - -
    constexpr DeviceType mlx::core::Device::cpu = DeviceType::cpu
    -
    -staticconstexpr
    -
    - -
    -
    - -

    ◆ gpu

    - -
    -
    - - - - - -
    - - - - -
    constexpr DeviceType mlx::core::Device::gpu = DeviceType::gpu
    -
    -staticconstexpr
    -
    - -
    -
    - -

    ◆ index

    - -
    -
    - - - - -
    int mlx::core::Device::index
    -
    - -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    DeviceType mlx::core::Device::type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_dtype-members.html b/docs/build/html/structmlx_1_1core_1_1_dtype-members.html deleted file mode 100644 index 0a673930..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_dtype-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::Dtype Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::Dtype, including all inherited members.

    - - - - - - - - -
    Category enum namemlx::core::Dtype
    Dtype(Val val, uint8_t size)mlx::core::Dtypeinlineexplicit
    Kind enum namemlx::core::Dtype
    operator Val() constmlx::core::Dtypeinline
    sizemlx::core::Dtype
    Val enum namemlx::core::Dtype
    valmlx::core::Dtype
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_dtype.html b/docs/build/html/structmlx_1_1core_1_1_dtype.html deleted file mode 100644 index c0363751..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_dtype.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - -MLX: mlx::core::Dtype Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::Dtype Struct Reference
    -
    -
    - -

    #include <dtype.h>

    - - - - - - - - -

    -Public Types

    enum class  Val {
    -  bool_ -, uint8 -, uint16 -, uint32 -,
    -  uint64 -, int8 -, int16 -, int32 -,
    -  int64 -, float16 -, float32 -, bfloat16 -,
    -  complex64 -
    - }
     
    enum class  Kind {
    -  b -, u -, i -, f -,
    -  c -, V -
    - }
     
    enum class  Category {
    -  complexfloating -, floating -, inexact -, signedinteger -,
    -  unsignedinteger -, integer -, number -, generic -
    - }
     
    - - - - - -

    -Public Member Functions

    constexpr Dtype (Val val, uint8_t size)
     
    constexpr operator Val () const
     
    - - - - - -

    -Public Attributes

    Val val
     
    const uint8_t size
     
    -

    Member Enumeration Documentation

    - -

    ◆ Category

    - -
    -
    - - - - - -
    - - - - -
    enum class mlx::core::Dtype::Category
    -
    -strong
    -
    - - - - - - - - - -
    Enumerator
    complexfloating 
    floating 
    inexact 
    signedinteger 
    unsignedinteger 
    integer 
    number 
    generic 
    - -
    -
    - -

    ◆ Kind

    - -
    -
    - - - - - -
    - - - - -
    enum class mlx::core::Dtype::Kind
    -
    -strong
    -
    - - - - - - - -
    Enumerator
    - -
    -
    - -

    ◆ Val

    - -
    -
    - - - - - -
    - - - - -
    enum class mlx::core::Dtype::Val
    -
    -strong
    -
    - - - - - - - - - - - - - - -
    Enumerator
    bool_ 
    uint8 
    uint16 
    uint32 
    uint64 
    int8 
    int16 
    int32 
    int64 
    float16 
    float32 
    bfloat16 
    complex64 
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ Dtype()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    constexpr mlx::core::Dtype::Dtype (Val val,
    uint8_t size )
    -
    -inlineexplicitconstexpr
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator Val()

    - -
    -
    - - - - - -
    - - - - - - - -
    constexpr mlx::core::Dtype::operator Val () const
    -
    -inlineconstexpr
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ size

    - -
    -
    - - - - -
    const uint8_t mlx::core::Dtype::size
    -
    - -
    -
    - -

    ◆ val

    - -
    -
    - - - - -
    Val mlx::core::Dtype::val
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_node_namer-members.html b/docs/build/html/structmlx_1_1core_1_1_node_namer-members.html deleted file mode 100644 index 74567b21..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_node_namer-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::NodeNamer Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::NodeNamer, including all inherited members.

    - - - -
    get_name(const array &x)mlx::core::NodeNamer
    namesmlx::core::NodeNamer
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_node_namer.html b/docs/build/html/structmlx_1_1core_1_1_node_namer.html deleted file mode 100644 index 6b367876..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_node_namer.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - -MLX: mlx::core::NodeNamer Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::NodeNamer Struct Reference
    -
    -
    - -

    #include <graph_utils.h>

    - - - - -

    -Public Member Functions

    const std::string & get_name (const array &x)
     
    - - - -

    -Public Attributes

    std::unordered_map< std::uintptr_t, std::string > names
     
    -

    Member Function Documentation

    - -

    ◆ get_name()

    - -
    -
    - - - - - - - -
    const std::string & mlx::core::NodeNamer::get_name (const array & x)
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ names

    - -
    -
    - - - - -
    std::unordered_map<std::uintptr_t, std::string> mlx::core::NodeNamer::names
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_print_formatter-members.html b/docs/build/html/structmlx_1_1core_1_1_print_formatter-members.html deleted file mode 100644 index 8093b17d..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_print_formatter-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::PrintFormatter Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::PrintFormatter, including all inherited members.

    - - - - - - - - - - - - - -
    capitalize_boolmlx::core::PrintFormatter
    print(std::ostream &os, bool val)mlx::core::PrintFormatterinline
    print(std::ostream &os, int16_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, uint16_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, int32_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, uint32_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, int64_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, uint64_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, float16_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, bfloat16_t val)mlx::core::PrintFormatterinline
    print(std::ostream &os, float val)mlx::core::PrintFormatterinline
    print(std::ostream &os, complex64_t val)mlx::core::PrintFormatterinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_print_formatter.html b/docs/build/html/structmlx_1_1core_1_1_print_formatter.html deleted file mode 100644 index 9c0be826..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_print_formatter.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - - - - -MLX: mlx::core::PrintFormatter Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::PrintFormatter Struct Reference
    -
    -
    - -

    #include <utils.h>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    void print (std::ostream &os, bool val)
     
    void print (std::ostream &os, int16_t val)
     
    void print (std::ostream &os, uint16_t val)
     
    void print (std::ostream &os, int32_t val)
     
    void print (std::ostream &os, uint32_t val)
     
    void print (std::ostream &os, int64_t val)
     
    void print (std::ostream &os, uint64_t val)
     
    void print (std::ostream &os, float16_t val)
     
    void print (std::ostream &os, bfloat16_t val)
     
    void print (std::ostream &os, float val)
     
    void print (std::ostream &os, complex64_t val)
     
    - - - -

    -Public Attributes

    bool capitalize_bool {false}
     
    -

    Member Function Documentation

    - -

    ◆ print() [1/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    bfloat16_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [2/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    bool val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [3/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    complex64_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [4/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    float val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [5/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    float16_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [6/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    int16_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [7/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    int32_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [8/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    int64_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [9/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    uint16_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [10/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    uint32_t val )
    -
    -inline
    -
    - -
    -
    - -

    ◆ print() [11/11]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    void mlx::core::PrintFormatter::print (std::ostream & os,
    uint64_t val )
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ capitalize_bool

    - -
    -
    - - - - -
    bool mlx::core::PrintFormatter::capitalize_bool {false}
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_reduction_plan-members.html b/docs/build/html/structmlx_1_1core_1_1_reduction_plan-members.html deleted file mode 100644 index 8d389f30..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_reduction_plan-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::ReductionPlan Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::ReductionPlan, including all inherited members.

    - - - - - - -
    ReductionPlan(ReductionOpType type_, std::vector< int > shape_, std::vector< size_t > strides_)mlx::core::ReductionPlaninline
    ReductionPlan(ReductionOpType type_)mlx::core::ReductionPlaninline
    shapemlx::core::ReductionPlan
    stridesmlx::core::ReductionPlan
    typemlx::core::ReductionPlan
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_reduction_plan.html b/docs/build/html/structmlx_1_1core_1_1_reduction_plan.html deleted file mode 100644 index 92b6e987..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_reduction_plan.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - -MLX: mlx::core::ReductionPlan Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::ReductionPlan Struct Reference
    -
    -
    - -

    #include <reduce.h>

    - - - - - - -

    -Public Member Functions

     ReductionPlan (ReductionOpType type_, std::vector< int > shape_, std::vector< size_t > strides_)
     
     ReductionPlan (ReductionOpType type_)
     
    - - - - - - - -

    -Public Attributes

    ReductionOpType type
     
    std::vector< int > shape
     
    std::vector< size_t > strides
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ ReductionPlan() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - -
    mlx::core::ReductionPlan::ReductionPlan (ReductionOpType type_,
    std::vector< int > shape_,
    std::vector< size_t > strides_ )
    -
    -inline
    -
    - -
    -
    - -

    ◆ ReductionPlan() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::ReductionPlan::ReductionPlan (ReductionOpType type_)
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ shape

    - -
    -
    - - - - -
    std::vector<int> mlx::core::ReductionPlan::shape
    -
    - -
    -
    - -

    ◆ strides

    - -
    -
    - - - - -
    std::vector<size_t> mlx::core::ReductionPlan::strides
    -
    - -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    ReductionOpType mlx::core::ReductionPlan::type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_stream.html b/docs/build/html/structmlx_1_1core_1_1_stream.html deleted file mode 100644 index 881ddaf2..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_stream.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -MLX: mlx::core::Stream Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::Stream Struct Reference
    -
    -
    - -

    #include <stream.h>

    - - - - -

    -Public Member Functions

     Stream (int index, Device device)
     
    - - - - - -

    -Public Attributes

    int index
     
    Device device
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Stream()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    mlx::core::Stream::Stream (int index,
    Device device )
    -
    -inlineexplicit
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ device

    - -
    -
    - - - - -
    Device mlx::core::Stream::device
    -
    - -
    -
    - -

    ◆ index

    - -
    -
    - - - - -
    int mlx::core::Stream::index
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_stream_context-members.html b/docs/build/html/structmlx_1_1core_1_1_stream_context-members.html deleted file mode 100644 index 46d1ac21..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_stream_context-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::StreamContext Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::StreamContext, including all inherited members.

    - - - -
    StreamContext(StreamOrDevice s)mlx::core::StreamContextinline
    ~StreamContext()mlx::core::StreamContextinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_stream_context.html b/docs/build/html/structmlx_1_1core_1_1_stream_context.html deleted file mode 100644 index 8ed91dd2..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_stream_context.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -MLX: mlx::core::StreamContext Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::StreamContext Struct Reference
    -
    -
    - -

    #include <utils.h>

    - - - - - - -

    -Public Member Functions

     StreamContext (StreamOrDevice s)
     
     ~StreamContext ()
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ StreamContext()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::StreamContext::StreamContext (StreamOrDevice s)
    -
    -inline
    -
    - -
    -
    - -

    ◆ ~StreamContext()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::StreamContext::~StreamContext ()
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_type_to_dtype-members.html b/docs/build/html/structmlx_1_1core_1_1_type_to_dtype-members.html deleted file mode 100644 index 6287c04e..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_type_to_dtype-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::TypeToDtype< T > Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::TypeToDtype< T >, including all inherited members.

    - - -
    operator Dtype()mlx::core::TypeToDtype< T >
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1_type_to_dtype.html b/docs/build/html/structmlx_1_1core_1_1_type_to_dtype.html deleted file mode 100644 index 3ee1cb7d..00000000 --- a/docs/build/html/structmlx_1_1core_1_1_type_to_dtype.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -MLX: mlx::core::TypeToDtype< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::TypeToDtype< T > Struct Template Reference
    -
    -
    - -

    #include <dtype.h>

    - - - - -

    -Public Member Functions

     operator Dtype ()
     
    -

    Member Function Documentation

    - -

    ◆ operator Dtype()

    - -
    -
    -
    -template<typename T >
    - - - - - - - -
    mlx::core::TypeToDtype< T >::operator Dtype ()
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator-members.html b/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator-members.html deleted file mode 100644 index 8691adaa..00000000 --- a/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::array::ArrayIterator Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator.html b/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator.html deleted file mode 100644 index 306e25df..00000000 --- a/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - -MLX: mlx::core::array::ArrayIterator Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::array::ArrayIterator Struct Reference
    -
    -
    - -

    #include <array.h>

    - - - - - - - - - - -

    -Public Types

    using iterator_category = std::random_access_iterator_tag
     
    using difference_type = size_t
     
    using value_type = const array
     
    using reference = value_type
     
    - - - - - - - - - -

    -Public Member Functions

     ArrayIterator (const array &arr, int idx=0)
     
    reference operator* () const
     
    ArrayIteratoroperator+ (difference_type diff)
     
    ArrayIteratoroperator++ ()
     
    - - - - - -

    -Friends

    bool operator== (const ArrayIterator &a, const ArrayIterator &b)
     
    bool operator!= (const ArrayIterator &a, const ArrayIterator &b)
     
    -

    Member Typedef Documentation

    - -

    ◆ difference_type

    - -
    -
    - -
    -
    - -

    ◆ iterator_category

    - -
    -
    - - - - -
    using mlx::core::array::ArrayIterator::iterator_category = std::random_access_iterator_tag
    -
    - -
    -
    - -

    ◆ reference

    - - - -

    ◆ value_type

    - -
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ ArrayIterator()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    mlx::core::array::ArrayIterator::ArrayIterator (const array & arr,
    int idx = 0 )
    -
    -explicit
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator*()

    - -
    -
    - - - - - - - -
    reference mlx::core::array::ArrayIterator::operator* () const
    -
    - -
    -
    - -

    ◆ operator+()

    - -
    -
    - - - - - -
    - - - - - - - -
    ArrayIterator & mlx::core::array::ArrayIterator::operator+ (difference_type diff)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator++()

    - -
    -
    - - - - - -
    - - - - - - - -
    ArrayIterator & mlx::core::array::ArrayIterator::operator++ ()
    -
    -inline
    -
    - -
    -
    -

    Friends And Related Symbol Documentation

    - -

    ◆ operator!=

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    bool operator!= (const ArrayIterator & a,
    const ArrayIterator & b )
    -
    -friend
    -
    - -
    -
    - -

    ◆ operator==

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    bool operator== (const ArrayIterator & a,
    const ArrayIterator & b )
    -
    -friend
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1array_1_1_data-members.html b/docs/build/html/structmlx_1_1core_1_1array_1_1_data-members.html deleted file mode 100644 index 57c78fba..00000000 --- a/docs/build/html/structmlx_1_1core_1_1array_1_1_data-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::array::Data Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::array::Data, including all inherited members.

    - - - - - - - -
    buffermlx::core::array::Data
    dmlx::core::array::Data
    Data(allocator::Buffer buffer, deleter_t d=allocator::free)mlx::core::array::Datainline
    Data(const Data &d)=deletemlx::core::array::Data
    operator=(const Data &d)=deletemlx::core::array::Data
    ~Data()mlx::core::array::Datainline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1array_1_1_data.html b/docs/build/html/structmlx_1_1core_1_1array_1_1_data.html deleted file mode 100644 index 0533ac9f..00000000 --- a/docs/build/html/structmlx_1_1core_1_1array_1_1_data.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - -MLX: mlx::core::array::Data Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::array::Data Struct Reference
    -
    -
    - -

    #include <array.h>

    - - - - - - - - - - -

    -Public Member Functions

     Data (allocator::Buffer buffer, deleter_t d=allocator::free)
     
     Data (const Data &d)=delete
     
    Dataoperator= (const Data &d)=delete
     
     ~Data ()
     
    - - - - - -

    -Public Attributes

    allocator::Buffer buffer
     
    deleter_t d
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Data() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    mlx::core::array::Data::Data (allocator::Buffer buffer,
    deleter_t d = allocator::free )
    -
    -inline
    -
    - -
    -
    - -

    ◆ Data() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::array::Data::Data (const Data & d)
    -
    -delete
    -
    - -
    -
    - -

    ◆ ~Data()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::array::Data::~Data ()
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator=()

    - -
    -
    - - - - - -
    - - - - - - - -
    Data & mlx::core::array::Data::operator= (const Data & d)
    -
    -delete
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ buffer

    - -
    -
    - - - - -
    allocator::Buffer mlx::core::array::Data::buffer
    -
    - -
    -
    - -

    ◆ d

    - -
    -
    - - - - -
    deleter_t mlx::core::array::Data::d
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1array_1_1_flags-members.html b/docs/build/html/structmlx_1_1core_1_1array_1_1_flags-members.html deleted file mode 100644 index c0019646..00000000 --- a/docs/build/html/structmlx_1_1core_1_1array_1_1_flags-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::array::Flags Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::array::Flags, including all inherited members.

    - - - - -
    col_contiguousmlx::core::array::Flags
    contiguousmlx::core::array::Flags
    row_contiguousmlx::core::array::Flags
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1array_1_1_flags.html b/docs/build/html/structmlx_1_1core_1_1array_1_1_flags.html deleted file mode 100644 index 21dfbdc6..00000000 --- a/docs/build/html/structmlx_1_1core_1_1array_1_1_flags.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -MLX: mlx::core::array::Flags Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::array::Flags Struct Reference
    -
    -
    - -

    #include <array.h>

    - - - - - - - - -

    -Public Attributes

    bool contiguous: 1
     
    bool row_contiguous: 1
     
    bool col_contiguous: 1
     
    -

    Member Data Documentation

    - -

    ◆ col_contiguous

    - -
    -
    - - - - -
    bool mlx::core::array::Flags::col_contiguous
    -
    - -
    -
    - -

    ◆ contiguous

    - -
    -
    - - - - -
    bool mlx::core::array::Flags::contiguous
    -
    - -
    -
    - -

    ◆ row_contiguous

    - -
    -
    - - - - -
    bool mlx::core::array::Flags::row_contiguous
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1complex128__t-members.html b/docs/build/html/structmlx_1_1core_1_1complex128__t-members.html deleted file mode 100644 index 1cfbd1ce..00000000 --- a/docs/build/html/structmlx_1_1core_1_1complex128__t-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::complex128_t Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::complex128_t, including all inherited members.

    - - - - - -
    complex128_t(double v, double u)mlx::core::complex128_tinline
    complex128_t(std::complex< double > v)mlx::core::complex128_tinline
    complex128_t(T x)mlx::core::complex128_tinline
    operator float() constmlx::core::complex128_tinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1complex128__t.html b/docs/build/html/structmlx_1_1core_1_1complex128__t.html deleted file mode 100644 index d92fc8cd..00000000 --- a/docs/build/html/structmlx_1_1core_1_1complex128__t.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -MLX: mlx::core::complex128_t Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::complex128_t Struct Reference
    -
    -
    - -

    #include <complex.h>

    -
    -Inheritance diagram for mlx::core::complex128_t:
    -
    -
    - -
    - - - - - - - - - - - -

    -Public Member Functions

     complex128_t (double v, double u)
     
     complex128_t (std::complex< double > v)
     
    template<typename T , typename = typename std::enable_if<can_convert_to_complex128<T>>::type>
     complex128_t (T x)
     
     operator float () const
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ complex128_t() [1/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    mlx::core::complex128_t::complex128_t (double v,
    double u )
    -
    -inline
    -
    - -
    -
    - -

    ◆ complex128_t() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::complex128_t::complex128_t (std::complex< double > v)
    -
    -inline
    -
    - -
    -
    - -

    ◆ complex128_t() [3/3]

    - -
    -
    -
    -template<typename T , typename = typename std::enable_if<can_convert_to_complex128<T>>::type>
    - - - - - -
    - - - - - - - -
    mlx::core::complex128_t::complex128_t (T x)
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator float()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::complex128_t::operator float () const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1complex128__t.png b/docs/build/html/structmlx_1_1core_1_1complex128__t.png deleted file mode 100644 index 745542033602752f1e251ec5af57d0f373ef5b28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmeAS@N?(olHy`uVBq!ia0vp^6M;B@gBeKbZAu4{4AKEUA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=E7PJzX3_Dj46+y*X*M0gp?x ze&*l*;_*!P#2*IC)Vwac^o3!5N*Rm*{?0w>*l6kt*<5HNn$T~5@_tQ#0 zbAO8#K3P~+!*_17Owqm0!lE8~<_YH{Jy~hiry`xIr1&{7Zpz`87Lf&#OP@ap z-RdYCe!Rpbv|xIg;_1bOeJj^+T@fxVlnoBv%I@+$epTh>RGmcv*9}9hs~z@FS^Owd z{%OX6bRpxuwN4>r9JScSO#e}*;ffZt}^H*>4`|@wCaO+jkz<;~lM2vHuWH{NZ z4h`OV?8~$jtIKEp4!p`%z51?u=~OwPrCitchJ6XOkKZM+cbayj>D&Ig&GUEXIh3fa r$(U+CSvmA-I^3nN6@&zDdj4lvzGQ8|#O>yfKq<%5)z4*}Q$iB}+S(7_ diff --git a/docs/build/html/structmlx_1_1core_1_1complex64__t-members.html b/docs/build/html/structmlx_1_1core_1_1complex64__t-members.html deleted file mode 100644 index 156989d6..00000000 --- a/docs/build/html/structmlx_1_1core_1_1complex64__t-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::complex64_t Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::complex64_t, including all inherited members.

    - - - - - -
    complex64_t(float v, float u)mlx::core::complex64_tinline
    complex64_t(std::complex< float > v)mlx::core::complex64_tinline
    complex64_t(T x)mlx::core::complex64_tinline
    operator float() constmlx::core::complex64_tinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1complex64__t.html b/docs/build/html/structmlx_1_1core_1_1complex64__t.html deleted file mode 100644 index e2bb9d46..00000000 --- a/docs/build/html/structmlx_1_1core_1_1complex64__t.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -MLX: mlx::core::complex64_t Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::complex64_t Struct Reference
    -
    -
    - -

    #include <complex.h>

    -
    -Inheritance diagram for mlx::core::complex64_t:
    -
    -
    - -
    - - - - - - - - - - - -

    -Public Member Functions

     complex64_t (float v, float u)
     
     complex64_t (std::complex< float > v)
     
    template<typename T , typename = typename std::enable_if<can_convert_to_complex64<T>>::type>
     complex64_t (T x)
     
     operator float () const
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ complex64_t() [1/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    mlx::core::complex64_t::complex64_t (float v,
    float u )
    -
    -inline
    -
    - -
    -
    - -

    ◆ complex64_t() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::complex64_t::complex64_t (std::complex< float > v)
    -
    -inline
    -
    - -
    -
    - -

    ◆ complex64_t() [3/3]

    - -
    -
    -
    -template<typename T , typename = typename std::enable_if<can_convert_to_complex64<T>>::type>
    - - - - - -
    - - - - - - - -
    mlx::core::complex64_t::complex64_t (T x)
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator float()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::complex64_t::operator float () const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1complex64__t.png b/docs/build/html/structmlx_1_1core_1_1complex64__t.png deleted file mode 100644 index 30eb05ff58644b7935039ec32bc46567ba69a64e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)r002-30{{R3@%$Yh0000RP)t-s|Ns90 z008Lh^>vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0005? zNklXVKD0QuFf*G&Fp``>i9(X9 zL?KDl2xT9+$@q4eSwDZZ;qRiXbDyFtw^&rZ!j>{}bY)_HIF8!3bmyGI(ZK#plC4@4 zBWsI4Vpk9@7Hr1O!(?aenpIaQ&8{wBM#k1Y?Z(3qEkm$9f*Azp1C;f1hPTg^5XT0k zUEQT^d(Zn`35Q;JMFRBRD@NAVpy<(qT&ZdMM6T=sIxA>U0FmZ*6%-?L7}$4_r0554 z+oxaCi9(X9{AVUfRicojYAzHrvnd1sKi3NY=FmJSuh%pz^Pnswv#?Brk`)91y%Gfg zREYurszd<*RiXfZDp3GHl_&t9N)!N4B?hr0P{Ww4;MaHDIl#I1q3^=#B&ehg4;wuBF$te^WR`|297_Ac*H zBJ_nJJLA}-qga_*osX{)(13eX^bG*?1~>`8jdE1^^d6%?wapV$1<3L3vxq=MYt zAJhj{|0l|pGBwoS?-h6VKUAW)yQ>n#-Cebyn3+wXU#(iDMt!U!;s5{u07*qoM6N<$ Eg0ZC=YXATM diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs-members.html deleted file mode 100644 index aea7ad5c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Abs Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Abs, including all inherited members.

    - - - - - - - -
    operator()(T x)mlx::core::detail::Absinline
    operator()(uint8_t x)mlx::core::detail::Absinline
    operator()(uint16_t x)mlx::core::detail::Absinline
    operator()(uint32_t x)mlx::core::detail::Absinline
    operator()(uint64_t x)mlx::core::detail::Absinline
    operator()(bool x)mlx::core::detail::Absinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs.html deleted file mode 100644 index 60da6da9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Abs Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Abs Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - - - - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    uint8_t operator() (uint8_t x)
     
    uint16_t operator() (uint16_t x)
     
    uint32_t operator() (uint32_t x)
     
    uint64_t operator() (uint64_t x)
     
    bool operator() (bool x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    bool mlx::core::detail::Abs::operator() (bool x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/6]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Abs::operator() (T x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [3/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint16_t mlx::core::detail::Abs::operator() (uint16_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [4/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint32_t mlx::core::detail::Abs::operator() (uint32_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [5/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint64_t mlx::core::detail::Abs::operator() (uint64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [6/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint8_t mlx::core::detail::Abs::operator() (uint8_t x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_add-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_add-members.html deleted file mode 100644 index a2ffcee9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_add-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Add Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Add, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Addinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_add.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_add.html deleted file mode 100644 index 3c11ab01..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_add.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Add Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Add Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::Add::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos-members.html deleted file mode 100644 index 05cc9480..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcCos Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcCos, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ArcCosinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos.html deleted file mode 100644 index b49ff89b..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcCos Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcCos Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ArcCos::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh-members.html deleted file mode 100644 index 9b49fcc9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcCosh Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcCosh, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ArcCoshinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh.html deleted file mode 100644 index f1782794..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcCosh Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcCosh Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ArcCosh::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin-members.html deleted file mode 100644 index a7c185cc..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcSin Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcSin, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ArcSininline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin.html deleted file mode 100644 index 8a88a1a4..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcSin Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcSin Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ArcSin::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh-members.html deleted file mode 100644 index c6f01652..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcSinh Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcSinh, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ArcSinhinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh.html deleted file mode 100644 index 48ea2d54..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcSinh Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcSinh Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ArcSinh::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan-members.html deleted file mode 100644 index 73f9825b..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcTan Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcTan, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ArcTaninline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan.html deleted file mode 100644 index 6e990f0c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcTan Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcTan Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ArcTan::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2-members.html deleted file mode 100644 index cfdbcd48..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcTan2 Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcTan2, including all inherited members.

    - - -
    operator()(T y, T x)mlx::core::detail::ArcTan2inline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2.html deleted file mode 100644 index d4cd3121..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcTan2 Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcTan2 Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T y, T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::ArcTan2::operator() (T y,
    T x )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh-members.html deleted file mode 100644 index 676e3a81..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ArcTanh Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ArcTanh, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ArcTanhinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh.html deleted file mode 100644 index cf0c8496..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ArcTanh Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ArcTanh Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ArcTanh::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and-members.html deleted file mode 100644 index 806d6d07..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::BitwiseAnd Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::BitwiseAnd, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::BitwiseAndinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and.html deleted file mode 100644 index 33222ca5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::BitwiseAnd Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::BitwiseAnd Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::BitwiseAnd::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or-members.html deleted file mode 100644 index 92948008..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::BitwiseOr Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::BitwiseOr, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::BitwiseOrinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or.html deleted file mode 100644 index 66a642dd..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::BitwiseOr Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::BitwiseOr Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::BitwiseOr::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor-members.html deleted file mode 100644 index 9767b5d8..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::BitwiseXor Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::BitwiseXor, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::BitwiseXorinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor.html deleted file mode 100644 index 6d2ec209..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::BitwiseXor Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::BitwiseXor Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::BitwiseXor::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil-members.html deleted file mode 100644 index 4b161b8c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Ceil Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Ceil, including all inherited members.

    - - - - - - - - - - - -
    operator()(T x)mlx::core::detail::Ceilinline
    operator()(int8_t x)mlx::core::detail::Ceilinline
    operator()(int16_t x)mlx::core::detail::Ceilinline
    operator()(int32_t x)mlx::core::detail::Ceilinline
    operator()(int64_t x)mlx::core::detail::Ceilinline
    operator()(uint8_t x)mlx::core::detail::Ceilinline
    operator()(uint16_t x)mlx::core::detail::Ceilinline
    operator()(uint32_t x)mlx::core::detail::Ceilinline
    operator()(uint64_t x)mlx::core::detail::Ceilinline
    operator()(bool x)mlx::core::detail::Ceilinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil.html deleted file mode 100644 index 0f127c27..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Ceil Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Ceil Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    int8_t operator() (int8_t x)
     
    int16_t operator() (int16_t x)
     
    int32_t operator() (int32_t x)
     
    int64_t operator() (int64_t x)
     
    uint8_t operator() (uint8_t x)
     
    uint16_t operator() (uint16_t x)
     
    uint32_t operator() (uint32_t x)
     
    uint64_t operator() (uint64_t x)
     
    bool operator() (bool x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    bool mlx::core::detail::Ceil::operator() (bool x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int16_t mlx::core::detail::Ceil::operator() (int16_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [3/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int32_t mlx::core::detail::Ceil::operator() (int32_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [4/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int64_t mlx::core::detail::Ceil::operator() (int64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [5/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int8_t mlx::core::detail::Ceil::operator() (int8_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [6/10]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Ceil::operator() (T x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [7/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint16_t mlx::core::detail::Ceil::operator() (uint16_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [8/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint32_t mlx::core::detail::Ceil::operator() (uint32_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [9/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint64_t mlx::core::detail::Ceil::operator() (uint64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [10/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint8_t mlx::core::detail::Ceil::operator() (uint8_t x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate-members.html deleted file mode 100644 index c8d705ab..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Conjugate Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Conjugate, including all inherited members.

    - - -
    operator()(complex64_t x)mlx::core::detail::Conjugateinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate.html deleted file mode 100644 index 6e9a09c8..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Conjugate Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Conjugate Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - -

    -Public Member Functions

    complex64_t operator() (complex64_t x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    - - - - - -
    - - - - - - - -
    complex64_t mlx::core::detail::Conjugate::operator() (complex64_t x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos-members.html deleted file mode 100644 index 7b98004c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Cos Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Cos, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Cosinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos.html deleted file mode 100644 index d33ccddc..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Cos Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Cos Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Cos::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh-members.html deleted file mode 100644 index 2cb7b6f4..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Cosh Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Cosh, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Coshinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh.html deleted file mode 100644 index 9ae64a7a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Cosh Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Cosh Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Cosh::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide-members.html deleted file mode 100644 index 5a92318a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Divide Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Divide, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Divideinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide.html deleted file mode 100644 index 62ab3a4c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Divide Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Divide Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::Divide::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal-members.html deleted file mode 100644 index 10a71892..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Equal Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Equal, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Equalinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal.html deleted file mode 100644 index 8ca08830..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Equal Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Equal Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::Equal::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf-members.html deleted file mode 100644 index 54ed7c00..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Erf Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Erf, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Erfinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf.html deleted file mode 100644 index cce5c15c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Erf Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Erf Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Erf::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv-members.html deleted file mode 100644 index b98c0e0d..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::ErfInv Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::ErfInv, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::ErfInvinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv.html deleted file mode 100644 index 1b8ca4ce..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::ErfInv Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::ErfInv Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::ErfInv::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp-members.html deleted file mode 100644 index 5fdb816c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Exp Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Exp, including all inherited members.

    - - - -
    operator()(T x)mlx::core::detail::Expinline
    operator()(complex64_t x)mlx::core::detail::Expinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp.html deleted file mode 100644 index b3b85885..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Exp Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Exp Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    complex64_t operator() (complex64_t x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    complex64_t mlx::core::detail::Exp::operator() (complex64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Exp::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1-members.html deleted file mode 100644 index d7273ddb..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Expm1 Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Expm1, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Expm1inline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1.html deleted file mode 100644 index 7b76e784..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Expm1 Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Expm1 Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Expm1::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor-members.html deleted file mode 100644 index 76b3532d..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Floor Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Floor, including all inherited members.

    - - - - - - - - - - - -
    operator()(T x)mlx::core::detail::Floorinline
    operator()(int8_t x)mlx::core::detail::Floorinline
    operator()(int16_t x)mlx::core::detail::Floorinline
    operator()(int32_t x)mlx::core::detail::Floorinline
    operator()(int64_t x)mlx::core::detail::Floorinline
    operator()(uint8_t x)mlx::core::detail::Floorinline
    operator()(uint16_t x)mlx::core::detail::Floorinline
    operator()(uint32_t x)mlx::core::detail::Floorinline
    operator()(uint64_t x)mlx::core::detail::Floorinline
    operator()(bool x)mlx::core::detail::Floorinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor.html deleted file mode 100644 index f757fbe5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Floor Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Floor Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    int8_t operator() (int8_t x)
     
    int16_t operator() (int16_t x)
     
    int32_t operator() (int32_t x)
     
    int64_t operator() (int64_t x)
     
    uint8_t operator() (uint8_t x)
     
    uint16_t operator() (uint16_t x)
     
    uint32_t operator() (uint32_t x)
     
    uint64_t operator() (uint64_t x)
     
    bool operator() (bool x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    bool mlx::core::detail::Floor::operator() (bool x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int16_t mlx::core::detail::Floor::operator() (int16_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [3/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int32_t mlx::core::detail::Floor::operator() (int32_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [4/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int64_t mlx::core::detail::Floor::operator() (int64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [5/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    int8_t mlx::core::detail::Floor::operator() (int8_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [6/10]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Floor::operator() (T x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [7/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint16_t mlx::core::detail::Floor::operator() (uint16_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [8/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint32_t mlx::core::detail::Floor::operator() (uint32_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [9/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint64_t mlx::core::detail::Floor::operator() (uint64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [10/10]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint8_t mlx::core::detail::Floor::operator() (uint8_t x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater-members.html deleted file mode 100644 index c0bab8a9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Greater Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Greater, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Greaterinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater.html deleted file mode 100644 index bf6f0ab6..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Greater Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Greater Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::Greater::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal-members.html deleted file mode 100644 index af11f1ad..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::GreaterEqual Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::GreaterEqual, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::GreaterEqualinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal.html deleted file mode 100644 index 12357b3f..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::GreaterEqual Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::GreaterEqual Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::GreaterEqual::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing-members.html deleted file mode 100644 index 8181fdee..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::InTracing Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::InTracing, including all inherited members.

    - - - - -
    in_tracing()mlx::core::detail::InTracinginlinestatic
    InTracing()mlx::core::detail::InTracinginline
    ~InTracing()mlx::core::detail::InTracinginline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing.html deleted file mode 100644 index dbd5bf18..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::InTracing Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::InTracing Struct Reference
    -
    -
    - -

    #include <transforms_impl.h>

    - - - - - - -

    -Public Member Functions

     InTracing ()
     
     ~InTracing ()
     
    - - - -

    -Static Public Member Functions

    static bool in_tracing ()
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ InTracing()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::detail::InTracing::InTracing ()
    -
    -inline
    -
    - -
    -
    - -

    ◆ ~InTracing()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::detail::InTracing::~InTracing ()
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ in_tracing()

    - -
    -
    - - - - - -
    - - - - - - - -
    static bool mlx::core::detail::InTracing::in_tracing ()
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift-members.html deleted file mode 100644 index 93bc420a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::LeftShift Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::LeftShift, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::LeftShiftinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift.html deleted file mode 100644 index e5ecc499..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::LeftShift Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::LeftShift Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::LeftShift::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less-members.html deleted file mode 100644 index 48c25c0c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Less Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Less, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Lessinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less.html deleted file mode 100644 index 34c2e689..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Less Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Less Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::Less::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal-members.html deleted file mode 100644 index fb50532e..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::LessEqual Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::LessEqual, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::LessEqualinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal.html deleted file mode 100644 index f5cb52d0..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::LessEqual Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::LessEqual Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::LessEqual::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log-members.html deleted file mode 100644 index adbd403b..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Log Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Log, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Loginline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log.html deleted file mode 100644 index 4b973e64..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Log Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Log Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Log::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10-members.html deleted file mode 100644 index b4f685b3..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Log10 Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Log10, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Log10inline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10.html deleted file mode 100644 index e0a65b47..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Log10 Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Log10 Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Log10::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p-members.html deleted file mode 100644 index d415e4e5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Log1p Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Log1p, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Log1pinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p.html deleted file mode 100644 index d6c763ca..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Log1p Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Log1p Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Log1p::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2-members.html deleted file mode 100644 index 633040b7..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Log2 Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Log2, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Log2inline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2.html deleted file mode 100644 index e4f27171..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Log2 Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Log2 Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Log2::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp-members.html deleted file mode 100644 index ef6780c5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::LogAddExp Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::LogAddExp, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::LogAddExpinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp.html deleted file mode 100644 index b7ad084a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::LogAddExp Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::LogAddExp Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::LogAddExp::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and-members.html deleted file mode 100644 index 0333ff9a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::LogicalAnd Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::LogicalAnd, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::LogicalAndinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and.html deleted file mode 100644 index 952dd1a5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::LogicalAnd Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::LogicalAnd Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::LogicalAnd::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not-members.html deleted file mode 100644 index bf6959f5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::LogicalNot Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::LogicalNot, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::LogicalNotinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not.html deleted file mode 100644 index a1a99ce0..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::LogicalNot Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::LogicalNot Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::LogicalNot::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or-members.html deleted file mode 100644 index dca012ef..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::LogicalOr Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::LogicalOr, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::LogicalOrinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or.html deleted file mode 100644 index 1543da58..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::LogicalOr Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::LogicalOr Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::LogicalOr::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum-members.html deleted file mode 100644 index 7c3e85a1..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Maximum Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Maximum, including all inherited members.

    - - - -
    operator()(T x, T y)mlx::core::detail::Maximuminline
    operator()(T x, T y)mlx::core::detail::Maximuminline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum.html deleted file mode 100644 index 992867c8..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Maximum Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Maximum Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - -

    -Public Member Functions

    template<typename T >
    std::enable_if_t< std::is_integral_v< T >, T > operator() (T x, T y)
     
    template<typename T >
    std::enable_if_t<!std::is_integral_v< T >, T > operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t< std::is_integral_v< T >, T > mlx::core::detail::Maximum::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t<!std::is_integral_v< T >, T > mlx::core::detail::Maximum::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum-members.html deleted file mode 100644 index 164b3510..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Minimum Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Minimum, including all inherited members.

    - - - -
    operator()(T x, T y)mlx::core::detail::Minimuminline
    operator()(T x, T y)mlx::core::detail::Minimuminline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum.html deleted file mode 100644 index cb4f049d..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Minimum Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Minimum Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - -

    -Public Member Functions

    template<typename T >
    std::enable_if_t< std::is_integral_v< T >, T > operator() (T x, T y)
     
    template<typename T >
    std::enable_if_t<!std::is_integral_v< T >, T > operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t< std::is_integral_v< T >, T > mlx::core::detail::Minimum::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t<!std::is_integral_v< T >, T > mlx::core::detail::Minimum::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply-members.html deleted file mode 100644 index 90b90fac..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Multiply Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Multiply, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Multiplyinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply.html deleted file mode 100644 index df2e8f0a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Multiply Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Multiply Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::Multiply::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal-members.html deleted file mode 100644 index e3b7bf98..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::NaNEqual Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::NaNEqual, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::NaNEqualinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal.html deleted file mode 100644 index 586f9db7..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::NaNEqual Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::NaNEqual Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::NaNEqual::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative-members.html deleted file mode 100644 index 2f4ea304..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Negative Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Negative, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Negativeinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative.html deleted file mode 100644 index c2aa3fb6..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Negative Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Negative Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Negative::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal-members.html deleted file mode 100644 index 8c9d2ff0..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::NotEqual Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::NotEqual, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::NotEqualinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal.html deleted file mode 100644 index 0163000a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::NotEqual Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::NotEqual Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    bool operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    bool mlx::core::detail::NotEqual::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_power-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_power-members.html deleted file mode 100644 index df3bd367..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_power-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Power Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Power, including all inherited members.

    - - - -
    operator()(T base, T exp)mlx::core::detail::Powerinline
    operator()(T base, T exp)mlx::core::detail::Powerinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_power.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_power.html deleted file mode 100644 index 96586d94..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_power.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Power Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Power Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - -

    -Public Member Functions

    template<typename T >
    std::enable_if_t<!std::is_integral_v< T >, T > operator() (T base, T exp)
     
    template<typename T >
    std::enable_if_t< std::is_integral_v< T >, T > operator() (T base, T exp)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t<!std::is_integral_v< T >, T > mlx::core::detail::Power::operator() (T base,
    T exp )
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t< std::is_integral_v< T >, T > mlx::core::detail::Power::operator() (T base,
    T exp )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder-members.html deleted file mode 100644 index 4dd27b25..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Remainder Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Remainder, including all inherited members.

    - - - - - -
    operator()(T numerator, T denominator)mlx::core::detail::Remainderinline
    operator()(T numerator, T denominator)mlx::core::detail::Remainderinline
    operator()(T numerator, T denominator)mlx::core::detail::Remainderinline
    operator()(complex64_t numerator, complex64_t denominator)mlx::core::detail::Remainderinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder.html deleted file mode 100644 index e541b4d9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Remainder Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Remainder Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - - - - - - -

    -Public Member Functions

    template<typename T >
    std::enable_if_t< std::is_integral_v< T > &!std::is_signed_v< T >, T > operator() (T numerator, T denominator)
     
    template<typename T >
    std::enable_if_t< std::is_integral_v< T > &std::is_signed_v< T >, T > operator() (T numerator, T denominator)
     
    template<typename T >
    std::enable_if_t<!std::is_integral_v< T >, T > operator() (T numerator, T denominator)
     
    complex64_t operator() (complex64_t numerator, complex64_t denominator)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/4]

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    complex64_t mlx::core::detail::Remainder::operator() (complex64_t numerator,
    complex64_t denominator )
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/4]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t< std::is_integral_v< T > &!std::is_signed_v< T >, T > mlx::core::detail::Remainder::operator() (T numerator,
    T denominator )
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [3/4]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t< std::is_integral_v< T > &std::is_signed_v< T >, T > mlx::core::detail::Remainder::operator() (T numerator,
    T denominator )
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [4/4]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    std::enable_if_t<!std::is_integral_v< T >, T > mlx::core::detail::Remainder::operator() (T numerator,
    T denominator )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph-members.html deleted file mode 100644 index 8249d4d9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::RetainGraph Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::RetainGraph, including all inherited members.

    - - - - -
    retain_graph()mlx::core::detail::RetainGraphinlinestatic
    RetainGraph()mlx::core::detail::RetainGraphinline
    ~RetainGraph()mlx::core::detail::RetainGraphinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph.html deleted file mode 100644 index 1bc96666..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_retain_graph.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::RetainGraph Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::RetainGraph Struct Reference
    -
    -
    - -

    #include <transforms_impl.h>

    - - - - - - -

    -Public Member Functions

     RetainGraph ()
     
     ~RetainGraph ()
     
    - - - -

    -Static Public Member Functions

    static bool retain_graph ()
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ RetainGraph()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::detail::RetainGraph::RetainGraph ()
    -
    -inline
    -
    - -
    -
    - -

    ◆ ~RetainGraph()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::detail::RetainGraph::~RetainGraph ()
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ retain_graph()

    - -
    -
    - - - - - -
    - - - - - - - -
    static bool mlx::core::detail::RetainGraph::retain_graph ()
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html deleted file mode 100644 index e8776dff..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::RightShift Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::RightShift, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::RightShiftinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift.html deleted file mode 100644 index 7c531e69..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::RightShift Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::RightShift Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::RightShift::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_round-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_round-members.html deleted file mode 100644 index 1effcf1f..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_round-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Round Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Round, including all inherited members.

    - - - -
    operator()(T x)mlx::core::detail::Roundinline
    operator()(complex64_t x)mlx::core::detail::Roundinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_round.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_round.html deleted file mode 100644 index 5f2c22be..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_round.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Round Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Round Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    complex64_t operator() (complex64_t x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    complex64_t mlx::core::detail::Round::operator() (complex64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Round::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt-members.html deleted file mode 100644 index 2e3fa4c4..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Rsqrt Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Rsqrt, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Rsqrtinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt.html deleted file mode 100644 index 74bbe8a9..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Rsqrt Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Rsqrt Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Rsqrt::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_select-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_select-members.html deleted file mode 100644 index bf51cb2c..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_select-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Select Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Select, including all inherited members.

    - - -
    operator()(bool condition, T x, T y)mlx::core::detail::Selectinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_select.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_select.html deleted file mode 100644 index aee56a83..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_select.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Select Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Select Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (bool condition, T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - - - - - - -
    T mlx::core::detail::Select::operator() (bool condition,
    T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid-members.html deleted file mode 100644 index 1a7f8a74..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Sigmoid Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Sigmoid, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Sigmoidinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid.html deleted file mode 100644 index 76b7b69a..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Sigmoid Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Sigmoid Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Sigmoid::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign-members.html deleted file mode 100644 index b911fbee..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Sign Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Sign, including all inherited members.

    - - - - - - - -
    operator()(T x)mlx::core::detail::Signinline
    operator()(uint8_t x)mlx::core::detail::Signinline
    operator()(uint16_t x)mlx::core::detail::Signinline
    operator()(uint32_t x)mlx::core::detail::Signinline
    operator()(uint64_t x)mlx::core::detail::Signinline
    operator()(complex64_t x)mlx::core::detail::Signinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign.html deleted file mode 100644 index c1045688..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Sign Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Sign Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - - - - - - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    uint8_t operator() (uint8_t x)
     
    uint16_t operator() (uint16_t x)
     
    uint32_t operator() (uint32_t x)
     
    uint64_t operator() (uint64_t x)
     
    complex64_t operator() (complex64_t x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()() [1/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    complex64_t mlx::core::detail::Sign::operator() (complex64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [2/6]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Sign::operator() (T x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [3/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint16_t mlx::core::detail::Sign::operator() (uint16_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [4/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint32_t mlx::core::detail::Sign::operator() (uint32_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [5/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint64_t mlx::core::detail::Sign::operator() (uint64_t x)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator()() [6/6]

    - -
    -
    - - - - - -
    - - - - - - - -
    uint8_t mlx::core::detail::Sign::operator() (uint8_t x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin-members.html deleted file mode 100644 index 8a1a77bb..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Sin Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Sin, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Sininline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin.html deleted file mode 100644 index 432780f5..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Sin Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Sin Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Sin::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh-members.html deleted file mode 100644 index 26761f19..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Sinh Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Sinh, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Sinhinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh.html deleted file mode 100644 index 2ac72704..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Sinh Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Sinh Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Sinh::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt-members.html deleted file mode 100644 index 3815ea15..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Sqrt Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Sqrt, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Sqrtinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt.html deleted file mode 100644 index 44177f1b..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Sqrt Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Sqrt Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Sqrt::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_square-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_square-members.html deleted file mode 100644 index 284830b4..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_square-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Square Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Square, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Squareinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_square.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_square.html deleted file mode 100644 index 48681741..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_square.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Square Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Square Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Square::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract-members.html deleted file mode 100644 index 9b69b257..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Subtract Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Subtract, including all inherited members.

    - - -
    operator()(T x, T y)mlx::core::detail::Subtractinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract.html deleted file mode 100644 index 7d16892f..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Subtract Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Subtract Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x, T y)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    T mlx::core::detail::Subtract::operator() (T x,
    T y )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan-members.html deleted file mode 100644 index 905defc1..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Tan Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Tan, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Taninline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan.html deleted file mode 100644 index eb340823..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Tan Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Tan Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Tan::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh-members.html deleted file mode 100644 index e6f9f0cc..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::Tanh Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::Tanh, including all inherited members.

    - - -
    operator()(T x)mlx::core::detail::Tanhinline
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh.html deleted file mode 100644 index 62c3b2e6..00000000 --- a/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::Tanh Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::Tanh Struct Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - -

    -Public Member Functions

    template<typename T >
    operator() (T x)
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T mlx::core::detail::Tanh::operator() (T x)
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group-members.html b/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group-members.html deleted file mode 100644 index 4fa7b8ac..00000000 --- a/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::distributed::Group Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::distributed::Group, including all inherited members.

    - - - - - - -
    Group(std::shared_ptr< void > group)mlx::core::distributed::Groupinline
    rank()mlx::core::distributed::Group
    raw_group()mlx::core::distributed::Groupinline
    size()mlx::core::distributed::Group
    split(int color, int key=-1)mlx::core::distributed::Group
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group.html b/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group.html deleted file mode 100644 index 0ab8eb58..00000000 --- a/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - -MLX: mlx::core::distributed::Group Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::distributed::Group Struct Reference
    -
    -
    - -

    A distributed::Group represents a group of independent mlx processes that can communicate. - More...

    - -

    #include <distributed.h>

    - - - - - - - - - - - - - -

    -Public Member Functions

     Group (std::shared_ptr< void > group)
     
    int rank ()
     
    int size ()
     
    Group split (int color, int key=-1)
     Split the group according to the provided color.
     
    const std::shared_ptr< void > & raw_group ()
     
    -

    Detailed Description

    -

    A distributed::Group represents a group of independent mlx processes that can communicate.

    -

    We must also be able to create sub-groups from a group in order to define more granular communication.

    -

    Constructor & Destructor Documentation

    - -

    ◆ Group()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::distributed::Group::Group (std::shared_ptr< void > group)
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ rank()

    - -
    -
    - - - - - - - -
    int mlx::core::distributed::Group::rank ()
    -
    - -
    -
    - -

    ◆ raw_group()

    - -
    -
    - - - - - -
    - - - - - - - -
    const std::shared_ptr< void > & mlx::core::distributed::Group::raw_group ()
    -
    -inline
    -
    - -
    -
    - -

    ◆ size()

    - -
    -
    - - - - - - - -
    int mlx::core::distributed::Group::size ()
    -
    - -
    -
    - -

    ◆ split()

    - -
    -
    - - - - - - - - - - - -
    Group mlx::core::distributed::Group::split (int color,
    int key = -1 )
    -
    - -

    Split the group according to the provided color.

    -

    Namely processes that use the same color will go to the same group.

    -

    The key defines the rank of the processes in the new group. The smaller the key the smaller the rank. If the provided key is negative, then the rank in the current group is used.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info-members.html b/docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info-members.html deleted file mode 100644 index f132a6f4..00000000 --- a/docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::fast::CustomKernelShapeInfo Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html b/docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html deleted file mode 100644 index 6236eae7..00000000 --- a/docs/build/html/structmlx_1_1core_1_1fast_1_1_custom_kernel_shape_info.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -MLX: mlx::core::fast::CustomKernelShapeInfo Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::fast::CustomKernelShapeInfo Struct Reference
    -
    -
    - -

    #include <fast_primitives.h>

    - - - - - - - - -

    -Public Attributes

    bool shape = false
     
    bool strides = false
     
    bool ndim = false
     
    -

    Member Data Documentation

    - -

    ◆ ndim

    - -
    -
    - - - - -
    bool mlx::core::fast::CustomKernelShapeInfo::ndim = false
    -
    - -
    -
    - -

    ◆ shape

    - -
    -
    - - - - -
    bool mlx::core::fast::CustomKernelShapeInfo::shape = false
    -
    - -
    -
    - -

    ◆ strides

    - -
    -
    - - - - -
    bool mlx::core::fast::CustomKernelShapeInfo::strides = false
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html deleted file mode 100644 index 72572a31..00000000 --- a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::metal::CommandEncoder Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::metal::CommandEncoder, including all inherited members.

    - - - - - - - - - - - -
    CommandEncoder(MTL::CommandBuffer *cbuf)mlx::core::metal::CommandEncoder
    CommandEncoder(const CommandEncoder &)=deletemlx::core::metal::CommandEncoder
    dispatchThreadgroups(MTL::Size grid_dims, MTL::Size group_dims)mlx::core::metal::CommandEncoder
    dispatchThreads(MTL::Size grid_dims, MTL::Size group_dims)mlx::core::metal::CommandEncoder
    operator->()mlx::core::metal::CommandEncoderinline
    operator=(const CommandEncoder &)=deletemlx::core::metal::CommandEncoder
    set_input_array(const array &a, int idx, int64_t offset=0)mlx::core::metal::CommandEncoder
    set_output_array(array &a, int idx, int64_t offset=0)mlx::core::metal::CommandEncoder
    start_concurrent()mlx::core::metal::CommandEncoderinline
    ~CommandEncoder()mlx::core::metal::CommandEncoder
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder.html b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder.html deleted file mode 100644 index 755445fd..00000000 --- a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - -MLX: mlx::core::metal::CommandEncoder Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::metal::CommandEncoder Struct Reference
    -
    -
    - -

    #include <device.h>

    - - - - -

    -Classes

    struct  ConcurrentContext
     
    - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     CommandEncoder (MTL::CommandBuffer *cbuf)
     
     CommandEncoder (const CommandEncoder &)=delete
     
    CommandEncoderoperator= (const CommandEncoder &)=delete
     
    MTL::ComputeCommandEncoder * operator-> ()
     
    void set_input_array (const array &a, int idx, int64_t offset=0)
     
    void set_output_array (array &a, int idx, int64_t offset=0)
     
    void dispatchThreadgroups (MTL::Size grid_dims, MTL::Size group_dims)
     
    void dispatchThreads (MTL::Size grid_dims, MTL::Size group_dims)
     
    ConcurrentContext start_concurrent ()
     
     ~CommandEncoder ()
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ CommandEncoder() [1/2]

    - -
    -
    - - - - - - - -
    mlx::core::metal::CommandEncoder::CommandEncoder (MTL::CommandBuffer * cbuf)
    -
    - -
    -
    - -

    ◆ CommandEncoder() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::metal::CommandEncoder::CommandEncoder (const CommandEncoder & )
    -
    -delete
    -
    - -
    -
    - -

    ◆ ~CommandEncoder()

    - -
    -
    - - - - - - - -
    mlx::core::metal::CommandEncoder::~CommandEncoder ()
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ dispatchThreadgroups()

    - -
    -
    - - - - - - - - - - - -
    void mlx::core::metal::CommandEncoder::dispatchThreadgroups (MTL::Size grid_dims,
    MTL::Size group_dims )
    -
    - -
    -
    - -

    ◆ dispatchThreads()

    - -
    -
    - - - - - - - - - - - -
    void mlx::core::metal::CommandEncoder::dispatchThreads (MTL::Size grid_dims,
    MTL::Size group_dims )
    -
    - -
    -
    - -

    ◆ operator->()

    - -
    -
    - - - - - -
    - - - - - - - -
    MTL::ComputeCommandEncoder * mlx::core::metal::CommandEncoder::operator-> ()
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator=()

    - -
    -
    - - - - - -
    - - - - - - - -
    CommandEncoder & mlx::core::metal::CommandEncoder::operator= (const CommandEncoder & )
    -
    -delete
    -
    - -
    -
    - -

    ◆ set_input_array()

    - -
    -
    - - - - - - - - - - - - - - - - -
    void mlx::core::metal::CommandEncoder::set_input_array (const array & a,
    int idx,
    int64_t offset = 0 )
    -
    - -
    -
    - -

    ◆ set_output_array()

    - -
    -
    - - - - - - - - - - - - - - - - -
    void mlx::core::metal::CommandEncoder::set_output_array (array & a,
    int idx,
    int64_t offset = 0 )
    -
    - -
    -
    - -

    ◆ start_concurrent()

    - -
    -
    - - - - - -
    - - - - - - - -
    ConcurrentContext mlx::core::metal::CommandEncoder::start_concurrent ()
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context-members.html b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context-members.html deleted file mode 100644 index cdd48d61..00000000 --- a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::metal::CommandEncoder::ConcurrentContext Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html deleted file mode 100644 index 265b169f..00000000 --- a/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -MLX: mlx::core::metal::CommandEncoder::ConcurrentContext Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::metal::CommandEncoder::ConcurrentContext Struct Reference
    -
    -
    - -

    #include <device.h>

    - - - - - - -

    -Public Member Functions

     ConcurrentContext (CommandEncoder &enc)
     
     ~ConcurrentContext ()
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ ConcurrentContext()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::metal::CommandEncoder::ConcurrentContext::ConcurrentContext (CommandEncoder & enc)
    -
    -inline
    -
    - -
    -
    - -

    ◆ ~ConcurrentContext()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::metal::CommandEncoder::ConcurrentContext::~ConcurrentContext ()
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread-members.html b/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread-members.html deleted file mode 100644 index 05050580..00000000 --- a/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::scheduler::StreamThread Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread.html b/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread.html deleted file mode 100644 index 875972b1..00000000 --- a/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - -MLX: mlx::core::scheduler::StreamThread Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::scheduler::StreamThread Struct Reference
    -
    -
    - -

    #include <scheduler.h>

    - - - - - - - - - - - -

    -Public Member Functions

     StreamThread (Stream stream)
     
     ~StreamThread ()
     
    void thread_fn ()
     
    template<typename F >
    void enqueue (F &&f)
     
    - - - - - - - - - - - - - -

    -Public Attributes

    std::mutex mtx
     
    std::queue< std::function< void()> > q
     
    std::condition_variable cond
     
    bool stop
     
    Stream stream
     
    std::thread thread
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ StreamThread()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::scheduler::StreamThread::StreamThread (Stream stream)
    -
    -inline
    -
    - -
    -
    - -

    ◆ ~StreamThread()

    - -
    -
    - - - - - -
    - - - - - - - -
    mlx::core::scheduler::StreamThread::~StreamThread ()
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ enqueue()

    - -
    -
    -
    -template<typename F >
    - - - - - -
    - - - - - - - -
    void mlx::core::scheduler::StreamThread::enqueue (F && f)
    -
    -inline
    -
    - -
    -
    - -

    ◆ thread_fn()

    - -
    -
    - - - - - -
    - - - - - - - -
    void mlx::core::scheduler::StreamThread::thread_fn ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ cond

    - -
    -
    - - - - -
    std::condition_variable mlx::core::scheduler::StreamThread::cond
    -
    - -
    -
    - -

    ◆ mtx

    - -
    -
    - - - - -
    std::mutex mlx::core::scheduler::StreamThread::mtx
    -
    - -
    -
    - -

    ◆ q

    - -
    -
    - - - - -
    std::queue<std::function<void()> > mlx::core::scheduler::StreamThread::q
    -
    - -
    -
    - -

    ◆ stop

    - -
    -
    - - - - -
    bool mlx::core::scheduler::StreamThread::stop
    -
    - -
    -
    - -

    ◆ stream

    - -
    -
    - - - - -
    Stream mlx::core::scheduler::StreamThread::stream
    -
    - -
    -
    - -

    ◆ thread

    - -
    -
    - - - - -
    std::thread mlx::core::scheduler::StreamThread::thread
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_accum_helper-members.html b/docs/build/html/structmlx_1_1steel_1_1_accum_helper-members.html deleted file mode 100644 index 35bc3793..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_accum_helper-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::AccumHelper< T > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::AccumHelper< T >, including all inherited members.

    - - -
    accum_type typedefmlx::steel::AccumHelper< T >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_accum_helper.html b/docs/build/html/structmlx_1_1steel_1_1_accum_helper.html deleted file mode 100644 index 6b04ad98..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_accum_helper.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx::steel::AccumHelper< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::AccumHelper< T > Struct Template Reference
    -
    -
    - -

    #include <transforms.h>

    - - - - -

    -Public Types

    typedef float accum_type
     
    -

    Member Typedef Documentation

    - -

    ◆ accum_type

    - -
    -
    -
    -template<typename T >
    - - - - -
    typedef float mlx::steel::AccumHelper< T >::accum_type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_loader-members.html b/docs/build/html/structmlx_1_1steel_1_1_block_loader-members.html deleted file mode 100644 index 655437fd..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_loader-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >, including all inherited members.

    - - - - - - - - - - - - - - - -
    apply_inplace_op(thread const UnaryOp &op) constmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >inline
    bimlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    bjmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    BlockLoader(const device T *src_, const int src_ld_, threadgroup T *dst_, ushort simd_group_id, ushort simd_lane_id)mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >inline
    dstmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    load_safe(short2 src_tile_dim) constmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >inline
    load_unsafe() constmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >inline
    n_rowsmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    next()mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >inline
    srcmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    src_ldmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    thread_idxmlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    tile_stridemlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    vec_sizemlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_loader.html b/docs/build/html/structmlx_1_1steel_1_1_block_loader.html deleted file mode 100644 index 46761eb3..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_loader.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - -MLX: mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS > Struct Template Reference
    -
    -
    - -

    #include <loader.h>

    - - - - -

    -Classes

    struct  ReadVector
     
    - - - - - - - - - - - - -

    -Public Member Functions

    METAL_FUNC BlockLoader (const device T *src_, const int src_ld_, threadgroup T *dst_, ushort simd_group_id, ushort simd_lane_id)
     
    template<typename UnaryOp >
    METAL_FUNC void apply_inplace_op (thread const UnaryOp &op) const
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void load_safe (short2 src_tile_dim) const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short n_rows = (BROWS + TROWS - 1) / TROWS
     
    STEEL_CONST short vec_size = n_reads
     
    const int src_ld
     
    const int tile_stride
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const device T * src
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ BlockLoader()

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::BlockLoader (const device T * src_,
    const int src_ld_,
    threadgroup T * dst_,
    ushort simd_group_id,
    ushort simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ apply_inplace_op()

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    -
    -template<typename UnaryOp >
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::apply_inplace_op (thread const UnaryOp & op) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ load_safe()

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::load_safe (short2 src_tile_dim) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    const short mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    const short mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::bj
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    threadgroup T* mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::dst
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    STEEL_CONST short mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::n_rows = (BROWS + TROWS - 1) / TROWS
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    const device T* mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::src
    -
    - -
    -
    - -

    ◆ src_ld

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    const int mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::src_ld
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    const short mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::thread_idx
    -
    - -
    -
    - -

    ◆ tile_stride

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    const int mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::tile_stride
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    STEEL_CONST short mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::vec_size = n_reads
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/loader.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector-members.html b/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector-members.html deleted file mode 100644 index 4020cf8a..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::ReadVector Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html b/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html deleted file mode 100644 index 3db91aa2..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::ReadVector Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::ReadVector Struct Reference
    -
    -
    - -

    #include <loader.h>

    - - - - -

    -Public Attributes

    uint8_t v [sizeof(T) *vec_size]
     
    -

    Member Data Documentation

    - -

    ◆ v

    - -
    -
    -
    -template<typename T , short BROWS, short BCOLS, short dst_ld, short reduction_dim, short tgp_size, short alignment = 1, short n_reads = (BCOLS * BROWS) / (tgp_size), short TCOLS = BCOLS / n_reads, short TROWS = tgp_size / TCOLS>
    - - - - -
    uint8_t mlx::steel::BlockLoader< T, BROWS, BCOLS, dst_ld, reduction_dim, tgp_size, alignment, n_reads, TCOLS, TROWS >::ReadVector::v[sizeof(T) *vec_size]
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/loader.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a-members.html b/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a-members.html deleted file mode 100644 index 93e5dd75..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    apply_epilogue(thread const UnaryEpilogue &epilogue_op)mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    apply_epilogue(const device U *C, const int ldc, const int fdc, thread const BinaryEpilogue &epilogue_op)mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    apply_epilogue_safe(const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const BinaryEpilogue &epilogue_op)mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    As_offsetmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    Asimdmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    BlockMMA(ushort simd_group_id, ushort simd_lane_id)mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    Bs_offsetmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    Bsimdmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    jump_amlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    jump_bmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    mma(const threadgroup T *As, const threadgroup T *Bs)mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    resultsmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    simd_stride_amlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    simd_stride_bmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    smmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    snmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    store_result(device U *D, const int ldd) constmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    store_result(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, thread const Epilogue &epilogue_op) constmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    store_result_safe(device U *D, const int ldd, short2 dst_tile_dims) constmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    store_result_safe(device U *D, const int ldd, const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const Epilogue &epilogue_op) constmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >inline
    tile_stride_amlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    tile_stride_bmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    tmmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    TMmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    TM_stridemlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    TNmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    tnmlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    TN_stridemlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a.html b/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a.html deleted file mode 100644 index 23a35c0e..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a.html +++ /dev/null @@ -1,833 +0,0 @@ - - - - - - - -MLX: mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue > Struct Template Reference
    -
    -
    - -

    #include <mma.h>

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    METAL_FUNC BlockMMA (ushort simd_group_id, ushort simd_lane_id)
     
    METAL_FUNC void mma (const threadgroup T *As, const threadgroup T *Bs)
     
    METAL_FUNC void store_result (device U *D, const int ldd) const
     
    METAL_FUNC void store_result_safe (device U *D, const int ldd, short2 dst_tile_dims) const
     
    template<typename UnaryEpilogue >
    METAL_FUNC void apply_epilogue (thread const UnaryEpilogue &epilogue_op)
     
    template<typename BinaryEpilogue >
    METAL_FUNC void apply_epilogue (const device U *C, const int ldc, const int fdc, thread const BinaryEpilogue &epilogue_op)
     
    template<typename BinaryEpilogue >
    METAL_FUNC void apply_epilogue_safe (const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const BinaryEpilogue &epilogue_op)
     
    METAL_FUNC void store_result (device U *D, const int ldd, const device U *C, const int ldc, const int fdc, thread const Epilogue &epilogue_op) const
     
    METAL_FUNC void store_result_safe (device U *D, const int ldd, const device U *C, const int ldc, const int fdc, short2 dst_tile_dims, thread const Epilogue &epilogue_op) const
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short TM_stride = 8 * WM
     
    STEEL_CONST short TN_stride = 8 * WN
     
    STEEL_CONST short TM = BM / TM_stride
     
    STEEL_CONST short TN = BN / TN_stride
     
    STEEL_CONST short simd_stride_a
     
    STEEL_CONST short simd_stride_b
     
    STEEL_CONST short jump_a = {transpose_a ? lda_tgp : 1}
     
    STEEL_CONST short jump_b = {transpose_b ? ldb_tgp : 1}
     
    STEEL_CONST short tile_stride_a = {transpose_a ? 8 * lda_tgp : 8}
     
    STEEL_CONST short tile_stride_b = {transpose_b ? 8 : 8 * ldb_tgp}
     
    simdgroup_matrix< AccumType, 8, 8 > Asimd [TM]
     
    simdgroup_matrix< AccumType, 8, 8 > Bsimd [TN]
     
    simdgroup_matrix< AccumType, 8, 8 > results [TM *TN]
     
    const short tm
     
    const short tn
     
    short sm
     
    short sn
     
    short As_offset
     
    short Bs_offset
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ BlockMMA()

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - -
    METAL_FUNC mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::BlockMMA (ushort simd_group_id,
    ushort simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ apply_epilogue() [1/2]

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    -
    -template<typename BinaryEpilogue >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::apply_epilogue (const device U * C,
    const int ldc,
    const int fdc,
    thread const BinaryEpilogue & epilogue_op )
    -
    -inline
    -
    - -
    -
    - -

    ◆ apply_epilogue() [2/2]

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    -
    -template<typename UnaryEpilogue >
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::apply_epilogue (thread const UnaryEpilogue & epilogue_op)
    -
    -inline
    -
    - -
    -
    - -

    ◆ apply_epilogue_safe()

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    -
    -template<typename BinaryEpilogue >
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::apply_epilogue_safe (const device U * C,
    const int ldc,
    const int fdc,
    short2 dst_tile_dims,
    thread const BinaryEpilogue & epilogue_op )
    -
    -inline
    -
    - -
    -
    - -

    ◆ mma()

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::mma (const threadgroup T * As,
    const threadgroup T * Bs )
    -
    -inline
    -
    - -
    -
    - -

    ◆ store_result() [1/2]

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::store_result (device U * D,
    const int ldd ) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ store_result() [2/2]

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::store_result (device U * D,
    const int ldd,
    const device U * C,
    const int ldc,
    const int fdc,
    thread const Epilogue & epilogue_op ) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ store_result_safe() [1/2]

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::store_result_safe (device U * D,
    const int ldd,
    const device U * C,
    const int ldc,
    const int fdc,
    short2 dst_tile_dims,
    thread const Epilogue & epilogue_op ) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ store_result_safe() [2/2]

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - - - - - - -
    METAL_FUNC void mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::store_result_safe (device U * D,
    const int ldd,
    short2 dst_tile_dims ) const
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ As_offset

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::As_offset
    -
    - -
    -
    - -

    ◆ Asimd

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    simdgroup_matrix<AccumType, 8, 8> mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::Asimd[TM]
    -
    - -
    -
    - -

    ◆ Bs_offset

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::Bs_offset
    -
    - -
    -
    - -

    ◆ Bsimd

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    simdgroup_matrix<AccumType, 8, 8> mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::Bsimd[TN]
    -
    - -
    -
    - -

    ◆ jump_a

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::jump_a = {transpose_a ? lda_tgp : 1}
    -
    - -
    -
    - -

    ◆ jump_b

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::jump_b = {transpose_b ? ldb_tgp : 1}
    -
    - -
    -
    - -

    ◆ results

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    simdgroup_matrix<AccumType, 8, 8> mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::results[TM *TN]
    -
    -Initial value:
    = {
    -
    simdgroup_matrix<AccumType, 8, 8>(0)}
    -
    -
    -
    - -

    ◆ simd_stride_a

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::simd_stride_a
    -
    -Initial value:
    = {
    -
    transpose_a ? TM_stride : TM_stride * lda_tgp}
    -
    STEEL_CONST short TM_stride
    Definition mma.h:37
    -
    -
    -
    - -

    ◆ simd_stride_b

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::simd_stride_b
    -
    -Initial value:
    = {
    -
    transpose_b ? TN_stride * ldb_tgp : TN_stride}
    -
    STEEL_CONST short TN_stride
    Definition mma.h:39
    -
    -
    -
    - -

    ◆ sm

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::sm
    -
    - -
    -
    - -

    ◆ sn

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::sn
    -
    - -
    -
    - -

    ◆ tile_stride_a

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::tile_stride_a = {transpose_a ? 8 * lda_tgp : 8}
    -
    - -
    -
    - -

    ◆ tile_stride_b

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::tile_stride_b = {transpose_b ? 8 : 8 * ldb_tgp}
    -
    - -
    -
    - -

    ◆ TM

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::TM = BM / TM_stride
    -
    - -
    -
    - -

    ◆ tm

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    const short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::tm
    -
    - -
    -
    - -

    ◆ TM_stride

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::TM_stride = 8 * WM
    -
    - -
    -
    - -

    ◆ TN

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::TN = BN / TN_stride
    -
    - -
    -
    - -

    ◆ tn

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    const short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::tn
    -
    - -
    -
    - -

    ◆ TN_stride

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, short lda_tgp, short ldb_tgp, typename AccumType = float, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::BlockMMA< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, lda_tgp, ldb_tgp, AccumType, Epilogue >::TN_stride = 8 * WN
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/mma.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_swizzle-members.html b/docs/build/html/structmlx_1_1steel_1_1_block_swizzle-members.html deleted file mode 100644 index 3ac1f2fc..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_swizzle-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::BlockSwizzle Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::BlockSwizzle, including all inherited members.

    - - -
    swizzle(uint3 tid, const int swizzle_log)mlx::steel::BlockSwizzleinlinestatic
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_block_swizzle.html b/docs/build/html/structmlx_1_1steel_1_1_block_swizzle.html deleted file mode 100644 index b5b5929c..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_block_swizzle.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -MLX: mlx::steel::BlockSwizzle Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::BlockSwizzle Struct Reference
    -
    -
    - -

    #include <transforms.h>

    - - - - -

    -Static Public Member Functions

    static METAL_FUNC int2 swizzle (uint3 tid, const int swizzle_log)
     
    -

    Member Function Documentation

    - -

    ◆ swizzle()

    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    static METAL_FUNC int2 mlx::steel::BlockSwizzle::swizzle (uint3 tid,
    const int swizzle_log )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper-members.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper-members.html deleted file mode 100644 index 111cf2ce..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::ChannelHelper< n_channels_ > Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper.html deleted file mode 100644 index 81e41a0b..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -MLX: mlx::steel::ChannelHelper< n_channels_ > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::ChannelHelper< n_channels_ > Struct Template Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Attributes

    STEEL_CONST short n_channels = n_channels_
     
    STEEL_CONST short vec_size = n_channels_ <= 4 ? 4 : 8
     
    STEEL_CONST short excess = vec_size - n_channels_
     
    -

    Member Data Documentation

    - -

    ◆ excess

    - -
    -
    -
    -template<short n_channels_>
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< n_channels_ >::excess = vec_size - n_channels_
    -
    - -
    -
    - -

    ◆ n_channels

    - -
    -
    -
    -template<short n_channels_>
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< n_channels_ >::n_channels = n_channels_
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<short n_channels_>
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< n_channels_ >::vec_size = n_channels_ <= 4 ? 4 : 8
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4-members.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4-members.html deleted file mode 100644 index 0ccf2d0f..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::ChannelHelper< 1 > Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html deleted file mode 100644 index e387023e..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -MLX: mlx::steel::ChannelHelper< 1 > Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::ChannelHelper< 1 > Struct Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Attributes

    STEEL_CONST short n_channels = 1
     
    STEEL_CONST short vec_size = 1
     
    STEEL_CONST short excess = 0
     
    -

    Member Data Documentation

    - -

    ◆ excess

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 1 >::excess = 0
    -
    - -
    -
    - -

    ◆ n_channels

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 1 >::n_channels = 1
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 1 >::vec_size = 1
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4-members.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4-members.html deleted file mode 100644 index 42947a04..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::ChannelHelper< 2 > Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html deleted file mode 100644 index 783e7335..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -MLX: mlx::steel::ChannelHelper< 2 > Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::ChannelHelper< 2 > Struct Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Attributes

    STEEL_CONST short n_channels = 2
     
    STEEL_CONST short vec_size = 2
     
    STEEL_CONST short excess = 0
     
    -

    Member Data Documentation

    - -

    ◆ excess

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 2 >::excess = 0
    -
    - -
    -
    - -

    ◆ n_channels

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 2 >::n_channels = 2
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 2 >::vec_size = 2
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4-members.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4-members.html deleted file mode 100644 index f24ec5a4..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::ChannelHelper< 3 > Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html deleted file mode 100644 index 0b3a0223..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -MLX: mlx::steel::ChannelHelper< 3 > Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::ChannelHelper< 3 > Struct Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Attributes

    STEEL_CONST short n_channels = 3
     
    STEEL_CONST short vec_size = 4
     
    STEEL_CONST short excess = 1
     
    -

    Member Data Documentation

    - -

    ◆ excess

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 3 >::excess = 1
    -
    - -
    -
    - -

    ◆ n_channels

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 3 >::n_channels = 3
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 3 >::vec_size = 4
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4-members.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4-members.html deleted file mode 100644 index fd1370d9..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::ChannelHelper< 4 > Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html deleted file mode 100644 index dd06122c..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -MLX: mlx::steel::ChannelHelper< 4 > Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::ChannelHelper< 4 > Struct Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Attributes

    STEEL_CONST short n_channels = 4
     
    STEEL_CONST short vec_size = 4
     
    STEEL_CONST short excess = 0
     
    -

    Member Data Documentation

    - -

    ◆ excess

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 4 >::excess = 0
    -
    - -
    -
    - -

    ◆ n_channels

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 4 >::n_channels = 4
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    - - - - -
    STEEL_CONST short mlx::steel::ChannelHelper< 4 >::vec_size = 4
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info-members.html deleted file mode 100644 index 2178a651..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DGeneralBaseInfo Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DGeneralBaseInfo, including all inherited members.

    - - - -
    weight_basemlx::steel::Conv2DGeneralBaseInfo
    weight_sizemlx::steel::Conv2DGeneralBaseInfo
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info.html deleted file mode 100644 index 2534335b..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DGeneralBaseInfo Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DGeneralBaseInfo Struct Reference
    -
    -
    - -

    #include <params.h>

    - - - - - - -

    -Public Attributes

    int weight_base
     
    int weight_size
     
    -

    Member Data Documentation

    - -

    ◆ weight_base

    - -
    -
    - - - - -
    int mlx::steel::Conv2DGeneralBaseInfo::weight_base
    -
    - -
    -
    - -

    ◆ weight_size

    - -
    -
    - - - - -
    int mlx::steel::Conv2DGeneralBaseInfo::weight_size
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/conv/params.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params-members.html deleted file mode 100644 index 2ad65727..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DGeneralJumpParams Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params.html deleted file mode 100644 index 6e4d3db7..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DGeneralJumpParams Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DGeneralJumpParams Struct Reference
    -
    -
    - -

    #include <params.h>

    - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    const int f_wgt_jump_h
     
    const int f_wgt_jump_w
     
    const int f_out_jump_h
     
    const int f_out_jump_w
     
    const int adj_out_h
     
    const int adj_out_w
     
    const int adj_out_hw
     
    const int adj_implicit_m
     
    -

    Member Data Documentation

    - -

    ◆ adj_implicit_m

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::adj_implicit_m
    -
    - -
    -
    - -

    ◆ adj_out_h

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::adj_out_h
    -
    - -
    -
    - -

    ◆ adj_out_hw

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::adj_out_hw
    -
    - -
    -
    - -

    ◆ adj_out_w

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::adj_out_w
    -
    - -
    -
    - -

    ◆ f_out_jump_h

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::f_out_jump_h
    -
    - -
    -
    - -

    ◆ f_out_jump_w

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::f_out_jump_w
    -
    - -
    -
    - -

    ◆ f_wgt_jump_h

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::f_wgt_jump_h
    -
    - -
    -
    - -

    ◆ f_wgt_jump_w

    - -
    -
    - - - - -
    const int mlx::steel::Conv2DGeneralJumpParams::f_wgt_jump_w
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/conv/params.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general-members.html deleted file mode 100644 index 8099a421..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    base_whmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    base_wwmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    BCOLSmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    bimlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    bjmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    BROWSmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    Conv2DInputBlockLoaderGeneral(const device T *src_, threadgroup T *dst_, const int4 offsets, const constant MLXConvParams< 2 > *params_, const constant Conv2DGeneralJumpParams *jump_params_, const short base_wh_, const short base_ww_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >inline
    dstmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    dst_ldmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    jump_paramsmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >inline
    n_rowsmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    next()mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >inline
    paramsmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    read_ihmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    read_iwmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    read_nmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    srcmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    TCOLSmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    thread_idxmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    TROWSmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    vec_sizemlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_hmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_wmlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html deleted file mode 100644 index 457b2d66..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html +++ /dev/null @@ -1,610 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_general.h>

    - - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DInputBlockLoaderGeneral (const device T *src_, threadgroup T *dst_, const int4 offsets, const constant MLXConvParams< 2 > *params_, const constant Conv2DGeneralJumpParams *jump_params_, const short base_wh_, const short base_ww_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BM
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const constant MLXConvParams< 2 > * params
     
    const constant Conv2DGeneralJumpParamsjump_params
     
    const short base_wh
     
    const short base_ww
     
    short weight_h
     
    short weight_w
     
    const device T * src [n_rows]
     
    int read_n [n_rows]
     
    int read_ih [n_rows]
     
    int read_iw [n_rows]
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DInputBlockLoaderGeneral()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::Conv2DInputBlockLoaderGeneral (const device T * src_,
    threadgroup T * dst_,
    const int4 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant Conv2DGeneralJumpParams * jump_params_,
    const short base_wh_,
    const short base_ww_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ base_wh

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::base_wh
    -
    - -
    -
    - -

    ◆ base_ww

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::base_ww
    -
    - -
    -
    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::BROWS = BM
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ jump_params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant Conv2DGeneralJumpParams* mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::jump_params
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ read_ih

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::read_ih[n_rows]
    -
    - -
    -
    - -

    ◆ read_iw

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::read_iw[n_rows]
    -
    - -
    -
    - -

    ◆ read_n

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::read_n[n_rows]
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::src[n_rows]
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4
    -
    - -
    -
    - -

    ◆ weight_h

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::weight_h
    -
    - -
    -
    - -

    ◆ weight_w

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::weight_w
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter-members.html deleted file mode 100644 index cf5bc532..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - -
    BCOLSmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    bimlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    bjmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    BROWSmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    Conv2DInputBlockLoaderLargeFilter(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >inline
    dstmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    dst_ldmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    gemm_paramsmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >inline
    n_rowsmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    next()mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >inline
    paramsmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    read_ihmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    read_iwmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    read_nmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    srcmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    TCOLSmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    thread_idxmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    TROWSmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    vec_sizemlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_hmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_wmlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html deleted file mode 100644 index 2b59f9d3..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_channel_l.h>

    - - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DInputBlockLoaderLargeFilter (const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BM
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const constant MLXConvParams< 2 > * params
     
    const constant ImplicitGemmConv2DParamsgemm_params
     
    short weight_h
     
    short weight_w
     
    const device T * src [n_rows]
     
    int read_n [n_rows]
     
    int read_ih [n_rows]
     
    int read_iw [n_rows]
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DInputBlockLoaderLargeFilter()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::Conv2DInputBlockLoaderLargeFilter (const device T * src_,
    threadgroup T * dst_,
    const int2 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant ImplicitGemmConv2DParams * gemm_params_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::BROWS = BM
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ gemm_params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant ImplicitGemmConv2DParams* mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::gemm_params
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ read_ih

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::read_ih[n_rows]
    -
    - -
    -
    - -

    ◆ read_iw

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::read_iw[n_rows]
    -
    - -
    -
    - -

    ◆ read_n

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::read_n[n_rows]
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::src[n_rows]
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4
    -
    - -
    -
    - -

    ◆ weight_h

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::weight_h
    -
    - -
    -
    - -

    ◆ weight_w

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderLargeFilter< T, BM, BN, BK, tgp_size, tgp_padding >::weight_w
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels-members.html deleted file mode 100644 index 0f29e233..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - -
    BCOLSmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    bimlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    bjmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    BROWSmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    Conv2DInputBlockLoaderSmallChannels(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >inline
    dstmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    dst_ldmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    gemm_paramsmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >inline
    n_rowsmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    next()mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >inline
    paramsmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    read_ihmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    read_iwmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    read_nmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    srcmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    TCOLSmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    thread_idxmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    TROWSmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    vec_sizemlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    weight_hwmlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html deleted file mode 100644 index b6f145cb..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DInputBlockLoaderSmallChannels (const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BM
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size = ChannelHelper<n_channels>::vec_size
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const constant MLXConvParams< 2 > * params
     
    const constant ImplicitGemmConv2DParamsgemm_params
     
    short weight_hw
     
    const device T * src [n_rows]
     
    int read_n [n_rows]
     
    int read_ih [n_rows]
     
    int read_iw [n_rows]
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DInputBlockLoaderSmallChannels()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::Conv2DInputBlockLoaderSmallChannels (const device T * src_,
    threadgroup T * dst_,
    const int2 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant ImplicitGemmConv2DParams * gemm_params_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::BROWS = BM
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ gemm_params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const constant ImplicitGemmConv2DParams* mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::gemm_params
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ read_ih

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::read_ih[n_rows]
    -
    - -
    -
    - -

    ◆ read_iw

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::read_iw[n_rows]
    -
    - -
    -
    - -

    ◆ read_n

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::read_n[n_rows]
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::src[n_rows]
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::vec_size = ChannelHelper<n_channels>::vec_size
    -
    - -
    -
    - -

    ◆ weight_hw

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::weight_hw
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter-members.html deleted file mode 100644 index 8e261e06..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - -
    BCOLSmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    bimlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    bjmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    BROWSmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    Conv2DInputBlockLoaderSmallFilter(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >inline
    dstmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    dst_ldmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    gemm_paramsmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >inline
    mask_hmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    mask_t typedefmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    mask_wmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    n_rowsmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    next()mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >inline
    paramsmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    srcmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    TCOLSmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    thread_idxmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    TROWSmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    vec_sizemlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_hmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_wmlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html deleted file mode 100644 index 5bf10b36..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_channel_l.h>

    - - - - -

    -Public Types

    using mask_t = short
     
    - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DInputBlockLoaderSmallFilter (const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BM
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const constant MLXConvParams< 2 > * params
     
    const constant ImplicitGemmConv2DParamsgemm_params
     
    short weight_h
     
    short weight_w
     
    const device T * src [n_rows]
     
    mask_t mask_h [n_rows]
     
    mask_t mask_w [n_rows]
     
    -

    Member Typedef Documentation

    - -

    ◆ mask_t

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    using mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::mask_t = short
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DInputBlockLoaderSmallFilter()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::Conv2DInputBlockLoaderSmallFilter (const device T * src_,
    threadgroup T * dst_,
    const int2 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant ImplicitGemmConv2DParams * gemm_params_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::BROWS = BM
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ gemm_params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant ImplicitGemmConv2DParams* mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::gemm_params
    -
    - -
    -
    - -

    ◆ mask_h

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    mask_t mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::mask_h[n_rows]
    -
    - -
    -
    - -

    ◆ mask_w

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    mask_t mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::mask_w[n_rows]
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::src[n_rows]
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::vec_size = tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4
    -
    - -
    -
    - -

    ◆ weight_h

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::weight_h
    -
    - -
    -
    - -

    ◆ weight_w

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DInputBlockLoaderSmallFilter< T, BM, BN, BK, tgp_size, tgp_padding >::weight_w
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader-members.html deleted file mode 100644 index cb49f961..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - -
    BCOLSmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    bimlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    bjmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    BROWSmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    Conv2DWeightBlockLoader(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >inline
    do_readmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    dstmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    dst_ldmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >inline
    n_rowsmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    next()mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >inline
    paramsmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    read_nmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    srcmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    src_ldmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    TCOLSmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    thread_idxmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    TROWSmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    vec_sizemlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_hwmlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html deleted file mode 100644 index 62e03ac1..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html +++ /dev/null @@ -1,532 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_channel_l.h>

    - - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DWeightBlockLoader (const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BN
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const int src_ld
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const device T * src
     
    const constant MLXConvParams< 2 > * params
     
    int weight_hw
     
    const int read_n
     
    const bool do_read
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DWeightBlockLoader()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::Conv2DWeightBlockLoader (const device T * src_,
    threadgroup T * dst_,
    const int2 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant ImplicitGemmConv2DParams * gemm_params_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::BROWS = BN
    -
    - -
    -
    - -

    ◆ do_read

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const bool mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::do_read
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ read_n

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const int mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::read_n
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::src
    -
    - -
    -
    - -

    ◆ src_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const int mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::src_ld
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::vec_size
    -
    -Initial value:
    =
    -
    (BN == 8) ? 1 : (tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4)
    -
    STEEL_CONST short BCOLS
    Definition loader_channel_l.h:355
    -
    STEEL_CONST short BROWS
    Definition loader_channel_l.h:354
    -
    -
    -
    - -

    ◆ weight_hw

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DWeightBlockLoader< T, BM, BN, BK, tgp_size, tgp_padding >::weight_hw
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general-members.html deleted file mode 100644 index a057f772..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - -
    base_whmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    base_wwmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    BCOLSmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    bimlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    bjmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    BROWSmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    Conv2DWeightBlockLoaderGeneral(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant Conv2DGeneralJumpParams *jump_params_, const short base_wh_, const short base_ww_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >inline
    dstmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    dst_ldmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    jump_paramsmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >inline
    n_rowsmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    next()mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >inline
    paramsmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    srcmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    src_ldmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    start_rowmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    TCOLSmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    thread_idxmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    TROWSmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    vec_sizemlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_hmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    weight_wmlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html deleted file mode 100644 index 7dacb5ec..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_general.h>

    - - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DWeightBlockLoaderGeneral (const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant Conv2DGeneralJumpParams *jump_params_, const short base_wh_, const short base_ww_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BN
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const int src_ld
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const device T * src
     
    const constant MLXConvParams< 2 > * params
     
    const constant Conv2DGeneralJumpParamsjump_params
     
    const short base_wh
     
    const short base_ww
     
    short weight_h
     
    short weight_w
     
    const int start_row
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DWeightBlockLoaderGeneral()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::Conv2DWeightBlockLoaderGeneral (const device T * src_,
    threadgroup T * dst_,
    const int2 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant Conv2DGeneralJumpParams * jump_params_,
    const short base_wh_,
    const short base_ww_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ base_wh

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::base_wh
    -
    - -
    -
    - -

    ◆ base_ww

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::base_ww
    -
    - -
    -
    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::BROWS = BN
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ jump_params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant Conv2DGeneralJumpParams* mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::jump_params
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::src
    -
    - -
    -
    - -

    ◆ src_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const int mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::src_ld
    -
    - -
    -
    - -

    ◆ start_row

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const int mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::start_row
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::vec_size
    -
    -Initial value:
    =
    -
    (BN == 8) ? 1 : (tgp_size / (BROWS * BCOLS) >= 8 ? 8 : 4)
    -
    STEEL_CONST short BROWS
    Definition loader_general.h:172
    -
    STEEL_CONST short BCOLS
    Definition loader_general.h:173
    -
    -
    -
    - -

    ◆ weight_h

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::weight_h
    -
    - -
    -
    - -

    ◆ weight_w

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short tgp_padding = 0>
    - - - - -
    short mlx::steel::Conv2DWeightBlockLoaderGeneral< T, BM, BN, BK, tgp_size, tgp_padding >::weight_w
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels-members.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels-members.html deleted file mode 100644 index c47fe955..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - -
    BCOLSmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    bimlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    bjmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    BROWSmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    Conv2DWeightBlockLoaderSmallChannels(const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >inline
    do_readmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    dstmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    dst_ldmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    load_unsafe() constmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >inline
    n_rowsmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    next()mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >inline
    paramsmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    read_nmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    srcmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    src_ldmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    TCOLSmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    thread_idxmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    TROWSmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    vec_sizemlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    weight_hwmlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html deleted file mode 100644 index fa50ba06..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - -MLX: mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding > Struct Template Reference
    -
    -
    - -

    #include <loader_channel_n.h>

    - - - - - - - - -

    -Public Member Functions

    METAL_FUNC Conv2DWeightBlockLoaderSmallChannels (const device T *src_, threadgroup T *dst_, const int2 offsets, const constant MLXConvParams< 2 > *params_, const constant ImplicitGemmConv2DParams *gemm_params_, uint simd_group_id, uint simd_lane_id)
     
    METAL_FUNC void load_unsafe () const
     
    METAL_FUNC void next ()
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short BROWS = BN
     
    STEEL_CONST short BCOLS = BK
     
    STEEL_CONST short dst_ld = BCOLS + tgp_padding
     
    STEEL_CONST short vec_size = ChannelHelper<n_channels>::vec_size
     
    STEEL_CONST short TCOLS = BCOLS / vec_size
     
    STEEL_CONST short TROWS = tgp_size / TCOLS
     
    STEEL_CONST short n_rows = BROWS / TROWS
     
    const int src_ld
     
    const short thread_idx
     
    const short bi
     
    const short bj
     
    threadgroup T * dst
     
    const device T * src
     
    const constant MLXConvParams< 2 > * params
     
    int weight_hw
     
    const int read_n
     
    const bool do_read
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ Conv2DWeightBlockLoaderSmallChannels()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    METAL_FUNC mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::Conv2DWeightBlockLoaderSmallChannels (const device T * src_,
    threadgroup T * dst_,
    const int2 offsets,
    const constant MLXConvParams< 2 > * params_,
    const constant ImplicitGemmConv2DParams * gemm_params_,
    uint simd_group_id,
    uint simd_lane_id )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ load_unsafe()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::load_unsafe () const
    -
    -inline
    -
    - -
    -
    - -

    ◆ next()

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - - -
    - - - - - - - -
    METAL_FUNC void mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::next ()
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ BCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::BCOLS = BK
    -
    - -
    -
    - -

    ◆ bi

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::bi
    -
    - -
    -
    - -

    ◆ bj

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::bj
    -
    - -
    -
    - -

    ◆ BROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::BROWS = BN
    -
    - -
    -
    - -

    ◆ do_read

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const bool mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::do_read
    -
    - -
    -
    - -

    ◆ dst

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    threadgroup T* mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::dst
    -
    - -
    -
    - -

    ◆ dst_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::dst_ld = BCOLS + tgp_padding
    -
    - -
    -
    - -

    ◆ n_rows

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::n_rows = BROWS / TROWS
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const constant MLXConvParams<2>* mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::params
    -
    - -
    -
    - -

    ◆ read_n

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const int mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::read_n
    -
    - -
    -
    - -

    ◆ src

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const device T* mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::src
    -
    - -
    -
    - -

    ◆ src_ld

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const int mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::src_ld
    -
    - -
    -
    - -

    ◆ TCOLS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::TCOLS = BCOLS / vec_size
    -
    - -
    -
    - -

    ◆ thread_idx

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    const short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::thread_idx
    -
    - -
    -
    - -

    ◆ TROWS

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::TROWS = tgp_size / TCOLS
    -
    - -
    -
    - -

    ◆ vec_size

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    STEEL_CONST short mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::vec_size = ChannelHelper<n_channels>::vec_size
    -
    - -
    -
    - -

    ◆ weight_hw

    - -
    -
    -
    -template<typename T , short BM, short BN, short BK, short tgp_size, short n_channels, short tgp_padding = 0>
    - - - - -
    int mlx::steel::Conv2DWeightBlockLoaderSmallChannels< T, BM, BN, BK, tgp_size, n_channels, tgp_padding >::weight_hw
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params-members.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params-members.html deleted file mode 100644 index ee645954..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::GEMMAddMMParams Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html deleted file mode 100644 index 1be110b2..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - -MLX: mlx::steel::GEMMAddMMParams Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::GEMMAddMMParams Struct Reference
    -
    -
    - -

    #include <params.h>

    - - - - - - - - - - - - -

    -Public Attributes

    const int ldc
     
    const int fdc
     
    const size_t batch_stride_c
     
    const float alpha
     
    const float beta
     
    -

    Member Data Documentation

    - -

    ◆ alpha

    - -
    -
    - - - - -
    const float mlx::steel::GEMMAddMMParams::alpha
    -
    - -
    -
    - -

    ◆ batch_stride_c

    - -
    -
    - - - - -
    const size_t mlx::steel::GEMMAddMMParams::batch_stride_c
    -
    - -
    -
    - -

    ◆ beta

    - -
    -
    - - - - -
    const float mlx::steel::GEMMAddMMParams::beta
    -
    - -
    -
    - -

    ◆ fdc

    - -
    -
    - - - - -
    const int mlx::steel::GEMMAddMMParams::fdc
    -
    - -
    -
    - -

    ◆ ldc

    - -
    -
    - - - - -
    const int mlx::steel::GEMMAddMMParams::ldc
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/params.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel-members.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel-members.html deleted file mode 100644 index a49dfb5c..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >, including all inherited members.

    - - - - - - - - - - - - -
    gemm_loop(threadgroup T *As, threadgroup T *Bs, const int gemm_k_iterations, thread loader_a_t &loader_a, thread loader_b_t &loader_b, thread mma_t &mma_op, thread const short &tgp_bm, thread const short &tgp_bn, thread const short &lbk, LoopAlignment< M_aligned, N_aligned, K_aligned_ > l={})mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >inlinestatic
    loader_a_t typedefmlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    loader_b_t typedefmlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    mma_t typedefmlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    run(const device T *A, const device T *B, device U *D, const constant GEMMParams *params, threadgroup T *As, threadgroup T *Bs, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >inlinestatic
    tgp_mem_sizemlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    tgp_mem_size_amlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    tgp_mem_size_bmlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    tgp_padding_amlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    tgp_padding_bmlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    tgp_sizemlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel.html deleted file mode 100644 index 6b313b93..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - - - - -MLX: mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue > Struct Template Reference
    -
    -
    - -

    #include <gemm.h>

    - - - - - - - - -

    -Public Types

    using loader_a_t
     
    using loader_b_t
     
    using mma_t
     
    - - - - - - -

    -Static Public Member Functions

    template<bool M_aligned, bool N_aligned, bool K_aligned_>
    static METAL_FUNC void gemm_loop (threadgroup T *As, threadgroup T *Bs, const int gemm_k_iterations, thread loader_a_t &loader_a, thread loader_b_t &loader_b, thread mma_t &mma_op, thread const short &tgp_bm, thread const short &tgp_bn, thread const short &lbk, LoopAlignment< M_aligned, N_aligned, K_aligned_ > l={})
     
    static METAL_FUNC void run (const device T *A, const device T *B, device U *D, const constant GEMMParams *params, threadgroup T *As, threadgroup T *Bs, uint simd_lane_id, uint simd_group_id, uint3 tid, uint3 lid)
     
    - - - - - - - - - - - - - -

    -Public Attributes

    STEEL_CONST short tgp_padding_a = 16 / sizeof(T)
     
    STEEL_CONST short tgp_padding_b = 16 / sizeof(T)
     
    STEEL_CONST short tgp_mem_size_a
     
    STEEL_CONST short tgp_mem_size_b
     
    STEEL_CONST short tgp_mem_size = tgp_mem_size_a + tgp_mem_size_b
     
    STEEL_CONST short tgp_size = WM * WN * 32
     
    -

    Member Typedef Documentation

    - -

    ◆ loader_a_t

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    using mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::loader_a_t
    -
    -Initial value:
    BlockLoader<
    -
    T,
    -
    transpose_a ? BK : BM,
    -
    transpose_a ? BM : BK,
    -
    transpose_a ? BM + tgp_padding_a : BK + tgp_padding_a,
    -
    !transpose_a,
    - -
    STEEL_CONST short tgp_size
    Definition gemm.h:46
    -
    STEEL_CONST short tgp_padding_a
    Definition gemm.h:38
    -
    -
    -
    - -

    ◆ loader_b_t

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    using mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::loader_b_t
    -
    -Initial value:
    BlockLoader<
    -
    T,
    -
    transpose_b ? BN : BK,
    -
    transpose_b ? BK : BN,
    -
    transpose_b ? BK + tgp_padding_b : BN + tgp_padding_b,
    -
    transpose_b,
    - -
    STEEL_CONST short tgp_padding_b
    Definition gemm.h:39
    -
    -
    -
    - -

    ◆ mma_t

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    using mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::mma_t
    -
    -Initial value:
    BlockMMA<
    -
    T,
    -
    U,
    -
    BM,
    -
    BN,
    -
    BK,
    -
    WM,
    -
    WN,
    -
    transpose_a,
    -
    transpose_b,
    -
    transpose_a ? BM + tgp_padding_a : BK + tgp_padding_a,
    -
    transpose_b ? BK + tgp_padding_b : BN + tgp_padding_b,
    -
    AccumType,
    -
    Epilogue>
    -
    -
    -
    -

    Member Function Documentation

    - -

    ◆ gemm_loop()

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    -
    -template<bool M_aligned, bool N_aligned, bool K_aligned_>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static METAL_FUNC void mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::gemm_loop (threadgroup T * As,
    threadgroup T * Bs,
    const int gemm_k_iterations,
    thread loader_a_t & loader_a,
    thread loader_b_t & loader_b,
    thread mma_t & mma_op,
    thread const short & tgp_bm,
    thread const short & tgp_bn,
    thread const short & lbk,
    LoopAlignment< M_aligned, N_aligned, K_aligned_ > l = {} )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ run()

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static METAL_FUNC void mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::run (const device T * A,
    const device T * B,
    device U * D,
    const constant GEMMParams * params,
    threadgroup T * As,
    threadgroup T * Bs,
    uint simd_lane_id,
    uint simd_group_id,
    uint3 tid,
    uint3 lid )
    -
    -inlinestatic
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ tgp_mem_size

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::tgp_mem_size = tgp_mem_size_a + tgp_mem_size_b
    -
    - -
    -
    - -

    ◆ tgp_mem_size_a

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::tgp_mem_size_a
    -
    -Initial value:
    =
    -
    transpose_a ? BK * (BM + tgp_padding_a) : BM * (BK + tgp_padding_a)
    -
    -
    -
    - -

    ◆ tgp_mem_size_b

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::tgp_mem_size_b
    -
    -Initial value:
    =
    -
    transpose_b ? BN * (BK + tgp_padding_b) : BK * (BN + tgp_padding_b)
    -
    -
    -
    - -

    ◆ tgp_padding_a

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::tgp_padding_a = 16 / sizeof(T)
    -
    - -
    -
    - -

    ◆ tgp_padding_b

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::tgp_padding_b = 16 / sizeof(T)
    -
    - -
    -
    - -

    ◆ tgp_size

    - -
    -
    -
    -template<typename T , typename U , int BM, int BN, int BK, int WM, int WN, bool transpose_a, bool transpose_b, bool MN_aligned, bool K_aligned, typename AccumType = typename AccumHelper<T>::accum_type, typename Epilogue = TransformNone<U, AccumType>>
    - - - - -
    STEEL_CONST short mlx::steel::GEMMKernel< T, U, BM, BN, BK, WM, WN, transpose_a, transpose_b, MN_aligned, K_aligned, AccumType, Epilogue >::tgp_size = WM * WN * 32
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/gemm.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params-members.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params-members.html deleted file mode 100644 index 5eecb8fa..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::GEMMParams Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params.html deleted file mode 100644 index ce3db346..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - -MLX: mlx::steel::GEMMParams Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::GEMMParams Struct Reference
    -
    -
    - -

    #include <params.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    const int M
     
    const int N
     
    const int K
     
    const int lda
     
    const int ldb
     
    const int ldd
     
    const int tiles_n
     
    const int tiles_m
     
    const size_t batch_stride_a
     
    const size_t batch_stride_b
     
    const size_t batch_stride_d
     
    const int swizzle_log
     
    const int gemm_k_iterations_aligned
     
    const int batch_ndim
     
    -

    Member Data Documentation

    - -

    ◆ batch_ndim

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::batch_ndim
    -
    - -
    -
    - -

    ◆ batch_stride_a

    - -
    -
    - - - - -
    const size_t mlx::steel::GEMMParams::batch_stride_a
    -
    - -
    -
    - -

    ◆ batch_stride_b

    - -
    -
    - - - - -
    const size_t mlx::steel::GEMMParams::batch_stride_b
    -
    - -
    -
    - -

    ◆ batch_stride_d

    - -
    -
    - - - - -
    const size_t mlx::steel::GEMMParams::batch_stride_d
    -
    - -
    -
    - -

    ◆ gemm_k_iterations_aligned

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::gemm_k_iterations_aligned
    -
    - -
    -
    - -

    ◆ K

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::K
    -
    - -
    -
    - -

    ◆ lda

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::lda
    -
    - -
    -
    - -

    ◆ ldb

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::ldb
    -
    - -
    -
    - -

    ◆ ldd

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::ldd
    -
    - -
    -
    - -

    ◆ M

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::M
    -
    - -
    -
    - -

    ◆ N

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::N
    -
    - -
    -
    - -

    ◆ swizzle_log

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::swizzle_log
    -
    - -
    -
    - -

    ◆ tiles_m

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::tiles_m
    -
    - -
    -
    - -

    ◆ tiles_n

    - -
    -
    - - - - -
    const int mlx::steel::GEMMParams::tiles_n
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/params.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params-members.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params-members.html deleted file mode 100644 index 88655c68..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::GEMMSpiltKParams Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html deleted file mode 100644 index c54618c1..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - -MLX: mlx::steel::GEMMSpiltKParams Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::GEMMSpiltKParams Struct Reference
    -
    -
    - -

    #include <params.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    const int M
     
    const int N
     
    const int K
     
    const int lda
     
    const int ldb
     
    const int ldc
     
    const int tiles_n
     
    const int tiles_m
     
    const int split_k_partitions
     
    const int split_k_partition_stride
     
    const int split_k_partition_size
     
    const int gemm_k_iterations_aligned
     
    -

    Member Data Documentation

    - -

    ◆ gemm_k_iterations_aligned

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::gemm_k_iterations_aligned
    -
    - -
    -
    - -

    ◆ K

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::K
    -
    - -
    -
    - -

    ◆ lda

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::lda
    -
    - -
    -
    - -

    ◆ ldb

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::ldb
    -
    - -
    -
    - -

    ◆ ldc

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::ldc
    -
    - -
    -
    - -

    ◆ M

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::M
    -
    - -
    -
    - -

    ◆ N

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::N
    -
    - -
    -
    - -

    ◆ split_k_partition_size

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::split_k_partition_size
    -
    - -
    -
    - -

    ◆ split_k_partition_stride

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::split_k_partition_stride
    -
    - -
    -
    - -

    ◆ split_k_partitions

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::split_k_partitions
    -
    - -
    -
    - -

    ◆ tiles_m

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::tiles_m
    -
    - -
    -
    - -

    ◆ tiles_n

    - -
    -
    - - - - -
    const int mlx::steel::GEMMSpiltKParams::tiles_n
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/params.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params-members.html b/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params-members.html deleted file mode 100644 index b3483a91..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::ImplicitGemmConv2DParams Member List
    -
    - - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html b/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html deleted file mode 100644 index ee331981..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - -MLX: mlx::steel::ImplicitGemmConv2DParams Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::ImplicitGemmConv2DParams Struct Reference
    -
    -
    - -

    #include <params.h>

    - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    const int M
     
    const int N
     
    const int K
     
    const int gemm_k_iterations
     
    const int inp_jump_w
     
    const int inp_jump_h
     
    const int inp_jump_c
     
    const int tiles_n
     
    const int tiles_m
     
    const int swizzle_log
     
    -

    Member Data Documentation

    - -

    ◆ gemm_k_iterations

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::gemm_k_iterations
    -
    - -
    -
    - -

    ◆ inp_jump_c

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::inp_jump_c
    -
    - -
    -
    - -

    ◆ inp_jump_h

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::inp_jump_h
    -
    - -
    -
    - -

    ◆ inp_jump_w

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::inp_jump_w
    -
    - -
    -
    - -

    ◆ K

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::K
    -
    - -
    -
    - -

    ◆ M

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::M
    -
    - -
    -
    - -

    ◆ N

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::N
    -
    - -
    -
    - -

    ◆ swizzle_log

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::swizzle_log
    -
    - -
    -
    - -

    ◆ tiles_m

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::tiles_m
    -
    - -
    -
    - -

    ◆ tiles_n

    - -
    -
    - - - - -
    const int mlx::steel::ImplicitGemmConv2DParams::tiles_n
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/conv/params.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_loop_alignment.html b/docs/build/html/structmlx_1_1steel_1_1_loop_alignment.html deleted file mode 100644 index 460ea4e2..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_loop_alignment.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: mlx::steel::LoopAlignment< M_aligned, N_aligned, K_aligned > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::LoopAlignment< M_aligned, N_aligned, K_aligned > Struct Template Reference
    -
    -
    - -

    #include <gemm.h>

    -
    The documentation for this struct was generated from the following file:
      -
    • mlx/backend/metal/kernels/steel/gemm/gemm.h
    • -
    -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_transform_add-members.html b/docs/build/html/structmlx_1_1steel_1_1_transform_add-members.html deleted file mode 100644 index c8522e02..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_transform_add-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::TransformAdd< OutT, InT > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::TransformAdd< OutT, InT >, including all inherited members.

    - - - - -
    apply(InT x)mlx::steel::TransformAdd< OutT, InT >inlinestatic
    apply(InT x, OutT c)mlx::steel::TransformAdd< OutT, InT >inlinestatic
    TransformAdd(const float, const float)mlx::steel::TransformAdd< OutT, InT >inline
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_transform_add.html b/docs/build/html/structmlx_1_1steel_1_1_transform_add.html deleted file mode 100644 index caf29e30..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_transform_add.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - -MLX: mlx::steel::TransformAdd< OutT, InT > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::TransformAdd< OutT, InT > Struct Template Reference
    -
    -
    - -

    #include <transforms.h>

    - - - - -

    -Public Member Functions

     TransformAdd (const float, const float)
     
    - - - - - -

    -Static Public Member Functions

    static METAL_FUNC OutT apply (InT x)
     
    static METAL_FUNC OutT apply (InT x, OutT c)
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ TransformAdd()

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - - - - - -
    mlx::steel::TransformAdd< OutT, InT >::TransformAdd (const float ,
    const float  )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ apply() [1/2]

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - -
    static METAL_FUNC OutT mlx::steel::TransformAdd< OutT, InT >::apply (InT x)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ apply() [2/2]

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - - - - - -
    static METAL_FUNC OutT mlx::steel::TransformAdd< OutT, InT >::apply (InT x,
    OutT c )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_transform_axpby-members.html b/docs/build/html/structmlx_1_1steel_1_1_transform_axpby-members.html deleted file mode 100644 index c199d37d..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_transform_axpby-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::TransformAxpby< OutT, InT > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::TransformAxpby< OutT, InT >, including all inherited members.

    - - - - - - -
    alphamlx::steel::TransformAxpby< OutT, InT >
    apply(InT x)mlx::steel::TransformAxpby< OutT, InT >inlinestatic
    apply(InT x, OutT c) constmlx::steel::TransformAxpby< OutT, InT >inline
    betamlx::steel::TransformAxpby< OutT, InT >
    TransformAxpby(const float alpha_, const float beta_)mlx::steel::TransformAxpby< OutT, InT >inline
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_transform_axpby.html b/docs/build/html/structmlx_1_1steel_1_1_transform_axpby.html deleted file mode 100644 index c69d45fb..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_transform_axpby.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - -MLX: mlx::steel::TransformAxpby< OutT, InT > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::TransformAxpby< OutT, InT > Struct Template Reference
    -
    -
    - -

    #include <transforms.h>

    - - - - - - -

    -Public Member Functions

     TransformAxpby (const float alpha_, const float beta_)
     
    METAL_FUNC OutT apply (InT x, OutT c) const
     
    - - - -

    -Static Public Member Functions

    static METAL_FUNC OutT apply (InT x)
     
    - - - - - -

    -Public Attributes

    const float alpha
     
    const float beta
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ TransformAxpby()

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - - - - - -
    mlx::steel::TransformAxpby< OutT, InT >::TransformAxpby (const float alpha_,
    const float beta_ )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ apply() [1/2]

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - -
    static METAL_FUNC OutT mlx::steel::TransformAxpby< OutT, InT >::apply (InT x)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ apply() [2/2]

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - - - - - -
    METAL_FUNC OutT mlx::steel::TransformAxpby< OutT, InT >::apply (InT x,
    OutT c ) const
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ alpha

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - -
    const float mlx::steel::TransformAxpby< OutT, InT >::alpha
    -
    - -
    -
    - -

    ◆ beta

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - -
    const float mlx::steel::TransformAxpby< OutT, InT >::beta
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_transform_none-members.html b/docs/build/html/structmlx_1_1steel_1_1_transform_none-members.html deleted file mode 100644 index b3e22547..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_transform_none-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::steel::TransformNone< OutT, InT > Member List
    -
    -
    - -

    This is the complete list of members for mlx::steel::TransformNone< OutT, InT >, including all inherited members.

    - - - -
    apply(InT x)mlx::steel::TransformNone< OutT, InT >inlinestatic
    apply(InT x, OutT)mlx::steel::TransformNone< OutT, InT >inlinestatic
    - - - - diff --git a/docs/build/html/structmlx_1_1steel_1_1_transform_none.html b/docs/build/html/structmlx_1_1steel_1_1_transform_none.html deleted file mode 100644 index 08618cd4..00000000 --- a/docs/build/html/structmlx_1_1steel_1_1_transform_none.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -MLX: mlx::steel::TransformNone< OutT, InT > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::steel::TransformNone< OutT, InT > Struct Template Reference
    -
    -
    - -

    #include <transforms.h>

    - - - - - - -

    -Static Public Member Functions

    static METAL_FUNC OutT apply (InT x)
     
    static METAL_FUNC OutT apply (InT x, OutT)
     
    -

    Member Function Documentation

    - -

    ◆ apply() [1/2]

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - -
    static METAL_FUNC OutT mlx::steel::TransformNone< OutT, InT >::apply (InT x)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ apply() [2/2]

    - -
    -
    -
    -template<typename OutT , typename InT >
    - - - - - -
    - - - - - - - - - - - -
    static METAL_FUNC OutT mlx::steel::TransformNone< OutT, InT >::apply (InT x,
    OutT  )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx__atomic-members.html b/docs/build/html/structmlx__atomic-members.html deleted file mode 100644 index 79653a08..00000000 --- a/docs/build/html/structmlx__atomic-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    -
    mlx_atomic< T, typename > Member List
    -
    -
    - -

    This is the complete list of members for mlx_atomic< T, typename >, including all inherited members.

    - - -
    valmlx_atomic< T, typename >
    - - - - diff --git a/docs/build/html/structmlx__atomic.html b/docs/build/html/structmlx__atomic.html deleted file mode 100644 index ffc60d7d..00000000 --- a/docs/build/html/structmlx__atomic.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -MLX: mlx_atomic< T, typename > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    - -
    mlx_atomic< T, typename > Struct Template Reference
    -
    -
    - -

    #include <atomic.h>

    - - - - -

    -Public Attributes

    atomic< uint > val
     
    -

    Member Data Documentation

    - -

    ◆ val

    - -
    -
    -
    -template<typename T , typename = void>
    - - - - -
    atomic<uint> mlx_atomic< T, typename >::val
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4-members.html b/docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4-members.html deleted file mode 100644 index 69a0bbe6..00000000 --- a/docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    -
    mlx_atomic< T, enable_if_t< is_metal_atomic< T > > > Member List
    -
    -
    - -

    This is the complete list of members for mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >, including all inherited members.

    - - -
    valmlx_atomic< T, enable_if_t< is_metal_atomic< T > > >
    - - - - diff --git a/docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html b/docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html deleted file mode 100644 index b444bac8..00000000 --- a/docs/build/html/structmlx__atomic_3_01_t_00_01enable__if__t_3_01is__metal__atomic_3_01_t_01_4_01_4_01_4.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -MLX: mlx_atomic< T, enable_if_t< is_metal_atomic< T > > > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    - -
    mlx_atomic< T, enable_if_t< is_metal_atomic< T > > > Struct Template Reference
    -
    -
    - -

    #include <atomic.h>

    - - - - -

    -Public Attributes

    atomic< T > val
     
    -

    Member Data Documentation

    - -

    ◆ val

    - -
    -
    -
    -template<typename T >
    - - - - -
    atomic<T> mlx_atomic< T, enable_if_t< is_metal_atomic< T > > >::val
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c-members.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c-members.html deleted file mode 100644 index 4f3be94a..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::ExecC2C Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::ExecC2C, including all inherited members.

    - - - -
    forwardpocketfft::detail::ExecC2C
    operator()(const multi_iter< vlen > &it, const cndarr< cmplx< T0 > > &in, ndarr< cmplx< T0 > > &out, T *buf, const pocketfft_c< T0 > &plan, T0 fct) constpocketfft::detail::ExecC2Cinline
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c.html deleted file mode 100644 index f3236752..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::ExecC2C Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::ExecC2C Struct Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - - -

    -Public Member Functions

    template<typename T0 , typename T , size_t vlen>
    void operator() (const multi_iter< vlen > &it, const cndarr< cmplx< T0 > > &in, ndarr< cmplx< T0 > > &out, T *buf, const pocketfft_c< T0 > &plan, T0 fct) const
     
    - - - -

    -Public Attributes

    bool forward
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T0 , typename T , size_t vlen>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void pocketfft::detail::ExecC2C::operator() (const multi_iter< vlen > & it,
    const cndarr< cmplx< T0 > > & in,
    ndarr< cmplx< T0 > > & out,
    T * buf,
    const pocketfft_c< T0 > & plan,
    T0 fct ) const
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ forward

    - -
    -
    - - - - -
    bool pocketfft::detail::ExecC2C::forward
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst-members.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst-members.html deleted file mode 100644 index 2dc7efb2..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::ExecDcst Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::ExecDcst, including all inherited members.

    - - - - - -
    cosinepocketfft::detail::ExecDcst
    operator()(const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const Tplan &plan, T0 fct) constpocketfft::detail::ExecDcstinline
    orthopocketfft::detail::ExecDcst
    typepocketfft::detail::ExecDcst
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst.html deleted file mode 100644 index 30ece922..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::ExecDcst Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::ExecDcst Struct Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - - -

    -Public Member Functions

    template<typename T0 , typename T , typename Tplan , size_t vlen>
    void operator() (const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const Tplan &plan, T0 fct) const
     
    - - - - - - - -

    -Public Attributes

    bool ortho
     
    int type
     
    bool cosine
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T0 , typename T , typename Tplan , size_t vlen>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void pocketfft::detail::ExecDcst::operator() (const multi_iter< vlen > & it,
    const cndarr< T0 > & in,
    ndarr< T0 > & out,
    T * buf,
    const Tplan & plan,
    T0 fct ) const
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ cosine

    - -
    -
    - - - - -
    bool pocketfft::detail::ExecDcst::cosine
    -
    - -
    -
    - -

    ◆ ortho

    - -
    -
    - - - - -
    bool pocketfft::detail::ExecDcst::ortho
    -
    - -
    -
    - -

    ◆ type

    - -
    -
    - - - - -
    int pocketfft::detail::ExecDcst::type
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley-members.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley-members.html deleted file mode 100644 index ce459d08..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::ExecHartley Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::ExecHartley, including all inherited members.

    - - -
    operator()(const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const pocketfft_r< T0 > &plan, T0 fct) constpocketfft::detail::ExecHartleyinline
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley.html deleted file mode 100644 index 180c3580..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::ExecHartley Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::ExecHartley Struct Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - - -

    -Public Member Functions

    template<typename T0 , typename T , size_t vlen>
    void operator() (const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const pocketfft_r< T0 > &plan, T0 fct) const
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T0 , typename T , size_t vlen>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void pocketfft::detail::ExecHartley::operator() (const multi_iter< vlen > & it,
    const cndarr< T0 > & in,
    ndarr< T0 > & out,
    T * buf,
    const pocketfft_r< T0 > & plan,
    T0 fct ) const
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r-members.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r-members.html deleted file mode 100644 index bdb55584..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r-members.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::ExecR2R Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::ExecR2R, including all inherited members.

    - - - - -
    forwardpocketfft::detail::ExecR2R
    operator()(const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const pocketfft_r< T0 > &plan, T0 fct) constpocketfft::detail::ExecR2Rinline
    r2hpocketfft::detail::ExecR2R
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r.html b/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r.html deleted file mode 100644 index 993770fa..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::ExecR2R Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::ExecR2R Struct Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - - -

    -Public Member Functions

    template<typename T0 , typename T , size_t vlen>
    void operator() (const multi_iter< vlen > &it, const cndarr< T0 > &in, ndarr< T0 > &out, T *buf, const pocketfft_r< T0 > &plan, T0 fct) const
     
    - - - - - -

    -Public Attributes

    bool r2h
     
    bool forward
     
    -

    Member Function Documentation

    - -

    ◆ operator()()

    - -
    -
    -
    -template<typename T0 , typename T , size_t vlen>
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void pocketfft::detail::ExecR2R::operator() (const multi_iter< vlen > & it,
    const cndarr< T0 > & in,
    ndarr< T0 > & out,
    T * buf,
    const pocketfft_r< T0 > & plan,
    T0 fct ) const
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ forward

    - -
    -
    - - - - -
    bool pocketfft::detail::ExecR2R::forward
    -
    - -
    -
    - -

    ◆ r2h

    - -
    -
    - - - - -
    bool pocketfft::detail::ExecR2R::r2h
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n-members.html b/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n-members.html deleted file mode 100644 index 54aaab0a..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::VLEN< T > Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::VLEN< T >, including all inherited members.

    - - -
    valpocketfft::detail::VLEN< T >static
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n.html b/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n.html deleted file mode 100644 index 1881e235..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::VLEN< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::VLEN< T > Struct Template Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - -

    -Static Public Attributes

    static constexpr size_t val =1
     
    -

    Member Data Documentation

    - -

    ◆ val

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - -
    constexpr size_t pocketfft::detail::VLEN< T >::val =1
    -
    -staticconstexpr
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1_v_t_y_p_e.html b/docs/build/html/structpocketfft_1_1detail_1_1_v_t_y_p_e.html deleted file mode 100644 index ed027f31..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1_v_t_y_p_e.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::VTYPE< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::VTYPE< T > Struct Template Reference
    -
    -
    - -

    #include <pocketfft.h>

    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1add__vec-members.html b/docs/build/html/structpocketfft_1_1detail_1_1add__vec-members.html deleted file mode 100644 index 8c506012..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1add__vec-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::add_vec< T > Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::add_vec< T >, including all inherited members.

    - - -
    type typedefpocketfft::detail::add_vec< T >
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1add__vec.html b/docs/build/html/structpocketfft_1_1detail_1_1add__vec.html deleted file mode 100644 index ad4c69ec..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1add__vec.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::add_vec< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::add_vec< T > Struct Template Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - -

    -Public Types

    using type = vtype_t<T>
     
    -

    Member Typedef Documentation

    - -

    ◆ type

    - -
    -
    -
    -template<typename T >
    - - - - -
    using pocketfft::detail::add_vec< T >::type = vtype_t<T>
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4-members.html b/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4-members.html deleted file mode 100644 index 80a761dd..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::add_vec< cmplx< T > > Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::add_vec< cmplx< T > >, including all inherited members.

    - - -
    type typedefpocketfft::detail::add_vec< cmplx< T > >
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html b/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html deleted file mode 100644 index 793e4799..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::add_vec< cmplx< T > > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::add_vec< cmplx< T > > Struct Template Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - -

    -Public Types

    using type = cmplx<vtype_t<T>>
     
    -

    Member Typedef Documentation

    - -

    ◆ type

    - -
    -
    -
    -template<typename T >
    - - - - -
    using pocketfft::detail::add_vec< cmplx< T > >::type = cmplx<vtype_t<T>>
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1cmplx-members.html b/docs/build/html/structpocketfft_1_1detail_1_1cmplx-members.html deleted file mode 100644 index c5b633d6..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1cmplx-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::cmplx< T > Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::cmplx< T >, including all inherited members.

    - - - - - - - - - - - - - - - - - -
    cmplx()pocketfft::detail::cmplx< T >inline
    cmplx(T r_, T i_)pocketfft::detail::cmplx< T >inline
    ipocketfft::detail::cmplx< T >
    operator*(const T2 &other) const -> cmplx< decltype(r *other)>pocketfft::detail::cmplx< T >inline
    operator*(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>pocketfft::detail::cmplx< T >inline
    operator*=(T2 other)pocketfft::detail::cmplx< T >inline
    operator*=(const cmplx< T2 > &other)pocketfft::detail::cmplx< T >inline
    operator+(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>pocketfft::detail::cmplx< T >inline
    operator+=(const cmplx &other)pocketfft::detail::cmplx< T >inline
    operator+=(const cmplx< T2 > &other)pocketfft::detail::cmplx< T >inline
    operator-(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>pocketfft::detail::cmplx< T >inline
    operator-=(const cmplx< T2 > &other)pocketfft::detail::cmplx< T >inline
    rpocketfft::detail::cmplx< T >
    Set(T r_, T i_)pocketfft::detail::cmplx< T >inline
    Set(T r_)pocketfft::detail::cmplx< T >inline
    special_mul(const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>pocketfft::detail::cmplx< T >inline
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1cmplx.html b/docs/build/html/structpocketfft_1_1detail_1_1cmplx.html deleted file mode 100644 index 5cb72abd..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1cmplx.html +++ /dev/null @@ -1,588 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::cmplx< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::cmplx< T > Struct Template Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     cmplx ()
     
     cmplx (T r_, T i_)
     
    void Set (T r_, T i_)
     
    void Set (T r_)
     
    cmplxoperator+= (const cmplx &other)
     
    template<typename T2 >
    cmplxoperator*= (T2 other)
     
    template<typename T2 >
    cmplxoperator*= (const cmplx< T2 > &other)
     
    template<typename T2 >
    cmplxoperator+= (const cmplx< T2 > &other)
     
    template<typename T2 >
    cmplxoperator-= (const cmplx< T2 > &other)
     
    template<typename T2 >
    auto operator* (const T2 &other) const -> cmplx< decltype(r *other)>
     
    template<typename T2 >
    auto operator+ (const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
     
    template<typename T2 >
    auto operator- (const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
     
    template<typename T2 >
    auto operator* (const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
     
    template<bool fwd, typename T2 >
    auto special_mul (const cmplx< T2 > &other) const -> cmplx< decltype(r+other.r)>
     
    - - - - - -

    -Public Attributes

    T r
     
    T i
     
    -

    Constructor & Destructor Documentation

    - -

    ◆ cmplx() [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    pocketfft::detail::cmplx< T >::cmplx ()
    -
    -inline
    -
    - -
    -
    - -

    ◆ cmplx() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    pocketfft::detail::cmplx< T >::cmplx (T r_,
    T i_ )
    -
    -inline
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ operator*() [1/2]

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    auto pocketfft::detail::cmplx< T >::operator* (const cmplx< T2 > & other) const -> cmplx<decltype(r+other.r)> -
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator*() [2/2]

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    auto pocketfft::detail::cmplx< T >::operator* (const T2 & other) const -> cmplx<decltype(r*other)> -
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator*=() [1/2]

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    cmplx & pocketfft::detail::cmplx< T >::operator*= (const cmplx< T2 > & other)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator*=() [2/2]

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    cmplx & pocketfft::detail::cmplx< T >::operator*= (T2 other)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator+()

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    auto pocketfft::detail::cmplx< T >::operator+ (const cmplx< T2 > & other) const -> cmplx<decltype(r+other.r)> -
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator+=() [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    cmplx & pocketfft::detail::cmplx< T >::operator+= (const cmplx< T > & other)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator+=() [2/2]

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    cmplx & pocketfft::detail::cmplx< T >::operator+= (const cmplx< T2 > & other)
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator-()

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    auto pocketfft::detail::cmplx< T >::operator- (const cmplx< T2 > & other) const -> cmplx<decltype(r+other.r)> -
    -
    -inline
    -
    - -
    -
    - -

    ◆ operator-=()

    - -
    -
    -
    -template<typename T >
    -
    -template<typename T2 >
    - - - - - -
    - - - - - - - -
    cmplx & pocketfft::detail::cmplx< T >::operator-= (const cmplx< T2 > & other)
    -
    -inline
    -
    - -
    -
    - -

    ◆ Set() [1/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    void pocketfft::detail::cmplx< T >::Set (T r_)
    -
    -inline
    -
    - -
    -
    - -

    ◆ Set() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    void pocketfft::detail::cmplx< T >::Set (T r_,
    T i_ )
    -
    -inline
    -
    - -
    -
    - -

    ◆ special_mul()

    - -
    -
    -
    -template<typename T >
    -
    -template<bool fwd, typename T2 >
    - - - - - -
    - - - - - - - -
    auto pocketfft::detail::cmplx< T >::special_mul (const cmplx< T2 > & other) const -> cmplx<decltype(r+other.r)> -
    -
    -inline
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ i

    - -
    -
    -
    -template<typename T >
    - - - - -
    T pocketfft::detail::cmplx< T >::i
    -
    - -
    -
    - -

    ◆ r

    - -
    -
    -
    -template<typename T >
    - - - - -
    T pocketfft::detail::cmplx< T >::r
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator-members.html b/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator-members.html deleted file mode 100644 index 250dcbc2..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::threading::aligned_allocator< T > Member List
    -
    - - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html b/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html deleted file mode 100644 index 3ecf135a..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::threading::aligned_allocator< T > Struct Template Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::threading::aligned_allocator< T > Struct Template Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - -

    -Public Types

    using value_type = T
     
    - - - - - - - - - - -

    -Public Member Functions

    template<class U >
     aligned_allocator (const aligned_allocator< U > &)
     
     aligned_allocator ()=default
     
    Tallocate (size_t n)
     
    void deallocate (T *p, size_t)
     
    -

    Member Typedef Documentation

    - -

    ◆ value_type

    - -
    -
    -
    -template<typename T >
    - - - - -
    using pocketfft::detail::threading::aligned_allocator< T >::value_type = T
    -
    - -
    -
    -

    Constructor & Destructor Documentation

    - -

    ◆ aligned_allocator() [1/2]

    - -
    -
    -
    -template<typename T >
    -
    -template<class U >
    - - - - - -
    - - - - - - - -
    pocketfft::detail::threading::aligned_allocator< T >::aligned_allocator (const aligned_allocator< U > & )
    -
    -inline
    -
    - -
    -
    - -

    ◆ aligned_allocator() [2/2]

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    pocketfft::detail::threading::aligned_allocator< T >::aligned_allocator ()
    -
    -default
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ allocate()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - -
    T * pocketfft::detail::threading::aligned_allocator< T >::allocate (size_t n)
    -
    -inline
    -
    - -
    -
    - -

    ◆ deallocate()

    - -
    -
    -
    -template<typename T >
    - - - - - -
    - - - - - - - - - - - -
    void pocketfft::detail::threading::aligned_allocator< T >::deallocate (T * p,
    size_t  )
    -
    -inline
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1util-members.html b/docs/build/html/structpocketfft_1_1detail_1_1util-members.html deleted file mode 100644 index 9f49cc91..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1util-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    pocketfft::detail::util Member List
    -
    -
    - -

    This is the complete list of members for pocketfft::detail::util, including all inherited members.

    - - - - - - - - - - -
    cost_guess(size_t n)pocketfft::detail::utilinlinestatic
    good_size_cmplx(size_t n)pocketfft::detail::utilinlinestatic
    good_size_real(size_t n)pocketfft::detail::utilinlinestatic
    largest_prime_factor(size_t n)pocketfft::detail::utilinlinestatic
    prod(const shape_t &shape)pocketfft::detail::utilinlinestatic
    sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace)pocketfft::detail::utilinlinestatic
    sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, const shape_t &axes)pocketfft::detail::utilinlinestatic
    sanity_check(const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, size_t axis)pocketfft::detail::utilinlinestatic
    thread_count(size_t nthreads, const shape_t &shape, size_t axis, size_t vlen)pocketfft::detail::utilinlinestatic
    - - - - diff --git a/docs/build/html/structpocketfft_1_1detail_1_1util.html b/docs/build/html/structpocketfft_1_1detail_1_1util.html deleted file mode 100644 index b9435952..00000000 --- a/docs/build/html/structpocketfft_1_1detail_1_1util.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - - -MLX: pocketfft::detail::util Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    pocketfft::detail::util Struct Reference
    -
    -
    - -

    #include <pocketfft.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static size_t largest_prime_factor (size_t n)
     
    static double cost_guess (size_t n)
     
    static size_t good_size_cmplx (size_t n)
     
    static size_t good_size_real (size_t n)
     
    static size_t prod (const shape_t &shape)
     
    static void sanity_check (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace)
     
    static void sanity_check (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, const shape_t &axes)
     
    static void sanity_check (const shape_t &shape, const stride_t &stride_in, const stride_t &stride_out, bool inplace, size_t axis)
     
    static size_t thread_count (size_t nthreads, const shape_t &shape, size_t axis, size_t vlen)
     
    -

    Member Function Documentation

    - -

    ◆ cost_guess()

    - -
    -
    - - - - - -
    - - - - - - - -
    static double pocketfft::detail::util::cost_guess (size_t n)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ good_size_cmplx()

    - -
    -
    - - - - - -
    - - - - - - - -
    static size_t pocketfft::detail::util::good_size_cmplx (size_t n)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ good_size_real()

    - -
    -
    - - - - - -
    - - - - - - - -
    static size_t pocketfft::detail::util::good_size_real (size_t n)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ largest_prime_factor()

    - -
    -
    - - - - - -
    - - - - - - - -
    static size_t pocketfft::detail::util::largest_prime_factor (size_t n)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ prod()

    - -
    -
    - - - - - -
    - - - - - - - -
    static size_t pocketfft::detail::util::prod (const shape_t & shape)
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ sanity_check() [1/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    static void pocketfft::detail::util::sanity_check (const shape_t & shape,
    const stride_t & stride_in,
    const stride_t & stride_out,
    bool inplace )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ sanity_check() [2/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void pocketfft::detail::util::sanity_check (const shape_t & shape,
    const stride_t & stride_in,
    const stride_t & stride_out,
    bool inplace,
    const shape_t & axes )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ sanity_check() [3/3]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void pocketfft::detail::util::sanity_check (const shape_t & shape,
    const stride_t & stride_in,
    const stride_t & stride_out,
    bool inplace,
    size_t axis )
    -
    -inlinestatic
    -
    - -
    -
    - -

    ◆ thread_count()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - -
    static size_t pocketfft::detail::util::thread_count (size_t nthreads,
    const shape_t & shape,
    size_t axis,
    size_t vlen )
    -
    -inlinestatic
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/build/html/sync_off.png b/docs/build/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/docs/build/html/sync_on.png b/docs/build/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/docs/build/html/tab_a.png b/docs/build/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/docs/build/html/tab_ad.png b/docs/build/html/tab_ad.png deleted file mode 100644 index e34850acfc24be58da6d2fd1ccc6b29cc84fe34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( diff --git a/docs/build/html/tab_s.png b/docs/build/html/tab_s.png deleted file mode 100644 index ab478c95b67371d700a20869f7de1ddd73522d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/docs/build/html/tab_sd.png b/docs/build/html/tab_sd.png deleted file mode 100644 index 757a565ced4730f85c833fb2547d8e199ae68f19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% diff --git a/docs/build/html/tabs.css b/docs/build/html/tabs.css deleted file mode 100644 index fe4854aa..00000000 --- a/docs/build/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/build/html/ternary__ops_8h.html b/docs/build/html/ternary__ops_8h.html deleted file mode 100644 index aeef3e25..00000000 --- a/docs/build/html/ternary__ops_8h.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/ternary_ops.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    ternary_ops.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - -

    -Classes

    struct  Select
     
    -
    - - - - diff --git a/docs/build/html/ternary__ops_8h_source.html b/docs/build/html/ternary__ops_8h_source.html deleted file mode 100644 index 683831d6..00000000 --- a/docs/build/html/ternary__ops_8h_source.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/ternary_ops.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    ternary_ops.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023-2024 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4
    -
    -
    5struct Select {
    -
    6 template <typename T>
    -
    -
    7 T operator()(bool condition, T x, T y) {
    -
    8 return condition ? x : y;
    -
    9 }
    -
    -
    10};
    -
    -
    Definition ternary_ops.h:5
    -
    T operator()(bool condition, T x, T y)
    Definition ternary_ops.h:7
    -
    - - - - diff --git a/docs/build/html/threadpool_8h.html b/docs/build/html/threadpool_8h.html deleted file mode 100644 index fe258f93..00000000 --- a/docs/build/html/threadpool_8h.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -MLX: mlx/io/threadpool.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    threadpool.h File Reference
    -
    -
    -
    #include <condition_variable>
    -#include <functional>
    -#include <future>
    -#include <memory>
    -#include <mutex>
    -#include <queue>
    -#include <stdexcept>
    -#include <thread>
    -#include <vector>
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    class  ThreadPool
     
    -
    - - - - diff --git a/docs/build/html/threadpool_8h_source.html b/docs/build/html/threadpool_8h_source.html deleted file mode 100644 index e7c11697..00000000 --- a/docs/build/html/threadpool_8h_source.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - -MLX: mlx/io/threadpool.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    threadpool.h
    -
    -
    -Go to the documentation of this file.
    1// This code was modified from https://github.com/progschj/ThreadPool
    -
    2// The original License is copied below:
    -
    3//
    -
    4// Copyright (c) 2012 Jakob Progsch, Václav Zeman
    -
    5// This software is provided 'as-is', without any express or implied
    -
    6// warranty. In no event will the authors be held liable for any damages
    -
    7// arising from the use of this software.
    -
    8//
    -
    9// Permission is granted to anyone to use this software for any purpose,
    -
    10// including commercial applications, and to alter it and redistribute it
    -
    11// freely, subject to the following restrictions:
    -
    12//
    -
    13// 1. The origin of this software must not be misrepresented; you must not
    -
    14// claim that you wrote the original software. If you use this software
    -
    15// in a product, an acknowledgment in the product documentation would be
    -
    16// appreciated but is not required.
    -
    17//
    -
    18// 2. Altered source versions must be plainly marked as such, and must not be
    -
    19// misrepresented as being the original software.
    -
    20//
    -
    21// 3. This notice may not be removed or altered from any source
    -
    22// distribution.
    -
    23#pragma once
    -
    24
    -
    25#include <condition_variable>
    -
    26#include <functional>
    -
    27#include <future>
    -
    28#include <memory>
    -
    29#include <mutex>
    -
    30#include <queue>
    -
    31#include <stdexcept>
    -
    32#include <thread>
    -
    33#include <vector>
    -
    34
    -
    - -
    36 public:
    -
    37 ThreadPool(size_t);
    -
    38 template <class F, class... Args>
    -
    39 auto enqueue(F&& f, Args&&... args)
    -
    40 -> std::future<typename std::invoke_result_t<F, Args...>>;
    - -
    42
    -
    43 private:
    -
    44 std::vector<std::thread> workers;
    -
    45 std::queue<std::function<void()>> tasks;
    -
    46 std::mutex queue_mutex;
    -
    47 std::condition_variable condition;
    -
    48 bool stop;
    -
    49};
    -
    -
    50
    -
    -
    51inline ThreadPool::ThreadPool(size_t threads) : stop(false) {
    -
    52 for (size_t i = 0; i < threads; ++i)
    -
    53 workers.emplace_back([this] {
    -
    54 for (;;) {
    -
    55 std::function<void()> task;
    -
    56
    -
    57 {
    -
    58 std::unique_lock<std::mutex> lock(this->queue_mutex);
    -
    59 this->condition.wait(
    -
    60 lock, [this] { return this->stop || !this->tasks.empty(); });
    -
    61 if (this->stop && this->tasks.empty())
    -
    62 return;
    -
    63 task = std::move(this->tasks.front());
    -
    64 this->tasks.pop();
    -
    65 }
    -
    66
    -
    67 task();
    -
    68 }
    -
    69 });
    -
    70}
    -
    -
    71
    -
    72template <class F, class... Args>
    -
    -
    73auto ThreadPool::enqueue(F&& f, Args&&... args)
    -
    74 -> std::future<typename std::invoke_result_t<F, Args...>> {
    -
    75 using return_type = typename std::invoke_result_t<F, Args...>;
    -
    76
    -
    77 auto task = std::make_shared<std::packaged_task<return_type()>>(
    -
    78 std::bind(std::forward<F>(f), std::forward<Args>(args)...));
    -
    79
    -
    80 std::future<return_type> res = task->get_future();
    -
    81 {
    -
    82 std::unique_lock<std::mutex> lock(queue_mutex);
    -
    83
    -
    84 if (stop) {
    -
    85 throw std::runtime_error(
    -
    86 "[ThreadPool::enqueue] Not allowed on stopped ThreadPool");
    -
    87 }
    -
    88
    -
    89 tasks.emplace([task]() { (*task)(); });
    -
    90 }
    -
    91 condition.notify_one();
    -
    92 return res;
    -
    93}
    -
    -
    94
    -
    - -
    96 {
    -
    97 std::unique_lock<std::mutex> lock(queue_mutex);
    -
    98 stop = true;
    -
    99 }
    -
    100 condition.notify_all();
    -
    101 for (std::thread& worker : workers)
    -
    102 worker.join();
    -
    103}
    -
    -
    Definition threadpool.h:35
    -
    auto enqueue(F &&f, Args &&... args) -> std::future< typename std::invoke_result_t< F, Args... > >
    Definition threadpool.h:73
    -
    ~ThreadPool()
    Definition threadpool.h:95
    -
    ThreadPool(size_t)
    Definition threadpool.h:51
    -
    float f
    Definition bf16.h:16
    -
    - - - - diff --git a/docs/build/html/threefry_8h.html b/docs/build/html/threefry_8h.html deleted file mode 100644 index 5c706f9b..00000000 --- a/docs/build/html/threefry_8h.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/threefry.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    threefry.h File Reference
    -
    -
    -
    #include <cstdint>
    -#include <utility>
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Namespaces

    namespace  mlx
     
    namespace  mlx::core
     
    namespace  mlx::core::random
     
    - - - - -

    -Functions

    std::pair< uint32_t, uint32_t > mlx::core::random::threefry2x32_hash (const std::pair< uint32_t, uint32_t > &key, std::pair< uint32_t, uint32_t > count)
     Applies the Threefry 2x32 hash function.
     
    -
    - - - - diff --git a/docs/build/html/threefry_8h_source.html b/docs/build/html/threefry_8h_source.html deleted file mode 100644 index 865a11f4..00000000 --- a/docs/build/html/threefry_8h_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -MLX: mlx/backend/common/threefry.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    threefry.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4
    -
    5#include <cstdint>
    -
    6#include <utility>
    -
    7
    -
    - -
    9
    -
    17std::pair<uint32_t, uint32_t> threefry2x32_hash(
    -
    18 const std::pair<uint32_t, uint32_t>& key,
    -
    19 std::pair<uint32_t, uint32_t> count);
    -
    20
    -
    21} // namespace mlx::core::random
    -
    -
    Definition threefry.h:8
    -
    std::pair< uint32_t, uint32_t > threefry2x32_hash(const std::pair< uint32_t, uint32_t > &key, std::pair< uint32_t, uint32_t > count)
    Applies the Threefry 2x32 hash function.
    -
    array key(uint64_t seed)
    Get a PRNG key from a seed.
    -
    - - - - diff --git a/docs/build/html/topics.html b/docs/build/html/topics.html deleted file mode 100644 index 5a1746cd..00000000 --- a/docs/build/html/topics.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Topics - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    Topics
    -
    -
    -
    Here is a list of all topics with brief descriptions:
    -
    - - - - diff --git a/docs/build/html/transforms_8h.html b/docs/build/html/transforms_8h.html deleted file mode 100644 index a644ec82..00000000 --- a/docs/build/html/transforms_8h.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -MLX: mlx/transforms.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    transforms.h File Reference
    -
    -
    -
    #include <optional>
    -#include "mlx/array.h"
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Namespaces

    namespace  mlx
     
    namespace  mlx::core
     
    - - - - - -

    -Typedefs

    using mlx::core::ValueAndGradFn
     
    using mlx::core::SimpleValueAndGradFn
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    void mlx::core::async_eval (std::vector< array > outputs)
     
    void mlx::core::eval (std::vector< array > outputs)
     
    template<typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
    void mlx::core::eval (Arrays &&... outputs)
     
    std::pair< std::vector< array >, std::vector< array > > mlx::core::vjp (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)
     Computes the output and vector-Jacobian product (VJP) of a function.
     
    std::pair< array, arraymlx::core::vjp (const std::function< array(const array &)> &fun, const array &primal, const array &cotangent)
     Computes the output and vector-Jacobian product (VJP) of a unary function.
     
    std::pair< std::vector< array >, std::vector< array > > mlx::core::jvp (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)
     Computes the output and Jacobian-vector product (JVP) of a function.
     
    std::pair< array, arraymlx::core::jvp (const std::function< array(const array &)> &fun, const array &primal, const array &tangent)
     Computes the output and Jacobian-vector product (JVP) of a unary function.
     
    ValueAndGradFn mlx::core::value_and_grad (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
     Returns a function which computes the value and gradient of the input function with respect to a vector of input arrays.
     
    ValueAndGradFn mlx::core::value_and_grad (const std::function< std::vector< array >(const std::vector< array > &)> &fun, int argnum=0)
     Returns a function which computes the value and gradient of the input function with respect to a single input array.
     
    SimpleValueAndGradFn mlx::core::value_and_grad (const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
     
    SimpleValueAndGradFn mlx::core::value_and_grad (const std::function< array(const std::vector< array > &)> &fun, int argnum=0)
     
    std::function< std::vector< array >(const std::vector< array > &)> mlx::core::grad (const std::function< array(const std::vector< array > &)> &fun, int argnum=0)
     Returns a function which computes the gradient of the input function with respect to a single input array.
     
    std::function< array(const array &)> mlx::core::grad (const std::function< array(const array &)> &fun)
     Returns a function which computes the gradient of the unary input function.
     
    std::function< array(const array &, const array &)> mlx::core::vmap (const std::function< array(const array &, const array &)> &fun, int in_axis_a=0, int in_axis_b=0, int out_axis=0)
     Automatically vectorize a binary function over the requested axes.
     
    std::function< std::vector< array >(const std::vector< array > &)> mlx::core::vmap (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< int > &in_axes={}, const std::vector< int > &out_axes={})
     Automatically vectorize a function over the requested axes.
     
    - - - - - - - - - - - - - - - - - - - -

    -Variables

    std::function< std::pair< array, array >(const array &) mlx::core::value_and_grad )(const std::function< array(const array &)> &fun)
     Returns a function which computes the value and gradient of the unary input function.
     
    std::function< std::vector< array >(const std::vector< array > &) mlx::core::grad )(const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
     Returns a function which computes the gradient of the input function with respect to a vector of input arrays.
     
    std::function< array(const array &) mlx::core::vmap )(const std::function< array(const array &)> &fun, int in_axis=0, int out_axis=0)
     Automatically vectorize a unary function over the requested axes.
     
    std::function< std::vector< array >(const std::vector< array > &) mlx::core::custom_function )(std::function< std::vector< array >(const std::vector< array > &)> fun, std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> > fun_vjp=std::nullopt, std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> > fun_jvp=std::nullopt, std::optional< std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> > fun_vmap=std::nullopt)
     Redefine the transformations of fun according to the provided functions.
     
    std::function< std::vector< array >(const std::vector< array > &) mlx::core::custom_vjp )(std::function< std::vector< array >(const std::vector< array > &)> fun, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun_vjp)
     Return a function that behaves exactly like fun but if the vjp of the results is computed fun_vjp will be used instead of vjp(fun, ...) .
     
    std::function< std::vector< array >(const std::vector< array > &) mlx::core::checkpoint )(std::function< std::vector< array >(const std::vector< array > &)> fun)
     Checkpoint the gradient of a function.
     
    -
    - - - - diff --git a/docs/build/html/transforms_8h_source.html b/docs/build/html/transforms_8h_source.html deleted file mode 100644 index 2eb25809..00000000 --- a/docs/build/html/transforms_8h_source.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - -MLX: mlx/transforms.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    transforms.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023-2024 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4
    -
    5#include <optional>
    -
    6
    -
    7#include "mlx/array.h"
    -
    8
    -
    9namespace mlx::core {
    -
    10
    -
    11void async_eval(std::vector<array> outputs);
    -
    12
    -
    13void eval(std::vector<array> outputs);
    -
    14
    -
    15template <typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
    -
    -
    16void eval(Arrays&&... outputs) {
    -
    17 eval(std::vector<array>{std::forward<Arrays>(outputs)...});
    -
    18}
    -
    -
    19
    -
    27std::pair<std::vector<array>, std::vector<array>> vjp(
    -
    28 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    29 const std::vector<array>& primals,
    -
    30 const std::vector<array>& cotangents);
    -
    31
    -
    35std::pair<array, array> vjp(
    -
    36 const std::function<array(const array&)>& fun,
    -
    37 const array& primal,
    -
    38 const array& cotangent);
    -
    39
    -
    47std::pair<std::vector<array>, std::vector<array>> jvp(
    -
    48 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    49 const std::vector<array>& primals,
    -
    50 const std::vector<array>& tangents);
    -
    51
    -
    55std::pair<array, array> jvp(
    -
    56 const std::function<array(const array&)>& fun,
    -
    57 const array& primal,
    -
    58 const array& tangent);
    -
    59
    -
    60// Return type of general value_and_grad: a function which takes an input
    -
    61// vector of arrays and returns a pair of vectors of arrays one for the
    -
    62// values and one for the gradients wrt the first value.
    - -
    64 std::function<std::pair<std::vector<array>, std::vector<array>>(
    -
    65 const std::vector<array>&)>;
    -
    66using SimpleValueAndGradFn = std::function<std::pair<array, std::vector<array>>(
    -
    67 const std::vector<array>&)>;
    -
    68
    - -
    74 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    75 const std::vector<int>& argnums);
    -
    76
    -
    - -
    82 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    83 int argnum = 0) {
    -
    84 return value_and_grad(fun, std::vector<int>{argnum});
    -
    85}
    -
    -
    86
    -
    -
    91std::function<std::pair<array, array>(const array&)> inline value_and_grad(
    -
    92 const std::function<array(const array&)>& fun) {
    -
    93 return [fun](auto inputs) { return vjp(fun, inputs, array(1.0f)); };
    -
    94}
    -
    -
    95
    -
    - -
    97 const std::function<array(const std::vector<array>&)>& fun,
    -
    98 const std::vector<int>& argnums) {
    -
    99 return [fun, argnums](auto inputs) {
    -
    100 auto result = value_and_grad(
    -
    101 [fun](auto inputs) { return std::vector<array>{fun(inputs)}; },
    -
    102 argnums)(inputs);
    -
    103
    -
    104 return std::make_pair(result.first[0], result.second);
    -
    105 };
    -
    106}
    -
    -
    107
    -
    - -
    109 const std::function<array(const std::vector<array>&)>& fun,
    -
    110 int argnum = 0) {
    -
    111 return value_and_grad(fun, std::vector<int>{argnum});
    -
    112}
    -
    -
    113
    -
    -
    122std::function<std::vector<array>(const std::vector<array>&)> inline grad(
    -
    123 const std::function<array(const std::vector<array>&)>& fun,
    -
    124 const std::vector<int>& argnums) {
    -
    125 auto fn = value_and_grad(fun, argnums);
    -
    126 return [fn](const std::vector<array>& inputs) { return fn(inputs).second; };
    -
    127}
    -
    -
    128
    -
    -
    137std::function<std::vector<array>(const std::vector<array>&)> inline grad(
    -
    138 const std::function<array(const std::vector<array>&)>& fun,
    -
    139 int argnum = 0) {
    -
    140 return grad(fun, std::vector<int>{argnum});
    -
    141}
    -
    -
    142
    -
    -
    146std::function<array(const array&)> inline grad(
    -
    147 const std::function<array(const array&)>& fun) {
    -
    148 auto fn = value_and_grad(fun);
    -
    149 return [fn](const array& input) { return fn(input).second; };
    -
    150}
    -
    -
    151
    -
    155std::function<array(const array&)> vmap(
    -
    156 const std::function<array(const array&)>& fun,
    -
    157 int in_axis = 0,
    -
    158 int out_axis = 0);
    -
    159
    -
    163std::function<array(const array&, const array&)> vmap(
    -
    164 const std::function<array(const array&, const array&)>& fun,
    -
    165 int in_axis_a = 0,
    -
    166 int in_axis_b = 0,
    -
    167 int out_axis = 0);
    -
    168
    -
    178std::function<std::vector<array>(const std::vector<array>&)> vmap(
    -
    179 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    180 const std::vector<int>& in_axes = {},
    -
    181 const std::vector<int>& out_axes = {});
    -
    182
    -
    192std::function<std::vector<array>(const std::vector<array>&)> custom_function(
    -
    193 std::function<std::vector<array>(const std::vector<array>&)> fun,
    -
    194 std::optional<std::function<std::vector<array>(
    -
    195 const std::vector<array>&,
    -
    196 const std::vector<array>&,
    -
    197 const std::vector<array>&)>> fun_vjp = std::nullopt,
    -
    198 std::optional<std::function<std::vector<array>(
    -
    199 const std::vector<array>&,
    -
    200 const std::vector<array>&,
    -
    201 const std::vector<int>&)>> fun_jvp = std::nullopt,
    -
    202 std::optional<std::function<std::pair<std::vector<array>, std::vector<int>>(
    -
    203 const std::vector<array>&,
    -
    204 const std::vector<int>&)>> fun_vmap = std::nullopt);
    -
    205
    -
    210std::function<std::vector<array>(const std::vector<array>&)> custom_vjp(
    -
    211 std::function<std::vector<array>(const std::vector<array>&)> fun,
    -
    212 std::function<std::vector<array>(
    -
    213 const std::vector<array>&,
    -
    214 const std::vector<array>&,
    -
    215 const std::vector<array>&)> fun_vjp);
    -
    216
    -
    221std::function<std::vector<array>(const std::vector<array>&)> checkpoint(
    -
    222 std::function<std::vector<array>(const std::vector<array>&)> fun);
    -
    223
    -
    224} // namespace mlx::core
    - -
    Definition array.h:20
    -
    Definition allocator.h:7
    -
    void async_eval(std::vector< array > outputs)
    -
    std::pair< std::vector< array >, std::vector< array > > jvp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &tangents)
    Computes the output and Jacobian-vector product (JVP) of a function.
    -
    std::pair< std::vector< array >, std::vector< array > > vjp(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &primals, const std::vector< array > &cotangents)
    Computes the output and vector-Jacobian product (VJP) of a function.
    -
    std::function< std::vector< array >(const std::vector< array > &) checkpoint)(std::function< std::vector< array >(const std::vector< array > &)> fun)
    Checkpoint the gradient of a function.
    -
    std::function< std::pair< array, std::vector< array > >( const std::vector< array > &)> SimpleValueAndGradFn
    Definition transforms.h:66
    -
    std::function< std::pair< array, array >(const array &) value_and_grad)(const std::function< array(const array &)> &fun)
    Returns a function which computes the value and gradient of the unary input function.
    Definition transforms.h:91
    -
    std::function< std::vector< array >(const std::vector< array > &) custom_vjp)(std::function< std::vector< array >(const std::vector< array > &)> fun, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun_vjp)
    Return a function that behaves exactly like fun but if the vjp of the results is computed fun_vjp wil...
    -
    std::function< std::vector< array >(const std::vector< array > &) custom_function)(std::function< std::vector< array >(const std::vector< array > &)> fun, std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> > fun_vjp=std::nullopt, std::optional< std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< int > &)> > fun_jvp=std::nullopt, std::optional< std::function< std::pair< std::vector< array >, std::vector< int > >(const std::vector< array > &, const std::vector< int > &)> > fun_vmap=std::nullopt)
    Redefine the transformations of fun according to the provided functions.
    -
    void eval(std::vector< array > outputs)
    -
    std::function< array(const array &) vmap)(const std::function< array(const array &)> &fun, int in_axis=0, int out_axis=0)
    Automatically vectorize a unary function over the requested axes.
    -
    std::function< std::vector< array >(const std::vector< array > &) grad)(const std::function< array(const std::vector< array > &)> &fun, const std::vector< int > &argnums)
    Returns a function which computes the gradient of the input function with respect to a vector of inpu...
    Definition transforms.h:122
    -
    std::function< std::pair< std::vector< array >, std::vector< array > >( const std::vector< array > &)> ValueAndGradFn
    Definition transforms.h:63
    -
    typename std::enable_if_t< is_arrays_v< T... > > enable_for_arrays_t
    Definition array.h:589
    -
    - - - - diff --git a/docs/build/html/transforms__impl_8h.html b/docs/build/html/transforms__impl_8h.html deleted file mode 100644 index b66cda93..00000000 --- a/docs/build/html/transforms__impl_8h.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -MLX: mlx/transforms_impl.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    transforms_impl.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - - -

    -Classes

    struct  mlx::core::detail::InTracing
     
    struct  mlx::core::detail::RetainGraph
     
    - - - - - - - -

    -Namespaces

    namespace  mlx
     
    namespace  mlx::core
     
    namespace  mlx::core::detail
     
    - - - - - - - - - -

    -Functions

    std::pair< std::vector< array >, std::vector< array > > mlx::core::detail::vmap_trace (const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &inputs, const std::vector< int > &in_axes)
     
    std::vector< arraymlx::core::detail::vmap_replace (const std::vector< array > &inputs, const std::vector< array > &s_inputs, const std::vector< array > &s_outputs, const std::vector< int > &in_axes, const std::vector< int > &out_axes)
     
    void mlx::core::detail::compile_erase (std::uintptr_t fun_id)
     
    void mlx::core::detail::compile_clear_cache ()
     
    - - - -

    -Variables

    std::function< std::vector< array >(const std::vector< array > &) mlx::core::detail::compile )(const std::function< std::vector< array >(const std::vector< array > &)> &fun, std::uintptr_t fun_id, bool shapeless=false, std::vector< uint64_t > constants={})
     
    -
    - - - - diff --git a/docs/build/html/transforms__impl_8h_source.html b/docs/build/html/transforms__impl_8h_source.html deleted file mode 100644 index 6560c051..00000000 --- a/docs/build/html/transforms__impl_8h_source.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -MLX: mlx/transforms_impl.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    transforms_impl.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023-2024 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4
    -
    5namespace mlx::core::detail {
    -
    6
    -
    7std::pair<std::vector<array>, std::vector<array>> vmap_trace(
    -
    8 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    9 const std::vector<array>& inputs,
    -
    10 const std::vector<int>& in_axes);
    -
    11
    -
    12std::vector<array> vmap_replace(
    -
    13 const std::vector<array>& inputs,
    -
    14 const std::vector<array>& s_inputs,
    -
    15 const std::vector<array>& s_outputs,
    -
    16 const std::vector<int>& in_axes,
    -
    17 const std::vector<int>& out_axes);
    -
    18
    -
    19// This is not part of the general C++ API as calling with a bad id is a bad
    -
    20// idea.
    -
    21std::function<std::vector<array>(const std::vector<array>&)> compile(
    -
    22 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
    -
    23 std::uintptr_t fun_id,
    -
    24 bool shapeless = false,
    -
    25 std::vector<uint64_t> constants = {});
    -
    26
    -
    27// Erase cached compile functions
    -
    28void compile_erase(std::uintptr_t fun_id);
    -
    29
    -
    30// Clear the compiler cache causing a recompilation of all compiled functions
    -
    31// when called again.
    - -
    33
    -
    34// Create an InTracing object during tracing operations to signify to the rest
    -
    35// of the codebase that we are during tracing so evals should not throw away
    -
    36// the graph.
    -
    -
    37struct InTracing {
    -
    - -
    39 tracing_counter++;
    -
    40 }
    -
    -
    - -
    42 tracing_counter--;
    -
    43 }
    -
    -
    44
    -
    -
    45 static bool in_tracing() {
    -
    46 return tracing_counter > 0;
    -
    47 }
    -
    -
    48
    -
    49 private:
    -
    50 static int tracing_counter;
    -
    51};
    -
    -
    52
    -
    - -
    - -
    55 tracing_counter++;
    -
    56 }
    -
    -
    - -
    58 tracing_counter--;
    -
    59 }
    -
    -
    60
    -
    -
    61 static bool retain_graph() {
    -
    62 return tracing_counter > 0;
    -
    63 }
    -
    -
    64
    -
    65 private:
    -
    66 static int tracing_counter;
    -
    67};
    -
    -
    68
    -
    69} // namespace mlx::core::detail
    -
    Definition ops.h:8
    -
    std::vector< array > vmap_replace(const std::vector< array > &inputs, const std::vector< array > &s_inputs, const std::vector< array > &s_outputs, const std::vector< int > &in_axes, const std::vector< int > &out_axes)
    -
    void compile_clear_cache()
    -
    std::function< std::vector< array >(const std::vector< array > &) compile)(const std::function< std::vector< array >(const std::vector< array > &)> &fun, std::uintptr_t fun_id, bool shapeless=false, std::vector< uint64_t > constants={})
    -
    std::pair< std::vector< array >, std::vector< array > > vmap_trace(const std::function< std::vector< array >(const std::vector< array > &)> &fun, const std::vector< array > &inputs, const std::vector< int > &in_axes)
    -
    void compile_erase(std::uintptr_t fun_id)
    -
    Definition transforms_impl.h:37
    -
    InTracing()
    Definition transforms_impl.h:38
    -
    ~InTracing()
    Definition transforms_impl.h:41
    -
    static bool in_tracing()
    Definition transforms_impl.h:45
    -
    Definition transforms_impl.h:53
    -
    static bool retain_graph()
    Definition transforms_impl.h:61
    -
    ~RetainGraph()
    Definition transforms_impl.h:57
    -
    RetainGraph()
    Definition transforms_impl.h:54
    -
    - - - - diff --git a/docs/build/html/types_2bf16_8h.html b/docs/build/html/types_2bf16_8h.html deleted file mode 100644 index bb8bc95b..00000000 --- a/docs/build/html/types_2bf16_8h.html +++ /dev/null @@ -1,743 +0,0 @@ - - - - - - - -MLX: mlx/types/bf16.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    bf16.h File Reference
    -
    -
    -
    #include <algorithm>
    -#include <cmath>
    -#include <cstdint>
    -#include <vector>
    -
    -

    Go to the source code of this file.

    - - - - -

    -Classes

    struct  mlx::core::_MLX_BFloat16
     
    - - - - - -

    -Namespaces

    namespace  mlx
     
    namespace  mlx::core
     
    - - - - - - - - - - - - - - - - - -

    -Macros

    #define __MLX_BFLOAT_NAN__   0x7FC0
     
    #define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype)
     
    #define bfloat_binop_helper(__op__, __operator__, otype, itype, ctype)
     
    #define bfloat_binop(_op_, _operator_)
     
    #define bfloat_compop(__op__, __operator__)
     
    #define bfloat_inplace_op(__op__, __operator__)
     
    #define bfloat_bitop(__op__, __operator__)
     
    #define bfloat_inplace_bitop(__op__, __operator__)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    float mlx::core::operator+ (_MLX_BFloat16 lhs, float rhs)
     
    float mlx::core::operator+ (float lhs, _MLX_BFloat16 rhs)
     
    double mlx::core::operator+ (_MLX_BFloat16 lhs, double rhs)
     
    double mlx::core::operator+ (double lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs, bool rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (bool lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs, int32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (int32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs, uint32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (uint32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs, int64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (int64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (_MLX_BFloat16 lhs, uint64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator+ (uint64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    float mlx::core::operator- (_MLX_BFloat16 lhs, float rhs)
     
    float mlx::core::operator- (float lhs, _MLX_BFloat16 rhs)
     
    double mlx::core::operator- (_MLX_BFloat16 lhs, double rhs)
     
    double mlx::core::operator- (double lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs, bool rhs)
     
    _MLX_BFloat16 mlx::core::operator- (bool lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs, int32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator- (int32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs, uint32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator- (uint32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs, int64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator- (int64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs, uint64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator- (uint64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    float mlx::core::operator* (_MLX_BFloat16 lhs, float rhs)
     
    float mlx::core::operator* (float lhs, _MLX_BFloat16 rhs)
     
    double mlx::core::operator* (_MLX_BFloat16 lhs, double rhs)
     
    double mlx::core::operator* (double lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs, bool rhs)
     
    _MLX_BFloat16 mlx::core::operator* (bool lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs, int32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator* (int32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs, uint32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator* (uint32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs, int64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator* (int64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator* (_MLX_BFloat16 lhs, uint64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator* (uint64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    float mlx::core::operator/ (_MLX_BFloat16 lhs, float rhs)
     
    float mlx::core::operator/ (float lhs, _MLX_BFloat16 rhs)
     
    double mlx::core::operator/ (_MLX_BFloat16 lhs, double rhs)
     
    double mlx::core::operator/ (double lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs, bool rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (bool lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs, int32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (int32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs, uint32_t rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (uint32_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs, int64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (int64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (_MLX_BFloat16 lhs, uint64_t rhs)
     
    _MLX_BFloat16 mlx::core::operator/ (uint64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, float rhs)
     
    bool mlx::core::operator> (float lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, double rhs)
     
    bool mlx::core::operator> (double lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, int32_t rhs)
     
    bool mlx::core::operator> (int32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, uint32_t rhs)
     
    bool mlx::core::operator> (uint32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, int64_t rhs)
     
    bool mlx::core::operator> (int64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator> (_MLX_BFloat16 lhs, uint64_t rhs)
     
    bool mlx::core::operator> (uint64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, float rhs)
     
    bool mlx::core::operator< (float lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, double rhs)
     
    bool mlx::core::operator< (double lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, int32_t rhs)
     
    bool mlx::core::operator< (int32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, uint32_t rhs)
     
    bool mlx::core::operator< (uint32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, int64_t rhs)
     
    bool mlx::core::operator< (int64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator< (_MLX_BFloat16 lhs, uint64_t rhs)
     
    bool mlx::core::operator< (uint64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, float rhs)
     
    bool mlx::core::operator>= (float lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, double rhs)
     
    bool mlx::core::operator>= (double lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, int32_t rhs)
     
    bool mlx::core::operator>= (int32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, uint32_t rhs)
     
    bool mlx::core::operator>= (uint32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, int64_t rhs)
     
    bool mlx::core::operator>= (int64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator>= (_MLX_BFloat16 lhs, uint64_t rhs)
     
    bool mlx::core::operator>= (uint64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, float rhs)
     
    bool mlx::core::operator<= (float lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, double rhs)
     
    bool mlx::core::operator<= (double lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, int32_t rhs)
     
    bool mlx::core::operator<= (int32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, uint32_t rhs)
     
    bool mlx::core::operator<= (uint32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, int64_t rhs)
     
    bool mlx::core::operator<= (int64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator<= (_MLX_BFloat16 lhs, uint64_t rhs)
     
    bool mlx::core::operator<= (uint64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, float rhs)
     
    bool mlx::core::operator== (float lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, double rhs)
     
    bool mlx::core::operator== (double lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, int32_t rhs)
     
    bool mlx::core::operator== (int32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, uint32_t rhs)
     
    bool mlx::core::operator== (uint32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, int64_t rhs)
     
    bool mlx::core::operator== (int64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator== (_MLX_BFloat16 lhs, uint64_t rhs)
     
    bool mlx::core::operator== (uint64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, float rhs)
     
    bool mlx::core::operator!= (float lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, double rhs)
     
    bool mlx::core::operator!= (double lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, int32_t rhs)
     
    bool mlx::core::operator!= (int32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, uint32_t rhs)
     
    bool mlx::core::operator!= (uint32_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, int64_t rhs)
     
    bool mlx::core::operator!= (int64_t lhs, _MLX_BFloat16 rhs)
     
    bool mlx::core::operator!= (_MLX_BFloat16 lhs, uint64_t rhs)
     
    bool mlx::core::operator!= (uint64_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator- (_MLX_BFloat16 lhs)
     
    _MLX_BFloat16mlx::core::operator+= (_MLX_BFloat16 &lhs, const float &rhs)
     
    float & mlx::core::operator+= (float &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator-= (_MLX_BFloat16 &lhs, const float &rhs)
     
    float & mlx::core::operator-= (float &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator*= (_MLX_BFloat16 &lhs, const float &rhs)
     
    float & mlx::core::operator*= (float &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator/= (_MLX_BFloat16 &lhs, const float &rhs)
     
    float & mlx::core::operator/= (float &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator| (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator| (_MLX_BFloat16 lhs, uint16_t rhs)
     
    _MLX_BFloat16 mlx::core::operator| (uint16_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator& (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator& (_MLX_BFloat16 lhs, uint16_t rhs)
     
    _MLX_BFloat16 mlx::core::operator& (uint16_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator^ (_MLX_BFloat16 lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16 mlx::core::operator^ (_MLX_BFloat16 lhs, uint16_t rhs)
     
    _MLX_BFloat16 mlx::core::operator^ (uint16_t lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator|= (_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator|= (_MLX_BFloat16 &lhs, uint16_t rhs)
     
    _MLX_BFloat16mlx::core::operator&= (_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator&= (_MLX_BFloat16 &lhs, uint16_t rhs)
     
    _MLX_BFloat16mlx::core::operator^= (_MLX_BFloat16 &lhs, _MLX_BFloat16 rhs)
     
    _MLX_BFloat16mlx::core::operator^= (_MLX_BFloat16 &lhs, uint16_t rhs)
     
    -

    Macro Definition Documentation

    - -

    ◆ __MLX_BFLOAT_NAN__

    - -
    -
    - - - - -
    #define __MLX_BFLOAT_NAN__   0x7FC0
    -
    - -
    -
    - -

    ◆ bfloat_binop

    - -
    -
    - - - - - - - - - - - -
    #define bfloat_binop( _op_,
    _operator_ )
    -
    -Value:
    -
    _op_, _operator_, _MLX_BFloat16, _MLX_BFloat16, _MLX_BFloat16, float); \
    -
    bfloat_binop_helper(_op_, _operator_, float, float, float); \
    -
    bfloat_binop_helper(_op_, _operator_, double, double, double); \
    -
    bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, bool, float); \
    -
    bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int32_t, float); \
    -
    bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint32_t, float); \
    -
    bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int64_t, float); \
    -
    bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint64_t, float);
    -
    Definition bf16.h:54
    -
    #define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype)
    Definition bf16.h:71
    -
    -
    -
    - -

    ◆ bfloat_binop_base

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define bfloat_binop_base( __op__,
    __operator__,
    otype,
    atype,
    btype,
    ctype )
    -
    -Value:
    inline otype __operator__(atype lhs, btype rhs) { \
    -
    return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
    -
    }
    -
    -
    -
    - -

    ◆ bfloat_binop_helper

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #define bfloat_binop_helper( __op__,
    __operator__,
    otype,
    itype,
    ctype )
    -
    -Value:
    inline otype __operator__(_MLX_BFloat16 lhs, itype rhs) { \
    -
    return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
    -
    } \
    -
    inline otype __operator__(itype lhs, _MLX_BFloat16 rhs) { \
    -
    return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
    -
    }
    -
    -
    -
    - -

    ◆ bfloat_bitop

    - -
    -
    - - - - - - - - - - - -
    #define bfloat_bitop( __op__,
    __operator__ )
    -
    -Value:
    inline _MLX_BFloat16 __operator__(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs) { \
    - -
    out.bits_ = lhs.bits_ __op__ rhs.bits_; \
    -
    return out; \
    -
    } \
    -
    inline _MLX_BFloat16 __operator__(_MLX_BFloat16 lhs, uint16_t rhs) { \
    - -
    out.bits_ = lhs.bits_ __op__ rhs; \
    -
    return out; \
    -
    } \
    -
    inline _MLX_BFloat16 __operator__(uint16_t lhs, _MLX_BFloat16 rhs) { \
    - -
    out.bits_ = lhs __op__ rhs.bits_; \
    -
    return out; \
    -
    }
    -
    uint16_t bits_
    Definition bf16.h:57
    -
    -
    -
    - -

    ◆ bfloat_compop

    - -
    -
    - - - - - - - - - - - -
    #define bfloat_compop( __op__,
    __operator__ )
    -
    -Value:
    -
    __op__, __operator__, bool, _MLX_BFloat16, _MLX_BFloat16, float); \
    -
    bfloat_binop_helper(__op__, __operator__, bool, float, float); \
    -
    bfloat_binop_helper(__op__, __operator__, bool, double, double); \
    -
    bfloat_binop_helper(__op__, __operator__, bool, int32_t, float); \
    -
    bfloat_binop_helper(__op__, __operator__, bool, uint32_t, float); \
    -
    bfloat_binop_helper(__op__, __operator__, bool, int64_t, float); \
    -
    bfloat_binop_helper(__op__, __operator__, bool, uint64_t, float);
    -
    -
    -
    - -

    ◆ bfloat_inplace_bitop

    - -
    -
    - - - - - - - - - - - -
    #define bfloat_inplace_bitop( __op__,
    __operator__ )
    -
    -Value:
    inline _MLX_BFloat16& __operator__(_MLX_BFloat16& lhs, _MLX_BFloat16 rhs) { \
    -
    lhs.bits_ = lhs.bits_ __op__ rhs.bits_; \
    -
    return lhs; \
    -
    } \
    -
    inline _MLX_BFloat16& __operator__(_MLX_BFloat16& lhs, uint16_t rhs) { \
    -
    lhs.bits_ = lhs.bits_ __op__ rhs; \
    -
    return lhs; \
    -
    }
    -
    -
    -
    - -

    ◆ bfloat_inplace_op

    - -
    -
    - - - - - - - - - - - -
    #define bfloat_inplace_op( __op__,
    __operator__ )
    -
    -Value:
    inline _MLX_BFloat16& __operator__(_MLX_BFloat16& lhs, const float& rhs) { \
    -
    lhs = lhs __op__ rhs; \
    -
    return lhs; \
    -
    } \
    -
    inline float& __operator__(float& lhs, _MLX_BFloat16 rhs) { \
    -
    lhs = lhs __op__ rhs; \
    -
    return lhs; \
    -
    }
    -
    -
    -
    -

    Variable Documentation

    - -

    ◆ f

    - -
    -
    - - - - -
    float f
    -
    - -
    -
    - -

    ◆ u

    - -
    -
    - - - - -
    uint32_t u
    -
    - -
    -
    -
    - - - - diff --git a/docs/build/html/types_2bf16_8h_source.html b/docs/build/html/types_2bf16_8h_source.html deleted file mode 100644 index 7206547f..00000000 --- a/docs/build/html/types_2bf16_8h_source.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - -MLX: mlx/types/bf16.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    bf16.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4
    -
    5#include <algorithm>
    -
    6#include <cmath>
    -
    7#include <cstdint>
    -
    8#include <vector>
    -
    9
    -
    10#define __MLX_BFLOAT_NAN__ 0x7FC0
    -
    11
    -
    12namespace mlx::core {
    -
    13
    -
    14namespace {
    -
    15union float_bits_bf16 {
    -
    16 float f;
    -
    17 uint32_t u;
    -
    18};
    -
    19} // namespace
    -
    20
    -
    - -
    22 uint16_t bits_;
    -
    23
    -
    24 // Default constructor
    -
    25 _MLX_BFloat16() = default;
    -
    26
    -
    27 // Default copy constructor
    -
    28 _MLX_BFloat16(_MLX_BFloat16 const&) = default;
    -
    29
    -
    30 // Appease std::vector<bool> for being special
    -
    -
    31 _MLX_BFloat16& operator=(std::vector<bool>::reference x) {
    -
    32 bits_ = x;
    -
    33 return *this;
    -
    34 }
    -
    -
    35
    -
    -
    36 _MLX_BFloat16& operator=(const float& x) {
    -
    37 return (*this = _MLX_BFloat16(x));
    -
    38 }
    -
    -
    39
    -
    40 // From float32
    -
    -
    41 _MLX_BFloat16(const float& x) {
    -
    42 if (std::isnan(x)) {
    - -
    44 } else {
    -
    45 // Union
    -
    46 float_bits_bf16 in;
    -
    47
    -
    48 // Take bits
    -
    49 in.f = x;
    -
    50
    -
    51 // Round to nearest even
    -
    52 in.u += (in.u >> 16 & 1) + uint32_t(0x7FFF);
    -
    53
    -
    54 // Take upper 16 bits
    -
    55 bits_ = in.u >> 16;
    -
    56 }
    -
    57 }
    -
    -
    58
    -
    59 // To float32
    -
    -
    60 operator float() const {
    -
    61 // Union
    -
    62 float_bits_bf16 out;
    -
    63
    -
    64 // Upper 16 bits are the data and lower 16 bits are 0s
    -
    65 out.u = ((uint32_t)bits_) << 16;
    -
    66
    -
    67 return out.f;
    -
    68 }
    -
    -
    69};
    -
    -
    70
    -
    -
    71#define bfloat_binop_base(__op__, __operator__, otype, atype, btype, ctype) \
    -
    72 inline otype __operator__(atype lhs, btype rhs) { \
    -
    73 return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
    -
    74 }
    -
    -
    75
    -
    -
    76#define bfloat_binop_helper(__op__, __operator__, otype, itype, ctype) \
    -
    77 inline otype __operator__(_MLX_BFloat16 lhs, itype rhs) { \
    -
    78 return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
    -
    79 } \
    -
    80 inline otype __operator__(itype lhs, _MLX_BFloat16 rhs) { \
    -
    81 return static_cast<ctype>(lhs) __op__ static_cast<ctype>(rhs); \
    -
    82 }
    -
    -
    83
    -
    84// Operators
    -
    -
    85#define bfloat_binop(_op_, _operator_) \
    -
    86 bfloat_binop_base( \
    -
    87 _op_, _operator_, _MLX_BFloat16, _MLX_BFloat16, _MLX_BFloat16, float); \
    -
    88 bfloat_binop_helper(_op_, _operator_, float, float, float); \
    -
    89 bfloat_binop_helper(_op_, _operator_, double, double, double); \
    -
    90 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, bool, float); \
    -
    91 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int32_t, float); \
    -
    92 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint32_t, float); \
    -
    93 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, int64_t, float); \
    -
    94 bfloat_binop_helper(_op_, _operator_, _MLX_BFloat16, uint64_t, float);
    -
    -
    95
    -
    96bfloat_binop(+, operator+);
    -
    97bfloat_binop(-, operator-);
    -
    98bfloat_binop(*, operator*);
    -
    99bfloat_binop(/, operator/);
    -
    100
    -
    101#undef bfloat_binop
    -
    102
    -
    103// Comparison ops
    -
    -
    104#define bfloat_compop(__op__, __operator__) \
    -
    105 bfloat_binop_base( \
    -
    106 __op__, __operator__, bool, _MLX_BFloat16, _MLX_BFloat16, float); \
    -
    107 bfloat_binop_helper(__op__, __operator__, bool, float, float); \
    -
    108 bfloat_binop_helper(__op__, __operator__, bool, double, double); \
    -
    109 bfloat_binop_helper(__op__, __operator__, bool, int32_t, float); \
    -
    110 bfloat_binop_helper(__op__, __operator__, bool, uint32_t, float); \
    -
    111 bfloat_binop_helper(__op__, __operator__, bool, int64_t, float); \
    -
    112 bfloat_binop_helper(__op__, __operator__, bool, uint64_t, float);
    -
    -
    113
    -
    114bfloat_compop(>, operator>);
    -
    115bfloat_compop(<, operator<);
    -
    116bfloat_compop(>=, operator>=);
    -
    117bfloat_compop(<=, operator<=);
    -
    118bfloat_compop(==, operator==);
    -
    119bfloat_compop(!=, operator!=);
    -
    120
    -
    121#undef bfloat_compop
    -
    122
    -
    123// Negative
    -
    - -
    125 return -static_cast<float>(lhs);
    -
    126}
    -
    -
    127
    -
    128// Inplace ops
    -
    -
    129#define bfloat_inplace_op(__op__, __operator__) \
    -
    130 inline _MLX_BFloat16& __operator__(_MLX_BFloat16& lhs, const float& rhs) { \
    -
    131 lhs = lhs __op__ rhs; \
    -
    132 return lhs; \
    -
    133 } \
    -
    134 inline float& __operator__(float& lhs, _MLX_BFloat16 rhs) { \
    -
    135 lhs = lhs __op__ rhs; \
    -
    136 return lhs; \
    -
    137 }
    -
    -
    138
    -
    139bfloat_inplace_op(+, operator+=);
    -
    140bfloat_inplace_op(-, operator-=);
    -
    141bfloat_inplace_op(*, operator*=);
    -
    142bfloat_inplace_op(/, operator/=);
    -
    143
    -
    144#undef bfloat_inplace_op
    -
    145
    -
    146// Bitwise ops
    -
    147
    -
    -
    148#define bfloat_bitop(__op__, __operator__) \
    -
    149 inline _MLX_BFloat16 __operator__(_MLX_BFloat16 lhs, _MLX_BFloat16 rhs) { \
    -
    150 _MLX_BFloat16 out; \
    -
    151 out.bits_ = lhs.bits_ __op__ rhs.bits_; \
    -
    152 return out; \
    -
    153 } \
    -
    154 inline _MLX_BFloat16 __operator__(_MLX_BFloat16 lhs, uint16_t rhs) { \
    -
    155 _MLX_BFloat16 out; \
    -
    156 out.bits_ = lhs.bits_ __op__ rhs; \
    -
    157 return out; \
    -
    158 } \
    -
    159 inline _MLX_BFloat16 __operator__(uint16_t lhs, _MLX_BFloat16 rhs) { \
    -
    160 _MLX_BFloat16 out; \
    -
    161 out.bits_ = lhs __op__ rhs.bits_; \
    -
    162 return out; \
    -
    163 }
    -
    -
    164
    -
    165bfloat_bitop(|, operator|);
    -
    166bfloat_bitop(&, operator&);
    -
    167bfloat_bitop(^, operator^);
    -
    168
    -
    169#undef bfloat_bitop
    -
    170
    -
    -
    171#define bfloat_inplace_bitop(__op__, __operator__) \
    -
    172 inline _MLX_BFloat16& __operator__(_MLX_BFloat16& lhs, _MLX_BFloat16 rhs) { \
    -
    173 lhs.bits_ = lhs.bits_ __op__ rhs.bits_; \
    -
    174 return lhs; \
    -
    175 } \
    -
    176 inline _MLX_BFloat16& __operator__(_MLX_BFloat16& lhs, uint16_t rhs) { \
    -
    177 lhs.bits_ = lhs.bits_ __op__ rhs; \
    -
    178 return lhs; \
    -
    179 }
    -
    -
    180
    -
    181bfloat_inplace_bitop(|, operator|=);
    -
    182bfloat_inplace_bitop(&, operator&=);
    -
    183bfloat_inplace_bitop(^, operator^=);
    -
    184
    -
    185#undef bfloat_inplace_bitop
    -
    186
    -
    187} // namespace mlx::core
    -
    #define bfloat_compop(__op__, __operator__)
    Definition bf16.h:173
    -
    #define bfloat_inplace_op(itype)
    Definition bf16.h:214
    -
    #define bfloat_binop(_op_, _operator_)
    Definition bf16.h:156
    -
    array operator-(const array &a)
    -
    Definition allocator.h:7
    -
    Definition bf16.h:21
    -
    _MLX_BFloat16 & operator=(std::vector< bool >::reference x)
    Definition bf16.h:31
    - -
    _MLX_BFloat16 & operator=(const float &x)
    Definition bf16.h:36
    -
    uint16_t bits_
    Definition bf16.h:22
    -
    _MLX_BFloat16(_MLX_BFloat16 const &)=default
    -
    _MLX_BFloat16(const float &x)
    Definition bf16.h:41
    -
    #define __MLX_BFLOAT_NAN__
    Definition bf16.h:10
    -
    uint32_t u
    Definition bf16.h:17
    -
    #define bfloat_bitop(__op__, __operator__)
    Definition bf16.h:148
    -
    #define bfloat_inplace_bitop(__op__, __operator__)
    Definition bf16.h:171
    -
    float f
    Definition bf16.h:16
    -
    - - - - diff --git a/docs/build/html/types_2complex_8h.html b/docs/build/html/types_2complex_8h.html deleted file mode 100644 index 6fc69a1a..00000000 --- a/docs/build/html/types_2complex_8h.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - -MLX: mlx/types/complex.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    complex.h File Reference
    -
    -
    -
    #include <complex>
    -#include "mlx/types/half_types.h"
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Classes

    struct  mlx::core::complex128_t
     
    struct  mlx::core::complex64_t
     
    - - - - - -

    -Namespaces

    namespace  mlx
     
    namespace  mlx::core
     
    - - - - - -

    -Macros

    #define complex_binop_helper(_op_, _operator_, itype)
     
    #define complex_binop(_op_, _operator_)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    bool mlx::core::operator>= (const complex64_t &a, const complex64_t &b)
     
    bool mlx::core::operator> (const complex64_t &a, const complex64_t &b)
     
    complex64_t mlx::core::operator% (complex64_t a, complex64_t b)
     
    bool mlx::core::operator<= (const complex64_t &a, const complex64_t &b)
     
    bool mlx::core::operator< (const complex64_t &a, const complex64_t &b)
     
    complex64_t mlx::core::operator- (const complex64_t &v)
     
    complex64_t mlx::core::operator+ (const std::complex< float > &x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, const std::complex< float > &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (bool x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, bool y)
     
    complex64_t mlx::core::operator+ (uint32_t x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, uint32_t y)
     
    complex64_t mlx::core::operator+ (uint64_t x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, uint64_t y)
     
    complex64_t mlx::core::operator+ (int32_t x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, int32_t y)
     
    complex64_t mlx::core::operator+ (int64_t x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, int64_t y)
     
    complex64_t mlx::core::operator+ (float16_t x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, float16_t y)
     
    complex64_t mlx::core::operator+ (bfloat16_t x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, bfloat16_t y)
     
    complex64_t mlx::core::operator+ (float x, const complex64_t &y)
     
    complex64_t mlx::core::operator+ (const complex64_t &x, float y)
     
    - - - - - - - -

    -Variables

    template<typename T >
    constexpr bool mlx::core::can_convert_to_complex128
     
    template<typename T >
    constexpr bool mlx::core::can_convert_to_complex64
     
    -

    Macro Definition Documentation

    - -

    ◆ complex_binop

    - -
    -
    - - - - - - - - - - - -
    #define complex_binop( _op_,
    _operator_ )
    -
    -Value:
    inline complex64_t _operator_(const std::complex<float>& x, const complex64_t& y) { \
    -
    return x _op_ static_cast<std::complex<float>>(y); \
    -
    } \
    -
    inline complex64_t _operator_(const complex64_t& x, const std::complex<float>& y) { \
    -
    return static_cast<std::complex<float>>(x) _op_ y; \
    -
    } \
    -
    inline complex64_t _operator_(const complex64_t& x, const complex64_t& y) { \
    -
    return static_cast<std::complex<float>>(x) \
    -
    _op_ static_cast<std::complex<float>>(y); \
    -
    } \
    -
    complex_binop_helper(_op_, _operator_, bool) \
    -
    complex_binop_helper(_op_, _operator_, uint32_t) \
    -
    complex_binop_helper(_op_, _operator_, uint64_t) \
    -
    complex_binop_helper(_op_, _operator_, int32_t) \
    -
    complex_binop_helper(_op_, _operator_, int64_t) \
    -
    complex_binop_helper(_op_, _operator_, float16_t) \
    -
    complex_binop_helper(_op_, _operator_, bfloat16_t) \
    -
    complex_binop_helper(_op_, _operator_, float)
    -
    half float16_t
    Definition utils.h:10
    -
    Definition bf16.h:54
    -
    Definition complex.h:20
    -
    -
    -
    - -

    ◆ complex_binop_helper

    - -
    -
    - - - - - - - - - - - - - - - - -
    #define complex_binop_helper( _op_,
    _operator_,
    itype )
    -
    -Value:
    inline complex64_t _operator_(itype x, const complex64_t& y) { \
    -
    return static_cast<complex64_t>(x) _op_ y; \
    -
    } \
    -
    inline complex64_t _operator_(const complex64_t& x, itype y) { \
    -
    return x _op_ static_cast<complex64_t>(y); \
    -
    }
    -
    -
    -
    -
    - - - - diff --git a/docs/build/html/types_2complex_8h_source.html b/docs/build/html/types_2complex_8h_source.html deleted file mode 100644 index 1ada8fbb..00000000 --- a/docs/build/html/types_2complex_8h_source.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - -MLX: mlx/types/complex.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    complex.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4#include <complex>
    - -
    6
    -
    7namespace mlx::core {
    -
    8
    -
    9struct complex64_t;
    -
    10struct complex128_t;
    -
    11
    -
    12template <typename T>
    -
    13inline constexpr bool can_convert_to_complex128 =
    -
    14 !std::is_same_v<T, complex128_t> && std::is_convertible_v<T, double>;
    -
    15
    -
    -
    16struct complex128_t : public std::complex<double> {
    -
    17 complex128_t(double v, double u) : std::complex<double>(v, u) {};
    -
    18 complex128_t(std::complex<double> v) : std::complex<double>(v) {};
    -
    19
    -
    20 template <
    -
    21 typename T,
    -
    22 typename = typename std::enable_if<can_convert_to_complex128<T>>::type>
    -
    23 complex128_t(T x) : std::complex<double>(x){};
    -
    24
    -
    -
    25 operator float() const {
    -
    26 return real();
    -
    27 };
    -
    -
    28};
    -
    -
    29
    -
    30template <typename T>
    -
    31inline constexpr bool can_convert_to_complex64 =
    -
    32 !std::is_same_v<T, complex64_t> && std::is_convertible_v<T, float>;
    -
    33
    -
    -
    34struct complex64_t : public std::complex<float> {
    -
    35 complex64_t(float v, float u) : std::complex<float>(v, u) {};
    -
    36 complex64_t(std::complex<float> v) : std::complex<float>(v) {};
    -
    37
    -
    38 template <
    -
    39 typename T,
    -
    40 typename = typename std::enable_if<can_convert_to_complex64<T>>::type>
    -
    41 complex64_t(T x) : std::complex<float>(x){};
    -
    42
    -
    -
    43 operator float() const {
    -
    44 return real();
    -
    45 };
    -
    -
    46};
    -
    -
    47
    -
    -
    48inline bool operator>=(const complex64_t& a, const complex64_t& b) {
    -
    49 return (a.real() > b.real()) ||
    -
    50 (a.real() == b.real() && a.imag() >= b.imag());
    -
    51}
    -
    -
    52
    -
    -
    53inline bool operator>(const complex64_t& a, const complex64_t& b) {
    -
    54 return (a.real() > b.real()) || (a.real() == b.real() && a.imag() > b.imag());
    -
    55}
    -
    -
    56
    -
    - -
    58 auto real = a.real() - (b.real() * static_cast<int64_t>(a.real() / b.real()));
    -
    59 auto imag = a.imag() - (b.imag() * static_cast<int64_t>(a.imag() / b.imag()));
    -
    60 if (real != 0 && ((real < 0) != (b.real() < 0)))
    -
    61 real += b.real();
    -
    62 if (imag != 0 && ((imag < 0) != (b.imag() < 0)))
    -
    63 imag += b.imag();
    -
    64 return {real, imag};
    -
    65}
    -
    -
    66
    -
    -
    67inline bool operator<=(const complex64_t& a, const complex64_t& b) {
    -
    68 return operator>=(b, a);
    -
    69}
    -
    -
    70
    -
    -
    71inline bool operator<(const complex64_t& a, const complex64_t& b) {
    -
    72 return operator>(b, a);
    -
    73}
    -
    -
    74
    -
    - -
    76 return -static_cast<std::complex<float>>(v);
    -
    77}
    -
    -
    78
    -
    79// clang-format off
    -
    -
    80#define complex_binop_helper(_op_, _operator_, itype) \
    -
    81 inline complex64_t _operator_(itype x, const complex64_t& y) { \
    -
    82 return static_cast<complex64_t>(x) _op_ y; \
    -
    83 } \
    -
    84 inline complex64_t _operator_(const complex64_t& x, itype y) { \
    -
    85 return x _op_ static_cast<complex64_t>(y); \
    -
    86 }
    -
    -
    87
    -
    -
    88#define complex_binop(_op_, _operator_) \
    -
    89 inline complex64_t _operator_(const std::complex<float>& x, const complex64_t& y) { \
    -
    90 return x _op_ static_cast<std::complex<float>>(y); \
    -
    91 } \
    -
    92 inline complex64_t _operator_(const complex64_t& x, const std::complex<float>& y) { \
    -
    93 return static_cast<std::complex<float>>(x) _op_ y; \
    -
    94 } \
    -
    95 inline complex64_t _operator_(const complex64_t& x, const complex64_t& y) { \
    -
    96 return static_cast<std::complex<float>>(x) \
    -
    97 _op_ static_cast<std::complex<float>>(y); \
    -
    98 } \
    -
    99 complex_binop_helper(_op_, _operator_, bool) \
    -
    100 complex_binop_helper(_op_, _operator_, uint32_t) \
    -
    101 complex_binop_helper(_op_, _operator_, uint64_t) \
    -
    102 complex_binop_helper(_op_, _operator_, int32_t) \
    -
    103 complex_binop_helper(_op_, _operator_, int64_t) \
    -
    104 complex_binop_helper(_op_, _operator_, float16_t) \
    -
    105 complex_binop_helper(_op_, _operator_, bfloat16_t) \
    -
    106 complex_binop_helper(_op_, _operator_, float)
    -
    -
    107// clang-format on
    -
    108
    -
    109complex_binop(+, operator+)
    -
    110
    -
    111} // namespace mlx::core
    -
    array std(const array &a, bool keepdims, int ddof=0, StreamOrDevice s={})
    Computes the standard deviation of the elements of an array.
    -
    array operator>=(const array &a, const array &b)
    Definition ops.h:347
    -
    array operator<=(const array &a, const array &b)
    Definition ops.h:375
    -
    array operator>(const array &a, const array &b)
    Definition ops.h:333
    -
    array operator%(const array &a, const array &b)
    -
    array operator-(const array &a)
    -
    array operator<(const array &a, const array &b)
    Definition ops.h:361
    - -
    Definition allocator.h:7
    -
    constexpr bool can_convert_to_complex64
    Definition complex.h:31
    -
    constexpr bool can_convert_to_complex128
    Definition complex.h:13
    -
    Definition complex.h:20
    -
    Definition complex.h:16
    -
    complex128_t(T x)
    Definition complex.h:23
    -
    complex128_t(double v, double u)
    Definition complex.h:17
    -
    complex128_t(std::complex< double > v)
    Definition complex.h:18
    -
    Definition complex.h:34
    -
    complex64_t(T x)
    Definition complex.h:41
    -
    complex64_t(float v, float u)
    Definition complex.h:35
    -
    complex64_t(std::complex< float > v)
    Definition complex.h:36
    -
    uint32_t u
    Definition bf16.h:17
    -
    #define complex_binop(_op_, _operator_)
    Definition complex.h:88
    -
    - - - - diff --git a/docs/build/html/unary__ops_8h.html b/docs/build/html/unary__ops_8h.html deleted file mode 100644 index 2828379b..00000000 --- a/docs/build/html/unary__ops_8h.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/unary_ops.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    unary_ops.h File Reference
    -
    -
    -
    #include <metal_integer>
    -#include <metal_math>
    -#include "mlx/backend/metal/kernels/erf.h"
    -#include "mlx/backend/metal/kernels/expm1f.h"
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Classes

    struct  Abs
     
    struct  ArcCos
     
    struct  ArcCosh
     
    struct  ArcSin
     
    struct  ArcSinh
     
    struct  ArcTan
     
    struct  ArcTanh
     
    struct  Ceil
     
    struct  Cos
     
    struct  Cosh
     
    struct  Conjugate
     
    struct  Erf
     
    struct  ErfInv
     
    struct  Exp
     
    struct  Expm1
     
    struct  Floor
     
    struct  Log
     
    struct  Log2
     
    struct  Log10
     
    struct  Log1p
     
    struct  LogicalNot
     
    struct  Negative
     
    struct  Round
     
    struct  Sigmoid
     
    struct  Sign
     
    struct  Sin
     
    struct  Sinh
     
    struct  Square
     
    struct  Sqrt
     
    struct  Rsqrt
     
    struct  Tan
     
    struct  Tanh
     
    -
    - - - - diff --git a/docs/build/html/unary__ops_8h_source.html b/docs/build/html/unary__ops_8h_source.html deleted file mode 100644 index 34f35d43..00000000 --- a/docs/build/html/unary__ops_8h_source.html +++ /dev/null @@ -1,818 +0,0 @@ - - - - - - - -MLX: mlx/backend/metal/kernels/unary_ops.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    unary_ops.h
    -
    -
    -Go to the documentation of this file.
    1// Copyright © 2023-2024 Apple Inc.
    -
    2
    -
    3#pragma once
    -
    4
    -
    5#include <metal_integer>
    -
    6#include <metal_math>
    -
    7
    - - -
    10
    -
    11namespace {
    -
    12constant float inf = metal::numeric_limits<float>::infinity();
    -
    13}
    -
    14
    -
    -
    15struct Abs {
    -
    16 template <typename T>
    -
    -
    17 T operator()(T x) {
    -
    18 return metal::abs(x);
    -
    19 };
    -
    -
    20 template <>
    -
    -
    21 uint8_t operator()(uint8_t x) {
    -
    22 return x;
    -
    23 };
    -
    -
    24 template <>
    -
    -
    25 uint16_t operator()(uint16_t x) {
    -
    26 return x;
    -
    27 };
    -
    -
    28 template <>
    -
    -
    29 uint32_t operator()(uint32_t x) {
    -
    30 return x;
    -
    31 };
    -
    -
    32 template <>
    -
    -
    33 uint64_t operator()(uint64_t x) {
    -
    34 return x;
    -
    35 };
    -
    -
    36 template <>
    -
    -
    37 bool operator()(bool x) {
    -
    38 return x;
    -
    39 };
    -
    -
    40 template <>
    -
    - -
    42 return {metal::precise::sqrt(x.real * x.real + x.imag * x.imag), 0};
    -
    43 };
    -
    -
    44};
    -
    -
    45
    -
    -
    46struct ArcCos {
    -
    47 template <typename T>
    -
    -
    48 T operator()(T x) {
    -
    49 return metal::precise::acos(x);
    -
    50 };
    -
    -
    51};
    -
    -
    52
    -
    -
    53struct ArcCosh {
    -
    54 template <typename T>
    -
    -
    55 T operator()(T x) {
    -
    56 return metal::precise::acosh(x);
    -
    57 };
    -
    -
    58};
    -
    -
    59
    -
    -
    60struct ArcSin {
    -
    61 template <typename T>
    -
    -
    62 T operator()(T x) {
    -
    63 return metal::precise::asin(x);
    -
    64 };
    -
    -
    65};
    -
    -
    66
    -
    -
    67struct ArcSinh {
    -
    68 template <typename T>
    -
    -
    69 T operator()(T x) {
    -
    70 return metal::precise::asinh(x);
    -
    71 };
    -
    -
    72};
    -
    -
    73
    -
    -
    74struct ArcTan {
    -
    75 template <typename T>
    -
    -
    76 T operator()(T x) {
    -
    77 return metal::precise::atan(x);
    -
    78 };
    -
    -
    79};
    -
    -
    80
    -
    -
    81struct ArcTanh {
    -
    82 template <typename T>
    -
    -
    83 T operator()(T x) {
    -
    84 return metal::precise::atanh(x);
    -
    85 };
    -
    -
    86};
    -
    -
    87
    -
    -
    88struct Ceil {
    -
    89 template <typename T>
    -
    -
    90 T operator()(T x) {
    -
    91 return metal::ceil(x);
    -
    92 };
    -
    -
    93 template <>
    -
    -
    94 int8_t operator()(int8_t x) {
    -
    95 return x;
    -
    96 };
    -
    -
    97 template <>
    -
    -
    98 int16_t operator()(int16_t x) {
    -
    99 return x;
    -
    100 };
    -
    -
    101 template <>
    -
    -
    102 int32_t operator()(int32_t x) {
    -
    103 return x;
    -
    104 };
    -
    -
    105 template <>
    -
    -
    106 int64_t operator()(int64_t x) {
    -
    107 return x;
    -
    108 };
    -
    -
    109 template <>
    -
    -
    110 uint8_t operator()(uint8_t x) {
    -
    111 return x;
    -
    112 };
    -
    -
    113 template <>
    -
    -
    114 uint16_t operator()(uint16_t x) {
    -
    115 return x;
    -
    116 };
    -
    -
    117 template <>
    -
    -
    118 uint32_t operator()(uint32_t x) {
    -
    119 return x;
    -
    120 };
    -
    -
    121 template <>
    -
    -
    122 uint64_t operator()(uint64_t x) {
    -
    123 return x;
    -
    124 };
    -
    -
    125 template <>
    -
    -
    126 bool operator()(bool x) {
    -
    127 return x;
    -
    128 };
    -
    -
    129};
    -
    -
    130
    -
    -
    131struct Cos {
    -
    132 template <typename T>
    -
    -
    133 T operator()(T x) {
    -
    134 return metal::precise::cos(x);
    -
    135 };
    -
    -
    136
    -
    137 template <>
    - -
    143};
    -
    -
    144
    -
    -
    145struct Cosh {
    -
    146 template <typename T>
    -
    -
    147 T operator()(T x) {
    -
    148 return metal::precise::cosh(x);
    -
    149 };
    -
    -
    150
    -
    151 template <>
    - -
    157};
    -
    -
    158
    -
    -
    159struct Conjugate {
    -
    - -
    161 return complex64_t{x.real, -x.imag};
    -
    162 }
    -
    -
    163};
    -
    -
    164
    -
    -
    165struct Erf {
    -
    166 template <typename T>
    -
    -
    167 T operator()(T x) {
    -
    168 return static_cast<T>(erf(static_cast<float>(x)));
    -
    169 };
    -
    -
    170};
    -
    -
    171
    -
    -
    172struct ErfInv {
    -
    173 template <typename T>
    -
    -
    174 T operator()(T x) {
    -
    175 return static_cast<T>(erfinv(static_cast<float>(x)));
    -
    176 };
    -
    -
    177};
    -
    -
    178
    -
    -
    179struct Exp {
    -
    180 template <typename T>
    -
    -
    181 T operator()(T x) {
    -
    182 return metal::precise::exp(x);
    -
    183 };
    -
    -
    184 template <>
    -
    - -
    186 auto m = metal::precise::exp(x.real);
    -
    187 return {m * metal::precise::cos(x.imag), m * metal::precise::sin(x.imag)};
    -
    188 }
    -
    -
    189};
    -
    -
    190
    -
    -
    191struct Expm1 {
    -
    192 template <typename T>
    -
    -
    193 T operator()(T x) {
    -
    194 return static_cast<T>(expm1f(static_cast<float>(x)));
    -
    195 };
    -
    -
    196};
    -
    -
    197
    -
    -
    198struct Floor {
    -
    199 template <typename T>
    -
    -
    200 T operator()(T x) {
    -
    201 return metal::floor(x);
    -
    202 };
    -
    -
    203 template <>
    -
    -
    204 int8_t operator()(int8_t x) {
    -
    205 return x;
    -
    206 };
    -
    -
    207 template <>
    -
    -
    208 int16_t operator()(int16_t x) {
    -
    209 return x;
    -
    210 };
    -
    -
    211 template <>
    -
    -
    212 int32_t operator()(int32_t x) {
    -
    213 return x;
    -
    214 };
    -
    -
    215 template <>
    -
    -
    216 int64_t operator()(int64_t x) {
    -
    217 return x;
    -
    218 };
    -
    -
    219 template <>
    -
    -
    220 uint8_t operator()(uint8_t x) {
    -
    221 return x;
    -
    222 };
    -
    -
    223 template <>
    -
    -
    224 uint16_t operator()(uint16_t x) {
    -
    225 return x;
    -
    226 };
    -
    -
    227 template <>
    -
    -
    228 uint32_t operator()(uint32_t x) {
    -
    229 return x;
    -
    230 };
    -
    -
    231 template <>
    -
    -
    232 uint64_t operator()(uint64_t x) {
    -
    233 return x;
    -
    234 };
    -
    -
    235 template <>
    -
    -
    236 bool operator()(bool x) {
    -
    237 return x;
    -
    238 };
    -
    -
    239};
    -
    -
    240
    -
    -
    241struct Log {
    -
    242 template <typename T>
    -
    -
    243 T operator()(T x) {
    -
    244 return metal::precise::log(x);
    -
    245 };
    -
    -
    246};
    -
    -
    247
    -
    -
    248struct Log2 {
    -
    249 template <typename T>
    -
    -
    250 T operator()(T x) {
    -
    251 return metal::precise::log2(x);
    -
    252 };
    -
    -
    253};
    -
    -
    254
    -
    -
    255struct Log10 {
    -
    256 template <typename T>
    -
    -
    257 T operator()(T x) {
    -
    258 return metal::precise::log10(x);
    -
    259 };
    -
    -
    260};
    -
    -
    261
    -
    -
    262struct Log1p {
    -
    263 template <typename T>
    -
    -
    264 T operator()(T x) {
    -
    265 return log1p(x);
    -
    266 };
    -
    -
    267};
    -
    -
    268
    -
    - -
    270 template <typename T>
    -
    -
    271 T operator()(T x) {
    -
    272 return !x;
    -
    273 };
    -
    -
    274};
    -
    -
    275
    -
    -
    276struct Negative {
    -
    277 template <typename T>
    -
    -
    278 T operator()(T x) {
    -
    279 return -x;
    -
    280 };
    -
    -
    281};
    -
    -
    282
    -
    -
    283struct Round {
    -
    284 template <typename T>
    -
    -
    285 T operator()(T x) {
    -
    286 return metal::rint(x);
    -
    287 };
    -
    -
    288 template <>
    -
    - -
    290 return {metal::rint(x.real), metal::rint(x.imag)};
    -
    291 };
    -
    -
    292};
    -
    -
    293
    -
    -
    294struct Sigmoid {
    -
    295 template <typename T>
    -
    -
    296 T operator()(T x) {
    -
    297 auto y = 1 / (1 + metal::exp(-metal::abs(x)));
    -
    298 return (x < 0) ? 1 - y : y;
    -
    299 }
    -
    -
    300};
    -
    -
    301
    -
    -
    302struct Sign {
    -
    303 template <typename T>
    -
    -
    304 T operator()(T x) {
    -
    305 return (x > T(0)) - (x < T(0));
    -
    306 };
    -
    -
    307 template <>
    -
    -
    308 uint32_t operator()(uint32_t x) {
    -
    309 return x != 0;
    -
    310 };
    -
    -
    311 template <>
    -
    - -
    313 if (x == complex64_t(0)) {
    -
    314 return x;
    -
    315 }
    -
    316 return x /
    - -
    318 };
    -
    -
    319};
    -
    -
    320
    -
    -
    321struct Sin {
    -
    322 template <typename T>
    -
    -
    323 T operator()(T x) {
    -
    324 return metal::precise::sin(x);
    -
    325 };
    -
    -
    326
    -
    327 template <>
    - -
    333};
    -
    -
    334
    -
    -
    335struct Sinh {
    -
    336 template <typename T>
    -
    -
    337 T operator()(T x) {
    -
    338 return metal::precise::sinh(x);
    -
    339 };
    -
    -
    340
    -
    341 template <>
    - -
    347};
    -
    -
    348
    -
    -
    349struct Square {
    -
    350 template <typename T>
    -
    -
    351 T operator()(T x) {
    -
    352 return x * x;
    -
    353 };
    -
    -
    354};
    -
    -
    355
    -
    -
    356struct Sqrt {
    -
    357 template <typename T>
    -
    -
    358 T operator()(T x) {
    -
    359 return metal::precise::sqrt(x);
    -
    360 };
    -
    -
    361};
    -
    -
    362
    -
    -
    363struct Rsqrt {
    -
    364 template <typename T>
    -
    -
    365 T operator()(T x) {
    -
    366 return metal::precise::rsqrt(x);
    -
    367 };
    -
    -
    368};
    -
    -
    369
    -
    -
    370struct Tan {
    -
    371 template <typename T>
    -
    -
    372 T operator()(T x) {
    -
    373 return metal::precise::tan(x);
    -
    374 };
    -
    -
    375
    -
    376 template <>
    -
    - -
    378 float tan_a = metal::precise::tan(x.real);
    -
    379 float tanh_b = metal::precise::tanh(x.imag);
    -
    380 float t1 = tan_a * tanh_b;
    -
    381 float denom = 1. + t1 * t1;
    -
    382 return {(tan_a - tanh_b * t1) / denom, (tanh_b + tan_a * t1) / denom};
    -
    383 };
    -
    -
    384};
    -
    -
    385
    -
    -
    386struct Tanh {
    -
    387 template <typename T>
    -
    -
    388 T operator()(T x) {
    -
    389 return metal::precise::tanh(x);
    -
    390 };
    -
    -
    391
    -
    392 template <>
    -
    - -
    394 float tanh_a = metal::precise::tanh(x.real);
    -
    395 float tan_b = metal::precise::tan(x.imag);
    -
    396 float t1 = tanh_a * tan_b;
    -
    397 float denom = 1. + t1 * t1;
    -
    398 return {(tanh_a + tan_b * t1) / denom, (tan_b - tanh_a * t1) / denom};
    -
    399 };
    -
    -
    400};
    -
    -
    float log1p(float x)
    Definition utils.h:414
    - -
    float erfinv(float a)
    Definition erf.h:42
    -
    float erf(float a)
    Definition erf.h:11
    - -
    float expm1f(float a)
    Definition expm1f.h:80
    -
    METAL_FUNC bfloat16_t acosh(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t log(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t log10(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t log2(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t sin(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t cosh(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t tanh(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t tan(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t acos(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t exp(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t atanh(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t asinh(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t atan(bfloat16_t y_over_x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t sinh(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t cos(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t sqrt(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t asin(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t rsqrt(bfloat16_t x)
    Definition bf16_math.h:252
    -
    METAL_FUNC bfloat16_t floor(bfloat16_t x)
    Definition bf16_math.h:234
    -
    METAL_FUNC bfloat16_t rint(bfloat16_t x)
    Definition bf16_math.h:234
    -
    METAL_FUNC bfloat16_t abs(bfloat16_t x)
    Definition bf16_math.h:234
    -
    METAL_FUNC bfloat16_t exp(bfloat16_t x)
    Definition bf16_math.h:234
    -
    METAL_FUNC bfloat16_t ceil(bfloat16_t x)
    Definition bf16_math.h:234
    -
    Definition unary_ops.h:15
    -
    uint8_t operator()(uint8_t x)
    Definition unary_ops.h:21
    -
    uint32_t operator()(uint32_t x)
    Definition unary_ops.h:29
    -
    T operator()(T x)
    Definition unary_ops.h:17
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:41
    -
    bool operator()(bool x)
    Definition unary_ops.h:37
    -
    uint64_t operator()(uint64_t x)
    Definition unary_ops.h:33
    -
    uint16_t operator()(uint16_t x)
    Definition unary_ops.h:25
    -
    Definition unary_ops.h:46
    -
    T operator()(T x)
    Definition unary_ops.h:48
    -
    Definition unary_ops.h:53
    -
    T operator()(T x)
    Definition unary_ops.h:55
    -
    Definition unary_ops.h:60
    -
    T operator()(T x)
    Definition unary_ops.h:62
    -
    Definition unary_ops.h:67
    -
    T operator()(T x)
    Definition unary_ops.h:69
    -
    Definition unary_ops.h:74
    -
    T operator()(T x)
    Definition unary_ops.h:76
    -
    Definition unary_ops.h:81
    -
    T operator()(T x)
    Definition unary_ops.h:83
    -
    Definition unary_ops.h:88
    -
    int16_t operator()(int16_t x)
    Definition unary_ops.h:98
    -
    bool operator()(bool x)
    Definition unary_ops.h:126
    -
    uint32_t operator()(uint32_t x)
    Definition unary_ops.h:118
    -
    int8_t operator()(int8_t x)
    Definition unary_ops.h:94
    -
    T operator()(T x)
    Definition unary_ops.h:90
    -
    int64_t operator()(int64_t x)
    Definition unary_ops.h:106
    -
    uint64_t operator()(uint64_t x)
    Definition unary_ops.h:122
    -
    uint8_t operator()(uint8_t x)
    Definition unary_ops.h:110
    -
    uint16_t operator()(uint16_t x)
    Definition unary_ops.h:114
    -
    int32_t operator()(int32_t x)
    Definition unary_ops.h:102
    -
    Definition unary_ops.h:159
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:160
    -
    Definition unary_ops.h:131
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:138
    -
    T operator()(T x)
    Definition unary_ops.h:133
    -
    Definition unary_ops.h:145
    -
    T operator()(T x)
    Definition unary_ops.h:147
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:152
    -
    Definition unary_ops.h:165
    -
    T operator()(T x)
    Definition unary_ops.h:167
    -
    Definition unary_ops.h:172
    -
    T operator()(T x)
    Definition unary_ops.h:174
    -
    Definition unary_ops.h:179
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:185
    -
    T operator()(T x)
    Definition unary_ops.h:181
    -
    Definition unary_ops.h:191
    -
    T operator()(T x)
    Definition unary_ops.h:193
    -
    Definition unary_ops.h:198
    -
    int8_t operator()(int8_t x)
    Definition unary_ops.h:204
    -
    int16_t operator()(int16_t x)
    Definition unary_ops.h:208
    -
    int32_t operator()(int32_t x)
    Definition unary_ops.h:212
    -
    uint16_t operator()(uint16_t x)
    Definition unary_ops.h:224
    -
    uint64_t operator()(uint64_t x)
    Definition unary_ops.h:232
    -
    uint32_t operator()(uint32_t x)
    Definition unary_ops.h:228
    -
    int64_t operator()(int64_t x)
    Definition unary_ops.h:216
    -
    bool operator()(bool x)
    Definition unary_ops.h:236
    -
    uint8_t operator()(uint8_t x)
    Definition unary_ops.h:220
    -
    T operator()(T x)
    Definition unary_ops.h:200
    -
    Definition unary_ops.h:255
    -
    T operator()(T x)
    Definition unary_ops.h:257
    -
    Definition unary_ops.h:262
    -
    T operator()(T x)
    Definition unary_ops.h:264
    -
    Definition unary_ops.h:248
    -
    T operator()(T x)
    Definition unary_ops.h:250
    -
    Definition unary_ops.h:241
    -
    T operator()(T x)
    Definition unary_ops.h:243
    -
    Definition unary_ops.h:269
    -
    T operator()(T x)
    Definition unary_ops.h:271
    -
    Definition unary_ops.h:276
    -
    T operator()(T x)
    Definition unary_ops.h:278
    -
    Definition unary_ops.h:283
    -
    T operator()(T x)
    Definition unary_ops.h:285
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:289
    -
    Definition unary_ops.h:363
    -
    T operator()(T x)
    Definition unary_ops.h:365
    -
    Definition unary_ops.h:294
    -
    T operator()(T x)
    Definition unary_ops.h:296
    -
    Definition unary_ops.h:302
    -
    T operator()(T x)
    Definition unary_ops.h:304
    -
    uint32_t operator()(uint32_t x)
    Definition unary_ops.h:308
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:312
    -
    Definition unary_ops.h:321
    -
    T operator()(T x)
    Definition unary_ops.h:323
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:328
    -
    Definition unary_ops.h:335
    -
    T operator()(T x)
    Definition unary_ops.h:337
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:342
    -
    Definition unary_ops.h:356
    -
    T operator()(T x)
    Definition unary_ops.h:358
    -
    Definition unary_ops.h:349
    -
    T operator()(T x)
    Definition unary_ops.h:351
    -
    Definition unary_ops.h:370
    -
    T operator()(T x)
    Definition unary_ops.h:372
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:377
    -
    Definition unary_ops.h:386
    -
    complex64_t operator()(complex64_t x)
    Definition unary_ops.h:393
    -
    T operator()(T x)
    Definition unary_ops.h:388
    -
    Definition complex.h:20
    -
    float imag
    Definition complex.h:22
    -
    float real
    Definition complex.h:21
    -
    - - - - diff --git a/docs/build/html/unionbool4__or__uint-members.html b/docs/build/html/unionbool4__or__uint-members.html deleted file mode 100644 index 925254f1..00000000 --- a/docs/build/html/unionbool4__or__uint-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    -
    bool4_or_uint Member List
    -
    -
    - -

    This is the complete list of members for bool4_or_uint, including all inherited members.

    - - - -
    bbool4_or_uint
    ibool4_or_uint
    - - - - diff --git a/docs/build/html/unionbool4__or__uint.html b/docs/build/html/unionbool4__or__uint.html deleted file mode 100644 index e37ecda0..00000000 --- a/docs/build/html/unionbool4__or__uint.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -MLX: bool4_or_uint Union Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - -
    -
    - -
    bool4_or_uint Union Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - -

    -Public Attributes

    bool4 b
     
    unsigned int i
     
    -

    Member Data Documentation

    - -

    ◆ b

    - -
    -
    - - - - -
    bool4 bool4_or_uint::b
    -
    - -
    -
    - -

    ◆ i

    - -
    -
    - - - - -
    unsigned int bool4_or_uint::i
    -
    - -
    -
    -
    The documentation for this union was generated from the following file:
      -
    • mlx/backend/metal/kernels/reduction/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float-members.html b/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float-members.html deleted file mode 100644 index 173ce3aa..00000000 --- a/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -MLX: Member List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    -
    mlx::core::detail::IntOrFloat Member List
    -
    -
    - -

    This is the complete list of members for mlx::core::detail::IntOrFloat, including all inherited members.

    - - - -
    fmlx::core::detail::IntOrFloat
    imlx::core::detail::IntOrFloat
    - - - - diff --git a/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float.html b/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float.html deleted file mode 100644 index 091bc78e..00000000 --- a/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -MLX: mlx::core::detail::IntOrFloat Union Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    MLX -
    -
    -
    - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    Loading...
    -
    Searching...
    -
    No Matches
    -
    -
    -
    -
    - - -
    -
    - -
    mlx::core::detail::IntOrFloat Union Reference
    -
    -
    - -

    #include <ops.h>

    - - - - - - -

    -Public Attributes

    int i
     
    float f
     
    -

    Member Data Documentation

    - -

    ◆ f

    - -
    -
    - - - - -
    float mlx::core::detail::IntOrFloat::f
    -
    - -
    -
    - -

    ◆ i

    - -
    -
    - - - - -
    int mlx::core::detail::IntOrFloat::i
    -
    - -
    -
    -
    The documentation for this union was generated from the following file:
      -
    • mlx/backend/common/ops.h
    • -
    -
    - - - - diff --git a/docs/build/html/usage/compile.html b/docs/build/html/usage/compile.html index 990951b6..020f25cb 100644 --- a/docs/build/html/usage/compile.html +++ b/docs/build/html/usage/compile.html @@ -8,7 +8,7 @@ - Compilation — MLX 0.17.3 documentation + Compilation — MLX 0.18.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.17.3 documentation - Home - + MLX 0.18.0 documentation - Home + @@ -361,6 +361,7 @@
  • mlx.core.pad
  • mlx.core.power
  • mlx.core.prod
  • +
  • mlx.core.put_along_axis
  • mlx.core.quantize
  • mlx.core.quantized_matmul
  • mlx.core.radians
  • @@ -469,6 +470,7 @@
  • mlx.core.linalg.norm
  • mlx.core.linalg.cholesky
  • mlx.core.linalg.cholesky_inv
  • +
  • mlx.core.linalg.cross
  • mlx.core.linalg.qr
  • mlx.core.linalg.svd
  • @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions @@ -518,6 +520,7 @@
  • mlx.nn.AvgPool1d
  • mlx.nn.AvgPool2d
  • mlx.nn.BatchNorm
  • +
  • mlx.nn.CELU
  • mlx.nn.Conv1d
  • mlx.nn.Conv2d
  • mlx.nn.Conv3d
  • @@ -528,6 +531,7 @@
  • mlx.nn.Dropout2d
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • +
  • mlx.nn.ELU
  • mlx.nn.GELU
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • @@ -539,6 +543,8 @@
  • mlx.nn.LayerNorm
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • +
  • mlx.nn.LogSigmoid
  • +
  • mlx.nn.LogSoftmax
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • mlx.nn.MaxPool2d
  • @@ -554,6 +560,7 @@
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • +
  • mlx.nn.Sigmoid
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • mlx.nn.Softmin
  • @@ -569,6 +576,7 @@
  • Functions